isp1760-regs.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Driver for the NXP ISP1760 chip
  4. *
  5. * Copyright 2021 Linaro, Rui Miguel Silva
  6. * Copyright 2014 Laurent Pinchart
  7. * Copyright 2007 Sebastian Siewior
  8. *
  9. * Contacts:
  10. * Sebastian Siewior <[email protected]>
  11. * Laurent Pinchart <[email protected]>
  12. * Rui Miguel Silva <[email protected]>
  13. */
  14. #ifndef _ISP176x_REGS_H_
  15. #define _ISP176x_REGS_H_
  16. /* -----------------------------------------------------------------------------
  17. * Host Controller
  18. */
  19. /* ISP1760/31 */
  20. /* EHCI capability registers */
  21. #define ISP176x_HC_VERSION 0x002
  22. #define ISP176x_HC_HCSPARAMS 0x004
  23. #define ISP176x_HC_HCCPARAMS 0x008
  24. /* EHCI operational registers */
  25. #define ISP176x_HC_USBCMD 0x020
  26. #define ISP176x_HC_USBSTS 0x024
  27. #define ISP176x_HC_FRINDEX 0x02c
  28. #define ISP176x_HC_CONFIGFLAG 0x060
  29. #define ISP176x_HC_PORTSC1 0x064
  30. #define ISP176x_HC_ISO_PTD_DONEMAP 0x130
  31. #define ISP176x_HC_ISO_PTD_SKIPMAP 0x134
  32. #define ISP176x_HC_ISO_PTD_LASTPTD 0x138
  33. #define ISP176x_HC_INT_PTD_DONEMAP 0x140
  34. #define ISP176x_HC_INT_PTD_SKIPMAP 0x144
  35. #define ISP176x_HC_INT_PTD_LASTPTD 0x148
  36. #define ISP176x_HC_ATL_PTD_DONEMAP 0x150
  37. #define ISP176x_HC_ATL_PTD_SKIPMAP 0x154
  38. #define ISP176x_HC_ATL_PTD_LASTPTD 0x158
  39. /* Configuration Register */
  40. #define ISP176x_HC_HW_MODE_CTRL 0x300
  41. #define ISP176x_HC_CHIP_ID 0x304
  42. #define ISP176x_HC_SCRATCH 0x308
  43. #define ISP176x_HC_RESET 0x30c
  44. #define ISP176x_HC_BUFFER_STATUS 0x334
  45. #define ISP176x_HC_MEMORY 0x33c
  46. /* Interrupt Register */
  47. #define ISP176x_HC_INTERRUPT 0x310
  48. #define ISP176x_HC_INTERRUPT_ENABLE 0x314
  49. #define ISP176x_HC_ISO_IRQ_MASK_OR 0x318
  50. #define ISP176x_HC_INT_IRQ_MASK_OR 0x31c
  51. #define ISP176x_HC_ATL_IRQ_MASK_OR 0x320
  52. #define ISP176x_HC_ISO_IRQ_MASK_AND 0x324
  53. #define ISP176x_HC_INT_IRQ_MASK_AND 0x328
  54. #define ISP176x_HC_ATL_IRQ_MASK_AND 0x32c
  55. #define ISP176x_HC_OTG_CTRL 0x374
  56. #define ISP176x_HC_OTG_CTRL_SET 0x374
  57. #define ISP176x_HC_OTG_CTRL_CLEAR 0x376
  58. enum isp176x_host_controller_fields {
  59. /* HC_PORTSC1 */
  60. PORT_OWNER, PORT_POWER, PORT_LSTATUS, PORT_RESET, PORT_SUSPEND,
  61. PORT_RESUME, PORT_PE, PORT_CSC, PORT_CONNECT,
  62. /* HC_HCSPARAMS */
  63. HCS_PPC, HCS_N_PORTS,
  64. /* HC_HCCPARAMS */
  65. HCC_ISOC_CACHE, HCC_ISOC_THRES,
  66. /* HC_USBCMD */
  67. CMD_LRESET, CMD_RESET, CMD_RUN,
  68. /* HC_USBSTS */
  69. STS_PCD,
  70. /* HC_FRINDEX */
  71. HC_FRINDEX,
  72. /* HC_CONFIGFLAG */
  73. FLAG_CF,
  74. /* ISO/INT/ATL PTD */
  75. HC_ISO_PTD_DONEMAP, HC_ISO_PTD_SKIPMAP, HC_ISO_PTD_LASTPTD,
  76. HC_INT_PTD_DONEMAP, HC_INT_PTD_SKIPMAP, HC_INT_PTD_LASTPTD,
  77. HC_ATL_PTD_DONEMAP, HC_ATL_PTD_SKIPMAP, HC_ATL_PTD_LASTPTD,
  78. /* HC_HW_MODE_CTRL */
  79. ALL_ATX_RESET, HW_ANA_DIGI_OC, HW_DEV_DMA, HW_COMN_IRQ, HW_COMN_DMA,
  80. HW_DATA_BUS_WIDTH, HW_DACK_POL_HIGH, HW_DREQ_POL_HIGH, HW_INTR_HIGH_ACT,
  81. HW_INTF_LOCK, HW_INTR_EDGE_TRIG, HW_GLOBAL_INTR_EN,
  82. /* HC_CHIP_ID */
  83. HC_CHIP_ID_HIGH, HC_CHIP_ID_LOW, HC_CHIP_REV,
  84. /* HC_SCRATCH */
  85. HC_SCRATCH,
  86. /* HC_RESET */
  87. SW_RESET_RESET_ATX, SW_RESET_RESET_HC, SW_RESET_RESET_ALL,
  88. /* HC_BUFFER_STATUS */
  89. ISO_BUF_FILL, INT_BUF_FILL, ATL_BUF_FILL,
  90. /* HC_MEMORY */
  91. MEM_BANK_SEL, MEM_START_ADDR,
  92. /* HC_DATA */
  93. HC_DATA,
  94. /* HC_INTERRUPT */
  95. HC_INTERRUPT,
  96. /* HC_INTERRUPT_ENABLE */
  97. HC_INT_IRQ_ENABLE, HC_ATL_IRQ_ENABLE,
  98. /* INTERRUPT MASKS */
  99. HC_ISO_IRQ_MASK_OR, HC_INT_IRQ_MASK_OR, HC_ATL_IRQ_MASK_OR,
  100. HC_ISO_IRQ_MASK_AND, HC_INT_IRQ_MASK_AND, HC_ATL_IRQ_MASK_AND,
  101. /* HW_OTG_CTRL_SET */
  102. HW_OTG_DISABLE, HW_SW_SEL_HC_DC, HW_VBUS_DRV, HW_SEL_CP_EXT,
  103. HW_DM_PULLDOWN, HW_DP_PULLDOWN, HW_DP_PULLUP, HW_HC_2_DIS,
  104. /* HW_OTG_CTRL_CLR */
  105. HW_OTG_DISABLE_CLEAR, HW_SW_SEL_HC_DC_CLEAR, HW_VBUS_DRV_CLEAR,
  106. HW_SEL_CP_EXT_CLEAR, HW_DM_PULLDOWN_CLEAR, HW_DP_PULLDOWN_CLEAR,
  107. HW_DP_PULLUP_CLEAR, HW_HC_2_DIS_CLEAR,
  108. /* Last element */
  109. HC_FIELD_MAX,
  110. };
  111. /* ISP1763 */
  112. /* EHCI operational registers */
  113. #define ISP1763_HC_USBCMD 0x8c
  114. #define ISP1763_HC_USBSTS 0x90
  115. #define ISP1763_HC_FRINDEX 0x98
  116. #define ISP1763_HC_CONFIGFLAG 0x9c
  117. #define ISP1763_HC_PORTSC1 0xa0
  118. #define ISP1763_HC_ISO_PTD_DONEMAP 0xa4
  119. #define ISP1763_HC_ISO_PTD_SKIPMAP 0xa6
  120. #define ISP1763_HC_ISO_PTD_LASTPTD 0xa8
  121. #define ISP1763_HC_INT_PTD_DONEMAP 0xaa
  122. #define ISP1763_HC_INT_PTD_SKIPMAP 0xac
  123. #define ISP1763_HC_INT_PTD_LASTPTD 0xae
  124. #define ISP1763_HC_ATL_PTD_DONEMAP 0xb0
  125. #define ISP1763_HC_ATL_PTD_SKIPMAP 0xb2
  126. #define ISP1763_HC_ATL_PTD_LASTPTD 0xb4
  127. /* Configuration Register */
  128. #define ISP1763_HC_HW_MODE_CTRL 0xb6
  129. #define ISP1763_HC_CHIP_REV 0x70
  130. #define ISP1763_HC_CHIP_ID 0x72
  131. #define ISP1763_HC_SCRATCH 0x78
  132. #define ISP1763_HC_RESET 0xb8
  133. #define ISP1763_HC_BUFFER_STATUS 0xba
  134. #define ISP1763_HC_MEMORY 0xc4
  135. #define ISP1763_HC_DATA 0xc6
  136. /* Interrupt Register */
  137. #define ISP1763_HC_INTERRUPT 0xd4
  138. #define ISP1763_HC_INTERRUPT_ENABLE 0xd6
  139. #define ISP1763_HC_ISO_IRQ_MASK_OR 0xd8
  140. #define ISP1763_HC_INT_IRQ_MASK_OR 0xda
  141. #define ISP1763_HC_ATL_IRQ_MASK_OR 0xdc
  142. #define ISP1763_HC_ISO_IRQ_MASK_AND 0xde
  143. #define ISP1763_HC_INT_IRQ_MASK_AND 0xe0
  144. #define ISP1763_HC_ATL_IRQ_MASK_AND 0xe2
  145. #define ISP1763_HC_OTG_CTRL_SET 0xe4
  146. #define ISP1763_HC_OTG_CTRL_CLEAR 0xe6
  147. /* -----------------------------------------------------------------------------
  148. * Peripheral Controller
  149. */
  150. #define DC_IEPTX(n) (1 << (11 + 2 * (n)))
  151. #define DC_IEPRX(n) (1 << (10 + 2 * (n)))
  152. #define DC_IEPRXTX(n) (3 << (10 + 2 * (n)))
  153. #define ISP176x_DC_CDBGMOD_ACK BIT(6)
  154. #define ISP176x_DC_DDBGMODIN_ACK BIT(4)
  155. #define ISP176x_DC_DDBGMODOUT_ACK BIT(2)
  156. #define ISP176x_DC_IEP0SETUP BIT(8)
  157. #define ISP176x_DC_IEVBUS BIT(7)
  158. #define ISP176x_DC_IEHS_STA BIT(5)
  159. #define ISP176x_DC_IERESM BIT(4)
  160. #define ISP176x_DC_IESUSP BIT(3)
  161. #define ISP176x_DC_IEBRST BIT(0)
  162. #define ISP176x_HW_OTG_DISABLE_CLEAR BIT(26)
  163. #define ISP176x_HW_SW_SEL_HC_DC_CLEAR BIT(23)
  164. #define ISP176x_HW_VBUS_DRV_CLEAR BIT(20)
  165. #define ISP176x_HW_SEL_CP_EXT_CLEAR BIT(19)
  166. #define ISP176x_HW_DM_PULLDOWN_CLEAR BIT(18)
  167. #define ISP176x_HW_DP_PULLDOWN_CLEAR BIT(17)
  168. #define ISP176x_HW_DP_PULLUP_CLEAR BIT(16)
  169. #define ISP176x_HW_OTG_DISABLE BIT(10)
  170. #define ISP176x_HW_SW_SEL_HC_DC BIT(7)
  171. #define ISP176x_HW_VBUS_DRV BIT(4)
  172. #define ISP176x_HW_SEL_CP_EXT BIT(3)
  173. #define ISP176x_HW_DM_PULLDOWN BIT(2)
  174. #define ISP176x_HW_DP_PULLDOWN BIT(1)
  175. #define ISP176x_HW_DP_PULLUP BIT(0)
  176. #define ISP176x_DC_ENDPTYP_ISOC 0x01
  177. #define ISP176x_DC_ENDPTYP_BULK 0x02
  178. #define ISP176x_DC_ENDPTYP_INTERRUPT 0x03
  179. /* Initialization Registers */
  180. #define ISP176x_DC_ADDRESS 0x0200
  181. #define ISP176x_DC_MODE 0x020c
  182. #define ISP176x_DC_INTCONF 0x0210
  183. #define ISP176x_DC_DEBUG 0x0212
  184. #define ISP176x_DC_INTENABLE 0x0214
  185. /* Data Flow Registers */
  186. #define ISP176x_DC_EPMAXPKTSZ 0x0204
  187. #define ISP176x_DC_EPTYPE 0x0208
  188. #define ISP176x_DC_BUFLEN 0x021c
  189. #define ISP176x_DC_BUFSTAT 0x021e
  190. #define ISP176x_DC_DATAPORT 0x0220
  191. #define ISP176x_DC_CTRLFUNC 0x0228
  192. #define ISP176x_DC_EPINDEX 0x022c
  193. /* DMA Registers */
  194. #define ISP176x_DC_DMACMD 0x0230
  195. #define ISP176x_DC_DMATXCOUNT 0x0234
  196. #define ISP176x_DC_DMACONF 0x0238
  197. #define ISP176x_DC_DMAHW 0x023c
  198. #define ISP176x_DC_DMAINTREASON 0x0250
  199. #define ISP176x_DC_DMAINTEN 0x0254
  200. #define ISP176x_DC_DMAEP 0x0258
  201. #define ISP176x_DC_DMABURSTCOUNT 0x0264
  202. /* General Registers */
  203. #define ISP176x_DC_INTERRUPT 0x0218
  204. #define ISP176x_DC_CHIPID 0x0270
  205. #define ISP176x_DC_FRAMENUM 0x0274
  206. #define ISP176x_DC_SCRATCH 0x0278
  207. #define ISP176x_DC_UNLOCKDEV 0x027c
  208. #define ISP176x_DC_INTPULSEWIDTH 0x0280
  209. #define ISP176x_DC_TESTMODE 0x0284
  210. enum isp176x_device_controller_fields {
  211. /* DC_ADDRESS */
  212. DC_DEVEN, DC_DEVADDR,
  213. /* DC_MODE */
  214. DC_VBUSSTAT, DC_SFRESET, DC_GLINTENA,
  215. /* DC_INTCONF */
  216. DC_CDBGMOD_ACK, DC_DDBGMODIN_ACK, DC_DDBGMODOUT_ACK, DC_INTPOL,
  217. /* DC_INTENABLE */
  218. DC_IEPRXTX_7, DC_IEPRXTX_6, DC_IEPRXTX_5, DC_IEPRXTX_4, DC_IEPRXTX_3,
  219. DC_IEPRXTX_2, DC_IEPRXTX_1, DC_IEPRXTX_0,
  220. DC_IEP0SETUP, DC_IEVBUS, DC_IEHS_STA, DC_IERESM, DC_IESUSP, DC_IEBRST,
  221. /* DC_EPINDEX */
  222. DC_EP0SETUP, DC_ENDPIDX, DC_EPDIR,
  223. /* DC_CTRLFUNC */
  224. DC_CLBUF, DC_VENDP, DC_DSEN, DC_STATUS, DC_STALL,
  225. /* DC_BUFLEN */
  226. DC_BUFLEN,
  227. /* DC_EPMAXPKTSZ */
  228. DC_FFOSZ,
  229. /* DC_EPTYPE */
  230. DC_EPENABLE, DC_ENDPTYP,
  231. /* DC_FRAMENUM */
  232. DC_FRAMENUM, DC_UFRAMENUM,
  233. /* DC_CHIP_ID */
  234. DC_CHIP_ID_HIGH, DC_CHIP_ID_LOW,
  235. /* DC_SCRATCH */
  236. DC_SCRATCH,
  237. /* Last element */
  238. DC_FIELD_MAX,
  239. };
  240. /* ISP1763 */
  241. /* Initialization Registers */
  242. #define ISP1763_DC_ADDRESS 0x00
  243. #define ISP1763_DC_MODE 0x0c
  244. #define ISP1763_DC_INTCONF 0x10
  245. #define ISP1763_DC_INTENABLE 0x14
  246. /* Data Flow Registers */
  247. #define ISP1763_DC_EPMAXPKTSZ 0x04
  248. #define ISP1763_DC_EPTYPE 0x08
  249. #define ISP1763_DC_BUFLEN 0x1c
  250. #define ISP1763_DC_BUFSTAT 0x1e
  251. #define ISP1763_DC_DATAPORT 0x20
  252. #define ISP1763_DC_CTRLFUNC 0x28
  253. #define ISP1763_DC_EPINDEX 0x2c
  254. /* DMA Registers */
  255. #define ISP1763_DC_DMACMD 0x30
  256. #define ISP1763_DC_DMATXCOUNT 0x34
  257. #define ISP1763_DC_DMACONF 0x38
  258. #define ISP1763_DC_DMAHW 0x3c
  259. #define ISP1763_DC_DMAINTREASON 0x50
  260. #define ISP1763_DC_DMAINTEN 0x54
  261. #define ISP1763_DC_DMAEP 0x58
  262. #define ISP1763_DC_DMABURSTCOUNT 0x64
  263. /* General Registers */
  264. #define ISP1763_DC_INTERRUPT 0x18
  265. #define ISP1763_DC_CHIPID_LOW 0x70
  266. #define ISP1763_DC_CHIPID_HIGH 0x72
  267. #define ISP1763_DC_FRAMENUM 0x74
  268. #define ISP1763_DC_SCRATCH 0x78
  269. #define ISP1763_DC_UNLOCKDEV 0x7c
  270. #define ISP1763_DC_INTPULSEWIDTH 0x80
  271. #define ISP1763_DC_TESTMODE 0x84
  272. #endif