soc.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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_MV78460_ID 0x7846
  13. #define SOC_88F6810_ID 0x6810
  14. #define SOC_88F6820_ID 0x6820
  15. #define SOC_88F6828_ID 0x6828
  16. /* A38x revisions */
  17. #define MV_88F68XX_Z1_ID 0x0
  18. #define MV_88F68XX_A0_ID 0x4
  19. /* TCLK Core Clock definition */
  20. #ifndef CONFIG_SYS_TCLK
  21. #define CONFIG_SYS_TCLK 250000000 /* 250MHz */
  22. #endif
  23. /* Armada XP PLL frequency (used for NAND clock generation) */
  24. #define CONFIG_SYS_MVEBU_PLL_CLOCK 2000000000
  25. /* SOC specific definations */
  26. #define INTREG_BASE 0xd0000000
  27. #define INTREG_BASE_ADDR_REG (INTREG_BASE + 0x20080)
  28. #if defined(CONFIG_SPL_BUILD)
  29. /*
  30. * On A38x switching the regs base address without running from
  31. * SDRAM doesn't seem to work. So let the SPL still use the
  32. * default base address and switch to the new address in the
  33. * main u-boot later.
  34. */
  35. #define SOC_REGS_PHY_BASE 0xd0000000
  36. #else
  37. #define SOC_REGS_PHY_BASE 0xf1000000
  38. #endif
  39. #define MVEBU_REGISTER(x) (SOC_REGS_PHY_BASE + x)
  40. #define MVEBU_SDRAM_SCRATCH (MVEBU_REGISTER(0x01504))
  41. #define MVEBU_L2_CACHE_BASE (MVEBU_REGISTER(0x08000))
  42. #define CONFIG_SYS_PL310_BASE MVEBU_L2_CACHE_BASE
  43. #define MVEBU_TWSI_BASE (MVEBU_REGISTER(0x11000))
  44. #define MVEBU_MPP_BASE (MVEBU_REGISTER(0x18000))
  45. #define MVEBU_GPIO0_BASE (MVEBU_REGISTER(0x18100))
  46. #define MVEBU_GPIO1_BASE (MVEBU_REGISTER(0x18140))
  47. #define MVEBU_GPIO2_BASE (MVEBU_REGISTER(0x18180))
  48. #define MVEBU_SYSTEM_REG_BASE (MVEBU_REGISTER(0x18200))
  49. #define MVEBU_CLOCK_BASE (MVEBU_REGISTER(0x18700))
  50. #define MVEBU_CPU_WIN_BASE (MVEBU_REGISTER(0x20000))
  51. #define MVEBU_SDRAM_BASE (MVEBU_REGISTER(0x20180))
  52. #define MVEBU_TIMER_BASE (MVEBU_REGISTER(0x20300))
  53. #define MVEBU_REG_PCIE_BASE (MVEBU_REGISTER(0x40000))
  54. #define MVEBU_AXP_USB_BASE (MVEBU_REGISTER(0x50000))
  55. #define MVEBU_USB20_BASE (MVEBU_REGISTER(0x58000))
  56. #define MVEBU_AXP_SATA_BASE (MVEBU_REGISTER(0xa0000))
  57. #define MVEBU_SATA0_BASE (MVEBU_REGISTER(0xa8000))
  58. #define MVEBU_NAND_BASE (MVEBU_REGISTER(0xd0000))
  59. #define MVEBU_SDIO_BASE (MVEBU_REGISTER(0xd8000))
  60. #define SOC_COHERENCY_FABRIC_CTRL_REG (MVEBU_REGISTER(0x20200))
  61. #define MBUS_ERR_PROP_EN (1 << 8)
  62. #define MBUS_BRIDGE_WIN_CTRL_REG (MVEBU_REGISTER(0x20250))
  63. #define MBUS_BRIDGE_WIN_BASE_REG (MVEBU_REGISTER(0x20254))
  64. #define MVEBU_SOC_DEV_MUX_REG (MVEBU_SYSTEM_REG_BASE + 0x08)
  65. #define NAND_EN BIT(0)
  66. #define NAND_ARBITER_EN BIT(27)
  67. #define ARMADA_XP_PUP_ENABLE (MVEBU_SYSTEM_REG_BASE + 0x44c)
  68. #define GE0_PUP_EN BIT(0)
  69. #define GE1_PUP_EN BIT(1)
  70. #define LCD_PUP_EN BIT(2)
  71. #define NAND_PUP_EN BIT(4)
  72. #define SPI_PUP_EN BIT(5)
  73. #define MVEBU_CORE_DIV_CLK_CTRL(i) (MVEBU_CLOCK_BASE + ((i) * 0x8))
  74. #define NAND_ECC_DIVCKL_RATIO_OFFS 8
  75. #define NAND_ECC_DIVCKL_RATIO_MASK (0x3F << NAND_ECC_DIVCKL_RATIO_OFFS)
  76. #define SDRAM_MAX_CS 4
  77. #define SDRAM_ADDR_MASK 0xFF000000
  78. /* MVEBU CPU memory windows */
  79. #define MVCPU_WIN_CTRL_DATA CPU_WIN_CTRL_DATA
  80. #define MVCPU_WIN_ENABLE CPU_WIN_ENABLE
  81. #define MVCPU_WIN_DISABLE CPU_WIN_DISABLE
  82. #endif /* _MVEBU_SOC_H */