tulip.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. #ifndef HW_TULIP_H
  2. #define HW_TULIP_H
  3. #include "qemu/units.h"
  4. #include "net/net.h"
  5. #define TYPE_TULIP "tulip"
  6. #define TULIP(obj) OBJECT_CHECK(TULIPState, (obj), TYPE_TULIP)
  7. #define CSR(_x) ((_x) << 3)
  8. #define CSR0_SWR BIT(0)
  9. #define CSR0_BAR BIT(1)
  10. #define CSR0_DSL_SHIFT 2
  11. #define CSR0_DSL_MASK 0x1f
  12. #define CSR0_BLE BIT(7)
  13. #define CSR0_PBL_SHIFT 8
  14. #define CSR0_PBL_MASK 0x3f
  15. #define CSR0_CAC_SHIFT 14
  16. #define CSR0_CAC_MASK 0x3
  17. #define CSR0_DAS 0x10000
  18. #define CSR0_TAP_SHIFT 17
  19. #define CSR0_TAP_MASK 0x7
  20. #define CSR0_DBO 0x100000
  21. #define CSR1_TPD 0x01
  22. #define CSR0_RLE BIT(23)
  23. #define CSR0_WIE BIT(24)
  24. #define CSR2_RPD 0x01
  25. #define CSR5_TI BIT(0)
  26. #define CSR5_TPS BIT(1)
  27. #define CSR5_TU BIT(2)
  28. #define CSR5_TJT BIT(3)
  29. #define CSR5_LNP_ANC BIT(4)
  30. #define CSR5_UNF BIT(5)
  31. #define CSR5_RI BIT(6)
  32. #define CSR5_RU BIT(7)
  33. #define CSR5_RPS BIT(8)
  34. #define CSR5_RWT BIT(9)
  35. #define CSR5_ETI BIT(10)
  36. #define CSR5_GTE BIT(11)
  37. #define CSR5_LNF BIT(12)
  38. #define CSR5_FBE BIT(13)
  39. #define CSR5_ERI BIT(14)
  40. #define CSR5_AIS BIT(15)
  41. #define CSR5_NIS BIT(16)
  42. #define CSR5_RS_SHIFT 17
  43. #define CSR5_RS_MASK 7
  44. #define CSR5_TS_SHIFT 20
  45. #define CSR5_TS_MASK 7
  46. #define CSR5_TS_STOPPED 0
  47. #define CSR5_TS_RUNNING_FETCH 1
  48. #define CSR5_TS_RUNNING_WAIT_EOT 2
  49. #define CSR5_TS_RUNNING_READ_BUF 3
  50. #define CSR5_TS_RUNNING_SETUP 5
  51. #define CSR5_TS_SUSPENDED 6
  52. #define CSR5_TS_RUNNING_CLOSE 7
  53. #define CSR5_RS_STOPPED 0
  54. #define CSR5_RS_RUNNING_FETCH 1
  55. #define CSR5_RS_RUNNING_CHECK_EOR 2
  56. #define CSR5_RS_RUNNING_WAIT_RECEIVE 3
  57. #define CSR5_RS_SUSPENDED 4
  58. #define CSR5_RS_RUNNING_CLOSE 5
  59. #define CSR5_RS_RUNNING_FLUSH 6
  60. #define CSR5_RS_RUNNING_QUEUE 7
  61. #define CSR5_EB_SHIFT 23
  62. #define CSR5_EB_MASK 7
  63. #define CSR5_GPI BIT(26)
  64. #define CSR5_LC BIT(27)
  65. #define CSR6_HP BIT(0)
  66. #define CSR6_SR BIT(1)
  67. #define CSR6_HO BIT(2)
  68. #define CSR6_PB BIT(3)
  69. #define CSR6_IF BIT(4)
  70. #define CSR6_SB BIT(5)
  71. #define CSR6_PR BIT(6)
  72. #define CSR6_PM BIT(7)
  73. #define CSR6_FKD BIT(8)
  74. #define CSR6_FD BIT(9)
  75. #define CSR6_OM_SHIFT 10
  76. #define CSR6_OM_MASK 3
  77. #define CSR6_OM_NORMAL 0
  78. #define CSR6_OM_INT_LOOPBACK 1
  79. #define CSR6_OM_EXT_LOOPBACK 2
  80. #define CSR6_FC BIT(12)
  81. #define CSR6_ST BIT(13)
  82. #define CSR6_TR_SHIFT 14
  83. #define CSR6_TR_MASK 3
  84. #define CSR6_TR_72 0
  85. #define CSR6_TR_96 1
  86. #define CSR6_TR_128 2
  87. #define CSR6_TR_160 3
  88. #define CSR6_CA BIT(17)
  89. #define CSR6_RA BIT(30)
  90. #define CSR6_SC BIT(31)
  91. #define CSR7_TIM BIT(0)
  92. #define CSR7_TSM BIT(1)
  93. #define CSR7_TUM BIT(2)
  94. #define CSR7_TJM BIT(3)
  95. #define CSR7_LPM BIT(4)
  96. #define CSR7_UNM BIT(5)
  97. #define CSR7_RIM BIT(6)
  98. #define CSR7_RUM BIT(7)
  99. #define CSR7_RSM BIT(8)
  100. #define CSR7_RWM BIT(9)
  101. #define CSR7_TMM BIT(11)
  102. #define CSR7_LFM BIT(12)
  103. #define CSR7_SEM BIT(13)
  104. #define CSR7_ERM BIT(14)
  105. #define CSR7_AIM BIT(15)
  106. #define CSR7_NIM BIT(16)
  107. #define CSR8_MISSED_FRAME_OVL BIT(16)
  108. #define CSR8_MISSED_FRAME_CNT_MASK 0xffff
  109. #define CSR9_DATA_MASK 0xff
  110. #define CSR9_SR_CS BIT(0)
  111. #define CSR9_SR_SK BIT(1)
  112. #define CSR9_SR_DI BIT(2)
  113. #define CSR9_SR_DO BIT(3)
  114. #define CSR9_REG BIT(10)
  115. #define CSR9_SR BIT(11)
  116. #define CSR9_BR BIT(12)
  117. #define CSR9_WR BIT(13)
  118. #define CSR9_RD BIT(14)
  119. #define CSR9_MOD BIT(15)
  120. #define CSR9_MDC BIT(16)
  121. #define CSR9_MDO BIT(17)
  122. #define CSR9_MII BIT(18)
  123. #define CSR9_MDI BIT(19)
  124. #define CSR11_CON BIT(16)
  125. #define CSR11_TIMER_MASK 0xffff
  126. #define CSR12_MRA BIT(0)
  127. #define CSR12_LS100 BIT(1)
  128. #define CSR12_LS10 BIT(2)
  129. #define CSR12_APS BIT(3)
  130. #define CSR12_ARA BIT(8)
  131. #define CSR12_TRA BIT(9)
  132. #define CSR12_NSN BIT(10)
  133. #define CSR12_TRF BIT(11)
  134. #define CSR12_ANS_SHIFT 12
  135. #define CSR12_ANS_MASK 7
  136. #define CSR12_LPN BIT(15)
  137. #define CSR12_LPC_SHIFT 16
  138. #define CSR12_LPC_MASK 0xffff
  139. #define CSR13_SRL BIT(0)
  140. #define CSR13_CAC BIT(2)
  141. #define CSR13_AUI BIT(3)
  142. #define CSR13_SDM_SHIFT 4
  143. #define CSR13_SDM_MASK 0xfff
  144. #define CSR14_ECEN BIT(0)
  145. #define CSR14_LBK BIT(1)
  146. #define CSR14_DREN BIT(2)
  147. #define CSR14_LSE BIT(3)
  148. #define CSR14_CPEN_SHIFT 4
  149. #define CSR14_CPEN_MASK 3
  150. #define CSR14_MBO BIT(6)
  151. #define CSR14_ANE BIT(7)
  152. #define CSR14_RSQ BIT(8)
  153. #define CSR14_CSQ BIT(9)
  154. #define CSR14_CLD BIT(10)
  155. #define CSR14_SQE BIT(11)
  156. #define CSR14_LTE BIT(12)
  157. #define CSR14_APE BIT(13)
  158. #define CSR14_SPP BIT(14)
  159. #define CSR14_TAS BIT(15)
  160. #define CSR15_JBD BIT(0)
  161. #define CSR15_HUJ BIT(1)
  162. #define CSR15_JCK BIT(2)
  163. #define CSR15_ABM BIT(3)
  164. #define CSR15_RWD BIT(4)
  165. #define CSR15_RWR BIT(5)
  166. #define CSR15_LE1 BIT(6)
  167. #define CSR15_LV1 BIT(7)
  168. #define CSR15_TSCK BIT(8)
  169. #define CSR15_FUSQ BIT(9)
  170. #define CSR15_FLF BIT(10)
  171. #define CSR15_LSD BIT(11)
  172. #define CSR15_DPST BIT(12)
  173. #define CSR15_FRL BIT(13)
  174. #define CSR15_LE2 BIT(14)
  175. #define CSR15_LV2 BIT(15)
  176. #define RDES0_OF BIT(0)
  177. #define RDES0_CE BIT(1)
  178. #define RDES0_DB BIT(2)
  179. #define RDES0_RJ BIT(4)
  180. #define RDES0_FT BIT(5)
  181. #define RDES0_CS BIT(6)
  182. #define RDES0_TL BIT(7)
  183. #define RDES0_LS BIT(8)
  184. #define RDES0_FS BIT(9)
  185. #define RDES0_MF BIT(10)
  186. #define RDES0_RF BIT(11)
  187. #define RDES0_DT_SHIFT 12
  188. #define RDES0_DT_MASK 3
  189. #define RDES0_LE BIT(14)
  190. #define RDES0_ES BIT(15)
  191. #define RDES0_FL_SHIFT 16
  192. #define RDES0_FL_MASK 0x3fff
  193. #define RDES0_FF BIT(30)
  194. #define RDES0_OWN BIT(31)
  195. #define RDES1_BUF1_SIZE_SHIFT 0
  196. #define RDES1_BUF1_SIZE_MASK 0x7ff
  197. #define RDES1_BUF2_SIZE_SHIFT 11
  198. #define RDES1_BUF2_SIZE_MASK 0x7ff
  199. #define RDES1_RCH BIT(24)
  200. #define RDES1_RER BIT(25)
  201. #define TDES0_DE BIT(0)
  202. #define TDES0_UF BIT(1)
  203. #define TDES0_LF BIT(2)
  204. #define TDES0_CC_SHIFT 3
  205. #define TDES0_CC_MASK 0xf
  206. #define TDES0_HF BIT(7)
  207. #define TDES0_EC BIT(8)
  208. #define TDES0_LC BIT(9)
  209. #define TDES0_NC BIT(10)
  210. #define TDES0_LO BIT(11)
  211. #define TDES0_TO BIT(14)
  212. #define TDES0_ES BIT(15)
  213. #define TDES0_OWN BIT(31)
  214. #define TDES1_BUF1_SIZE_SHIFT 0
  215. #define TDES1_BUF1_SIZE_MASK 0x7ff
  216. #define TDES1_BUF2_SIZE_SHIFT 11
  217. #define TDES1_BUF2_SIZE_MASK 0x7ff
  218. #define TDES1_FT0 BIT(22)
  219. #define TDES1_DPD BIT(23)
  220. #define TDES1_TCH BIT(24)
  221. #define TDES1_TER BIT(25)
  222. #define TDES1_AC BIT(26)
  223. #define TDES1_SET BIT(27)
  224. #define TDES1_FT1 BIT(28)
  225. #define TDES1_FS BIT(29)
  226. #define TDES1_LS BIT(30)
  227. #define TDES1_IC BIT(31)
  228. struct tulip_descriptor {
  229. uint32_t status;
  230. uint32_t control;
  231. uint32_t buf_addr1;
  232. uint32_t buf_addr2;
  233. };
  234. #endif