u300-regs.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /*
  2. *
  3. * arch/arm/mach-u300/include/mach/u300-regs.h
  4. *
  5. *
  6. * Copyright (C) 2006-2009 ST-Ericsson AB
  7. * License terms: GNU General Public License (GPL) version 2
  8. * Basic register address definitions in physical memory and
  9. * some block definitions for core devices like the timer.
  10. * Author: Linus Walleij <linus.walleij@stericsson.com>
  11. */
  12. #ifndef __MACH_U300_REGS_H
  13. #define __MACH_U300_REGS_H
  14. /*
  15. * These are the large blocks of memory allocated for I/O.
  16. * the defines are used for setting up the I/O memory mapping.
  17. */
  18. /* NAND Flash CS0 */
  19. #define U300_NAND_CS0_PHYS_BASE 0x80000000
  20. #define U300_NAND_CS0_VIRT_BASE 0xff040000
  21. /* NFIF */
  22. #define U300_NAND_IF_PHYS_BASE 0x9f800000
  23. #define U300_NAND_IF_VIRT_BASE 0xff030000
  24. /* AHB Peripherals */
  25. #define U300_AHB_PER_PHYS_BASE 0xa0000000
  26. #define U300_AHB_PER_VIRT_BASE 0xff010000
  27. /* FAST Peripherals */
  28. #define U300_FAST_PER_PHYS_BASE 0xc0000000
  29. #define U300_FAST_PER_VIRT_BASE 0xff020000
  30. /* SLOW Peripherals */
  31. #define U300_SLOW_PER_PHYS_BASE 0xc0010000
  32. #define U300_SLOW_PER_VIRT_BASE 0xff000000
  33. /* Boot ROM */
  34. #define U300_BOOTROM_PHYS_BASE 0xffff0000
  35. #define U300_BOOTROM_VIRT_BASE 0xffff0000
  36. /* SEMI config base */
  37. #ifdef CONFIG_MACH_U300_BS335
  38. #define U300_SEMI_CONFIG_BASE 0x2FFE0000
  39. #else
  40. #define U300_SEMI_CONFIG_BASE 0x30000000
  41. #endif
  42. /*
  43. * All the following peripherals are specified at their PHYSICAL address,
  44. * so if you need to access them (in the kernel), you MUST use the macros
  45. * defined in <asm/io.h> to map to the IO_ADDRESS_AHB() IO_ADDRESS_FAST()
  46. * etc.
  47. */
  48. /*
  49. * AHB peripherals
  50. */
  51. /* AHB Peripherals Bridge Controller */
  52. #define U300_AHB_BRIDGE_BASE (U300_AHB_PER_PHYS_BASE+0x0000)
  53. /* Vectored Interrupt Controller 0, servicing 32 interrupts */
  54. #define U300_INTCON0_BASE (U300_AHB_PER_PHYS_BASE+0x1000)
  55. #define U300_INTCON0_VBASE (U300_AHB_PER_VIRT_BASE+0x1000)
  56. /* Vectored Interrupt Controller 1, servicing 32 interrupts */
  57. #define U300_INTCON1_BASE (U300_AHB_PER_PHYS_BASE+0x2000)
  58. #define U300_INTCON1_VBASE (U300_AHB_PER_VIRT_BASE+0x2000)
  59. /* Memory Stick Pro (MSPRO) controller */
  60. #define U300_MSPRO_BASE (U300_AHB_PER_PHYS_BASE+0x3000)
  61. /* EMIF Configuration Area */
  62. #define U300_EMIF_CFG_BASE (U300_AHB_PER_PHYS_BASE+0x4000)
  63. /*
  64. * FAST peripherals
  65. */
  66. /* FAST bridge control */
  67. #define U300_FAST_BRIDGE_BASE (U300_FAST_PER_PHYS_BASE+0x0000)
  68. /* MMC/SD controller */
  69. #define U300_MMCSD_BASE (U300_FAST_PER_PHYS_BASE+0x1000)
  70. /* PCM I2S0 controller */
  71. #define U300_PCM_I2S0_BASE (U300_FAST_PER_PHYS_BASE+0x2000)
  72. /* PCM I2S1 controller */
  73. #define U300_PCM_I2S1_BASE (U300_FAST_PER_PHYS_BASE+0x3000)
  74. /* I2C0 controller */
  75. #define U300_I2C0_BASE (U300_FAST_PER_PHYS_BASE+0x4000)
  76. /* I2C1 controller */
  77. #define U300_I2C1_BASE (U300_FAST_PER_PHYS_BASE+0x5000)
  78. /* SPI controller */
  79. #define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000)
  80. #ifdef CONFIG_MACH_U300_BS335
  81. /* Fast UART1 on U335 only */
  82. #define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
  83. #endif
  84. /*
  85. * SLOW peripherals
  86. */
  87. /* SLOW bridge control */
  88. #define U300_SLOW_BRIDGE_BASE (U300_SLOW_PER_PHYS_BASE)
  89. /* SYSCON */
  90. #define U300_SYSCON_BASE (U300_SLOW_PER_PHYS_BASE+0x1000)
  91. #define U300_SYSCON_VBASE (U300_SLOW_PER_VIRT_BASE+0x1000)
  92. /* Watchdog */
  93. #define U300_WDOG_BASE (U300_SLOW_PER_PHYS_BASE+0x2000)
  94. /* UART0 */
  95. #define U300_UART0_BASE (U300_SLOW_PER_PHYS_BASE+0x3000)
  96. /* APP side special timer */
  97. #define U300_TIMER_APP_BASE (U300_SLOW_PER_PHYS_BASE+0x4000)
  98. #define U300_TIMER_APP_VBASE (U300_SLOW_PER_VIRT_BASE+0x4000)
  99. /* Keypad */
  100. #define U300_KEYPAD_BASE (U300_SLOW_PER_PHYS_BASE+0x5000)
  101. /* GPIO */
  102. #define U300_GPIO_BASE (U300_SLOW_PER_PHYS_BASE+0x6000)
  103. /* RTC */
  104. #define U300_RTC_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
  105. /* Bus tracer */
  106. #define U300_BUSTR_BASE (U300_SLOW_PER_PHYS_BASE+0x8000)
  107. /* Event handler (hardware queue) */
  108. #define U300_EVHIST_BASE (U300_SLOW_PER_PHYS_BASE+0x9000)
  109. /* Genric Timer */
  110. #define U300_TIMER_BASE (U300_SLOW_PER_PHYS_BASE+0xa000)
  111. /* PPM */
  112. #define U300_PPM_BASE (U300_SLOW_PER_PHYS_BASE+0xb000)
  113. /*
  114. * REST peripherals
  115. */
  116. /* ISP (image signal processor) is only available in U335 */
  117. #ifdef CONFIG_MACH_U300_BS335
  118. #define U300_ISP_BASE (0xA0008000)
  119. #endif
  120. /* DMA Controller base */
  121. #define U300_DMAC_BASE (0xC0020000)
  122. /* MSL Base */
  123. #define U300_MSL_BASE (0xc0022000)
  124. /* APEX Base */
  125. #define U300_APEX_BASE (0xc0030000)
  126. /* Video Encoder Base */
  127. #ifdef CONFIG_MACH_U300_BS335
  128. #define U300_VIDEOENC_BASE (0xc0080000)
  129. #else
  130. #define U300_VIDEOENC_BASE (0xc0040000)
  131. #endif
  132. /* XGAM Base */
  133. #define U300_XGAM_BASE (0xd0000000)
  134. /*
  135. * Virtual accessor macros for static devices
  136. */
  137. #endif