auLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:17k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* auLib.h - Au support header */
  2. /* Copyright 2001 Wind River Systems, Inc. */
  3. /*
  4.  * This file has been developed or significantly modified by the
  5.  * MIPS Center of Excellence Dedicated Engineering Staff.
  6.  * This notice is as per the MIPS Center of Excellence Master Partner
  7.  * Agreement, do not remove this notice without checking first with
  8.  * WR/Platforms MIPS Center of Excellence engineering management.
  9.  */
  10. /*
  11. modification history
  12. --------------------
  13. 01m,14may02,zmm  Global au1000 name changes. SPR 77333.
  14. 01l,30apr02,zmm  Add  AU1000_GPIO_PINFUNC definition.
  15. 01k,03dec01,zmm  Add CofE comment.
  16. 01j,27nov01,zmm  Add bits of counter control register, fix __cpluscplus bug.
  17. 01i,18oct01,pes  Merge changes
  18. 01h,03oct01,pes  Remove references to PHYS_TO_K1 macro so that this file
  19.                  becomes assembler safe.
  20. 01g,26sep01,tlc  Correct AC'97 macros.
  21. 01f,22aug01,pes  Add USB HOST register information
  22. 01e,13aug01,tlc  Add AC'97 Controller Information.
  23. 01d,13aug01,pes  Add defines needed to support PCI. Adjust addresses to make
  24.                  their KSEG1 locations more obvious.
  25. 01c,23jul01,zmm  Added Static Bus, SDRAM, UART, and clock Controllers.
  26. 01b,19jun01,zmm  Fix AU1000_INTERRUPT_CONTROLLER1_BASE
  27. 01a,18may01,mem  written.
  28. */
  29. /*
  30. This file contains I/O addresses and related constants for the
  31. Alchemy Semiconductor Au1000.
  32. */
  33. #ifndef __INCauh
  34. #define __INCauh
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif  /* __cplusplus */
  38. #define MSK(n,m) (((1<<(n+1)) - 1) & ~((1<<(m)) - 1))
  39. /* Interrupt controllers */
  40. #define AU_INTERRUPT_CONTROLLER0_BASE (0xb0400000)
  41. #define AU_INTERRUPT_CONTROLLER1_BASE (0xb1800000)
  42. #define AU_INT_CTRL_REG(ctrl, reg)
  43. (*(volatile UINT32 *)(((ctrl) ? AU_INTERRUPT_CONTROLLER1_BASE 
  44. : AU_INTERRUPT_CONTROLLER0_BASE) + (reg)))
  45. #define AU_INTC_CONFIG0_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x40)
  46. #define AU_INTC_CONFIG0_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x40)
  47. #define AU_INTC_CONFIG0_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x44)
  48. #define AU_INTC_CONFIG1_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x48)
  49. #define AU_INTC_CONFIG1_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x48)
  50. #define AU_INTC_CONFIG1_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x4c)
  51. #define AU_INTC_CONFIG2_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x50)
  52. #define AU_INTC_CONFIG2_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x50)
  53. #define AU_INTC_CONFIG2_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x54)
  54. #define AU_INTC_REQUEST0_INT(ctrl) AU_INT_CTRL_REG(ctrl, 0x54)
  55. #define AU_INTC_SOURCE_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x58)
  56. #define AU_INTC_SOURCE_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x58)
  57. #define AU_INTC_SOURCE_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x5c)
  58. #define AU_INTC_REQUEST1_INT(ctrl) AU_INT_CTRL_REG(ctrl, 0x5c)
  59. #define AU_INTC_ASSIGN_REQUEST_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x60)
  60. #define AU_INTC_ASSIGN_REQUEST_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x60)
  61. #define AU_INTC_ASSIGN_REQUEST_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x64)
  62. #define AU_INTC_WAKEUP_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x68)
  63. #define AU_INTC_WAKEUP_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x68)
  64. #define AU_INTC_WAKEUP_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x6c)
  65. #define AU_INTC_MASK_READ(ctrl) AU_INT_CTRL_REG(ctrl, 0x70)
  66. #define AU_INTC_MASK_SET(ctrl) AU_INT_CTRL_REG(ctrl, 0x70)
  67. #define AU_INTC_MASK_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x74)
  68. #define AU_INTC_RISING_EDGE_DETECT(ctrl) AU_INT_CTRL_REG(ctrl, 0x78)
  69. #define AU_INTC_RISING_EDGE_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x78)
  70. #define AU_INTC_FALLING_EDGE_DETECT(ctrl) AU_INT_CTRL_REG(ctrl, 0x7c)
  71. #define AU_INTC_FALLING_EDGE_CLEAR(ctrl) AU_INT_CTRL_REG(ctrl, 0x7c)
  72. #define AU_INTC_TEST_BIT(ctrl) AU_INT_CTRL_REG(ctrl, 0x80)
  73. /* SDRAM controller */
  74. #define AU_SDRAM_CONTROLLER_BASE   (0xb4000000)
  75. #define AU_SDRAM_REG(reg) (AU_SDRAM_CONTROLLER_BASE + (reg))
  76. #define AU_SDRAM_CS_MODE_0          AU_SDRAM_REG(0x00)
  77. #define AU_SDRAM_CS_MODE_1          AU_SDRAM_REG(0x04)
  78. #define AU_SDRAM_CS_MODE_2          AU_SDRAM_REG(0x08)
  79. #define AU_SDRAM_CS_CONFIG_0        AU_SDRAM_REG(0x0c)
  80. #define AU_SDRAM_CS_CONFIG_1        AU_SDRAM_REG(0x10)
  81. #define AU_SDRAM_CS_CONFIG_2        AU_SDRAM_REG(0x14)
  82. #define AU_SDRAM_REFRESH_CONFIG     AU_SDRAM_REG(0x18)
  83. #define AU_SDRAM_PRECHARGE_CMD      AU_SDRAM_REG(0x1c)
  84. #define AU_SDRAM_AUTO_REFRESH_CMD   AU_SDRAM_REG(0x20)
  85. #define AU_SDRAM_WRITE_EXTERN_0     AU_SDRAM_REG(0x24)
  86. #define AU_SDRAM_WRITE_EXTERN_1     AU_SDRAM_REG(0x28)
  87. #define AU_SDRAM_WRITE_EXTERN_2     AU_SDRAM_REG(0x2c)
  88. #define AU_SDRAM_SLEEP              AU_SDRAM_REG(0x30)
  89. #define AU_SDRAM_TOGGLE_CKE         AU_SDRAM_REG(0x34)
  90. #define AU_SDRAM_CS_MODE_F (1<<22)
  91. #define AU_SDRAM_CS_MODE_SR (1<<21)
  92. #define AU_SDRAM_CS_MODE_BS (1<<20)
  93. #define AU_SDRAM_CS_MODE_RS MSK(19,18)
  94. #define AU_SDRAM_CS_MODE_CS MSK(17,15)
  95. #define AU_SDRAM_CS_MODE_TRAS MSK(14,11)
  96. #define AU_SDRAM_CS_MODE_TMRD MSK(10,9)
  97. #define AU_SDRAM_CS_MODE_TWR MSK(8,7)
  98. #define AU_SDRAM_CS_MODE_TRP MSK(6,5)
  99. #define AU_SDRAM_CS_MODE_TRCD MSK(4,3)
  100. #define AU_SDRAM_CS_MODE_TCL MSK(2,0)
  101. #define SET_SDRAM_CS_MODE_RS(x) ((x)<<18)
  102. #define SET_SDRAM_CS_MODE_CS(x) ((x)<<15)
  103. #define SET_SDRAM_CS_MODE_TRAS(x) ((x)<<11)
  104. #define SET_SDRAM_CS_MODE_TMRD(x) ((x)<<9)
  105. #define SET_SDRAM_CS_MODE_TWR(x) ((x)<<7)
  106. #define SET_SDRAM_CS_MODE_TRP(x) ((x)<<5)
  107. #define SET_SDRAM_CS_MODE_TRCD(x) ((x)<<3)
  108. #define SET_SDRAM_CS_MODE_TCL(x) (x)
  109. #define AU_SDRAM_CS_CONFIG_E (1<<20)
  110. #define AU_SDRAM_CS_CONFIG_CSBA MSK(19,10)
  111. #define AU_SDRAM_CS_CONFIG_CSMASK MSK(9,0)
  112. #define SET_SDRAM_CS_CONFIG_CSBA(x) ((x)<<10)
  113. #define SET_SDRAM_CS_CONFIG_CSMASK(x) (x)
  114. #define AU_SDRAM_REFRESH_CONFIG_TRC MSK(31,28)
  115. #define AU_SDRAM_REFRESH_CONFIG_TRPM MSK(27,26)
  116. #define AU_SDRAM_REFRESH_CONFIG_E (1<<25)
  117. #define AU_SDRAM_REFRESH_CONFIG_REF_INTER MSK(24,0)
  118. #define SET_SDRAM_REFRESH_CONFIG_TRC(x) ((x)<<28)
  119. #define SET_SDRAM_REFRESH_CONFIG_TRPR(x) ((x)<<26)
  120. #define SET_SDRAM_REFRESH_CONFIG_REF_INTER(x) (x)
  121. /* Static BUS controllers */
  122. #define AU_STATIC_CONTROLLER_BASE   (0xb4001000)
  123. #define AU_STATIC_REG(chipsel, reg) (AU_STATIC_CONTROLLER_BASE + 0x10*(chipsel) + reg)
  124. #define AU_STATIC_CONFIG(chipsel)   AU_STATIC_REG(chipsel, 0x0)
  125. #define AU_STATIC_TIMING(chipsel)   AU_STATIC_REG(chipsel, 0x4)
  126. #define AU_STATIC_ADDRESS(chipsel)  AU_STATIC_REG(chipsel, 0x8)
  127. #define AU_STATIC_CONFIG_BV  (1 << 12)
  128. #define AU_STATIC_CONFIG_D5  (1 << 11)
  129. #define AU_STATIC_CONFIG_AV  (1 << 10)
  130. #define AU_STATIC_CONFIG_LE         (1 << 9)
  131. #define AU_STATIC_CONFIG_TS  (1 << 8)
  132. #define AU_STATIC_CONFIG_EW  (1 << 7)
  133. #define AU_STATIC_CONFIG_H   (1 << 6)
  134. #define AU_STATIC_CONFIG_BS  (1 << 5)
  135. #define AU_STATIC_CONFIG_PM  (1 << 4)
  136. #define AU_STATIC_CONFIG_RO  (1 << 3)
  137. #define AU_STATIC_CONFIG_DTY  MSK(2,0)
  138. #define AU_STATIC_TIMING_TWCS MSK(30,28)
  139. #define AU_STATIC_TIMING_TCSH MSK(27,24)
  140. #define AU_STATIC_TIMING_TWP MSK(19,14)
  141. #define AU_STATIC_TIMING_TCSW MSK(13,10)
  142. #define AU_STATIC_TIMING_TPM MSK(9,6)
  143. #define AU_STATIC_TIMING_TA MSK(5,0)
  144. #define AU_STATIC_TIMING_TMST MSK(31,24)
  145. #define AU_STATIC_TIMING_TMSU MSK(23,17)
  146. #define AU_STATIC_TIMING_TMIH MSK(16,11)
  147. #define AU_STATIC_TIMING_TIST MSK(10,5)
  148. #define AU_STATIC_TIMING_TISU MSK(4,0)
  149. #define AU_STATIC_ADDRESS_E         (1<<28)
  150. #define AU_STATIC_ADDRESS_CSADDR MSK(27,14)
  151. #define AU_STATIC_ADDRESS_AMASK MSK(13,0)
  152. #define SET_STATIC_ADDRESS_CSADDR(x)   ((x)<<14)
  153. #define SET_STATIC_ADDRESS_AMASK(x) (x)
  154. /* Serial devices, UART 1 - UART 4 */
  155. #define UART0_BASE_ADR AU_UART_BASE
  156. #define AU_UART_BASE  (0xb1100000)
  157. #define AU_UART_REG(uart, reg)      (AU_UART_BASE + 0x100000*(uart) + (reg))
  158. #define AU_UART_RXDATA(uart) AU_UART_REG(uart,0x000)
  159. #define AU_UART_TXDATA(uart)  AU_UART_REG(uart,0x004)
  160. #define AU_UART_INTERRUPT_ENABLE(uart)  AU_UART_REG(uart,0x008)
  161. #define AU_UART_INTERRUPT_CAUSE(uart)  AU_UART_REG(uart,0x00C)
  162. #define AU_UART_FIFO_CONTROL(uart)  AU_UART_REG(uart,0x010)
  163. #define AU_UART_LINE_CONTROL(uart)  AU_UART_REG(uart,0x014)
  164. #define AU_UART_MODEM_CONTROL(uart)  AU_UART_REG(uart,0x018)
  165. #define AU_UART_LINE_STATUS(uart)  AU_UART_REG(uart,0x01C)
  166. #define AU_UART_MODEM_STATUS(uart)  AU_UART_REG(uart,0x020)
  167. #define AU_UART_CLOCK_DIVIDER(uart)  AU_UART_REG(uart,0x028)
  168. #define AU_UART_MODULE_CONTROL(uart) AU_UART_REG(uart,0x100)
  169. /* Clock controller */
  170. #define AU_CLOCK_BASE  (0xb1900000)
  171. #define AU_CLOCK_REG(reg)  (AU_CLOCK_BASE + (reg))
  172. #define AU_CLOCK_FREQUENCY_CONTROL0  AU_CLOCK_REG(0x20)
  173. #define AU_CLOCK_FREQUENCY_CONTROL1  AU_CLOCK_REG(0x24)
  174. #define AU_CLOCK_CLOCK_SOURCE_CONTROL  AU_CLOCK_REG(0x28)
  175. #define AU_CLOCK_CPU_PLL_CONTROL  AU_CLOCK_REG(0x60)
  176. #define AU_CLOCK_AUX_PLL_CONTROL  AU_CLOCK_REG(0x64)
  177. /* for use with AU_CLOCK_FREQUENCY_CONTROL0 register */
  178. #define AU_CLOCK_FREQUENCY_CONTROL_FS0      (1<<0)
  179. #define AU_CLOCK_FREQUENCY_CONTROL_FE0      (1<<1)
  180. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV0   MSK(9,2)
  181. #define AU_CLOCK_FREQUENCY_CONTROL_FS1      (1<<10)  
  182. #define AU_CLOCK_FREQUENCY_CONTROL_FE1      (1<<11)
  183. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV1   MSK(19,12)
  184.  
  185. #define AU_CLOCK_FREQUENCY_CONTROL_FS2      (1<<20)
  186. #define AU_CLOCK_FREQUENCY_CONTROL_FE2      (1<<21)
  187. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV2   MSK(29,22)
  188.  
  189. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV0_SH 2
  190. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV1_SH 12
  191. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV2_SH 22
  192.  
  193. /* for use with AU_CLOCK_FREQUENCY_CONTROL1 register */
  194. #define AU_CLOCK_FREQUENCY_CONTROL_FS3      (1<<0)
  195. #define AU_CLOCK_FREQUENCY_CONTROL_FE3      (1<<1)
  196. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV3   MSK(9,2)
  197.  
  198. #define AU_CLOCK_FREQUENCY_CONTROL_FS4      (1<<10)
  199. #define AU_CLOCK_FREQUENCY_CONTROL_FE4      (1<<11)
  200. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV4   MSK(19,12)
  201.  
  202. #define AU_CLOCK_FREQUENCY_CONTROL_FS5      (1<<20)
  203. #define AU_CLOCK_FREQUENCY_CONTROL_FE5      (1<<21)
  204. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV5   MSK(29,22)
  205.  
  206. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV3_SH 2
  207. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV4_SH 12
  208. #define AU_CLOCK_FREQUENCY_CONTROL_FRDIV5_SH 22
  209. #define AU_CLOCK_SOURCE_CONTROL_CIR         (1<<0)      
  210. #define AU_CLOCK_SOURCE_CONTROL_DIR         (1<<1)      
  211. #define AU_CLOCK_SOURCE_CONTROL_MIR         MSK(4,2)   
  212. #define AU_CLOCK_SOURCE_CONTROL_CUD         (1<<5)      
  213. #define AU_CLOCK_SOURCE_CONTROL_DUD         (1<<6)     
  214. #define AU_CLOCK_SOURCE_CONTROL_MUD         MSK(9,7)   
  215. #define AU_CLOCK_SOURCE_CONTROL_CUH         (1<<10)   
  216. #define AU_CLOCK_SOURCE_CONTROL_DUH         (1<<11)    
  217. #define AU_CLOCK_SOURCE_CONTROL_MUH         MSK(14,12) 
  218. #define AU_CLOCK_SOURCE_CONTROL_CI2         (1<<15)   
  219. #define AU_CLOCK_SOURCE_CONTROL_DI2         (1<<16)     
  220. #define AU_CLOCK_SOURCE_CONTROL_MI2         MSK(19,17)
  221. #define AU_CLOCK_SOURCE_CONTROL_CE0         (1<<20)    
  222. #define AU_CLOCK_SOURCE_CONTROL_DE0         (1<<21)   
  223. #define AU_CLOCK_SOURCE_CONTROL_ME0         MSK(24,22)  
  224. #define AU_CLOCK_SOURCE_CONTROL_CE1         (1<<25)   
  225. #define AU_CLOCK_SOURCE_CONTROL_DE1         (1<<26)     
  226. #define AU_CLOCK_SOURCE_CONTROL_ME1         MSK(29,27)  
  227. #define AU_CLOCK_SOURCE_CONTROL_IR_SH       2
  228. #define AU_CLOCK_SOURCE_CONTROL_UD_SH       7
  229. #define AU_CLOCK_SOURCE_CONTROL_UH_SH       12
  230. #define AU_CLOCK_SOURCE_CONTROL_I2_SH       17
  231. #define AU_CLOCK_SOURCE_CONTROL_E0_SH       22
  232. #define AU_CLOCK_SOURCE_CONTROL_E1_SH       27
  233. #define AU_CLOCK_SOURCE_CONTROL_AUX         0x1
  234. #define AU_CLOCK_SOURCE_CONTROL_FREQ0       0x2
  235. #define AU_CLOCK_SOURCE_CONTROL_FREQ1       0x3
  236. #define AU_CLOCK_SOURCE_CONTROL_FREQ2       0x4
  237. #define AU_CLOCK_SOURCE_CONTROL_FREQ3       0x5
  238. #define AU_CLOCK_SOURCE_CONTROL_FREQ4       0x6
  239. #define AU_CLOCK_SOURCE_CONTROL_FREQ5       0x7
  240. /* GPIO */
  241. #define AU_GPIO_BASE (0xb1900000)
  242. #define AU_GPIO_REG(reg) (AU_GPIO_BASE + (reg))
  243. #define AU_GPIO_PINFUNC AU_GPIO_REG(0x02c)
  244. #define AU_GPIO_TRISTATE_STATE_READ AU_GPIO_REG(0x100)
  245. #define AU_GPIO_TRISTATE_STATE_SET AU_GPIO_REG(0x100)
  246. #define AU_GPIO_OUTPUT_STATE_READ AU_GPIO_REG(0x108)
  247. #define AU_GPIO_OUTPUT_STATE_SET AU_GPIO_REG(0x108)
  248. #define AU_GPIO_OUTPUT_STATE_CLEAR AU_GPIO_REG(0x10c)
  249. #define AU_GPIO_PIN_STATE_READ      AU_GPIO_REG(0x110)
  250. #define AU_GPIO_PIN_INPUT_ENABLE      AU_GPIO_REG(0x110)
  251. #define AU_SYS_PIN_INPUT_EN         AU_GPIO_REG(0x110)
  252. /* AC'97 Controller */
  253. #define AU_AC97_BASE                        (0xb0000000)
  254. #define AU_AC97_REG(reg)                    (AU_AC97_BASE + (reg))
  255. #define AU_AC97_CONFIG                      AU_AC97_REG(0x00)
  256. #define AU_AC97_STATUS                      AU_AC97_REG(0x04)
  257. #define AU_AC97_DATA                        AU_AC97_REG(0x08)
  258. #define AU_AC97_CMMD                        AU_AC97_REG(0x0C)
  259. #define AU_AC97_CMMDRESP                    AU_AC97_REG(0x0C)
  260. #define AU_AC97_ENABLE                      AU_AC97_REG(0x10)
  261. #define AU_AC97_CONFIG_RSLOTS               MSK(22,13)
  262. #define AU_AC97_CONFIG_RSLOT3               (1 << 13)
  263. #define AU_AC97_CONFIG_RSLOT4               (1 << 14)
  264. #define AU_AC97_CONFIG_RSLOT5               (1 << 15)
  265. #define AU_AC97_CONFIG_RSLOT6               (1 << 16)
  266. #define AU_AC97_CONFIG_RSLOT7               (1 << 17)
  267. #define AU_AC97_CONFIG_RSLOT8               (1 << 18)
  268. #define AU_AC97_CONFIG_RSLOT9               (1 << 19)
  269. #define AU_AC97_CONFIG_RSLOT10              (1 << 20)
  270. #define AU_AC97_CONFIG_RSLOT11              (1 << 21)
  271. #define AU_AC97_CONFIG_RSLOT12              (1 << 22)
  272. #define AU_AC97_CONFIG_TSLOTS               MSK(12,3)
  273. #define AU_AC97_CONFIG_TSLOT3               (1 << 3)
  274. #define AU_AC97_CONFIG_TSLOT4               (1 << 4)
  275. #define AU_AC97_CONFIG_TSLOT5               (1 << 5)
  276. #define AU_AC97_CONFIG_TSLOT6               (1 << 6)
  277. #define AU_AC97_CONFIG_TSLOT7               (1 << 7)
  278. #define AU_AC97_CONFIG_TSLOT8               (1 << 8)
  279. #define AU_AC97_CONFIG_TSLOT9               (1 << 9)
  280. #define AU_AC97_CONFIG_TSLOT10              (1 << 10)
  281. #define AU_AC97_CONFIG_TSLOT11              (1 << 11)
  282. #define AU_AC97_CONFIG_TSLOT12              (1 << 12)
  283. #define AU_AC97_CONFIG_ACLINK_RESET         (1 << 0)
  284. #define AU_AC97_STATUS_READY                (1 << 7)
  285. #define AU_AC97_STATUS_CP                   (1 << 6)
  286. #define AU_AC97_CMMD_READ                   (1 << 7)
  287. #define AU_AC97_CMMD_INDEX                  MSK(6,0)
  288. #define AU_AC97_ENABLE_CTRL                 (1 << 4)
  289. #define AU_AC97_ENABLE_CLOCK                (1 << 0)
  290. #define SET_AC97_COMMAND(reg, value)            ((value) << 16 | reg )
  291. #define GET_AC97_COMMAND(reg)                   (reg >> 16)
  292. /* USB Controller */
  293. #define AU_USB_HOST_BASE (0xb0100000)
  294. #define AU_USB_HOST_REG(reg) (AU_USB_HOST_BASE + (reg))
  295. #define AU_USB_HOST_ENABLE AU_USB_HOST_REG(0x7fffc)
  296. /* bits in host config register */
  297. #define AU_USB_HOST_ENABLE_RD (1 << 4) /* Reset Done */
  298. #define AU_USB_HOST_ENABLE_CE (1 << 3) /* Clock Enable */
  299. #define AU_USB_HOST_ENABLE_E (1 << 2) /* Enable */
  300. #define AU_USB_HOST_ENABLE_C (1 << 1) /* Cacheable */
  301. #define AU_USB_HOST_ENABLE_BE (1 << 0) /* Big Endian */
  302. #define AU_SYS_BASE (0xb1900000)
  303. #define AU_SYS_REG(reg) (AU_SYS_BASE + (reg))
  304. #define AU_SYS_TOY_TRIM AU_SYS_REG(0x00)
  305. #define AU_SYS_TOY_WRITE AU_SYS_REG(0x04)
  306. #define AU_SYS_TOY_MATCH_0 AU_SYS_REG(0x08)
  307. #define AU_SYS_TOY_MATCH_1 AU_SYS_REG(0x0c)
  308. #define AU_SYS_TOY_MATCH_2 AU_SYS_REG(0x10)
  309. #define AU_SYS_COUNTER_CONTROL AU_SYS_REG(0x14)
  310. #define AU_SYS_SCRATCH_0 AU_SYS_REG(0x18)
  311. #define AU_SYS_SCRATCH_1 AU_SYS_REG(0x1c)
  312. #define AU_SYS_FREQ_CONTROL_0 AU_SYS_REG(0x20)
  313. #define AU_SYS_FREQ_CONTROL_1 AU_SYS_REG(0x24)
  314. #define AU_SYS_CLOCK_SOURCE AU_SYS_REG(0x28)
  315. #define AU_SYS_PIN_FUNCTION AU_SYS_REG(0x2c)
  316. #define AU_SYS_WAKE_MASK AU_SYS_REG(0x34)
  317. #define AU_SYS_ENDIAN AU_SYS_REG(0x38)
  318. #define AU_SYS_POWER_CONTROL AU_SYS_REG(0x3c)
  319. #define AU_SYS_TOY_READ AU_SYS_REG(0x40)
  320. #define AU_SYS_RTC_TRIM AU_SYS_REG(0x44)
  321. #define AU_SYS_RTC_WRITE AU_SYS_REG(0x48)
  322. #define AU_SYS_RTC_MATCH_0 AU_SYS_REG(0x4c)
  323. #define AU_SYS_RTC_MATCH_1 AU_SYS_REG(0x50)
  324. #define AU_SYS_RTC_MATCH_2 AU_SYS_REG(0x54)
  325. #define AU_SYS_RTC_READ AU_SYS_REG(0x58)
  326. #define AU_SYS_WAKE_SOURCE AU_SYS_REG(0x5c)
  327. #define AU_SYS_CPU_PLL AU_SYS_REG(0x60)
  328. #define AU_SYS_AUX_PLL AU_SYS_REG(0x64)
  329. #define AU_SYS_SLEEP_POWER AU_SYS_REG(0x78)
  330. #define AU_SYS_SLEEP AU_SYS_REG(0x7c)
  331. /* bits in RTC and TOY control register */
  332. #define AU_SYS_COUNTER_CONTROL_ERS  (1 << 23)
  333. #define AU_SYS_COUNTER_CONTROL_RTS  (1 << 20)
  334. #define AU_SYS_COUNTER_CONTROL_RM2  (1 << 19)
  335. #define AU_SYS_COUNTER_CONTROL_RM1  (1 << 18)
  336. #define AU_SYS_COUNTER_CONTROL_RM0  (1 << 17)
  337. #define AU_SYS_COUNTER_CONTROL_RS   (1 << 16)
  338. #define AU_SYS_COUNTER_CONTROL_BP   (1 << 14)
  339. #define AU_SYS_COUNTER_CONTROL_REN  (1 << 13)
  340. #define AU_SYS_COUNTER_CONTROL_BRT  (1 << 12)
  341. #define AU_SYS_COUNTER_CONTROL_TEN  (1 << 11)
  342. #define AU_SYS_COUNTER_CONTROL_BTT  (1 << 10)
  343. #define AU_SYS_COUNTER_CONTROL_EO   (1 << 8)
  344. #define AU_SYS_COUNTER_CONTROL_ETS  (1 << 7)
  345. #define AU_SYS_COUNTER_CONTROL_32S  (1 << 5)
  346. #define AU_SYS_COUNTER_CONTROL_TTS  (1 << 4)
  347. #define AU_SYS_COUNTER_CONTROL_TM2  (1 << 3)
  348. #define AU_SYS_COUNTER_CONTROL_TM1  (1 << 2)
  349. #define AU_SYS_COUNTER_CONTROL_TM0  (1 << 1)
  350. #define AU_SYS_COUNTER_CONTROL_TS   (1 << 0)
  351. #ifdef __cplusplus
  352. }
  353. #endif /* __cplusplus */
  354. #endif /* __INCauah */