scsi_accel.pio.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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. 0x309a, // 3: wait 1 gpio, 26 side 1
  44. 0x201a, // 4: wait 0 gpio, 26 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_read //
  62. // --------------- //
  63. #define scsi_accel_read_wrap_target 0
  64. #define scsi_accel_read_wrap 5
  65. static const uint16_t scsi_accel_read_program_instructions[] = {
  66. // .wrap_target
  67. 0x90a0, // 0: pull block side 1
  68. 0x309a, // 1: wait 1 gpio, 26 side 1
  69. 0x4061, // 2: in null, 1 side 0
  70. 0x201a, // 3: wait 0 gpio, 26 side 0
  71. 0x5009, // 4: in pins, 9 side 1
  72. 0x5056, // 5: in y, 22 side 1
  73. // .wrap
  74. };
  75. #if !PICO_NO_HARDWARE
  76. static const struct pio_program scsi_accel_read_program = {
  77. .instructions = scsi_accel_read_program_instructions,
  78. .length = 6,
  79. .origin = -1,
  80. };
  81. static inline pio_sm_config scsi_accel_read_program_get_default_config(uint offset) {
  82. pio_sm_config c = pio_get_default_sm_config();
  83. sm_config_set_wrap(&c, offset + scsi_accel_read_wrap_target, offset + scsi_accel_read_wrap);
  84. sm_config_set_sideset(&c, 1, false, false);
  85. return c;
  86. }
  87. #endif
  88. // --------------- //
  89. // scsi_sync_write //
  90. // --------------- //
  91. #define scsi_sync_write_wrap_target 0
  92. #define scsi_sync_write_wrap 2
  93. static const uint16_t scsi_sync_write_program_instructions[] = {
  94. // .wrap_target
  95. 0x7009, // 0: out pins, 9 side 1
  96. 0x6077, // 1: out null, 23 side 0
  97. 0x5061, // 2: in null, 1 side 1
  98. // .wrap
  99. };
  100. #if !PICO_NO_HARDWARE
  101. static const struct pio_program scsi_sync_write_program = {
  102. .instructions = scsi_sync_write_program_instructions,
  103. .length = 3,
  104. .origin = -1,
  105. };
  106. static inline pio_sm_config scsi_sync_write_program_get_default_config(uint offset) {
  107. pio_sm_config c = pio_get_default_sm_config();
  108. sm_config_set_wrap(&c, offset + scsi_sync_write_wrap_target, offset + scsi_sync_write_wrap);
  109. sm_config_set_sideset(&c, 1, false, false);
  110. return c;
  111. }
  112. #endif
  113. // --------------------- //
  114. // scsi_sync_write_pacer //
  115. // --------------------- //
  116. #define scsi_sync_write_pacer_wrap_target 0
  117. #define scsi_sync_write_pacer_wrap 2
  118. static const uint16_t scsi_sync_write_pacer_program_instructions[] = {
  119. // .wrap_target
  120. 0x209a, // 0: wait 1 gpio, 26
  121. 0x201a, // 1: wait 0 gpio, 26
  122. 0x6061, // 2: out null, 1
  123. // .wrap
  124. };
  125. #if !PICO_NO_HARDWARE
  126. static const struct pio_program scsi_sync_write_pacer_program = {
  127. .instructions = scsi_sync_write_pacer_program_instructions,
  128. .length = 3,
  129. .origin = -1,
  130. };
  131. static inline pio_sm_config scsi_sync_write_pacer_program_get_default_config(uint offset) {
  132. pio_sm_config c = pio_get_default_sm_config();
  133. sm_config_set_wrap(&c, offset + scsi_sync_write_pacer_wrap_target, offset + scsi_sync_write_pacer_wrap);
  134. return c;
  135. }
  136. #endif
  137. // -------------------- //
  138. // scsi_sync_read_pacer //
  139. // -------------------- //
  140. #define scsi_sync_read_pacer_wrap_target 0
  141. #define scsi_sync_read_pacer_wrap 2
  142. static const uint16_t scsi_sync_read_pacer_program_instructions[] = {
  143. // .wrap_target
  144. 0x9020, // 0: push block side 1
  145. 0x0040, // 1: jmp x--, 0 side 0
  146. 0x1002, // 2: jmp 2 side 1
  147. // .wrap
  148. };
  149. #if !PICO_NO_HARDWARE
  150. static const struct pio_program scsi_sync_read_pacer_program = {
  151. .instructions = scsi_sync_read_pacer_program_instructions,
  152. .length = 3,
  153. .origin = -1,
  154. };
  155. static inline pio_sm_config scsi_sync_read_pacer_program_get_default_config(uint offset) {
  156. pio_sm_config c = pio_get_default_sm_config();
  157. sm_config_set_wrap(&c, offset + scsi_sync_read_pacer_wrap_target, offset + scsi_sync_read_pacer_wrap);
  158. sm_config_set_sideset(&c, 1, false, false);
  159. return c;
  160. }
  161. #endif
  162. // ---------------- //
  163. // scsi_read_parity //
  164. // ---------------- //
  165. #define scsi_read_parity_wrap_target 0
  166. #define scsi_read_parity_wrap 4
  167. static const uint16_t scsi_read_parity_program_instructions[] = {
  168. // .wrap_target
  169. 0x60c8, // 0: out isr, 8
  170. 0x8020, // 1: push block
  171. 0x6038, // 2: out x, 24
  172. 0x0040, // 3: jmp x--, 0
  173. 0xc000, // 4: irq nowait 0
  174. // .wrap
  175. };
  176. #if !PICO_NO_HARDWARE
  177. static const struct pio_program scsi_read_parity_program = {
  178. .instructions = scsi_read_parity_program_instructions,
  179. .length = 5,
  180. .origin = -1,
  181. };
  182. static inline pio_sm_config scsi_read_parity_program_get_default_config(uint offset) {
  183. pio_sm_config c = pio_get_default_sm_config();
  184. sm_config_set_wrap(&c, offset + scsi_read_parity_wrap_target, offset + scsi_read_parity_wrap);
  185. return c;
  186. }
  187. #endif