scsi_accel.pio.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. // -------------------------------------------------- //
  2. // This file is autogenerated by pioasm; do not edit! //
  3. // -------------------------------------------------- //
  4. #pragma once
  5. #if !PICO_NO_HARDWARE
  6. #include "hardware/pio.h"
  7. #endif
  8. // ----------- //
  9. // scsi_parity //
  10. // ----------- //
  11. #define scsi_parity_wrap_target 0
  12. #define scsi_parity_wrap 3
  13. static const uint16_t scsi_parity_program_instructions[] = {
  14. // .wrap_target
  15. 0x80a0, // 0: pull block
  16. 0x4061, // 1: in null, 1
  17. 0x40e8, // 2: in osr, 8
  18. 0x4037, // 3: in x, 23
  19. // .wrap
  20. };
  21. #if !PICO_NO_HARDWARE
  22. static const struct pio_program scsi_parity_program = {
  23. .instructions = scsi_parity_program_instructions,
  24. .length = 4,
  25. .origin = -1,
  26. };
  27. static inline pio_sm_config scsi_parity_program_get_default_config(uint offset) {
  28. pio_sm_config c = pio_get_default_sm_config();
  29. sm_config_set_wrap(&c, offset + scsi_parity_wrap_target, offset + scsi_parity_wrap);
  30. return c;
  31. }
  32. #endif
  33. // ---------------------- //
  34. // scsi_accel_async_write //
  35. // ---------------------- //
  36. #define scsi_accel_async_write_wrap_target 0
  37. #define scsi_accel_async_write_wrap 4
  38. static const uint16_t scsi_accel_async_write_program_instructions[] = {
  39. // .wrap_target
  40. 0x90e0, // 0: pull ifempty block side 1
  41. 0x7009, // 1: out pins, 9 side 1
  42. 0x7577, // 2: out null, 23 side 1 [5]
  43. 0x308a, // 3: wait 1 gpio, 10 side 1
  44. 0x200a, // 4: wait 0 gpio, 10 side 0
  45. // .wrap
  46. };
  47. #if !PICO_NO_HARDWARE
  48. static const struct pio_program scsi_accel_async_write_program = {
  49. .instructions = scsi_accel_async_write_program_instructions,
  50. .length = 5,
  51. .origin = -1,
  52. };
  53. static inline pio_sm_config scsi_accel_async_write_program_get_default_config(uint offset) {
  54. pio_sm_config c = pio_get_default_sm_config();
  55. sm_config_set_wrap(&c, offset + scsi_accel_async_write_wrap_target, offset + scsi_accel_async_write_wrap);
  56. sm_config_set_sideset(&c, 1, false, false);
  57. return c;
  58. }
  59. #endif
  60. // --------------------- //
  61. // scsi_accel_async_read //
  62. // --------------------- //
  63. #define scsi_accel_async_read_wrap_target 0
  64. #define scsi_accel_async_read_wrap 6
  65. static const uint16_t scsi_accel_async_read_program_instructions[] = {
  66. // .wrap_target
  67. 0x90a0, // 0: pull block side 1
  68. 0xb027, // 1: mov x, osr side 1
  69. 0x308a, // 2: wait 1 gpio, 10 side 1
  70. 0x200a, // 3: wait 0 gpio, 10 side 0
  71. 0x5009, // 4: in pins, 9 side 1
  72. 0x5077, // 5: in null, 23 side 1
  73. 0x1042, // 6: jmp x--, 2 side 1
  74. // .wrap
  75. };
  76. #if !PICO_NO_HARDWARE
  77. static const struct pio_program scsi_accel_async_read_program = {
  78. .instructions = scsi_accel_async_read_program_instructions,
  79. .length = 7,
  80. .origin = -1,
  81. };
  82. static inline pio_sm_config scsi_accel_async_read_program_get_default_config(uint offset) {
  83. pio_sm_config c = pio_get_default_sm_config();
  84. sm_config_set_wrap(&c, offset + scsi_accel_async_read_wrap_target, offset + scsi_accel_async_read_wrap);
  85. sm_config_set_sideset(&c, 1, false, false);
  86. return c;
  87. }
  88. #endif
  89. // --------------- //
  90. // scsi_sync_write //
  91. // --------------- //
  92. #define scsi_sync_write_wrap_target 0
  93. #define scsi_sync_write_wrap 2
  94. static const uint16_t scsi_sync_write_program_instructions[] = {
  95. // .wrap_target
  96. 0x7009, // 0: out pins, 9 side 1
  97. 0x6077, // 1: out null, 23 side 0
  98. 0x5061, // 2: in null, 1 side 1
  99. // .wrap
  100. };
  101. #if !PICO_NO_HARDWARE
  102. static const struct pio_program scsi_sync_write_program = {
  103. .instructions = scsi_sync_write_program_instructions,
  104. .length = 3,
  105. .origin = -1,
  106. };
  107. static inline pio_sm_config scsi_sync_write_program_get_default_config(uint offset) {
  108. pio_sm_config c = pio_get_default_sm_config();
  109. sm_config_set_wrap(&c, offset + scsi_sync_write_wrap_target, offset + scsi_sync_write_wrap);
  110. sm_config_set_sideset(&c, 1, false, false);
  111. return c;
  112. }
  113. #endif
  114. // --------------------- //
  115. // scsi_sync_write_pacer //
  116. // --------------------- //
  117. #define scsi_sync_write_pacer_wrap_target 0
  118. #define scsi_sync_write_pacer_wrap 2
  119. static const uint16_t scsi_sync_write_pacer_program_instructions[] = {
  120. // .wrap_target
  121. 0x208a, // 0: wait 1 gpio, 10
  122. 0x200a, // 1: wait 0 gpio, 10
  123. 0x6061, // 2: out null, 1
  124. // .wrap
  125. };
  126. #if !PICO_NO_HARDWARE
  127. static const struct pio_program scsi_sync_write_pacer_program = {
  128. .instructions = scsi_sync_write_pacer_program_instructions,
  129. .length = 3,
  130. .origin = -1,
  131. };
  132. static inline pio_sm_config scsi_sync_write_pacer_program_get_default_config(uint offset) {
  133. pio_sm_config c = pio_get_default_sm_config();
  134. sm_config_set_wrap(&c, offset + scsi_sync_write_pacer_wrap_target, offset + scsi_sync_write_pacer_wrap);
  135. return c;
  136. }
  137. #endif