soc.h 5.5 KB

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