soc.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2009
  4. * Marvell Semiconductor <www.marvell.com>
  5. * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
  6. *
  7. * Header file for the Marvell's Feroceon CPU core.
  8. */
  9. #ifndef _MVEBU_SOC_H
  10. #define _MVEBU_SOC_H
  11. #ifndef __ASSEMBLY__
  12. #include <linux/bitops.h>
  13. #endif
  14. #define SOC_MV78230_ID 0x7823
  15. #define SOC_MV78260_ID 0x7826
  16. #define SOC_MV78460_ID 0x7846
  17. #define SOC_88F6720_ID 0x6720
  18. #define SOC_88F6810_ID 0x6810
  19. #define SOC_88F6820_ID 0x6820
  20. #define SOC_88F6828_ID 0x6828
  21. #define SOC_98DX3236_ID 0xf410
  22. #define SOC_98DX3336_ID 0xf400
  23. #define SOC_98DX4251_ID 0xfc00
  24. /* A375 revisions */
  25. #define MV_88F67XX_A0_ID 0x3
  26. /* A38x revisions */
  27. #define MV_88F68XX_Z1_ID 0x0
  28. #define MV_88F68XX_A0_ID 0x4
  29. #define MV_88F68XX_B0_ID 0xa
  30. /* TCLK Core Clock definition */
  31. #ifndef CONFIG_SYS_TCLK
  32. #define CONFIG_SYS_TCLK 250000000 /* 250MHz */
  33. #endif
  34. /* SOC specific definations */
  35. #define INTREG_BASE 0xd0000000
  36. #define INTREG_BASE_ADDR_REG (INTREG_BASE + 0x20080)
  37. #if defined(CONFIG_SPL_BUILD) || defined(CONFIG_ARMADA_3700)
  38. /*
  39. * The SPL U-Boot version still runs with the default
  40. * address for the internal registers, configured by
  41. * the BootROM. Only the main U-Boot version uses the
  42. * new internal register base address, that also is
  43. * required for the Linux kernel.
  44. */
  45. #define SOC_REGS_PHY_BASE 0xd0000000
  46. #elif defined(CONFIG_ARMADA_8K)
  47. #define SOC_REGS_PHY_BASE 0xf0000000
  48. #else
  49. #define SOC_REGS_PHY_BASE 0xf1000000
  50. #endif
  51. #define MVEBU_REGISTER(x) (SOC_REGS_PHY_BASE + x)
  52. #define MVEBU_SDRAM_SCRATCH (MVEBU_REGISTER(0x01504))
  53. #define MVEBU_L2_CACHE_BASE (MVEBU_REGISTER(0x08000))
  54. #define CONFIG_SYS_PL310_BASE MVEBU_L2_CACHE_BASE
  55. #define MVEBU_TWSI_BASE (MVEBU_REGISTER(0x11000))
  56. #define MVEBU_TWSI1_BASE (MVEBU_REGISTER(0x11100))
  57. #define MVEBU_MPP_BASE (MVEBU_REGISTER(0x18000))
  58. #define MVEBU_GPIO0_BASE (MVEBU_REGISTER(0x18100))
  59. #define MVEBU_GPIO1_BASE (MVEBU_REGISTER(0x18140))
  60. #define MVEBU_GPIO2_BASE (MVEBU_REGISTER(0x18180))
  61. #define MVEBU_SYSTEM_REG_BASE (MVEBU_REGISTER(0x18200))
  62. #define MVEBU_CLOCK_BASE (MVEBU_REGISTER(0x18700))
  63. #define MVEBU_CPU_WIN_BASE (MVEBU_REGISTER(0x20000))
  64. #define MVEBU_SDRAM_BASE (MVEBU_REGISTER(0x20180))
  65. #define MVEBU_TIMER_BASE (MVEBU_REGISTER(0x20300))
  66. #define MVEBU_REG_PCIE_BASE (MVEBU_REGISTER(0x40000))
  67. #define MVEBU_AXP_USB_BASE (MVEBU_REGISTER(0x50000))
  68. #define MVEBU_USB20_BASE (MVEBU_REGISTER(0x58000))
  69. #define MVEBU_REG_PCIE0_BASE (MVEBU_REGISTER(0x80000))
  70. #define MVEBU_AXP_SATA_BASE (MVEBU_REGISTER(0xa0000))
  71. #define MVEBU_SATA0_BASE (MVEBU_REGISTER(0xa8000))
  72. #define MVEBU_NAND_BASE (MVEBU_REGISTER(0xd0000))
  73. #define MVEBU_SDIO_BASE (MVEBU_REGISTER(0xd8000))
  74. #define MVEBU_LCD_BASE (MVEBU_REGISTER(0xe0000))
  75. #ifdef CONFIG_ARMADA_MSYS
  76. #define MVEBU_DFX_BASE (MBUS_DFX_BASE)
  77. #else
  78. #define MVEBU_DFX_BASE (MVEBU_REGISTER(0xe4000))
  79. #endif
  80. #define SOC_COHERENCY_FABRIC_CTRL_REG (MVEBU_REGISTER(0x20200))
  81. #define MBUS_ERR_PROP_EN (1 << 8)
  82. #define MBUS_BRIDGE_WIN_CTRL_REG (MVEBU_REGISTER(0x20250))
  83. #define MBUS_BRIDGE_WIN_BASE_REG (MVEBU_REGISTER(0x20254))
  84. #define MVEBU_SOC_DEV_MUX_REG (MVEBU_SYSTEM_REG_BASE + 0x08)
  85. #define NAND_EN BIT(0)
  86. #define NAND_ARBITER_EN BIT(27)
  87. #define ARMADA_XP_PUP_ENABLE (MVEBU_SYSTEM_REG_BASE + 0x44c)
  88. #define GE0_PUP_EN BIT(0)
  89. #define GE1_PUP_EN BIT(1)
  90. #define LCD_PUP_EN BIT(2)
  91. #define NAND_PUP_EN BIT(4)
  92. #define SPI_PUP_EN BIT(5)
  93. #define MVEBU_CORE_DIV_CLK_CTRL(i) (MVEBU_CLOCK_BASE + ((i) * 0x8))
  94. #ifdef CONFIG_ARMADA_MSYS
  95. #define MVEBU_DFX_DIV_CLK_CTRL(i) (MVEBU_DFX_BASE + 0xf8000 + 0x250 + ((i) * 0x4))
  96. #define NAND_ECC_DIVCKL_RATIO_OFFS 6
  97. #define NAND_ECC_DIVCKL_RATIO_MASK (0xF << NAND_ECC_DIVCKL_RATIO_OFFS)
  98. #else
  99. #define MVEBU_DFX_DIV_CLK_CTRL(i) (MVEBU_DFX_BASE + 0x250 + ((i) * 0x4))
  100. #endif
  101. #ifdef CONFIG_ARMADA_MSYS
  102. #define NAND_ECC_DIVCKL_RATIO_OFFS 6
  103. #define NAND_ECC_DIVCKL_RATIO_MASK (0xF << NAND_ECC_DIVCKL_RATIO_OFFS)
  104. #else
  105. #define NAND_ECC_DIVCKL_RATIO_OFFS 8
  106. #define NAND_ECC_DIVCKL_RATIO_MASK (0x3F << NAND_ECC_DIVCKL_RATIO_OFFS)
  107. #endif
  108. #define SDRAM_MAX_CS 4
  109. #define SDRAM_ADDR_MASK 0xFF000000
  110. /* MVEBU CPU memory windows */
  111. #define MVCPU_WIN_CTRL_DATA CPU_WIN_CTRL_DATA
  112. #define MVCPU_WIN_ENABLE CPU_WIN_ENABLE
  113. #define MVCPU_WIN_DISABLE CPU_WIN_DISABLE
  114. #define COMPHY_REFCLK_ALIGNMENT (MVEBU_REGISTER(0x182f8))
  115. /* BootROM error register (also includes some status infos) */
  116. #define CONFIG_BOOTROM_ERR_REG (MVEBU_REGISTER(0x182d0))
  117. #define BOOTROM_ERR_MODE_OFFS 28
  118. #define BOOTROM_ERR_MODE_MASK (0xf << BOOTROM_ERR_MODE_OFFS)
  119. #define BOOTROM_ERR_MODE_UART 0x6
  120. #define BOOTROM_ERR_CODE_OFFS 0
  121. #define BOOTROM_ERR_CODE_MASK (0xf << BOOTROM_ERR_CODE_OFFS)
  122. #if defined(CONFIG_ARMADA_375)
  123. /* SAR values for Armada 375 */
  124. #define CONFIG_SAR_REG (MVEBU_REGISTER(0xe8200))
  125. #define CONFIG_SAR2_REG (MVEBU_REGISTER(0xe8204))
  126. #define SAR_CPU_FREQ_OFFS 17
  127. #define SAR_CPU_FREQ_MASK (0x1f << SAR_CPU_FREQ_OFFS)
  128. #define BOOT_DEV_SEL_OFFS 3
  129. #define BOOT_DEV_SEL_MASK (0x3f << BOOT_DEV_SEL_OFFS)
  130. #define BOOT_FROM_UART 0x30
  131. #define BOOT_FROM_SPI 0x38
  132. #elif defined(CONFIG_ARMADA_38X)
  133. /* SAR values for Armada 38x */
  134. #define CONFIG_SAR_REG (MVEBU_REGISTER(0x18600))
  135. #define SAR_CPU_FREQ_OFFS 10
  136. #define SAR_CPU_FREQ_MASK (0x1f << SAR_CPU_FREQ_OFFS)
  137. #define SAR_BOOT_DEVICE_OFFS 4
  138. #define SAR_BOOT_DEVICE_MASK (0x1f << SAR_BOOT_DEVICE_OFFS)
  139. #define BOOT_DEV_SEL_OFFS 4
  140. #define BOOT_DEV_SEL_MASK (0x3f << BOOT_DEV_SEL_OFFS)
  141. #define BOOT_FROM_NAND 0x0A
  142. #define BOOT_FROM_SATA 0x22
  143. #define BOOT_FROM_UART 0x28
  144. #define BOOT_FROM_SATA_ALT 0x2A
  145. #define BOOT_FROM_UART_ALT 0x3f
  146. #define BOOT_FROM_SPI 0x32
  147. #define BOOT_FROM_MMC 0x30
  148. #define BOOT_FROM_MMC_ALT 0x31
  149. #elif defined(CONFIG_ARMADA_MSYS)
  150. /* SAR values for MSYS */
  151. #define CONFIG_SAR_REG (MBUS_DFX_BASE + 0xf8200)
  152. #define CONFIG_SAR2_REG (MBUS_DFX_BASE + 0xf8204)
  153. #define SAR_CPU_FREQ_OFFS 18
  154. #define SAR_CPU_FREQ_MASK (0x7 << SAR_CPU_FREQ_OFFS)
  155. #define SAR_BOOT_DEVICE_OFFS 11
  156. #define SAR_BOOT_DEVICE_MASK (0x7 << SAR_BOOT_DEVICE_OFFS)
  157. #define BOOT_DEV_SEL_OFFS 11
  158. #define BOOT_DEV_SEL_MASK (0x7 << BOOT_DEV_SEL_OFFS)
  159. #define BOOT_FROM_NAND 0x1
  160. #define BOOT_FROM_UART 0x2
  161. #define BOOT_FROM_SPI 0x3
  162. #else
  163. /* SAR values for Armada XP */
  164. #define CONFIG_SAR_REG (MVEBU_REGISTER(0x18230))
  165. #define CONFIG_SAR2_REG (MVEBU_REGISTER(0x18234))
  166. #define SAR_CPU_FREQ_OFFS 21
  167. #define SAR_CPU_FREQ_MASK (0x7 << SAR_CPU_FREQ_OFFS)
  168. #define SAR_FFC_FREQ_OFFS 24
  169. #define SAR_FFC_FREQ_MASK (0xf << SAR_FFC_FREQ_OFFS)
  170. #define SAR2_CPU_FREQ_OFFS 20
  171. #define SAR2_CPU_FREQ_MASK (0x1 << SAR2_CPU_FREQ_OFFS)
  172. #define SAR_BOOT_DEVICE_OFFS 5
  173. #define SAR_BOOT_DEVICE_MASK (0xf << SAR_BOOT_DEVICE_OFFS)
  174. #define BOOT_DEV_SEL_OFFS 5
  175. #define BOOT_DEV_SEL_MASK (0xf << BOOT_DEV_SEL_OFFS)
  176. #define BOOT_FROM_UART 0x2
  177. #define BOOT_FROM_SPI 0x3
  178. #endif
  179. #endif /* _MVEBU_SOC_H */