ar71xx_regs.h 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Atheros AR71XX/AR724X/AR913X SoC register definitions
  4. *
  5. * Copyright (C) 2015-2016 Wills Wang <wills.wang@live.com>
  6. * Copyright (C) 2010-2011 Jaiganesh Narayanan <jnarayanan@atheros.com>
  7. * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
  8. * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
  9. */
  10. #ifndef __ASM_MACH_AR71XX_REGS_H
  11. #define __ASM_MACH_AR71XX_REGS_H
  12. #ifndef __ASSEMBLY__
  13. #include <linux/bitops.h>
  14. #else
  15. #ifndef BIT
  16. #define BIT(nr) (1 << (nr))
  17. #endif
  18. #endif
  19. #define AR71XX_APB_BASE 0x18000000
  20. #define AR71XX_GE0_BASE 0x19000000
  21. #define AR71XX_GE0_SIZE 0x10000
  22. #define AR71XX_GE1_BASE 0x1a000000
  23. #define AR71XX_GE1_SIZE 0x10000
  24. #define AR71XX_EHCI_BASE 0x1b000000
  25. #define AR71XX_EHCI_SIZE 0x1000
  26. #define AR71XX_OHCI_BASE 0x1c000000
  27. #define AR71XX_OHCI_SIZE 0x1000
  28. #define AR71XX_SPI_BASE 0x1f000000
  29. #define AR71XX_SPI_SIZE 0x01000000
  30. #define AR71XX_DDR_CTRL_BASE \
  31. (AR71XX_APB_BASE + 0x00000000)
  32. #define AR71XX_DDR_CTRL_SIZE 0x100
  33. #define AR71XX_UART_BASE \
  34. (AR71XX_APB_BASE + 0x00020000)
  35. #define AR71XX_UART_SIZE 0x100
  36. #define AR71XX_USB_CTRL_BASE \
  37. (AR71XX_APB_BASE + 0x00030000)
  38. #define AR71XX_USB_CTRL_SIZE 0x100
  39. #define AR71XX_GPIO_BASE \
  40. (AR71XX_APB_BASE + 0x00040000)
  41. #define AR71XX_GPIO_SIZE 0x100
  42. #define AR71XX_PLL_BASE \
  43. (AR71XX_APB_BASE + 0x00050000)
  44. #define AR71XX_PLL_SIZE 0x100
  45. #define AR71XX_RESET_BASE \
  46. (AR71XX_APB_BASE + 0x00060000)
  47. #define AR71XX_RESET_SIZE 0x100
  48. #define AR71XX_MII_BASE \
  49. (AR71XX_APB_BASE + 0x00070000)
  50. #define AR71XX_MII_SIZE 0x100
  51. #define AR71XX_PCI_MEM_BASE 0x10000000
  52. #define AR71XX_PCI_MEM_SIZE 0x07000000
  53. #define AR71XX_PCI_WIN0_OFFS 0x10000000
  54. #define AR71XX_PCI_WIN1_OFFS 0x11000000
  55. #define AR71XX_PCI_WIN2_OFFS 0x12000000
  56. #define AR71XX_PCI_WIN3_OFFS 0x13000000
  57. #define AR71XX_PCI_WIN4_OFFS 0x14000000
  58. #define AR71XX_PCI_WIN5_OFFS 0x15000000
  59. #define AR71XX_PCI_WIN6_OFFS 0x16000000
  60. #define AR71XX_PCI_WIN7_OFFS 0x07000000
  61. #define AR71XX_PCI_CFG_BASE \
  62. (AR71XX_PCI_MEM_BASE + AR71XX_PCI_WIN7_OFFS + 0x10000)
  63. #define AR71XX_PCI_CFG_SIZE 0x100
  64. #define AR7240_USB_CTRL_BASE \
  65. (AR71XX_APB_BASE + 0x00030000)
  66. #define AR7240_USB_CTRL_SIZE 0x100
  67. #define AR7240_OHCI_BASE 0x1b000000
  68. #define AR7240_OHCI_SIZE 0x1000
  69. #define AR724X_PCI_MEM_BASE 0x10000000
  70. #define AR724X_PCI_MEM_SIZE 0x04000000
  71. #define AR724X_PCI_CFG_BASE 0x14000000
  72. #define AR724X_PCI_CFG_SIZE 0x1000
  73. #define AR724X_PCI_CRP_BASE \
  74. (AR71XX_APB_BASE + 0x000c0000)
  75. #define AR724X_PCI_CRP_SIZE 0x1000
  76. #define AR724X_PCI_CTRL_BASE \
  77. (AR71XX_APB_BASE + 0x000f0000)
  78. #define AR724X_PCI_CTRL_SIZE 0x100
  79. #define AR724X_EHCI_BASE 0x1b000000
  80. #define AR724X_EHCI_SIZE 0x1000
  81. #define AR913X_EHCI_BASE 0x1b000000
  82. #define AR913X_EHCI_SIZE 0x1000
  83. #define AR913X_WMAC_BASE \
  84. (AR71XX_APB_BASE + 0x000C0000)
  85. #define AR913X_WMAC_SIZE 0x30000
  86. #define AR933X_UART_BASE \
  87. (AR71XX_APB_BASE + 0x00020000)
  88. #define AR933X_UART_SIZE 0x14
  89. #define AR933X_GMAC_BASE \
  90. (AR71XX_APB_BASE + 0x00070000)
  91. #define AR933X_GMAC_SIZE 0x04
  92. #define AR933X_WMAC_BASE \
  93. (AR71XX_APB_BASE + 0x00100000)
  94. #define AR933X_WMAC_SIZE 0x20000
  95. #define AR933X_RTC_BASE \
  96. (AR71XX_APB_BASE + 0x00107000)
  97. #define AR933X_RTC_SIZE 0x1000
  98. #define AR933X_EHCI_BASE 0x1b000000
  99. #define AR933X_EHCI_SIZE 0x1000
  100. #define AR933X_SRIF_BASE \
  101. (AR71XX_APB_BASE + 0x00116000)
  102. #define AR933X_SRIF_SIZE 0x1000
  103. #define AR934X_GMAC_BASE \
  104. (AR71XX_APB_BASE + 0x00070000)
  105. #define AR934X_GMAC_SIZE 0x14
  106. #define AR934X_WMAC_BASE \
  107. (AR71XX_APB_BASE + 0x00100000)
  108. #define AR934X_WMAC_SIZE 0x20000
  109. #define AR934X_EHCI_BASE 0x1b000000
  110. #define AR934X_EHCI_SIZE 0x200
  111. #define AR934X_NFC_BASE 0x1b000200
  112. #define AR934X_NFC_SIZE 0xb8
  113. #define AR934X_SRIF_BASE \
  114. (AR71XX_APB_BASE + 0x00116000)
  115. #define AR934X_SRIF_SIZE 0x1000
  116. #define QCA953X_GMAC_BASE \
  117. (AR71XX_APB_BASE + 0x00070000)
  118. #define QCA953X_GMAC_SIZE 0x14
  119. #define QCA953X_WMAC_BASE \
  120. (AR71XX_APB_BASE + 0x00100000)
  121. #define QCA953X_WMAC_SIZE 0x20000
  122. #define QCA953X_RTC_BASE \
  123. (AR71XX_APB_BASE + 0x00107000)
  124. #define QCA953X_RTC_SIZE 0x1000
  125. #define QCA953X_EHCI_BASE 0x1b000000
  126. #define QCA953X_EHCI_SIZE 0x200
  127. #define QCA953X_SRIF_BASE \
  128. (AR71XX_APB_BASE + 0x00116000)
  129. #define QCA953X_SRIF_SIZE 0x1000
  130. #define QCA953X_PCI_CFG_BASE0 0x14000000
  131. #define QCA953X_PCI_CTRL_BASE0 \
  132. (AR71XX_APB_BASE + 0x000f0000)
  133. #define QCA953X_PCI_CRP_BASE0 \
  134. (AR71XX_APB_BASE + 0x000c0000)
  135. #define QCA953X_PCI_MEM_BASE0 0x10000000
  136. #define QCA953X_PCI_MEM_SIZE 0x02000000
  137. #define QCA955X_PCI_MEM_BASE0 0x10000000
  138. #define QCA955X_PCI_MEM_BASE1 0x12000000
  139. #define QCA955X_PCI_MEM_SIZE 0x02000000
  140. #define QCA955X_PCI_CFG_BASE0 0x14000000
  141. #define QCA955X_PCI_CFG_BASE1 0x16000000
  142. #define QCA955X_PCI_CFG_SIZE 0x1000
  143. #define QCA955X_PCI_CRP_BASE0 \
  144. (AR71XX_APB_BASE + 0x000c0000)
  145. #define QCA955X_PCI_CRP_BASE1 \
  146. (AR71XX_APB_BASE + 0x00250000)
  147. #define QCA955X_PCI_CRP_SIZE 0x1000
  148. #define QCA955X_PCI_CTRL_BASE0 \
  149. (AR71XX_APB_BASE + 0x000f0000)
  150. #define QCA955X_PCI_CTRL_BASE1 \
  151. (AR71XX_APB_BASE + 0x00280000)
  152. #define QCA955X_PCI_CTRL_SIZE 0x100
  153. #define QCA955X_GMAC_BASE \
  154. (AR71XX_APB_BASE + 0x00070000)
  155. #define QCA955X_GMAC_SIZE 0x40
  156. #define QCA955X_WMAC_BASE \
  157. (AR71XX_APB_BASE + 0x00100000)
  158. #define QCA955X_WMAC_SIZE 0x20000
  159. #define QCA955X_EHCI0_BASE 0x1b000000
  160. #define QCA955X_EHCI1_BASE 0x1b400000
  161. #define QCA955X_EHCI_SIZE 0x1000
  162. #define QCA955X_NFC_BASE 0x1b800200
  163. #define QCA955X_NFC_SIZE 0xb8
  164. #define QCA956X_PCI_MEM_BASE1 0x12000000
  165. #define QCA956X_PCI_MEM_SIZE 0x02000000
  166. #define QCA956X_PCI_CFG_BASE1 0x16000000
  167. #define QCA956X_PCI_CFG_SIZE 0x1000
  168. #define QCA956X_PCI_CRP_BASE1 \
  169. (AR71XX_APB_BASE + 0x00250000)
  170. #define QCA956X_PCI_CRP_SIZE 0x1000
  171. #define QCA956X_PCI_CTRL_BASE1 \
  172. (AR71XX_APB_BASE + 0x00280000)
  173. #define QCA956X_PCI_CTRL_SIZE 0x100
  174. #define QCA956X_WMAC_BASE \
  175. (AR71XX_APB_BASE + 0x00100000)
  176. #define QCA956X_WMAC_SIZE 0x20000
  177. #define QCA956X_EHCI0_BASE 0x1b000000
  178. #define QCA956X_EHCI1_BASE 0x1b400000
  179. #define QCA956X_EHCI_SIZE 0x200
  180. #define QCA956X_GMAC_BASE \
  181. (AR71XX_APB_BASE + 0x00070000)
  182. #define QCA956X_GMAC_SIZE 0x64
  183. /*
  184. * DDR_CTRL block
  185. */
  186. #define AR71XX_DDR_REG_CONFIG 0x00
  187. #define AR71XX_DDR_REG_CONFIG2 0x04
  188. #define AR71XX_DDR_REG_MODE 0x08
  189. #define AR71XX_DDR_REG_EMR 0x0c
  190. #define AR71XX_DDR_REG_CONTROL 0x10
  191. #define AR71XX_DDR_REG_REFRESH 0x14
  192. #define AR71XX_DDR_REG_RD_CYCLE 0x18
  193. #define AR71XX_DDR_REG_TAP_CTRL0 0x1c
  194. #define AR71XX_DDR_REG_TAP_CTRL1 0x20
  195. #define AR71XX_DDR_REG_PCI_WIN0 0x7c
  196. #define AR71XX_DDR_REG_PCI_WIN1 0x80
  197. #define AR71XX_DDR_REG_PCI_WIN2 0x84
  198. #define AR71XX_DDR_REG_PCI_WIN3 0x88
  199. #define AR71XX_DDR_REG_PCI_WIN4 0x8c
  200. #define AR71XX_DDR_REG_PCI_WIN5 0x90
  201. #define AR71XX_DDR_REG_PCI_WIN6 0x94
  202. #define AR71XX_DDR_REG_PCI_WIN7 0x98
  203. #define AR71XX_DDR_REG_FLUSH_GE0 0x9c
  204. #define AR71XX_DDR_REG_FLUSH_GE1 0xa0
  205. #define AR71XX_DDR_REG_FLUSH_USB 0xa4
  206. #define AR71XX_DDR_REG_FLUSH_PCI 0xa8
  207. #define AR724X_DDR_REG_FLUSH_GE0 0x7c
  208. #define AR724X_DDR_REG_FLUSH_GE1 0x80
  209. #define AR724X_DDR_REG_FLUSH_USB 0x84
  210. #define AR724X_DDR_REG_FLUSH_PCIE 0x88
  211. #define AR913X_DDR_REG_FLUSH_GE0 0x7c
  212. #define AR913X_DDR_REG_FLUSH_GE1 0x80
  213. #define AR913X_DDR_REG_FLUSH_USB 0x84
  214. #define AR913X_DDR_REG_FLUSH_WMAC 0x88
  215. #define AR933X_DDR_REG_FLUSH_GE0 0x7c
  216. #define AR933X_DDR_REG_FLUSH_GE1 0x80
  217. #define AR933X_DDR_REG_FLUSH_USB 0x84
  218. #define AR933X_DDR_REG_FLUSH_WMAC 0x88
  219. #define AR933X_DDR_REG_DDR2_CONFIG 0x8c
  220. #define AR933X_DDR_REG_EMR2 0x90
  221. #define AR933X_DDR_REG_EMR3 0x94
  222. #define AR933X_DDR_REG_BURST 0x98
  223. #define AR933X_DDR_REG_TIMEOUT_MAX 0x9c
  224. #define AR933X_DDR_REG_TIMEOUT_CNT 0x9c
  225. #define AR933X_DDR_REG_TIMEOUT_ADDR 0x9c
  226. #define AR934X_DDR_REG_TAP_CTRL2 0x24
  227. #define AR934X_DDR_REG_TAP_CTRL3 0x28
  228. #define AR934X_DDR_REG_FLUSH_GE0 0x9c
  229. #define AR934X_DDR_REG_FLUSH_GE1 0xa0
  230. #define AR934X_DDR_REG_FLUSH_USB 0xa4
  231. #define AR934X_DDR_REG_FLUSH_PCIE 0xa8
  232. #define AR934X_DDR_REG_FLUSH_WMAC 0xac
  233. #define AR934X_DDR_REG_FLUSH_SRC1 0xb0
  234. #define AR934X_DDR_REG_FLUSH_SRC2 0xb4
  235. #define AR934X_DDR_REG_DDR2_CONFIG 0xb8
  236. #define AR934X_DDR_REG_EMR2 0xbc
  237. #define AR934X_DDR_REG_EMR3 0xc0
  238. #define AR934X_DDR_REG_BURST 0xc4
  239. #define AR934X_DDR_REG_BURST2 0xc8
  240. #define AR934X_DDR_REG_TIMEOUT_MAX 0xcc
  241. #define AR934X_DDR_REG_CTL_CONF 0x108
  242. #define QCA953X_DDR_REG_FLUSH_GE0 0x9c
  243. #define QCA953X_DDR_REG_FLUSH_GE1 0xa0
  244. #define QCA953X_DDR_REG_FLUSH_USB 0xa4
  245. #define QCA953X_DDR_REG_FLUSH_PCIE 0xa8
  246. #define QCA953X_DDR_REG_FLUSH_WMAC 0xac
  247. #define QCA953X_DDR_REG_DDR2_CONFIG 0xb8
  248. #define QCA953X_DDR_REG_BURST 0xc4
  249. #define QCA953X_DDR_REG_BURST2 0xc8
  250. #define QCA953X_DDR_REG_TIMEOUT_MAX 0xcc
  251. #define QCA953X_DDR_REG_CTL_CONF 0x108
  252. #define QCA953X_DDR_REG_CONFIG3 0x15c
  253. /*
  254. * PLL block
  255. */
  256. #define AR71XX_PLL_REG_CPU_CONFIG 0x00
  257. #define AR71XX_PLL_REG_SEC_CONFIG 0x04
  258. #define AR71XX_PLL_REG_ETH0_INT_CLOCK 0x10
  259. #define AR71XX_PLL_REG_ETH1_INT_CLOCK 0x14
  260. #define AR71XX_PLL_DIV_SHIFT 3
  261. #define AR71XX_PLL_DIV_MASK 0x1f
  262. #define AR71XX_CPU_DIV_SHIFT 16
  263. #define AR71XX_CPU_DIV_MASK 0x3
  264. #define AR71XX_DDR_DIV_SHIFT 18
  265. #define AR71XX_DDR_DIV_MASK 0x3
  266. #define AR71XX_AHB_DIV_SHIFT 20
  267. #define AR71XX_AHB_DIV_MASK 0x7
  268. #define AR71XX_ETH0_PLL_SHIFT 17
  269. #define AR71XX_ETH1_PLL_SHIFT 19
  270. #define AR724X_PLL_REG_CPU_CONFIG 0x00
  271. #define AR724X_PLL_REG_PCIE_CONFIG 0x18
  272. #define AR724X_PLL_DIV_SHIFT 0
  273. #define AR724X_PLL_DIV_MASK 0x3ff
  274. #define AR724X_PLL_REF_DIV_SHIFT 10
  275. #define AR724X_PLL_REF_DIV_MASK 0xf
  276. #define AR724X_AHB_DIV_SHIFT 19
  277. #define AR724X_AHB_DIV_MASK 0x1
  278. #define AR724X_DDR_DIV_SHIFT 22
  279. #define AR724X_DDR_DIV_MASK 0x3
  280. #define AR7242_PLL_REG_ETH0_INT_CLOCK 0x2c
  281. #define AR913X_PLL_REG_CPU_CONFIG 0x00
  282. #define AR913X_PLL_REG_ETH_CONFIG 0x04
  283. #define AR913X_PLL_REG_ETH0_INT_CLOCK 0x14
  284. #define AR913X_PLL_REG_ETH1_INT_CLOCK 0x18
  285. #define AR913X_PLL_DIV_SHIFT 0
  286. #define AR913X_PLL_DIV_MASK 0x3ff
  287. #define AR913X_DDR_DIV_SHIFT 22
  288. #define AR913X_DDR_DIV_MASK 0x3
  289. #define AR913X_AHB_DIV_SHIFT 19
  290. #define AR913X_AHB_DIV_MASK 0x1
  291. #define AR913X_ETH0_PLL_SHIFT 20
  292. #define AR913X_ETH1_PLL_SHIFT 22
  293. #define AR933X_PLL_CPU_CONFIG_REG 0x00
  294. #define AR933X_PLL_CLK_CTRL_REG 0x08
  295. #define AR933X_PLL_DITHER_FRAC_REG 0x10
  296. #define AR933X_PLL_SWITCH_CLOCK_CONTROL_REG 0x24
  297. #define AR933X_PLL_CPU_CONFIG_NINT_SHIFT 10
  298. #define AR933X_PLL_CPU_CONFIG_NINT_MASK 0x3f
  299. #define AR933X_PLL_CPU_CONFIG_REFDIV_SHIFT 16
  300. #define AR933X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
  301. #define AR933X_PLL_CPU_CONFIG_OUTDIV_SHIFT 23
  302. #define AR933X_PLL_CPU_CONFIG_OUTDIV_MASK 0x7
  303. #define AR933X_PLL_CLK_CTRL_BYPASS BIT(2)
  304. #define AR933X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
  305. #define AR933X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x3
  306. #define AR933X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
  307. #define AR933X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x3
  308. #define AR933X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
  309. #define AR933X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x7
  310. #define AR934X_PLL_CPU_CONFIG_REG 0x00
  311. #define AR934X_PLL_DDR_CONFIG_REG 0x04
  312. #define AR934X_PLL_CPU_DDR_CLK_CTRL_REG 0x08
  313. #define AR934X_PLL_SWITCH_CLOCK_CONTROL_REG 0x24
  314. #define AR934X_PLL_ETH_XMII_CONTROL_REG 0x2c
  315. #define AR934X_PLL_DDR_DIT_FRAC_REG 0x44
  316. #define AR934X_PLL_CPU_DIT_FRAC_REG 0x48
  317. #define AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT 0
  318. #define AR934X_PLL_CPU_CONFIG_NFRAC_MASK 0x3f
  319. #define AR934X_PLL_CPU_CONFIG_NINT_SHIFT 6
  320. #define AR934X_PLL_CPU_CONFIG_NINT_MASK 0x3f
  321. #define AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
  322. #define AR934X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
  323. #define AR934X_PLL_CPU_CONFIG_RANGE_SHIFT 17
  324. #define AR934X_PLL_CPU_CONFIG_RANGE_MASK 0x3
  325. #define AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
  326. #define AR934X_PLL_CPU_CONFIG_OUTDIV_MASK 0x3
  327. #define AR934X_PLL_CPU_CONFIG_PLLPWD BIT(30)
  328. #define AR934X_PLL_CPU_CONFIG_UPDATING BIT(31)
  329. #define AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT 0
  330. #define AR934X_PLL_DDR_CONFIG_NFRAC_MASK 0x3ff
  331. #define AR934X_PLL_DDR_CONFIG_NINT_SHIFT 10
  332. #define AR934X_PLL_DDR_CONFIG_NINT_MASK 0x3f
  333. #define AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
  334. #define AR934X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
  335. #define AR934X_PLL_DDR_CONFIG_RANGE_SHIFT 21
  336. #define AR934X_PLL_DDR_CONFIG_RANGE_MASK 0x3
  337. #define AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
  338. #define AR934X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
  339. #define AR934X_PLL_DDR_CONFIG_PLLPWD BIT(30)
  340. #define AR934X_PLL_DDR_CONFIG_UPDATING BIT(31)
  341. #define AR934X_PLL_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
  342. #define AR934X_PLL_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
  343. #define AR934X_PLL_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
  344. #define AR934X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
  345. #define AR934X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
  346. #define AR934X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
  347. #define AR934X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
  348. #define AR934X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
  349. #define AR934X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
  350. #define AR934X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL BIT(20)
  351. #define AR934X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21)
  352. #define AR934X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
  353. #define AR934X_PLL_SWITCH_CLK_CTRL_MDIO_CLK_SEL BIT(6)
  354. #define AR934X_PLL_DDR_DIT_FRAC_MAX_SHIFT 0
  355. #define AR934X_PLL_DDR_DIT_FRAC_MAX_MASK 0x3ff
  356. #define AR934X_PLL_DDR_DIT_FRAC_MIN_SHIFT 10
  357. #define AR934X_PLL_DDR_DIT_FRAC_MIN_MASK 0x3ff
  358. #define AR934X_PLL_DDR_DIT_FRAC_STEP_SHIFT 20
  359. #define AR934X_PLL_DDR_DIT_FRAC_STEP_MASK 0x3f
  360. #define AR934X_PLL_DDR_DIT_UPD_CNT_SHIFT 27
  361. #define AR934X_PLL_DDR_DIT_UPD_CNT_MASK 0x3f
  362. #define AR934X_PLL_DDR_DIT_DITHER_EN BIT(31)
  363. #define AR934X_PLL_CPU_DIT_FRAC_MAX_SHIFT 0
  364. #define AR934X_PLL_CPU_DIT_FRAC_MAX_MASK 0x3f
  365. #define AR934X_PLL_CPU_DIT_FRAC_MIN_SHIFT 6
  366. #define AR934X_PLL_CPU_DIT_FRAC_MIN_MASK 0x3f
  367. #define AR934X_PLL_CPU_DIT_FRAC_STEP_SHIFT 12
  368. #define AR934X_PLL_CPU_DIT_FRAC_STEP_MASK 0x3f
  369. #define AR934X_PLL_CPU_DIT_UPD_CNT_SHIFT 18
  370. #define AR934X_PLL_CPU_DIT_UPD_CNT_MASK 0x3f
  371. #define AR934X_PLL_CPU_DIT_DITHER_EN BIT(31)
  372. #define QCA953X_PLL_CPU_CONFIG_REG 0x00
  373. #define QCA953X_PLL_DDR_CONFIG_REG 0x04
  374. #define QCA953X_PLL_CLK_CTRL_REG 0x08
  375. #define QCA953X_PLL_SWITCH_CLOCK_CONTROL_REG 0x24
  376. #define QCA953X_PLL_ETH_XMII_CONTROL_REG 0x2c
  377. #define QCA953X_PLL_DDR_DIT_FRAC_REG 0x44
  378. #define QCA953X_PLL_CPU_DIT_FRAC_REG 0x48
  379. #define QCA953X_PLL_CPU_CONFIG_NFRAC_SHIFT 0
  380. #define QCA953X_PLL_CPU_CONFIG_NFRAC_MASK 0x3f
  381. #define QCA953X_PLL_CPU_CONFIG_NINT_SHIFT 6
  382. #define QCA953X_PLL_CPU_CONFIG_NINT_MASK 0x3f
  383. #define QCA953X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
  384. #define QCA953X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
  385. #define QCA953X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
  386. #define QCA953X_PLL_CPU_CONFIG_OUTDIV_MASK 0x7
  387. #define QCA953X_PLL_DDR_CONFIG_NFRAC_SHIFT 0
  388. #define QCA953X_PLL_DDR_CONFIG_NFRAC_MASK 0x3ff
  389. #define QCA953X_PLL_DDR_CONFIG_NINT_SHIFT 10
  390. #define QCA953X_PLL_DDR_CONFIG_NINT_MASK 0x3f
  391. #define QCA953X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
  392. #define QCA953X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
  393. #define QCA953X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
  394. #define QCA953X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
  395. #define QCA953X_PLL_CONFIG_PWD BIT(30)
  396. #define QCA953X_PLL_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
  397. #define QCA953X_PLL_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
  398. #define QCA953X_PLL_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
  399. #define QCA953X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
  400. #define QCA953X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
  401. #define QCA953X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
  402. #define QCA953X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
  403. #define QCA953X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
  404. #define QCA953X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
  405. #define QCA953X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL BIT(20)
  406. #define QCA953X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21)
  407. #define QCA953X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
  408. #define QCA953X_PLL_CPU_DIT_FRAC_MAX_SHIFT 0
  409. #define QCA953X_PLL_CPU_DIT_FRAC_MAX_MASK 0x3f
  410. #define QCA953X_PLL_CPU_DIT_FRAC_MIN_SHIFT 6
  411. #define QCA953X_PLL_CPU_DIT_FRAC_MIN_MASK 0x3f
  412. #define QCA953X_PLL_CPU_DIT_FRAC_STEP_SHIFT 12
  413. #define QCA953X_PLL_CPU_DIT_FRAC_STEP_MASK 0x3f
  414. #define QCA953X_PLL_CPU_DIT_UPD_CNT_SHIFT 18
  415. #define QCA953X_PLL_CPU_DIT_UPD_CNT_MASK 0x3f
  416. #define QCA953X_PLL_DDR_DIT_FRAC_MAX_SHIFT 0
  417. #define QCA953X_PLL_DDR_DIT_FRAC_MAX_MASK 0x3ff
  418. #define QCA953X_PLL_DDR_DIT_FRAC_MIN_SHIFT 9
  419. #define QCA953X_PLL_DDR_DIT_FRAC_MIN_MASK 0x3ff
  420. #define QCA953X_PLL_DDR_DIT_FRAC_STEP_SHIFT 20
  421. #define QCA953X_PLL_DDR_DIT_FRAC_STEP_MASK 0x3f
  422. #define QCA953X_PLL_DDR_DIT_UPD_CNT_SHIFT 27
  423. #define QCA953X_PLL_DDR_DIT_UPD_CNT_MASK 0x3f
  424. #define QCA953X_PLL_DIT_FRAC_EN BIT(31)
  425. #define QCA955X_PLL_CPU_CONFIG_REG 0x00
  426. #define QCA955X_PLL_DDR_CONFIG_REG 0x04
  427. #define QCA955X_PLL_CLK_CTRL_REG 0x08
  428. #define QCA955X_PLL_ETH_XMII_CONTROL_REG 0x28
  429. #define QCA955X_PLL_ETH_SGMII_CONTROL_REG 0x48
  430. #define QCA955X_PLL_CPU_CONFIG_NFRAC_SHIFT 0
  431. #define QCA955X_PLL_CPU_CONFIG_NFRAC_MASK 0x3f
  432. #define QCA955X_PLL_CPU_CONFIG_NINT_SHIFT 6
  433. #define QCA955X_PLL_CPU_CONFIG_NINT_MASK 0x3f
  434. #define QCA955X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
  435. #define QCA955X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
  436. #define QCA955X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
  437. #define QCA955X_PLL_CPU_CONFIG_OUTDIV_MASK 0x3
  438. #define QCA955X_PLL_DDR_CONFIG_NFRAC_SHIFT 0
  439. #define QCA955X_PLL_DDR_CONFIG_NFRAC_MASK 0x3ff
  440. #define QCA955X_PLL_DDR_CONFIG_NINT_SHIFT 10
  441. #define QCA955X_PLL_DDR_CONFIG_NINT_MASK 0x3f
  442. #define QCA955X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
  443. #define QCA955X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
  444. #define QCA955X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
  445. #define QCA955X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
  446. #define QCA955X_PLL_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
  447. #define QCA955X_PLL_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
  448. #define QCA955X_PLL_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
  449. #define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
  450. #define QCA955X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
  451. #define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
  452. #define QCA955X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
  453. #define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
  454. #define QCA955X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
  455. #define QCA955X_PLL_CLK_CTRL_CPUCLK_FROM_CPUPLL BIT(20)
  456. #define QCA955X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21)
  457. #define QCA955X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
  458. #define QCA956X_PLL_CPU_CONFIG_REG 0x00
  459. #define QCA956X_PLL_CPU_CONFIG1_REG 0x04
  460. #define QCA956X_PLL_DDR_CONFIG_REG 0x08
  461. #define QCA956X_PLL_DDR_CONFIG1_REG 0x0c
  462. #define QCA956X_PLL_CLK_CTRL_REG 0x10
  463. #define QCA956X_PLL_CPU_CONFIG_REFDIV_SHIFT 12
  464. #define QCA956X_PLL_CPU_CONFIG_REFDIV_MASK 0x1f
  465. #define QCA956X_PLL_CPU_CONFIG_OUTDIV_SHIFT 19
  466. #define QCA956X_PLL_CPU_CONFIG_OUTDIV_MASK 0x7
  467. #define QCA956X_PLL_CPU_CONFIG1_NFRAC_L_SHIFT 0
  468. #define QCA956X_PLL_CPU_CONFIG1_NFRAC_L_MASK 0x1f
  469. #define QCA956X_PLL_CPU_CONFIG1_NFRAC_H_SHIFT 5
  470. #define QCA956X_PLL_CPU_CONFIG1_NFRAC_H_MASK 0x3fff
  471. #define QCA956X_PLL_CPU_CONFIG1_NINT_SHIFT 18
  472. #define QCA956X_PLL_CPU_CONFIG1_NINT_MASK 0x1ff
  473. #define QCA956X_PLL_DDR_CONFIG_REFDIV_SHIFT 16
  474. #define QCA956X_PLL_DDR_CONFIG_REFDIV_MASK 0x1f
  475. #define QCA956X_PLL_DDR_CONFIG_OUTDIV_SHIFT 23
  476. #define QCA956X_PLL_DDR_CONFIG_OUTDIV_MASK 0x7
  477. #define QCA956X_PLL_DDR_CONFIG1_NFRAC_L_SHIFT 0
  478. #define QCA956X_PLL_DDR_CONFIG1_NFRAC_L_MASK 0x1f
  479. #define QCA956X_PLL_DDR_CONFIG1_NFRAC_H_SHIFT 5
  480. #define QCA956X_PLL_DDR_CONFIG1_NFRAC_H_MASK 0x3fff
  481. #define QCA956X_PLL_DDR_CONFIG1_NINT_SHIFT 18
  482. #define QCA956X_PLL_DDR_CONFIG1_NINT_MASK 0x1ff
  483. #define QCA956X_PLL_CLK_CTRL_CPU_PLL_BYPASS BIT(2)
  484. #define QCA956X_PLL_CLK_CTRL_DDR_PLL_BYPASS BIT(3)
  485. #define QCA956X_PLL_CLK_CTRL_AHB_PLL_BYPASS BIT(4)
  486. #define QCA956X_PLL_CLK_CTRL_CPU_POST_DIV_SHIFT 5
  487. #define QCA956X_PLL_CLK_CTRL_CPU_POST_DIV_MASK 0x1f
  488. #define QCA956X_PLL_CLK_CTRL_DDR_POST_DIV_SHIFT 10
  489. #define QCA956X_PLL_CLK_CTRL_DDR_POST_DIV_MASK 0x1f
  490. #define QCA956X_PLL_CLK_CTRL_AHB_POST_DIV_SHIFT 15
  491. #define QCA956X_PLL_CLK_CTRL_AHB_POST_DIV_MASK 0x1f
  492. #define QCA956X_PLL_CLK_CTRL_CPU_DDRCLK_FROM_DDRPLL BIT(20)
  493. #define QCA956X_PLL_CLK_CTRL_CPU_DDRCLK_FROM_CPUPLL BIT(21)
  494. #define QCA956X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24)
  495. /*
  496. * USB_CONFIG block
  497. */
  498. #define AR71XX_USB_CTRL_REG_FLADJ 0x00
  499. #define AR71XX_USB_CTRL_REG_CONFIG 0x04
  500. /*
  501. * RESET block
  502. */
  503. #define AR71XX_RESET_REG_TIMER 0x00
  504. #define AR71XX_RESET_REG_TIMER_RELOAD 0x04
  505. #define AR71XX_RESET_REG_WDOG_CTRL 0x08
  506. #define AR71XX_RESET_REG_WDOG 0x0c
  507. #define AR71XX_RESET_REG_MISC_INT_STATUS 0x10
  508. #define AR71XX_RESET_REG_MISC_INT_ENABLE 0x14
  509. #define AR71XX_RESET_REG_PCI_INT_STATUS 0x18
  510. #define AR71XX_RESET_REG_PCI_INT_ENABLE 0x1c
  511. #define AR71XX_RESET_REG_GLOBAL_INT_STATUS 0x20
  512. #define AR71XX_RESET_REG_RESET_MODULE 0x24
  513. #define AR71XX_RESET_REG_PERFC_CTRL 0x2c
  514. #define AR71XX_RESET_REG_PERFC0 0x30
  515. #define AR71XX_RESET_REG_PERFC1 0x34
  516. #define AR71XX_RESET_REG_REV_ID 0x90
  517. #define AR913X_RESET_REG_GLOBAL_INT_STATUS 0x18
  518. #define AR913X_RESET_REG_RESET_MODULE 0x1c
  519. #define AR913X_RESET_REG_PERF_CTRL 0x20
  520. #define AR913X_RESET_REG_PERFC0 0x24
  521. #define AR913X_RESET_REG_PERFC1 0x28
  522. #define AR724X_RESET_REG_RESET_MODULE 0x1c
  523. #define AR933X_RESET_REG_RESET_MODULE 0x1c
  524. #define AR933X_RESET_REG_BOOTSTRAP 0xac
  525. #define AR934X_RESET_REG_RESET_MODULE 0x1c
  526. #define AR934X_RESET_REG_BOOTSTRAP 0xb0
  527. #define AR934X_RESET_REG_PCIE_WMAC_INT_STATUS 0xac
  528. #define QCA953X_RESET_REG_RESET_MODULE 0x1c
  529. #define QCA953X_RESET_REG_BOOTSTRAP 0xb0
  530. #define QCA953X_RESET_REG_PCIE_WMAC_INT_STATUS 0xac
  531. #define QCA955X_RESET_REG_RESET_MODULE 0x1c
  532. #define QCA955X_RESET_REG_BOOTSTRAP 0xb0
  533. #define QCA955X_RESET_REG_EXT_INT_STATUS 0xac
  534. #define QCA956X_RESET_REG_RESET_MODULE 0x1c
  535. #define QCA956X_RESET_REG_BOOTSTRAP 0xb0
  536. #define QCA956X_RESET_REG_EXT_INT_STATUS 0xac
  537. #define MISC_INT_MIPS_SI_TIMERINT_MASK BIT(28)
  538. #define MISC_INT_ETHSW BIT(12)
  539. #define MISC_INT_TIMER4 BIT(10)
  540. #define MISC_INT_TIMER3 BIT(9)
  541. #define MISC_INT_TIMER2 BIT(8)
  542. #define MISC_INT_DMA BIT(7)
  543. #define MISC_INT_OHCI BIT(6)
  544. #define MISC_INT_PERFC BIT(5)
  545. #define MISC_INT_WDOG BIT(4)
  546. #define MISC_INT_UART BIT(3)
  547. #define MISC_INT_GPIO BIT(2)
  548. #define MISC_INT_ERROR BIT(1)
  549. #define MISC_INT_TIMER BIT(0)
  550. #define AR71XX_RESET_EXTERNAL BIT(28)
  551. #define AR71XX_RESET_FULL_CHIP BIT(24)
  552. #define AR71XX_RESET_CPU_NMI BIT(21)
  553. #define AR71XX_RESET_CPU_COLD BIT(20)
  554. #define AR71XX_RESET_DMA BIT(19)
  555. #define AR71XX_RESET_SLIC BIT(18)
  556. #define AR71XX_RESET_STEREO BIT(17)
  557. #define AR71XX_RESET_DDR BIT(16)
  558. #define AR71XX_RESET_GE1_MAC BIT(13)
  559. #define AR71XX_RESET_GE1_PHY BIT(12)
  560. #define AR71XX_RESET_USBSUS_OVERRIDE BIT(10)
  561. #define AR71XX_RESET_GE0_MAC BIT(9)
  562. #define AR71XX_RESET_GE0_PHY BIT(8)
  563. #define AR71XX_RESET_USB_OHCI_DLL BIT(6)
  564. #define AR71XX_RESET_USB_HOST BIT(5)
  565. #define AR71XX_RESET_USB_PHY BIT(4)
  566. #define AR71XX_RESET_PCI_BUS BIT(1)
  567. #define AR71XX_RESET_PCI_CORE BIT(0)
  568. #define AR7240_RESET_USB_HOST BIT(5)
  569. #define AR7240_RESET_OHCI_DLL BIT(3)
  570. #define AR724X_RESET_GE1_MDIO BIT(23)
  571. #define AR724X_RESET_GE0_MDIO BIT(22)
  572. #define AR724X_RESET_PCIE_PHY_SERIAL BIT(10)
  573. #define AR724X_RESET_PCIE_PHY BIT(7)
  574. #define AR724X_RESET_PCIE BIT(6)
  575. #define AR724X_RESET_USB_HOST BIT(5)
  576. #define AR724X_RESET_USB_PHY BIT(4)
  577. #define AR724X_RESET_USBSUS_OVERRIDE BIT(3)
  578. #define AR913X_RESET_AMBA2WMAC BIT(22)
  579. #define AR913X_RESET_USBSUS_OVERRIDE BIT(10)
  580. #define AR913X_RESET_USB_HOST BIT(5)
  581. #define AR913X_RESET_USB_PHY BIT(4)
  582. #define AR933X_RESET_GE1_MDIO BIT(23)
  583. #define AR933X_RESET_GE0_MDIO BIT(22)
  584. #define AR933X_RESET_ETH_SWITCH_ANALOG BIT(14)
  585. #define AR933X_RESET_GE1_MAC BIT(13)
  586. #define AR933X_RESET_WMAC BIT(11)
  587. #define AR933X_RESET_GE0_MAC BIT(9)
  588. #define AR933X_RESET_ETH_SWITCH BIT(8)
  589. #define AR933X_RESET_USB_HOST BIT(5)
  590. #define AR933X_RESET_USB_PHY BIT(4)
  591. #define AR933X_RESET_USBSUS_OVERRIDE BIT(3)
  592. #define AR934X_RESET_HOST BIT(31)
  593. #define AR934X_RESET_SLIC BIT(30)
  594. #define AR934X_RESET_HDMA BIT(29)
  595. #define AR934X_RESET_EXTERNAL BIT(28)
  596. #define AR934X_RESET_RTC BIT(27)
  597. #define AR934X_RESET_PCIE_EP_INT BIT(26)
  598. #define AR934X_RESET_CHKSUM_ACC BIT(25)
  599. #define AR934X_RESET_FULL_CHIP BIT(24)
  600. #define AR934X_RESET_GE1_MDIO BIT(23)
  601. #define AR934X_RESET_GE0_MDIO BIT(22)
  602. #define AR934X_RESET_CPU_NMI BIT(21)
  603. #define AR934X_RESET_CPU_COLD BIT(20)
  604. #define AR934X_RESET_HOST_RESET_INT BIT(19)
  605. #define AR934X_RESET_PCIE_EP BIT(18)
  606. #define AR934X_RESET_UART1 BIT(17)
  607. #define AR934X_RESET_DDR BIT(16)
  608. #define AR934X_RESET_USB_PHY_PLL_PWD_EXT BIT(15)
  609. #define AR934X_RESET_NANDF BIT(14)
  610. #define AR934X_RESET_GE1_MAC BIT(13)
  611. #define AR934X_RESET_ETH_SWITCH_ANALOG BIT(12)
  612. #define AR934X_RESET_USB_PHY_ANALOG BIT(11)
  613. #define AR934X_RESET_HOST_DMA_INT BIT(10)
  614. #define AR934X_RESET_GE0_MAC BIT(9)
  615. #define AR934X_RESET_ETH_SWITCH BIT(8)
  616. #define AR934X_RESET_PCIE_PHY BIT(7)
  617. #define AR934X_RESET_PCIE BIT(6)
  618. #define AR934X_RESET_USB_HOST BIT(5)
  619. #define AR934X_RESET_USB_PHY BIT(4)
  620. #define AR934X_RESET_USBSUS_OVERRIDE BIT(3)
  621. #define AR934X_RESET_LUT BIT(2)
  622. #define AR934X_RESET_MBOX BIT(1)
  623. #define AR934X_RESET_I2S BIT(0)
  624. #define QCA953X_RESET_USB_EXT_PWR BIT(29)
  625. #define QCA953X_RESET_EXTERNAL BIT(28)
  626. #define QCA953X_RESET_RTC BIT(27)
  627. #define QCA953X_RESET_FULL_CHIP BIT(24)
  628. #define QCA953X_RESET_GE1_MDIO BIT(23)
  629. #define QCA953X_RESET_GE0_MDIO BIT(22)
  630. #define QCA953X_RESET_CPU_NMI BIT(21)
  631. #define QCA953X_RESET_CPU_COLD BIT(20)
  632. #define QCA953X_RESET_DDR BIT(16)
  633. #define QCA953X_RESET_USB_PHY_PLL_PWD_EXT BIT(15)
  634. #define QCA953X_RESET_GE1_MAC BIT(13)
  635. #define QCA953X_RESET_ETH_SWITCH_ANALOG BIT(12)
  636. #define QCA953X_RESET_USB_PHY_ANALOG BIT(11)
  637. #define QCA953X_RESET_GE0_MAC BIT(9)
  638. #define QCA953X_RESET_ETH_SWITCH BIT(8)
  639. #define QCA953X_RESET_PCIE_PHY BIT(7)
  640. #define QCA953X_RESET_PCIE BIT(6)
  641. #define QCA953X_RESET_USB_HOST BIT(5)
  642. #define QCA953X_RESET_USB_PHY BIT(4)
  643. #define QCA953X_RESET_USBSUS_OVERRIDE BIT(3)
  644. #define QCA955X_RESET_HOST BIT(31)
  645. #define QCA955X_RESET_SLIC BIT(30)
  646. #define QCA955X_RESET_HDMA BIT(29)
  647. #define QCA955X_RESET_EXTERNAL BIT(28)
  648. #define QCA955X_RESET_RTC BIT(27)
  649. #define QCA955X_RESET_PCIE_EP_INT BIT(26)
  650. #define QCA955X_RESET_CHKSUM_ACC BIT(25)
  651. #define QCA955X_RESET_FULL_CHIP BIT(24)
  652. #define QCA955X_RESET_GE1_MDIO BIT(23)
  653. #define QCA955X_RESET_GE0_MDIO BIT(22)
  654. #define QCA955X_RESET_CPU_NMI BIT(21)
  655. #define QCA955X_RESET_CPU_COLD BIT(20)
  656. #define QCA955X_RESET_HOST_RESET_INT BIT(19)
  657. #define QCA955X_RESET_PCIE_EP BIT(18)
  658. #define QCA955X_RESET_UART1 BIT(17)
  659. #define QCA955X_RESET_DDR BIT(16)
  660. #define QCA955X_RESET_USB_PHY_PLL_PWD_EXT BIT(15)
  661. #define QCA955X_RESET_NANDF BIT(14)
  662. #define QCA955X_RESET_GE1_MAC BIT(13)
  663. #define QCA955X_RESET_SGMII_ANALOG BIT(12)
  664. #define QCA955X_RESET_USB_PHY_ANALOG BIT(11)
  665. #define QCA955X_RESET_HOST_DMA_INT BIT(10)
  666. #define QCA955X_RESET_GE0_MAC BIT(9)
  667. #define QCA955X_RESET_SGMII BIT(8)
  668. #define QCA955X_RESET_PCIE_PHY BIT(7)
  669. #define QCA955X_RESET_PCIE BIT(6)
  670. #define QCA955X_RESET_USB_HOST BIT(5)
  671. #define QCA955X_RESET_USB_PHY BIT(4)
  672. #define QCA955X_RESET_USBSUS_OVERRIDE BIT(3)
  673. #define QCA955X_RESET_LUT BIT(2)
  674. #define QCA955X_RESET_MBOX BIT(1)
  675. #define QCA955X_RESET_I2S BIT(0)
  676. #define AR933X_BOOTSTRAP_MDIO_GPIO_EN BIT(18)
  677. #define AR933X_BOOTSTRAP_DDR2 BIT(13)
  678. #define AR933X_BOOTSTRAP_EEPBUSY BIT(4)
  679. #define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)
  680. #define AR934X_BOOTSTRAP_SW_OPTION8 BIT(23)
  681. #define AR934X_BOOTSTRAP_SW_OPTION7 BIT(22)
  682. #define AR934X_BOOTSTRAP_SW_OPTION6 BIT(21)
  683. #define AR934X_BOOTSTRAP_SW_OPTION5 BIT(20)
  684. #define AR934X_BOOTSTRAP_SW_OPTION4 BIT(19)
  685. #define AR934X_BOOTSTRAP_SW_OPTION3 BIT(18)
  686. #define AR934X_BOOTSTRAP_SW_OPTION2 BIT(17)
  687. #define AR934X_BOOTSTRAP_SW_OPTION1 BIT(16)
  688. #define AR934X_BOOTSTRAP_USB_MODE_DEVICE BIT(7)
  689. #define AR934X_BOOTSTRAP_PCIE_RC BIT(6)
  690. #define AR934X_BOOTSTRAP_EJTAG_MODE BIT(5)
  691. #define AR934X_BOOTSTRAP_REF_CLK_40 BIT(4)
  692. #define AR934X_BOOTSTRAP_BOOT_FROM_SPI BIT(2)
  693. #define AR934X_BOOTSTRAP_SDRAM_DISABLED BIT(1)
  694. #define AR934X_BOOTSTRAP_DDR1 BIT(0)
  695. #define QCA953X_BOOTSTRAP_SW_OPTION2 BIT(12)
  696. #define QCA953X_BOOTSTRAP_SW_OPTION1 BIT(11)
  697. #define QCA953X_BOOTSTRAP_EJTAG_MODE BIT(5)
  698. #define QCA953X_BOOTSTRAP_REF_CLK_40 BIT(4)
  699. #define QCA953X_BOOTSTRAP_SDRAM_DISABLED BIT(1)
  700. #define QCA953X_BOOTSTRAP_DDR1 BIT(0)
  701. #define QCA955X_BOOTSTRAP_REF_CLK_40 BIT(4)
  702. #define QCA956X_BOOTSTRAP_REF_CLK_40 BIT(2)
  703. #define AR934X_PCIE_WMAC_INT_WMAC_MISC BIT(0)
  704. #define AR934X_PCIE_WMAC_INT_WMAC_TX BIT(1)
  705. #define AR934X_PCIE_WMAC_INT_WMAC_RXLP BIT(2)
  706. #define AR934X_PCIE_WMAC_INT_WMAC_RXHP BIT(3)
  707. #define AR934X_PCIE_WMAC_INT_PCIE_RC BIT(4)
  708. #define AR934X_PCIE_WMAC_INT_PCIE_RC0 BIT(5)
  709. #define AR934X_PCIE_WMAC_INT_PCIE_RC1 BIT(6)
  710. #define AR934X_PCIE_WMAC_INT_PCIE_RC2 BIT(7)
  711. #define AR934X_PCIE_WMAC_INT_PCIE_RC3 BIT(8)
  712. #define AR934X_PCIE_WMAC_INT_WMAC_ALL \
  713. (AR934X_PCIE_WMAC_INT_WMAC_MISC | AR934X_PCIE_WMAC_INT_WMAC_TX | \
  714. AR934X_PCIE_WMAC_INT_WMAC_RXLP | AR934X_PCIE_WMAC_INT_WMAC_RXHP)
  715. #define AR934X_PCIE_WMAC_INT_PCIE_ALL \
  716. (AR934X_PCIE_WMAC_INT_PCIE_RC | AR934X_PCIE_WMAC_INT_PCIE_RC0 | \
  717. AR934X_PCIE_WMAC_INT_PCIE_RC1 | AR934X_PCIE_WMAC_INT_PCIE_RC2 | \
  718. AR934X_PCIE_WMAC_INT_PCIE_RC3)
  719. #define QCA953X_PCIE_WMAC_INT_WMAC_MISC BIT(0)
  720. #define QCA953X_PCIE_WMAC_INT_WMAC_TX BIT(1)
  721. #define QCA953X_PCIE_WMAC_INT_WMAC_RXLP BIT(2)
  722. #define QCA953X_PCIE_WMAC_INT_WMAC_RXHP BIT(3)
  723. #define QCA953X_PCIE_WMAC_INT_PCIE_RC BIT(4)
  724. #define QCA953X_PCIE_WMAC_INT_PCIE_RC0 BIT(5)
  725. #define QCA953X_PCIE_WMAC_INT_PCIE_RC1 BIT(6)
  726. #define QCA953X_PCIE_WMAC_INT_PCIE_RC2 BIT(7)
  727. #define QCA953X_PCIE_WMAC_INT_PCIE_RC3 BIT(8)
  728. #define QCA953X_PCIE_WMAC_INT_WMAC_ALL \
  729. (QCA953X_PCIE_WMAC_INT_WMAC_MISC | QCA953X_PCIE_WMAC_INT_WMAC_TX | \
  730. QCA953X_PCIE_WMAC_INT_WMAC_RXLP | QCA953X_PCIE_WMAC_INT_WMAC_RXHP)
  731. #define QCA953X_PCIE_WMAC_INT_PCIE_ALL \
  732. (QCA953X_PCIE_WMAC_INT_PCIE_RC | QCA953X_PCIE_WMAC_INT_PCIE_RC0 | \
  733. QCA953X_PCIE_WMAC_INT_PCIE_RC1 | QCA953X_PCIE_WMAC_INT_PCIE_RC2 | \
  734. QCA953X_PCIE_WMAC_INT_PCIE_RC3)
  735. #define QCA955X_EXT_INT_WMAC_MISC BIT(0)
  736. #define QCA955X_EXT_INT_WMAC_TX BIT(1)
  737. #define QCA955X_EXT_INT_WMAC_RXLP BIT(2)
  738. #define QCA955X_EXT_INT_WMAC_RXHP BIT(3)
  739. #define QCA955X_EXT_INT_PCIE_RC1 BIT(4)
  740. #define QCA955X_EXT_INT_PCIE_RC1_INT0 BIT(5)
  741. #define QCA955X_EXT_INT_PCIE_RC1_INT1 BIT(6)
  742. #define QCA955X_EXT_INT_PCIE_RC1_INT2 BIT(7)
  743. #define QCA955X_EXT_INT_PCIE_RC1_INT3 BIT(8)
  744. #define QCA955X_EXT_INT_PCIE_RC2 BIT(12)
  745. #define QCA955X_EXT_INT_PCIE_RC2_INT0 BIT(13)
  746. #define QCA955X_EXT_INT_PCIE_RC2_INT1 BIT(14)
  747. #define QCA955X_EXT_INT_PCIE_RC2_INT2 BIT(15)
  748. #define QCA955X_EXT_INT_PCIE_RC2_INT3 BIT(16)
  749. #define QCA955X_EXT_INT_USB1 BIT(24)
  750. #define QCA955X_EXT_INT_USB2 BIT(28)
  751. #define QCA955X_EXT_INT_WMAC_ALL \
  752. (QCA955X_EXT_INT_WMAC_MISC | QCA955X_EXT_INT_WMAC_TX | \
  753. QCA955X_EXT_INT_WMAC_RXLP | QCA955X_EXT_INT_WMAC_RXHP)
  754. #define QCA955X_EXT_INT_PCIE_RC1_ALL \
  755. (QCA955X_EXT_INT_PCIE_RC1 | QCA955X_EXT_INT_PCIE_RC1_INT0 | \
  756. QCA955X_EXT_INT_PCIE_RC1_INT1 | QCA955X_EXT_INT_PCIE_RC1_INT2 | \
  757. QCA955X_EXT_INT_PCIE_RC1_INT3)
  758. #define QCA955X_EXT_INT_PCIE_RC2_ALL \
  759. (QCA955X_EXT_INT_PCIE_RC2 | QCA955X_EXT_INT_PCIE_RC2_INT0 | \
  760. QCA955X_EXT_INT_PCIE_RC2_INT1 | QCA955X_EXT_INT_PCIE_RC2_INT2 | \
  761. QCA955X_EXT_INT_PCIE_RC2_INT3)
  762. #define QCA956X_EXT_INT_WMAC_MISC BIT(0)
  763. #define QCA956X_EXT_INT_WMAC_TX BIT(1)
  764. #define QCA956X_EXT_INT_WMAC_RXLP BIT(2)
  765. #define QCA956X_EXT_INT_WMAC_RXHP BIT(3)
  766. #define QCA956X_EXT_INT_PCIE_RC1 BIT(4)
  767. #define QCA956X_EXT_INT_PCIE_RC1_INT0 BIT(5)
  768. #define QCA956X_EXT_INT_PCIE_RC1_INT1 BIT(6)
  769. #define QCA956X_EXT_INT_PCIE_RC1_INT2 BIT(7)
  770. #define QCA956X_EXT_INT_PCIE_RC1_INT3 BIT(8)
  771. #define QCA956X_EXT_INT_PCIE_RC2 BIT(12)
  772. #define QCA956X_EXT_INT_PCIE_RC2_INT0 BIT(13)
  773. #define QCA956X_EXT_INT_PCIE_RC2_INT1 BIT(14)
  774. #define QCA956X_EXT_INT_PCIE_RC2_INT2 BIT(15)
  775. #define QCA956X_EXT_INT_PCIE_RC2_INT3 BIT(16)
  776. #define QCA956X_EXT_INT_USB1 BIT(24)
  777. #define QCA956X_EXT_INT_USB2 BIT(28)
  778. #define QCA956X_EXT_INT_WMAC_ALL \
  779. (QCA956X_EXT_INT_WMAC_MISC | QCA956X_EXT_INT_WMAC_TX | \
  780. QCA956X_EXT_INT_WMAC_RXLP | QCA956X_EXT_INT_WMAC_RXHP)
  781. #define QCA956X_EXT_INT_PCIE_RC1_ALL \
  782. (QCA956X_EXT_INT_PCIE_RC1 | QCA956X_EXT_INT_PCIE_RC1_INT0 | \
  783. QCA956X_EXT_INT_PCIE_RC1_INT1 | QCA956X_EXT_INT_PCIE_RC1_INT2 | \
  784. QCA956X_EXT_INT_PCIE_RC1_INT3)
  785. #define QCA956X_EXT_INT_PCIE_RC2_ALL \
  786. (QCA956X_EXT_INT_PCIE_RC2 | QCA956X_EXT_INT_PCIE_RC2_INT0 | \
  787. QCA956X_EXT_INT_PCIE_RC2_INT1 | QCA956X_EXT_INT_PCIE_RC2_INT2 | \
  788. QCA956X_EXT_INT_PCIE_RC2_INT3)
  789. #define REV_ID_MAJOR_MASK 0xfff0
  790. #define REV_ID_MAJOR_AR71XX 0x00a0
  791. #define REV_ID_MAJOR_AR913X 0x00b0
  792. #define REV_ID_MAJOR_AR7240 0x00c0
  793. #define REV_ID_MAJOR_AR7241 0x0100
  794. #define REV_ID_MAJOR_AR7242 0x1100
  795. #define REV_ID_MAJOR_AR9330 0x0110
  796. #define REV_ID_MAJOR_AR9331 0x1110
  797. #define REV_ID_MAJOR_AR9341 0x0120
  798. #define REV_ID_MAJOR_AR9342 0x1120
  799. #define REV_ID_MAJOR_AR9344 0x2120
  800. #define REV_ID_MAJOR_QCA9533 0x0140
  801. #define REV_ID_MAJOR_QCA9533_V2 0x0160
  802. #define REV_ID_MAJOR_QCA9556 0x0130
  803. #define REV_ID_MAJOR_QCA9558 0x1130
  804. #define REV_ID_MAJOR_TP9343 0x0150
  805. #define REV_ID_MAJOR_QCA9561 0x1150
  806. #define AR71XX_REV_ID_MINOR_MASK 0x3
  807. #define AR71XX_REV_ID_MINOR_AR7130 0x0
  808. #define AR71XX_REV_ID_MINOR_AR7141 0x1
  809. #define AR71XX_REV_ID_MINOR_AR7161 0x2
  810. #define AR913X_REV_ID_MINOR_AR9130 0x0
  811. #define AR913X_REV_ID_MINOR_AR9132 0x1
  812. #define AR71XX_REV_ID_REVISION_MASK 0x3
  813. #define AR71XX_REV_ID_REVISION_SHIFT 2
  814. #define AR71XX_REV_ID_REVISION2_MASK 0xf
  815. /*
  816. * RTC block
  817. */
  818. #define AR933X_RTC_REG_RESET 0x40
  819. #define AR933X_RTC_REG_STATUS 0x44
  820. #define AR933X_RTC_REG_DERIVED 0x48
  821. #define AR933X_RTC_REG_FORCE_WAKE 0x4c
  822. #define AR933X_RTC_REG_INT_CAUSE 0x50
  823. #define AR933X_RTC_REG_CAUSE_CLR 0x50
  824. #define AR933X_RTC_REG_INT_ENABLE 0x54
  825. #define AR933X_RTC_REG_INT_MASKE 0x58
  826. #define QCA953X_RTC_REG_SYNC_RESET 0x40
  827. #define QCA953X_RTC_REG_SYNC_STATUS 0x44
  828. /*
  829. * SPI block
  830. */
  831. #define AR71XX_SPI_REG_FS 0x00
  832. #define AR71XX_SPI_REG_CTRL 0x04
  833. #define AR71XX_SPI_REG_IOC 0x08
  834. #define AR71XX_SPI_REG_RDS 0x0c
  835. #define AR71XX_SPI_FS_GPIO BIT(0)
  836. #define AR71XX_SPI_CTRL_RD BIT(6)
  837. #define AR71XX_SPI_CTRL_DIV_MASK 0x3f
  838. #define AR71XX_SPI_IOC_DO BIT(0)
  839. #define AR71XX_SPI_IOC_CLK BIT(8)
  840. #define AR71XX_SPI_IOC_CS(n) BIT(16 + (n))
  841. #define AR71XX_SPI_IOC_CS0 AR71XX_SPI_IOC_CS(0)
  842. #define AR71XX_SPI_IOC_CS1 AR71XX_SPI_IOC_CS(1)
  843. #define AR71XX_SPI_IOC_CS2 AR71XX_SPI_IOC_CS(2)
  844. #define AR71XX_SPI_IOC_CS_ALL \
  845. (AR71XX_SPI_IOC_CS0 | AR71XX_SPI_IOC_CS1 | AR71XX_SPI_IOC_CS2)
  846. /*
  847. * GPIO block
  848. */
  849. #define AR71XX_GPIO_REG_OE 0x00
  850. #define AR71XX_GPIO_REG_IN 0x04
  851. #define AR71XX_GPIO_REG_OUT 0x08
  852. #define AR71XX_GPIO_REG_SET 0x0c
  853. #define AR71XX_GPIO_REG_CLEAR 0x10
  854. #define AR71XX_GPIO_REG_INT_MODE 0x14
  855. #define AR71XX_GPIO_REG_INT_TYPE 0x18
  856. #define AR71XX_GPIO_REG_INT_POLARITY 0x1c
  857. #define AR71XX_GPIO_REG_INT_PENDING 0x20
  858. #define AR71XX_GPIO_REG_INT_ENABLE 0x24
  859. #define AR71XX_GPIO_REG_FUNC 0x28
  860. #define AR933X_GPIO_REG_FUNC 0x30
  861. #define AR934X_GPIO_REG_OUT_FUNC0 0x2c
  862. #define AR934X_GPIO_REG_OUT_FUNC1 0x30
  863. #define AR934X_GPIO_REG_OUT_FUNC2 0x34
  864. #define AR934X_GPIO_REG_OUT_FUNC3 0x38
  865. #define AR934X_GPIO_REG_OUT_FUNC4 0x3c
  866. #define AR934X_GPIO_REG_OUT_FUNC5 0x40
  867. #define AR934X_GPIO_REG_FUNC 0x6c
  868. #define QCA953X_GPIO_REG_OUT_FUNC0 0x2c
  869. #define QCA953X_GPIO_REG_OUT_FUNC1 0x30
  870. #define QCA953X_GPIO_REG_OUT_FUNC2 0x34
  871. #define QCA953X_GPIO_REG_OUT_FUNC3 0x38
  872. #define QCA953X_GPIO_REG_OUT_FUNC4 0x3c
  873. #define QCA953X_GPIO_REG_IN_ENABLE0 0x44
  874. #define QCA953X_GPIO_REG_FUNC 0x6c
  875. #define QCA955X_GPIO_REG_OUT_FUNC0 0x2c
  876. #define QCA955X_GPIO_REG_OUT_FUNC1 0x30
  877. #define QCA955X_GPIO_REG_OUT_FUNC2 0x34
  878. #define QCA955X_GPIO_REG_OUT_FUNC3 0x38
  879. #define QCA955X_GPIO_REG_OUT_FUNC4 0x3c
  880. #define QCA955X_GPIO_REG_OUT_FUNC5 0x40
  881. #define QCA955X_GPIO_REG_FUNC 0x6c
  882. #define QCA956X_GPIO_REG_OUT_FUNC0 0x2c
  883. #define QCA956X_GPIO_REG_OUT_FUNC1 0x30
  884. #define QCA956X_GPIO_REG_OUT_FUNC2 0x34
  885. #define QCA956X_GPIO_REG_OUT_FUNC3 0x38
  886. #define QCA956X_GPIO_REG_OUT_FUNC4 0x3c
  887. #define QCA956X_GPIO_REG_OUT_FUNC5 0x40
  888. #define QCA956X_GPIO_REG_IN_ENABLE0 0x44
  889. #define QCA956X_GPIO_REG_IN_ENABLE3 0x50
  890. #define QCA956X_GPIO_REG_FUNC 0x6c
  891. #define AR71XX_GPIO_FUNC_STEREO_EN BIT(17)
  892. #define AR71XX_GPIO_FUNC_SLIC_EN BIT(16)
  893. #define AR71XX_GPIO_FUNC_SPI_CS2_EN BIT(13)
  894. #define AR71XX_GPIO_FUNC_SPI_CS1_EN BIT(12)
  895. #define AR71XX_GPIO_FUNC_UART_EN BIT(8)
  896. #define AR71XX_GPIO_FUNC_USB_OC_EN BIT(4)
  897. #define AR71XX_GPIO_FUNC_USB_CLK_EN BIT(0)
  898. #define AR724X_GPIO_FUNC_GE0_MII_CLK_EN BIT(19)
  899. #define AR724X_GPIO_FUNC_SPI_EN BIT(18)
  900. #define AR724X_GPIO_FUNC_SPI_CS_EN2 BIT(14)
  901. #define AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13)
  902. #define AR724X_GPIO_FUNC_CLK_OBS5_EN BIT(12)
  903. #define AR724X_GPIO_FUNC_CLK_OBS4_EN BIT(11)
  904. #define AR724X_GPIO_FUNC_CLK_OBS3_EN BIT(10)
  905. #define AR724X_GPIO_FUNC_CLK_OBS2_EN BIT(9)
  906. #define AR724X_GPIO_FUNC_CLK_OBS1_EN BIT(8)
  907. #define AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7)
  908. #define AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6)
  909. #define AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5)
  910. #define AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4)
  911. #define AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3)
  912. #define AR724X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2)
  913. #define AR724X_GPIO_FUNC_UART_EN BIT(1)
  914. #define AR724X_GPIO_FUNC_JTAG_DISABLE BIT(0)
  915. #define AR913X_GPIO_FUNC_WMAC_LED_EN BIT(22)
  916. #define AR913X_GPIO_FUNC_EXP_PORT_CS_EN BIT(21)
  917. #define AR913X_GPIO_FUNC_I2S_REFCLKEN BIT(20)
  918. #define AR913X_GPIO_FUNC_I2S_MCKEN BIT(19)
  919. #define AR913X_GPIO_FUNC_I2S1_EN BIT(18)
  920. #define AR913X_GPIO_FUNC_I2S0_EN BIT(17)
  921. #define AR913X_GPIO_FUNC_SLIC_EN BIT(16)
  922. #define AR913X_GPIO_FUNC_UART_RTSCTS_EN BIT(9)
  923. #define AR913X_GPIO_FUNC_UART_EN BIT(8)
  924. #define AR913X_GPIO_FUNC_USB_CLK_EN BIT(4)
  925. #define AR933X_GPIO(x) BIT(x)
  926. #define AR933X_GPIO_FUNC_SPDIF2TCK BIT(31)
  927. #define AR933X_GPIO_FUNC_SPDIF_EN BIT(30)
  928. #define AR933X_GPIO_FUNC_I2SO_22_18_EN BIT(29)
  929. #define AR933X_GPIO_FUNC_I2S_MCK_EN BIT(27)
  930. #define AR933X_GPIO_FUNC_I2SO_EN BIT(26)
  931. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED_DUPL BIT(25)
  932. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED_COLL BIT(24)
  933. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED_ACT BIT(23)
  934. #define AR933X_GPIO_FUNC_SPI_EN BIT(18)
  935. #define AR933X_GPIO_FUNC_RES_TRUE BIT(15)
  936. #define AR933X_GPIO_FUNC_SPI_CS_EN2 BIT(14)
  937. #define AR933X_GPIO_FUNC_SPI_CS_EN1 BIT(13)
  938. #define AR933X_GPIO_FUNC_XLNA_EN BIT(12)
  939. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7)
  940. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6)
  941. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5)
  942. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4)
  943. #define AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3)
  944. #define AR933X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2)
  945. #define AR933X_GPIO_FUNC_UART_EN BIT(1)
  946. #define AR933X_GPIO_FUNC_JTAG_DISABLE BIT(0)
  947. #define AR934X_GPIO_FUNC_CLK_OBS7_EN BIT(9)
  948. #define AR934X_GPIO_FUNC_CLK_OBS6_EN BIT(8)
  949. #define AR934X_GPIO_FUNC_CLK_OBS5_EN BIT(7)
  950. #define AR934X_GPIO_FUNC_CLK_OBS4_EN BIT(6)
  951. #define AR934X_GPIO_FUNC_CLK_OBS3_EN BIT(5)
  952. #define AR934X_GPIO_FUNC_CLK_OBS2_EN BIT(4)
  953. #define AR934X_GPIO_FUNC_CLK_OBS1_EN BIT(3)
  954. #define AR934X_GPIO_FUNC_CLK_OBS0_EN BIT(2)
  955. #define AR934X_GPIO_FUNC_JTAG_DISABLE BIT(1)
  956. #define AR934X_GPIO_OUT_GPIO 0
  957. #define AR934X_GPIO_OUT_SPI_CS1 7
  958. #define AR934X_GPIO_OUT_LED_LINK0 41
  959. #define AR934X_GPIO_OUT_LED_LINK1 42
  960. #define AR934X_GPIO_OUT_LED_LINK2 43
  961. #define AR934X_GPIO_OUT_LED_LINK3 44
  962. #define AR934X_GPIO_OUT_LED_LINK4 45
  963. #define AR934X_GPIO_OUT_EXT_LNA0 46
  964. #define AR934X_GPIO_OUT_EXT_LNA1 47
  965. #define QCA953X_GPIO(x) BIT(x)
  966. #define QCA953X_GPIO_MUX_MASK(x) (0xff << (x))
  967. #define QCA953X_GPIO_OUT_MUX_SPI_CS1 10
  968. #define QCA953X_GPIO_OUT_MUX_SPI_CS2 11
  969. #define QCA953X_GPIO_OUT_MUX_SPI_CS0 9
  970. #define QCA953X_GPIO_OUT_MUX_SPI_CLK 8
  971. #define QCA953X_GPIO_OUT_MUX_SPI_MOSI 12
  972. #define QCA953X_GPIO_OUT_MUX_UART0_SOUT 22
  973. #define QCA953X_GPIO_OUT_MUX_LED_LINK1 41
  974. #define QCA953X_GPIO_OUT_MUX_LED_LINK2 42
  975. #define QCA953X_GPIO_OUT_MUX_LED_LINK3 43
  976. #define QCA953X_GPIO_OUT_MUX_LED_LINK4 44
  977. #define QCA953X_GPIO_OUT_MUX_LED_LINK5 45
  978. #define QCA953X_GPIO_IN_MUX_UART0_SIN 9
  979. #define QCA953X_GPIO_IN_MUX_SPI_DATA_IN 8
  980. #define QCA956X_GPIO_OUT_MUX_GE0_MDO 32
  981. #define QCA956X_GPIO_OUT_MUX_GE0_MDC 33
  982. #define AR71XX_GPIO_COUNT 16
  983. #define AR7240_GPIO_COUNT 18
  984. #define AR7241_GPIO_COUNT 20
  985. #define AR913X_GPIO_COUNT 22
  986. #define AR933X_GPIO_COUNT 30
  987. #define AR934X_GPIO_COUNT 23
  988. #define QCA953X_GPIO_COUNT 18
  989. #define QCA955X_GPIO_COUNT 24
  990. #define QCA956X_GPIO_COUNT 23
  991. /*
  992. * SRIF block
  993. */
  994. #define AR933X_SRIF_DDR_DPLL1_REG 0x240
  995. #define AR933X_SRIF_DDR_DPLL2_REG 0x244
  996. #define AR933X_SRIF_DDR_DPLL3_REG 0x248
  997. #define AR933X_SRIF_DDR_DPLL4_REG 0x24c
  998. #define AR934X_SRIF_CPU_DPLL1_REG 0x1c0
  999. #define AR934X_SRIF_CPU_DPLL2_REG 0x1c4
  1000. #define AR934X_SRIF_CPU_DPLL3_REG 0x1c8
  1001. #define AR934X_SRIF_CPU_DPLL4_REG 0x1cc
  1002. #define AR934X_SRIF_DDR_DPLL1_REG 0x240
  1003. #define AR934X_SRIF_DDR_DPLL2_REG 0x244
  1004. #define AR934X_SRIF_DDR_DPLL3_REG 0x248
  1005. #define AR934X_SRIF_DDR_DPLL4_REG 0x24c
  1006. #define AR934X_SRIF_DPLL1_REFDIV_SHIFT 27
  1007. #define AR934X_SRIF_DPLL1_REFDIV_MASK 0x1f
  1008. #define AR934X_SRIF_DPLL1_NINT_SHIFT 18
  1009. #define AR934X_SRIF_DPLL1_NINT_MASK 0x1ff
  1010. #define AR934X_SRIF_DPLL1_NFRAC_MASK 0x0003ffff
  1011. #define AR934X_SRIF_DPLL2_LOCAL_PLL BIT(30)
  1012. #define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13
  1013. #define AR934X_SRIF_DPLL2_OUTDIV_MASK 0x7
  1014. #define QCA953X_SRIF_BB_DPLL1_REG 0x180
  1015. #define QCA953X_SRIF_BB_DPLL2_REG 0x184
  1016. #define QCA953X_SRIF_BB_DPLL3_REG 0x188
  1017. #define QCA953X_SRIF_CPU_DPLL1_REG 0x1c0
  1018. #define QCA953X_SRIF_CPU_DPLL2_REG 0x1c4
  1019. #define QCA953X_SRIF_CPU_DPLL3_REG 0x1c8
  1020. #define QCA953X_SRIF_DDR_DPLL1_REG 0x240
  1021. #define QCA953X_SRIF_DDR_DPLL2_REG 0x244
  1022. #define QCA953X_SRIF_DDR_DPLL3_REG 0x248
  1023. #define QCA953X_SRIF_PCIE_DPLL1_REG 0xc00
  1024. #define QCA953X_SRIF_PCIE_DPLL2_REG 0xc04
  1025. #define QCA953X_SRIF_PCIE_DPLL3_REG 0xc08
  1026. #define QCA953X_SRIF_PMU1_REG 0xc40
  1027. #define QCA953X_SRIF_PMU2_REG 0xc44
  1028. #define QCA953X_SRIF_DPLL1_REFDIV_SHIFT 27
  1029. #define QCA953X_SRIF_DPLL1_REFDIV_MASK 0x1f
  1030. #define QCA953X_SRIF_DPLL1_NINT_SHIFT 18
  1031. #define QCA953X_SRIF_DPLL1_NINT_MASK 0x1ff
  1032. #define QCA953X_SRIF_DPLL1_NFRAC_MASK 0x0003ffff
  1033. #define QCA953X_SRIF_DPLL2_LOCAL_PLL BIT(30)
  1034. #define QCA953X_SRIF_DPLL2_KI_SHIFT 29
  1035. #define QCA953X_SRIF_DPLL2_KI_MASK 0x3
  1036. #define QCA953X_SRIF_DPLL2_KD_SHIFT 25
  1037. #define QCA953X_SRIF_DPLL2_KD_MASK 0xf
  1038. #define QCA953X_SRIF_DPLL2_PWD BIT(22)
  1039. #define QCA953X_SRIF_DPLL2_OUTDIV_SHIFT 13
  1040. #define QCA953X_SRIF_DPLL2_OUTDIV_MASK 0x7
  1041. /*
  1042. * MII_CTRL block
  1043. */
  1044. #define AR71XX_MII_REG_MII0_CTRL 0x00
  1045. #define AR71XX_MII_REG_MII1_CTRL 0x04
  1046. #define AR71XX_MII_CTRL_IF_MASK 3
  1047. #define AR71XX_MII_CTRL_SPEED_SHIFT 4
  1048. #define AR71XX_MII_CTRL_SPEED_MASK 3
  1049. #define AR71XX_MII_CTRL_SPEED_10 0
  1050. #define AR71XX_MII_CTRL_SPEED_100 1
  1051. #define AR71XX_MII_CTRL_SPEED_1000 2
  1052. #define AR71XX_MII0_CTRL_IF_GMII 0
  1053. #define AR71XX_MII0_CTRL_IF_MII 1
  1054. #define AR71XX_MII0_CTRL_IF_RGMII 2
  1055. #define AR71XX_MII0_CTRL_IF_RMII 3
  1056. #define AR71XX_MII1_CTRL_IF_RGMII 0
  1057. #define AR71XX_MII1_CTRL_IF_RMII 1
  1058. /*
  1059. * AR933X GMAC interface
  1060. */
  1061. #define AR933X_GMAC_REG_ETH_CFG 0x00
  1062. #define AR933X_ETH_CFG_RGMII_GE0 BIT(0)
  1063. #define AR933X_ETH_CFG_MII_GE0 BIT(1)
  1064. #define AR933X_ETH_CFG_GMII_GE0 BIT(2)
  1065. #define AR933X_ETH_CFG_MII_GE0_MASTER BIT(3)
  1066. #define AR933X_ETH_CFG_MII_GE0_SLAVE BIT(4)
  1067. #define AR933X_ETH_CFG_MII_GE0_ERR_EN BIT(5)
  1068. #define AR933X_ETH_CFG_SW_PHY_SWAP BIT(7)
  1069. #define AR933X_ETH_CFG_SW_PHY_ADDR_SWAP BIT(8)
  1070. #define AR933X_ETH_CFG_RMII_GE0 BIT(9)
  1071. #define AR933X_ETH_CFG_RMII_GE0_SPD_10 0
  1072. #define AR933X_ETH_CFG_RMII_GE0_SPD_100 BIT(10)
  1073. /*
  1074. * AR934X GMAC Interface
  1075. */
  1076. #define AR934X_GMAC_REG_ETH_CFG 0x00
  1077. #define AR934X_ETH_CFG_RGMII_GMAC0 BIT(0)
  1078. #define AR934X_ETH_CFG_MII_GMAC0 BIT(1)
  1079. #define AR934X_ETH_CFG_GMII_GMAC0 BIT(2)
  1080. #define AR934X_ETH_CFG_MII_GMAC0_MASTER BIT(3)
  1081. #define AR934X_ETH_CFG_MII_GMAC0_SLAVE BIT(4)
  1082. #define AR934X_ETH_CFG_MII_GMAC0_ERR_EN BIT(5)
  1083. #define AR934X_ETH_CFG_SW_ONLY_MODE BIT(6)
  1084. #define AR934X_ETH_CFG_SW_PHY_SWAP BIT(7)
  1085. #define AR934X_ETH_CFG_SW_APB_ACCESS BIT(9)
  1086. #define AR934X_ETH_CFG_RMII_GMAC0 BIT(10)
  1087. #define AR933X_ETH_CFG_MII_CNTL_SPEED BIT(11)
  1088. #define AR934X_ETH_CFG_RMII_GMAC0_MASTER BIT(12)
  1089. #define AR933X_ETH_CFG_SW_ACC_MSB_FIRST BIT(13)
  1090. #define AR934X_ETH_CFG_RXD_DELAY BIT(14)
  1091. #define AR934X_ETH_CFG_RXD_DELAY_MASK 0x3
  1092. #define AR934X_ETH_CFG_RXD_DELAY_SHIFT 14
  1093. #define AR934X_ETH_CFG_RDV_DELAY BIT(16)
  1094. #define AR934X_ETH_CFG_RDV_DELAY_MASK 0x3
  1095. #define AR934X_ETH_CFG_RDV_DELAY_SHIFT 16
  1096. /*
  1097. * QCA953X GMAC Interface
  1098. */
  1099. #define QCA953X_GMAC_REG_ETH_CFG 0x00
  1100. #define QCA953X_ETH_CFG_SW_ONLY_MODE BIT(6)
  1101. #define QCA953X_ETH_CFG_SW_PHY_SWAP BIT(7)
  1102. #define QCA953X_ETH_CFG_SW_APB_ACCESS BIT(9)
  1103. #define QCA953X_ETH_CFG_SW_ACC_MSB_FIRST BIT(13)
  1104. /*
  1105. * QCA955X GMAC Interface
  1106. */
  1107. #define QCA955X_GMAC_REG_ETH_CFG 0x00
  1108. #define QCA955X_ETH_CFG_RGMII_EN BIT(0)
  1109. #define QCA955X_ETH_CFG_GE0_SGMII BIT(6)
  1110. #endif /* __ASM_AR71XX_H */