hardware.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /*
  2. * Copyright (C) 2009 ST-Ericsson.
  3. *
  4. * U8500 hardware definitions
  5. *
  6. * This file is licensed under the terms of the GNU General Public
  7. * License version 2. This program is licensed "as is" without any
  8. * warranty of any kind, whether express or implied.
  9. */
  10. #ifndef __MACH_HARDWARE_H
  11. #define __MACH_HARDWARE_H
  12. /* macros to get at IO space when running virtually
  13. * We dont map all the peripherals, let ioremap do
  14. * this for us. We map only very basic peripherals here.
  15. */
  16. #define U8500_IO_VIRTUAL 0xf0000000
  17. #define U8500_IO_PHYSICAL 0xa0000000
  18. /* this macro is used in assembly, so no cast */
  19. #define IO_ADDRESS(x) \
  20. (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL)
  21. /* typesafe io address */
  22. #define __io_address(n) __io(IO_ADDRESS(n))
  23. /* used by some plat-nomadik code */
  24. #define io_p2v(n) __io_address(n)
  25. /*
  26. * Base address definitions for U8500 Onchip IPs. All the
  27. * peripherals are contained in a single 1 Mbyte region, with
  28. * AHB peripherals at the bottom and APB peripherals at the
  29. * top of the region. PER stands for PERIPHERAL region which
  30. * itself divided into sub regions.
  31. */
  32. #define U8500_PER3_BASE 0x80000000
  33. #define U8500_PER2_BASE 0x80110000
  34. #define U8500_PER1_BASE 0x80120000
  35. #define U8500_PER4_BASE 0x80150000
  36. #define U8500_PER6_BASE 0xa03c0000
  37. #define U8500_PER5_BASE 0xa03e0000
  38. #define U8500_PER7_BASE 0xa03d0000
  39. #define U8500_SVA_BASE 0xa0100000
  40. #define U8500_SIA_BASE 0xa0200000
  41. #define U8500_SGA_BASE 0xa0300000
  42. #define U8500_MCDE_BASE 0xa0350000
  43. #define U8500_DMA_BASE 0xa0362000
  44. #define U8500_SCU_BASE 0xa0410000
  45. #define U8500_GIC_CPU_BASE 0xa0410100
  46. #define U8500_TWD_BASE 0xa0410600
  47. #define U8500_GIC_DIST_BASE 0xa0411000
  48. #define U8500_L2CC_BASE 0xa0412000
  49. #define U8500_TWD_SIZE 0x100
  50. /* per7 base addressess */
  51. #define U8500_CR_BASE_ED (U8500_PER7_BASE + 0x8000)
  52. #define U8500_MTU0_BASE_ED (U8500_PER7_BASE + 0xa000)
  53. #define U8500_MTU1_BASE_ED (U8500_PER7_BASE + 0xb000)
  54. #define U8500_TZPC0_BASE_ED (U8500_PER7_BASE + 0xc000)
  55. #define U8500_CLKRST7_BASE_ED (U8500_PER7_BASE + 0xf000)
  56. /* per6 base addressess */
  57. #define U8500_RNG_BASE (U8500_PER6_BASE + 0x0000)
  58. #define U8500_PKA_BASE (U8500_PER6_BASE + 0x1000)
  59. #define U8500_PKAM_BASE (U8500_PER6_BASE + 0x2000)
  60. #define U8500_MTU0_BASE_V1 (U8500_PER6_BASE + 0x6000)
  61. #define U8500_MTU1_BASE_V1 (U8500_PER6_BASE + 0x7000)
  62. #define U8500_CR_BASE_V1 (U8500_PER6_BASE + 0x8000)
  63. #define U8500_CRYPTO0_BASE (U8500_PER6_BASE + 0xa000)
  64. #define U8500_CRYPTO1_BASE (U8500_PER6_BASE + 0xb000)
  65. #define U8500_CLKRST6_BASE (U8500_PER6_BASE + 0xf000)
  66. /* per5 base addressess */
  67. #define U8500_USBOTG_BASE (U8500_PER5_BASE + 0x00000)
  68. #define U8500_GPIO5_BASE (U8500_PER5_BASE + 0x1e000)
  69. #define U8500_CLKRST5_BASE (U8500_PER5_BASE + 0x1f000)
  70. /* per4 base addressess */
  71. #define U8500_BACKUPRAM0_BASE (U8500_PER4_BASE + 0x0000)
  72. #define U8500_BACKUPRAM1_BASE (U8500_PER4_BASE + 0x1000)
  73. #define U8500_RTT0_BASE (U8500_PER4_BASE + 0x2000)
  74. #define U8500_RTT1_BASE (U8500_PER4_BASE + 0x3000)
  75. #define U8500_RTC_BASE (U8500_PER4_BASE + 0x4000)
  76. #define U8500_SCR_BASE (U8500_PER4_BASE + 0x5000)
  77. #define U8500_DMC_BASE (U8500_PER4_BASE + 0x6000)
  78. #define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x7000)
  79. /* per3 base addressess */
  80. #define U8500_FSMC_BASE (U8500_PER3_BASE + 0x0000)
  81. #define U8500_SSP0_BASE (U8500_PER3_BASE + 0x2000)
  82. #define U8500_SSP1_BASE (U8500_PER3_BASE + 0x3000)
  83. #define U8500_I2C0_BASE (U8500_PER3_BASE + 0x4000)
  84. #define U8500_SDI2_BASE (U8500_PER3_BASE + 0x5000)
  85. #define U8500_SKE_BASE (U8500_PER3_BASE + 0x6000)
  86. #define U8500_UART2_BASE (U8500_PER3_BASE + 0x7000)
  87. #define U8500_SDI5_BASE (U8500_PER3_BASE + 0x8000)
  88. #define U8500_GPIO3_BASE (U8500_PER3_BASE + 0xe000)
  89. #define U8500_CLKRST3_BASE (U8500_PER3_BASE + 0xf000)
  90. /* per2 base addressess */
  91. #define U8500_I2C3_BASE (U8500_PER2_BASE + 0x0000)
  92. #define U8500_SPI2_BASE (U8500_PER2_BASE + 0x1000)
  93. #define U8500_SPI1_BASE (U8500_PER2_BASE + 0x2000)
  94. #define U8500_PWL_BASE (U8500_PER2_BASE + 0x3000)
  95. #define U8500_SDI4_BASE (U8500_PER2_BASE + 0x4000)
  96. #define U8500_MSP2_BASE (U8500_PER2_BASE + 0x7000)
  97. #define U8500_SDI1_BASE (U8500_PER2_BASE + 0x8000)
  98. #define U8500_SDI3_BASE (U8500_PER2_BASE + 0x9000)
  99. #define U8500_SPI0_BASE (U8500_PER2_BASE + 0xa000)
  100. #define U8500_HSIR_BASE (U8500_PER2_BASE + 0xb000)
  101. #define U8500_HSIT_BASE (U8500_PER2_BASE + 0xc000)
  102. #define U8500_GPIO2_BASE (U8500_PER2_BASE + 0xe000)
  103. #define U8500_CLKRST2_BASE (U8500_PER2_BASE + 0xf000)
  104. /* per1 base addresses */
  105. #define U8500_UART0_BASE (U8500_PER1_BASE + 0x0000)
  106. #define U8500_UART1_BASE (U8500_PER1_BASE + 0x1000)
  107. #define U8500_I2C1_BASE (U8500_PER1_BASE + 0x2000)
  108. #define U8500_MSP0_BASE (U8500_PER1_BASE + 0x3000)
  109. #define U8500_MSP1_BASE (U8500_PER1_BASE + 0x4000)
  110. #define U8500_SDI0_BASE (U8500_PER1_BASE + 0x6000)
  111. #define U8500_I2C2_BASE (U8500_PER1_BASE + 0x8000)
  112. #define U8500_SPI3_BASE (U8500_PER1_BASE + 0x9000)
  113. #define U8500_SLIM0_BASE (U8500_PER1_BASE + 0xa000)
  114. #define U8500_GPIO1_BASE (U8500_PER1_BASE + 0xe000)
  115. #define U8500_CLKRST1_BASE (U8500_PER1_BASE + 0xf000)
  116. #define U8500_GPIOBANK0_BASE U8500_GPIO1_BASE
  117. #define U8500_GPIOBANK1_BASE (U8500_GPIO1_BASE + 0x80)
  118. #define U8500_GPIOBANK2_BASE U8500_GPIO3_BASE
  119. #define U8500_GPIOBANK3_BASE (U8500_GPIO3_BASE + 0x80)
  120. #define U8500_GPIOBANK4_BASE (U8500_GPIO3_BASE + 0x100)
  121. #define U8500_GPIOBANK5_BASE (U8500_GPIO3_BASE + 0x180)
  122. #define U8500_GPIOBANK6_BASE U8500_GPIO2_BASE
  123. #define U8500_GPIOBANK7_BASE (U8500_GPIO2_BASE + 0x80)
  124. #define U8500_GPIOBANK8_BASE U8500_GPIO5_BASE
  125. /* ST-Ericsson modified pl022 id */
  126. #define SSP_PER_ID 0x01080022
  127. #ifndef __ASSEMBLY__
  128. #include <asm/cputype.h>
  129. static inline bool cpu_is_u8500ed(void)
  130. {
  131. return (read_cpuid_id() & 15) == 0;
  132. }
  133. static inline bool cpu_is_u8500v1(void)
  134. {
  135. return (read_cpuid_id() & 15) == 1;
  136. }
  137. #endif
  138. #endif /* __MACH_HARDWARE_H */