omap730.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. /*
  2. *
  3. * BRIEF MODULE DESCRIPTION
  4. * OMAP730 hardware map
  5. *
  6. * Copyright (C) 2004 MPC-Data Limited. (http://www.mpc-data.co.uk)
  7. * Author: MPC-Data Limited
  8. * Dave Peverley
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License as published by the
  12. * Free Software Foundation; either version 2 of the License, or (at your
  13. * option) any later version.
  14. *
  15. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  16. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
  18. * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  19. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  20. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  21. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  22. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  23. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  24. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. *
  26. * You should have received a copy of the GNU General Public License along
  27. * with this program; if not, write to the Free Software Foundation, Inc.,
  28. * 675 Mass Ave, Cambridge, MA 02139, USA.
  29. */
  30. #ifndef __INCLUDED_OMAP730_H
  31. #define __INCLUDED_OMAP730_H
  32. #include <asm/arch/sizes.h>
  33. /***************************************************************************
  34. * OMAP730 Configuration Registers
  35. **************************************************************************/
  36. #define PERSEUS2_MPU_DEV_ID ((unsigned int)(0xFFFE1000))
  37. #define PERSEUS2_GSM_DEV_ID0 ((unsigned int)(0xFFFE1000))
  38. #define PERSEUS2_GDM_DEV_ID1 ((unsigned int)(0xFFFE1002))
  39. #define DSP_CONF ((unsigned int)(0xFFFE1004))
  40. #define PERSEUS2_MPU_DIE_ID0 ((unsigned int)(0xFFFE1008))
  41. #define GSM_ASIC_CONF ((unsigned int)(0xFFFE1008))
  42. #define PERSEUS2_MPU_DIE_ID1 ((unsigned int)(0xFFFE100C))
  43. #define PERSEUS2_MODE1 ((unsigned int)(0xFFFE1010))
  44. #define PERSEUS2_GSM_DIE_ID0 ((unsigned int)(0xFFFE1010))
  45. #define PERSEUS2_GSM_DIE_ID1 ((unsigned int)(0xFFFE1012))
  46. #define PERSEUS2_MODE2 ((unsigned int)(0xFFFE1014))
  47. #define PERSEUS2_GSM_DIE_ID2 ((unsigned int)(0xFFFE1014))
  48. #define PERSEUS2_GSM_DIE_ID3 ((unsigned int)(0xFFFE1016))
  49. #define PERSEUS2_ANALOG_CELLS_CONF ((unsigned int)(0xFFFE1018))
  50. #define SPECCTL ((unsigned int)(0xFFFE101C))
  51. #define SPARE1 ((unsigned int)(0xFFFE1020))
  52. #define SPARE2 ((unsigned int)(0xFFFE1024))
  53. #define GSM_PBG_IRQ ((unsigned int)(0xFFFE1028))
  54. #define DMA_REQ_CONF ((unsigned int)(0xFFFE1030))
  55. #define PE_CONF_NO_DUAL ((unsigned int)(0xFFFE1060))
  56. #define PERSEUS2_IO_CONF0 ((unsigned int)(0xFFFE1070))
  57. #define PERSEUS2_IO_CONF1 ((unsigned int)(0xFFFE1074))
  58. #define PERSEUS2_IO_CONF2 ((unsigned int)(0xFFFE1078))
  59. #define PERSEUS2_IO_CONF3 ((unsigned int)(0xFFFE107C))
  60. #define PERSEUS2_IO_CONF4 ((unsigned int)(0xFFFE1080))
  61. #define PERSEUS2_IO_CONF5 ((unsigned int)(0xFFFE1084))
  62. #define PERSEUS2_IO_CONF6 ((unsigned int)(0xFFFE1088))
  63. #define PERSEUS2_IO_CONF7 ((unsigned int)(0xFFFE108C))
  64. #define PERSEUS2_IO_CONF8 ((unsigned int)(0xFFFE1090))
  65. #define PERSEUS2_IO_CONF9 ((unsigned int)(0xFFFE1094))
  66. #define PERSEUS2_IO_CONF10 ((unsigned int)(0xFFFE1098))
  67. #define PERSEUS2_IO_CONF11 ((unsigned int)(0xFFFE109C))
  68. #define PERSEUS2_IO_CONF12 ((unsigned int)(0xFFFE10A0))
  69. #define PERSEUS2_IO_CONF13 ((unsigned int)(0xFFFE10A4))
  70. #define PERSEUS_PCC_CONF_REG ((unsigned int)(0xFFFE10B4))
  71. #define BIST_STATUS_INTERNAL ((unsigned int)(0xFFFE10B8))
  72. #define BIST_CONTROL ((unsigned int)(0xFFFE10C0))
  73. #define BOOT_ROM_REG ((unsigned int)(0xFFFE10C4))
  74. #define PRODUCTION_ID_REG ((unsigned int)(0xFFFE10C8))
  75. #define BIST_SECROM_SIGNATURE1_INTERNAL ((unsigned int)(0xFFFE10D0))
  76. #define BIST_SECROM_SIGNATURE2_INTERNAL ((unsigned int)(0xFFFE10D4))
  77. #define BIST_CONTROL_2 ((unsigned int)(0xFFFE10D8))
  78. #define DEBUG1 ((unsigned int)(0xFFFE10E0))
  79. #define DEBUG2 ((unsigned int)(0xFFFE10E4))
  80. #define DEBUG_DMA_IRQ ((unsigned int)(0xFFFE10E8))
  81. /***************************************************************************
  82. * OMAP730 EMIFS Registers (TRM 2.5.7)
  83. **************************************************************************/
  84. #define TCMIF_BASE 0xFFFECC00
  85. #define EMIFS_LRUREG (TCMIF_BASE + 0x04)
  86. #define EMIFS_CONFIG (TCMIF_BASE + 0x0C)
  87. #define FLASH_CFG_0 (TCMIF_BASE + 0x10)
  88. #define FLASH_CFG_1 (TCMIF_BASE + 0x14)
  89. #define FLASH_CFG_2 (TCMIF_BASE + 0x18)
  90. #define FLASH_CFG_3 (TCMIF_BASE + 0x1C)
  91. #define FL_CFG_DYN_WAIT (TCMIF_BASE + 0x40)
  92. #define EMIFS_TIMEOUT1_REG (TCMIF_BASE + 0x28)
  93. #define EMIFS_TIMEOUT2_REG (TCMIF_BASE + 0x2C)
  94. #define EMIFS_TIMEOUT3_REG (TCMIF_BASE + 0x30)
  95. #define EMIFS_ABORT_ADDR (TCMIF_BASE + 0x44)
  96. #define EMIFS_ABORT_TYPE (TCMIF_BASE + 0x48)
  97. #define EMIFS_ABORT_TOUT (TCMIF_BASE + 0x4C)
  98. #define FLASH_ACFG_0_1 (TCMIF_BASE + 0x50)
  99. #define FLASH_ACFG_1_1 (TCMIF_BASE + 0x54)
  100. #define FLASH_ACFG_2_1 (TCMIF_BASE + 0x58)
  101. #define FLASH_ACFG_3_1 (TCMIF_BASE + 0x5C)
  102. /***************************************************************************
  103. * OMAP730 Interrupt handlers
  104. **************************************************************************/
  105. #define OMAP_IH1_BASE 0xFFFECB00 /* MPU Level 1 IRQ handler */
  106. #define OMAP_IH2_BASE 0xfffe0000
  107. /***************************************************************************
  108. * OMAP730 Timers
  109. *
  110. * There are three general purpose OS timers in the 730 that can be
  111. * configured in autoreload or one-shot modes.
  112. **************************************************************************/
  113. #define OMAP730_32kHz_TIMER_BASE 0xFFFB9000
  114. /* 32k Timer Registers */
  115. #define TIMER32k_CR 0x08
  116. #define TIMER32k_TVR 0x00
  117. #define TIMER32k_TCR 0x04
  118. /* 32k Timer Control Register definition */
  119. #define TIMER32k_TSS (1<<0)
  120. #define TIMER32k_TRB (1<<1)
  121. #define TIMER32k_INT (1<<2)
  122. #define TIMER32k_ARL (1<<3)
  123. /* MPU Timer base addresses */
  124. #define OMAP730_MPUTIMER_BASE 0xfffec500
  125. #define OMAP730_MPUTIMER_OFF 0x00000100
  126. #define OMAP730_TIMER1_BASE 0xFFFEC500
  127. #define OMAP730_TIMER2_BASE 0xFFFEC600
  128. #define OMAP730_TIMER3_BASE 0xFFFEC700
  129. /* MPU Timer Register offsets */
  130. #define CNTL_TIMER 0x00 /* MPU_CNTL_TIMER */
  131. #define LOAD_TIM 0x04 /* MPU_LOAD_TIMER */
  132. #define READ_TIM 0x08 /* MPU_READ_TIMER */
  133. /* MPU_CNTL_TIMER register bits */
  134. #define MPUTIM_FREE (1<<6)
  135. #define MPUTIM_CLOCK_ENABLE (1<<5)
  136. #define MPUTIM_PTV_MASK (0x7<<MPUTIM_PTV_BIT)
  137. #define MPUTIM_PTV_BIT 2
  138. #define MPUTIM_AR (1<<1)
  139. #define MPUTIM_ST (1<<0)
  140. /***************************************************************************
  141. * OMAP730 GPIO
  142. *
  143. * The GPIO control is split over 6 register bases in the OMAP730 to allow
  144. * access to all the (6 x 32) GPIO pins!
  145. **************************************************************************/
  146. #define OMAP730_GPIO_BASE_1 0xFFFBC000
  147. #define OMAP730_GPIO_BASE_2 0xFFFBC800
  148. #define OMAP730_GPIO_BASE_3 0xFFFBD000
  149. #define OMAP730_GPIO_BASE_4 0xFFFBD800
  150. #define OMAP730_GPIO_BASE_5 0xFFFBE000
  151. #define OMAP730_GPIO_BASE_6 0xFFFBE800
  152. #define GPIO_DATA_INPUT 0x00
  153. #define GPIO_DATA_OUTPUT 0x04
  154. #define GPIO_DIRECTION_CONTROL 0x08
  155. #define GPIO_INTERRUPT_CONTROL 0x0C
  156. #define GPIO_INTERRUPT_MASK 0x10
  157. #define GPIO_INTERRUPT_STATUS 0x14
  158. #define GPIO_DATA_INPUT_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_DATA_INPUT))
  159. #define GPIO_DATA_OUTPUT_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_DATA_OUTPUT))
  160. #define GPIO_DIRECTION_CONTROL_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_DIRECTION_CONTROL))
  161. #define GPIO_INTERRUPT_CONTROL_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_INTERRUPT_CONTROL))
  162. #define GPIO_INTERRUPT_MASK_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_INTERRUPT_MASK))
  163. #define GPIO_INTERRUPT_STATUS_1 ((unsigned int)(OMAP730_GPIO_BASE_1 + GPIO_INTERRUPT_STATUS))
  164. #define GPIO_DATA_INPUT_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_DATA_INPUT))
  165. #define GPIO_DATA_OUTPUT_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_DATA_OUTPUT))
  166. #define GPIO_DIRECTION_CONTROL_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_DIRECTION_CONTROL))
  167. #define GPIO_INTERRUPT_CONTROL_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_INTERRUPT_CONTROL))
  168. #define GPIO_INTERRUPT_MASK_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_INTERRUPT_MASK))
  169. #define GPIO_INTERRUPT_STATUS_2 ((unsigned int)(OMAP730_GPIO_BASE_2 + GPIO_INTERRUPT_STATUS))
  170. #define GPIO_DATA_INPUT_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_DATA_INPUT))
  171. #define GPIO_DATA_OUTPUT_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_DATA_OUTPUT))
  172. #define GPIO_DIRECTION_CONTROL_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_DIRECTION_CONTROL))
  173. #define GPIO_INTERRUPT_CONTROL_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_INTERRUPT_CONTROL))
  174. #define GPIO_INTERRUPT_MASK_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_INTERRUPT_MASK))
  175. #define GPIO_INTERRUPT_STATUS_3 ((unsigned int)(OMAP730_GPIO_BASE_3 + GPIO_INTERRUPT_STATUS))
  176. #define GPIO_DATA_INPUT_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_DATA_INPUT))
  177. #define GPIO_DATA_OUTPUT_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_DATA_OUTPUT))
  178. #define GPIO_DIRECTION_CONTROL_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_DIRECTION_CONTROL))
  179. #define GPIO_INTERRUPT_CONTROL_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_INTERRUPT_CONTROL))
  180. #define GPIO_INTERRUPT_MASK_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_INTERRUPT_MASK))
  181. #define GPIO_INTERRUPT_STATUS_4 ((unsigned int)(OMAP730_GPIO_BASE_4 + GPIO_INTERRUPT_STATUS))
  182. #define GPIO_DATA_INPUT_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_DATA_INPUT))
  183. #define GPIO_DATA_OUTPUT_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_DATA_OUTPUT))
  184. #define GPIO_DIRECTION_CONTROL_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_DIRECTION_CONTROL))
  185. #define GPIO_INTERRUPT_CONTROL_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_INTERRUPT_CONTROL))
  186. #define GPIO_INTERRUPT_MASK_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_INTERRUPT_MASK))
  187. #define GPIO_INTERRUPT_STATUS_5 ((unsigned int)(OMAP730_GPIO_BASE_5 + GPIO_INTERRUPT_STATUS))
  188. #define GPIO_DATA_INPUT_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_DATA_INPUT))
  189. #define GPIO_DATA_OUTPUT_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_DATA_OUTPUT))
  190. #define GPIO_DIRECTION_CONTROL_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_DIRECTION_CONTROL))
  191. #define GPIO_INTERRUPT_CONTROL_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_INTERRUPT_CONTROL))
  192. #define GPIO_INTERRUPT_MASK_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_INTERRUPT_MASK))
  193. #define GPIO_INTERRUPT_STATUS_6 ((unsigned int)(OMAP730_GPIO_BASE_6 + GPIO_INTERRUPT_STATUS))
  194. /***************************************************************************
  195. * OMAP730 Watchdog timers
  196. **************************************************************************/
  197. #define WDTIM_BASE 0xFFFEC800
  198. #define WDTIM_CONTROL (WDTIM_BASE + 0x00) /* MPU_CNTL_TIMER */
  199. #define WDTIM_LOAD (WDTIM_BASE + 0x04) /* MPU_LOAD_TIMER */
  200. #define WDTIM_READ (WDTIM_BASE + 0x04) /* MPU_READ_TIMER */
  201. #define WDTIM_MODE (WDTIM_BASE + 0x08) /* MPU_TIMER_MODE */
  202. /***************************************************************************
  203. * OMAP730 Interrupt Registers
  204. **************************************************************************/
  205. /* Interrupt Register offsets */
  206. #define IRQ_ITR 0x00
  207. #define IRQ_MIR 0x04
  208. #define IRQ_SIR_IRQ 0x10
  209. #define IRQ_SIR_FIQ 0x14
  210. #define IRQ_CONTROL_REG 0x18
  211. #define IRQ_ILR0 0x1C /* ILRx == ILR0 + (0x4 * x) */
  212. #define IRQ_SIR 0x9C /* a.k.a.IRQ_ISR */
  213. #define IRQ_GMIR 0xA0
  214. #define REG_IHL1_MIR (OMAP_IH1_BASE + IRQ_MIR)
  215. #define REG_IHL2_MIR (OMAP_IH2_BASE + IRQ_MIR)
  216. /***************************************************************************
  217. * OMAP730 Intersystem Communication Register (TRM 4.5)
  218. **************************************************************************/
  219. #define ICR_BASE 0xFFFBB800
  220. #define M_ICR (ICR_BASE + 0x00)
  221. #define G_ICR (ICR_BASE + 0x02)
  222. #define M_CTL (ICR_BASE + 0x04)
  223. #define G_CTL (ICR_BASE + 0x06)
  224. #define PM_BA (ICR_BASE + 0x0A)
  225. #define DM_BA (ICR_BASE + 0x0C)
  226. #define RM_BA (ICR_BASE + 0x0E)
  227. #define SSPI_TAS (ICR_BASE + 0x12)
  228. #endif /* ! __INCLUDED_OMAP730_H */