Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright 2008 Cavium Networks
0004  */
0005 
0006 #ifndef __MACH_BOARD_CNS3XXXH
0007 #define __MACH_BOARD_CNS3XXXH
0008 
0009 /*
0010  * Memory map
0011  */
0012 #define CNS3XXX_FLASH_BASE          0x10000000  /* Flash/SRAM Memory Bank 0 */
0013 #define CNS3XXX_FLASH_SIZE          SZ_256M
0014 
0015 #define CNS3XXX_DDR2SDRAM_BASE          0x20000000  /* DDR2 SDRAM Memory */
0016 
0017 #define CNS3XXX_SPI_FLASH_BASE          0x60000000  /* SPI Serial Flash Memory */
0018 
0019 #define CNS3XXX_SWITCH_BASE         0x70000000  /* Switch and HNAT Control */
0020 
0021 #define CNS3XXX_PPE_BASE            0x70001000  /* HANT */
0022 
0023 #define CNS3XXX_EMBEDDED_SRAM_BASE      0x70002000  /* HANT Embedded SRAM */
0024 
0025 #define CNS3XXX_SSP_BASE            0x71000000  /* Synchronous Serial Port - SPI/PCM/I2C */
0026 
0027 #define CNS3XXX_DMC_BASE            0x72000000  /* DMC Control (DDR2 SDRAM) */
0028 
0029 #define CNS3XXX_SMC_BASE            0x73000000  /* SMC Control */
0030 
0031 #define SMC_MEMC_STATUS_OFFSET          0x000
0032 #define SMC_MEMIF_CFG_OFFSET            0x004
0033 #define SMC_MEMC_CFG_SET_OFFSET         0x008
0034 #define SMC_MEMC_CFG_CLR_OFFSET         0x00C
0035 #define SMC_DIRECT_CMD_OFFSET           0x010
0036 #define SMC_SET_CYCLES_OFFSET           0x014
0037 #define SMC_SET_OPMODE_OFFSET           0x018
0038 #define SMC_REFRESH_PERIOD_0_OFFSET     0x020
0039 #define SMC_REFRESH_PERIOD_1_OFFSET     0x024
0040 #define SMC_SRAM_CYCLES0_0_OFFSET       0x100
0041 #define SMC_NAND_CYCLES0_0_OFFSET       0x100
0042 #define SMC_OPMODE0_0_OFFSET            0x104
0043 #define SMC_SRAM_CYCLES0_1_OFFSET       0x120
0044 #define SMC_NAND_CYCLES0_1_OFFSET       0x120
0045 #define SMC_OPMODE0_1_OFFSET            0x124
0046 #define SMC_USER_STATUS_OFFSET          0x200
0047 #define SMC_USER_CONFIG_OFFSET          0x204
0048 #define SMC_ECC_STATUS_OFFSET           0x300
0049 #define SMC_ECC_MEMCFG_OFFSET           0x304
0050 #define SMC_ECC_MEMCOMMAND1_OFFSET      0x308
0051 #define SMC_ECC_MEMCOMMAND2_OFFSET      0x30C
0052 #define SMC_ECC_ADDR0_OFFSET            0x310
0053 #define SMC_ECC_ADDR1_OFFSET            0x314
0054 #define SMC_ECC_VALUE0_OFFSET           0x318
0055 #define SMC_ECC_VALUE1_OFFSET           0x31C
0056 #define SMC_ECC_VALUE2_OFFSET           0x320
0057 #define SMC_ECC_VALUE3_OFFSET           0x324
0058 #define SMC_PERIPH_ID_0_OFFSET          0xFE0
0059 #define SMC_PERIPH_ID_1_OFFSET          0xFE4
0060 #define SMC_PERIPH_ID_2_OFFSET          0xFE8
0061 #define SMC_PERIPH_ID_3_OFFSET          0xFEC
0062 #define SMC_PCELL_ID_0_OFFSET           0xFF0
0063 #define SMC_PCELL_ID_1_OFFSET           0xFF4
0064 #define SMC_PCELL_ID_2_OFFSET           0xFF8
0065 #define SMC_PCELL_ID_3_OFFSET           0xFFC
0066 
0067 #define CNS3XXX_GPIOA_BASE          0x74000000  /* GPIO port A */
0068 
0069 #define CNS3XXX_GPIOB_BASE          0x74800000  /* GPIO port B */
0070 
0071 #define CNS3XXX_RTC_BASE            0x75000000  /* Real Time Clock */
0072 
0073 #define RTC_SEC_OFFSET              0x00
0074 #define RTC_MIN_OFFSET              0x04
0075 #define RTC_HOUR_OFFSET             0x08
0076 #define RTC_DAY_OFFSET              0x0C
0077 #define RTC_SEC_ALM_OFFSET          0x10
0078 #define RTC_MIN_ALM_OFFSET          0x14
0079 #define RTC_HOUR_ALM_OFFSET         0x18
0080 #define RTC_REC_OFFSET              0x1C
0081 #define RTC_CTRL_OFFSET             0x20
0082 #define RTC_INTR_STS_OFFSET         0x34
0083 
0084 #define CNS3XXX_MISC_BASE           0x76000000  /* Misc Control */
0085 #define CNS3XXX_MISC_BASE_VIRT          0xFB000000  /* Misc Control */
0086 
0087 #define CNS3XXX_PM_BASE             0x77000000  /* Power Management Control */
0088 #define CNS3XXX_PM_BASE_VIRT            0xFB001000
0089 
0090 #define PM_CLK_GATE_OFFSET          0x00
0091 #define PM_SOFT_RST_OFFSET          0x04
0092 #define PM_HS_CFG_OFFSET            0x08
0093 #define PM_CACTIVE_STA_OFFSET           0x0C
0094 #define PM_PWR_STA_OFFSET           0x10
0095 #define PM_SYS_CLK_CTRL_OFFSET          0x14
0096 #define PM_PLL_LCD_I2S_CTRL_OFFSET      0x18
0097 #define PM_PLL_HM_PD_OFFSET         0x1C
0098 
0099 #define CNS3XXX_UART0_BASE          0x78000000  /* UART 0 */
0100 #define CNS3XXX_UART0_BASE_VIRT         0xFB002000
0101 
0102 #define CNS3XXX_UART1_BASE          0x78400000  /* UART 1 */
0103 
0104 #define CNS3XXX_UART2_BASE          0x78800000  /* UART 2 */
0105 
0106 #define CNS3XXX_DMAC_BASE           0x79000000  /* Generic DMA Control */
0107 
0108 #define CNS3XXX_CORESIGHT_BASE          0x7A000000  /* CoreSight */
0109 
0110 #define CNS3XXX_CRYPTO_BASE         0x7B000000  /* Crypto */
0111 
0112 #define CNS3XXX_I2S_BASE            0x7C000000  /* I2S */
0113 
0114 #define CNS3XXX_TIMER1_2_3_BASE         0x7C800000  /* Timer */
0115 #define CNS3XXX_TIMER1_2_3_BASE_VIRT        0xFB003000
0116 
0117 #define TIMER1_COUNTER_OFFSET           0x00
0118 #define TIMER1_AUTO_RELOAD_OFFSET       0x04
0119 #define TIMER1_MATCH_V1_OFFSET          0x08
0120 #define TIMER1_MATCH_V2_OFFSET          0x0C
0121 
0122 #define TIMER2_COUNTER_OFFSET           0x10
0123 #define TIMER2_AUTO_RELOAD_OFFSET       0x14
0124 #define TIMER2_MATCH_V1_OFFSET          0x18
0125 #define TIMER2_MATCH_V2_OFFSET          0x1C
0126 
0127 #define TIMER1_2_CONTROL_OFFSET         0x30
0128 #define TIMER1_2_INTERRUPT_STATUS_OFFSET    0x34
0129 #define TIMER1_2_INTERRUPT_MASK_OFFSET      0x38
0130 
0131 #define TIMER_FREERUN_OFFSET            0x40
0132 #define TIMER_FREERUN_CONTROL_OFFSET        0x44
0133 
0134 #define CNS3XXX_HCIE_BASE           0x7D000000  /* HCIE Control */
0135 
0136 #define CNS3XXX_RAID_BASE           0x7E000000  /* RAID Control */
0137 
0138 #define CNS3XXX_AXI_IXC_BASE            0x7F000000  /* AXI IXC */
0139 
0140 #define CNS3XXX_CLCD_BASE           0x80000000  /* LCD Control */
0141 
0142 #define CNS3XXX_USBOTG_BASE         0x81000000  /* USB OTG Control */
0143 
0144 #define CNS3XXX_USB_BASE            0x82000000  /* USB Host Control */
0145 
0146 #define CNS3XXX_SATA2_BASE          0x83000000  /* SATA */
0147 #define CNS3XXX_SATA2_SIZE          SZ_16M
0148 
0149 #define CNS3XXX_CAMERA_BASE         0x84000000  /* Camera Interface */
0150 
0151 #define CNS3XXX_SDIO_BASE           0x85000000  /* SDIO */
0152 
0153 #define CNS3XXX_I2S_TDM_BASE            0x86000000  /* I2S TDM */
0154 
0155 #define CNS3XXX_2DG_BASE            0x87000000  /* 2D Graphic Control */
0156 
0157 #define CNS3XXX_USB_OHCI_BASE           0x88000000  /* USB OHCI */
0158 
0159 #define CNS3XXX_L2C_BASE            0x92000000  /* L2 Cache Control */
0160 
0161 #define CNS3XXX_PCIE0_MEM_BASE          0xA0000000  /* PCIe Port 0 IO/Memory Space */
0162 
0163 #define CNS3XXX_PCIE0_HOST_BASE         0xAB000000  /* PCIe Port 0 RC Base */
0164 #define CNS3XXX_PCIE0_HOST_BASE_VIRT        0xE1000000
0165 
0166 #define CNS3XXX_PCIE0_IO_BASE           0xAC000000  /* PCIe Port 0 */
0167 
0168 #define CNS3XXX_PCIE0_CFG0_BASE         0xAD000000  /* PCIe Port 0 CFG Type 0 */
0169 #define CNS3XXX_PCIE0_CFG0_BASE_VIRT        0xE3000000
0170 
0171 #define CNS3XXX_PCIE0_CFG1_BASE         0xAE000000  /* PCIe Port 0 CFG Type 1 */
0172 #define CNS3XXX_PCIE0_CFG1_BASE_VIRT        0xE4000000
0173 
0174 #define CNS3XXX_PCIE0_MSG_BASE          0xAF000000  /* PCIe Port 0 Message Space */
0175 
0176 #define CNS3XXX_PCIE1_MEM_BASE          0xB0000000  /* PCIe Port 1 IO/Memory Space */
0177 
0178 #define CNS3XXX_PCIE1_HOST_BASE         0xBB000000  /* PCIe Port 1 RC Base */
0179 #define CNS3XXX_PCIE1_HOST_BASE_VIRT        0xE9000000
0180 
0181 #define CNS3XXX_PCIE1_IO_BASE           0xBC000000  /* PCIe Port 1 */
0182 
0183 #define CNS3XXX_PCIE1_CFG0_BASE         0xBD000000  /* PCIe Port 1 CFG Type 0 */
0184 #define CNS3XXX_PCIE1_CFG0_BASE_VIRT        0xEB000000
0185 
0186 #define CNS3XXX_PCIE1_CFG1_BASE         0xBE000000  /* PCIe Port 1 CFG Type 1 */
0187 #define CNS3XXX_PCIE1_CFG1_BASE_VIRT        0xEC000000
0188 
0189 #define CNS3XXX_PCIE1_MSG_BASE          0xBF000000  /* PCIe Port 1 Message Space */
0190 
0191 /*
0192  * Testchip peripheral and fpga gic regions
0193  */
0194 #define CNS3XXX_TC11MP_SCU_BASE         0x90000000  /* IRQ, Test chip */
0195 #define CNS3XXX_TC11MP_SCU_BASE_VIRT        0xFB004000
0196 
0197 #define CNS3XXX_TC11MP_GIC_CPU_BASE     0x90000100  /* Test chip interrupt controller CPU interface */
0198 #define CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT    (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x100)
0199 
0200 #define CNS3XXX_TC11MP_TWD_BASE         0x90000600
0201 #define CNS3XXX_TC11MP_TWD_BASE_VIRT        (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x600)
0202 
0203 #define CNS3XXX_TC11MP_GIC_DIST_BASE        0x90001000  /* Test chip interrupt controller distributor */
0204 #define CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT   (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x1000)
0205 
0206 #define CNS3XXX_TC11MP_L220_BASE        0x92002000  /* L220 registers */
0207 
0208 /*
0209  * Misc block
0210  */
0211 #define MISC_MEM_MAP(offs) (void __iomem *)(CNS3XXX_MISC_BASE_VIRT + (offs))
0212 
0213 #define MISC_MEMORY_REMAP_REG           MISC_MEM_MAP(0x00)
0214 #define MISC_CHIP_CONFIG_REG            MISC_MEM_MAP(0x04)
0215 #define MISC_DEBUG_PROBE_DATA_REG       MISC_MEM_MAP(0x08)
0216 #define MISC_DEBUG_PROBE_SELECTION_REG      MISC_MEM_MAP(0x0C)
0217 #define MISC_IO_PIN_FUNC_SELECTION_REG      MISC_MEM_MAP(0x10)
0218 #define MISC_GPIOA_PIN_ENABLE_REG       MISC_MEM_MAP(0x14)
0219 #define MISC_GPIOB_PIN_ENABLE_REG       MISC_MEM_MAP(0x18)
0220 #define MISC_IO_PAD_DRIVE_STRENGTH_CTRL_A   MISC_MEM_MAP(0x1C)
0221 #define MISC_IO_PAD_DRIVE_STRENGTH_CTRL_B   MISC_MEM_MAP(0x20)
0222 #define MISC_GPIOA_15_0_PULL_CTRL_REG       MISC_MEM_MAP(0x24)
0223 #define MISC_GPIOA_16_31_PULL_CTRL_REG      MISC_MEM_MAP(0x28)
0224 #define MISC_GPIOB_15_0_PULL_CTRL_REG       MISC_MEM_MAP(0x2C)
0225 #define MISC_GPIOB_16_31_PULL_CTRL_REG      MISC_MEM_MAP(0x30)
0226 #define MISC_IO_PULL_CTRL_REG           MISC_MEM_MAP(0x34)
0227 #define MISC_E_FUSE_31_0_REG            MISC_MEM_MAP(0x40)
0228 #define MISC_E_FUSE_63_32_REG           MISC_MEM_MAP(0x44)
0229 #define MISC_E_FUSE_95_64_REG           MISC_MEM_MAP(0x48)
0230 #define MISC_E_FUSE_127_96_REG          MISC_MEM_MAP(0x4C)
0231 #define MISC_SOFTWARE_TEST_1_REG        MISC_MEM_MAP(0x50)
0232 #define MISC_SOFTWARE_TEST_2_REG        MISC_MEM_MAP(0x54)
0233 
0234 #define MISC_SATA_POWER_MODE            MISC_MEM_MAP(0x310)
0235 
0236 #define MISC_USB_CFG_REG            MISC_MEM_MAP(0x800)
0237 #define MISC_USB_STS_REG            MISC_MEM_MAP(0x804)
0238 #define MISC_USBPHY00_CFG_REG           MISC_MEM_MAP(0x808)
0239 #define MISC_USBPHY01_CFG_REG           MISC_MEM_MAP(0x80c)
0240 #define MISC_USBPHY10_CFG_REG           MISC_MEM_MAP(0x810)
0241 #define MISC_USBPHY11_CFG_REG           MISC_MEM_MAP(0x814)
0242 
0243 #define MISC_PCIEPHY_CMCTL(x)           MISC_MEM_MAP(0x900 + (x) * 0x004)
0244 #define MISC_PCIEPHY_CTL(x)         MISC_MEM_MAP(0x940 + (x) * 0x100)
0245 #define MISC_PCIE_AXIS_AWMISC(x)        MISC_MEM_MAP(0x944 + (x) * 0x100)
0246 #define MISC_PCIE_AXIS_ARMISC(x)        MISC_MEM_MAP(0x948 + (x) * 0x100)
0247 #define MISC_PCIE_AXIS_RMISC(x)         MISC_MEM_MAP(0x94C + (x) * 0x100)
0248 #define MISC_PCIE_AXIS_BMISC(x)         MISC_MEM_MAP(0x950 + (x) * 0x100)
0249 #define MISC_PCIE_AXIM_RMISC(x)         MISC_MEM_MAP(0x954 + (x) * 0x100)
0250 #define MISC_PCIE_AXIM_BMISC(x)         MISC_MEM_MAP(0x958 + (x) * 0x100)
0251 #define MISC_PCIE_CTRL(x)           MISC_MEM_MAP(0x95C + (x) * 0x100)
0252 #define MISC_PCIE_PM_DEBUG(x)           MISC_MEM_MAP(0x960 + (x) * 0x100)
0253 #define MISC_PCIE_RFC_DEBUG(x)          MISC_MEM_MAP(0x964 + (x) * 0x100)
0254 #define MISC_PCIE_CXPL_DEBUGL(x)        MISC_MEM_MAP(0x968 + (x) * 0x100)
0255 #define MISC_PCIE_CXPL_DEBUGH(x)        MISC_MEM_MAP(0x96C + (x) * 0x100)
0256 #define MISC_PCIE_DIAG_DEBUGH(x)        MISC_MEM_MAP(0x970 + (x) * 0x100)
0257 #define MISC_PCIE_W1CLR(x)          MISC_MEM_MAP(0x974 + (x) * 0x100)
0258 #define MISC_PCIE_INT_MASK(x)           MISC_MEM_MAP(0x978 + (x) * 0x100)
0259 #define MISC_PCIE_INT_STATUS(x)         MISC_MEM_MAP(0x97C + (x) * 0x100)
0260 
0261 /*
0262  * Power management and clock control
0263  */
0264 #define PMU_MEM_MAP(offs) (void __iomem *)(CNS3XXX_PM_BASE_VIRT + (offs))
0265 
0266 #define PM_CLK_GATE_REG                 PMU_MEM_MAP(0x000)
0267 #define PM_SOFT_RST_REG                 PMU_MEM_MAP(0x004)
0268 #define PM_HS_CFG_REG                   PMU_MEM_MAP(0x008)
0269 #define PM_CACTIVE_STA_REG              PMU_MEM_MAP(0x00C)
0270 #define PM_PWR_STA_REG                  PMU_MEM_MAP(0x010)
0271 #define PM_CLK_CTRL_REG                 PMU_MEM_MAP(0x014)
0272 #define PM_PLL_LCD_I2S_CTRL_REG             PMU_MEM_MAP(0x018)
0273 #define PM_PLL_HM_PD_CTRL_REG               PMU_MEM_MAP(0x01C)
0274 #define PM_REGULAT_CTRL_REG             PMU_MEM_MAP(0x020)
0275 #define PM_WDT_CTRL_REG                 PMU_MEM_MAP(0x024)
0276 #define PM_WU_CTRL0_REG                 PMU_MEM_MAP(0x028)
0277 #define PM_WU_CTRL1_REG                 PMU_MEM_MAP(0x02C)
0278 #define PM_CSR_REG                  PMU_MEM_MAP(0x030)
0279 
0280 /* PM_CLK_GATE_REG */
0281 #define PM_CLK_GATE_REG_OFFSET_SDIO         (25)
0282 #define PM_CLK_GATE_REG_OFFSET_GPU          (24)
0283 #define PM_CLK_GATE_REG_OFFSET_CIM          (23)
0284 #define PM_CLK_GATE_REG_OFFSET_LCDC         (22)
0285 #define PM_CLK_GATE_REG_OFFSET_I2S          (21)
0286 #define PM_CLK_GATE_REG_OFFSET_RAID         (20)
0287 #define PM_CLK_GATE_REG_OFFSET_SATA         (19)
0288 #define PM_CLK_GATE_REG_OFFSET_PCIE(x)          (17 + (x))
0289 #define PM_CLK_GATE_REG_OFFSET_USB_HOST         (16)
0290 #define PM_CLK_GATE_REG_OFFSET_USB_OTG          (15)
0291 #define PM_CLK_GATE_REG_OFFSET_TIMER            (14)
0292 #define PM_CLK_GATE_REG_OFFSET_CRYPTO           (13)
0293 #define PM_CLK_GATE_REG_OFFSET_HCIE         (12)
0294 #define PM_CLK_GATE_REG_OFFSET_SWITCH           (11)
0295 #define PM_CLK_GATE_REG_OFFSET_GPIO         (10)
0296 #define PM_CLK_GATE_REG_OFFSET_UART3            (9)
0297 #define PM_CLK_GATE_REG_OFFSET_UART2            (8)
0298 #define PM_CLK_GATE_REG_OFFSET_UART1            (7)
0299 #define PM_CLK_GATE_REG_OFFSET_RTC          (5)
0300 #define PM_CLK_GATE_REG_OFFSET_GDMA         (4)
0301 #define PM_CLK_GATE_REG_OFFSET_SPI_PCM_I2C      (3)
0302 #define PM_CLK_GATE_REG_OFFSET_SMC_NFI          (1)
0303 #define PM_CLK_GATE_REG_MASK                (0x03FFFFBA)
0304 
0305 /* PM_SOFT_RST_REG */
0306 #define PM_SOFT_RST_REG_OFFST_WARM_RST_FLAG     (31)
0307 #define PM_SOFT_RST_REG_OFFST_CPU1          (29)
0308 #define PM_SOFT_RST_REG_OFFST_CPU0          (28)
0309 #define PM_SOFT_RST_REG_OFFST_SDIO          (25)
0310 #define PM_SOFT_RST_REG_OFFST_GPU           (24)
0311 #define PM_SOFT_RST_REG_OFFST_CIM           (23)
0312 #define PM_SOFT_RST_REG_OFFST_LCDC          (22)
0313 #define PM_SOFT_RST_REG_OFFST_I2S           (21)
0314 #define PM_SOFT_RST_REG_OFFST_RAID          (20)
0315 #define PM_SOFT_RST_REG_OFFST_SATA          (19)
0316 #define PM_SOFT_RST_REG_OFFST_PCIE(x)           (17 + (x))
0317 #define PM_SOFT_RST_REG_OFFST_USB_HOST          (16)
0318 #define PM_SOFT_RST_REG_OFFST_USB_OTG           (15)
0319 #define PM_SOFT_RST_REG_OFFST_TIMER         (14)
0320 #define PM_SOFT_RST_REG_OFFST_CRYPTO            (13)
0321 #define PM_SOFT_RST_REG_OFFST_HCIE          (12)
0322 #define PM_SOFT_RST_REG_OFFST_SWITCH            (11)
0323 #define PM_SOFT_RST_REG_OFFST_GPIO          (10)
0324 #define PM_SOFT_RST_REG_OFFST_UART3         (9)
0325 #define PM_SOFT_RST_REG_OFFST_UART2         (8)
0326 #define PM_SOFT_RST_REG_OFFST_UART1         (7)
0327 #define PM_SOFT_RST_REG_OFFST_RTC           (5)
0328 #define PM_SOFT_RST_REG_OFFST_GDMA          (4)
0329 #define PM_SOFT_RST_REG_OFFST_SPI_PCM_I2C       (3)
0330 #define PM_SOFT_RST_REG_OFFST_DMC           (2)
0331 #define PM_SOFT_RST_REG_OFFST_SMC_NFI           (1)
0332 #define PM_SOFT_RST_REG_OFFST_GLOBAL            (0)
0333 #define PM_SOFT_RST_REG_MASK                (0xF3FFFFBF)
0334 
0335 /* PMHS_CFG_REG */
0336 #define PM_HS_CFG_REG_OFFSET_SDIO           (25)
0337 #define PM_HS_CFG_REG_OFFSET_GPU            (24)
0338 #define PM_HS_CFG_REG_OFFSET_CIM            (23)
0339 #define PM_HS_CFG_REG_OFFSET_LCDC           (22)
0340 #define PM_HS_CFG_REG_OFFSET_I2S            (21)
0341 #define PM_HS_CFG_REG_OFFSET_RAID           (20)
0342 #define PM_HS_CFG_REG_OFFSET_SATA           (19)
0343 #define PM_HS_CFG_REG_OFFSET_PCIE1          (18)
0344 #define PM_HS_CFG_REG_OFFSET_PCIE0          (17)
0345 #define PM_HS_CFG_REG_OFFSET_USB_HOST           (16)
0346 #define PM_HS_CFG_REG_OFFSET_USB_OTG            (15)
0347 #define PM_HS_CFG_REG_OFFSET_TIMER          (14)
0348 #define PM_HS_CFG_REG_OFFSET_CRYPTO         (13)
0349 #define PM_HS_CFG_REG_OFFSET_HCIE           (12)
0350 #define PM_HS_CFG_REG_OFFSET_SWITCH         (11)
0351 #define PM_HS_CFG_REG_OFFSET_GPIO           (10)
0352 #define PM_HS_CFG_REG_OFFSET_UART3          (9)
0353 #define PM_HS_CFG_REG_OFFSET_UART2          (8)
0354 #define PM_HS_CFG_REG_OFFSET_UART1          (7)
0355 #define PM_HS_CFG_REG_OFFSET_RTC            (5)
0356 #define PM_HS_CFG_REG_OFFSET_GDMA           (4)
0357 #define PM_HS_CFG_REG_OFFSET_SPI_PCM_I2S        (3)
0358 #define PM_HS_CFG_REG_OFFSET_DMC            (2)
0359 #define PM_HS_CFG_REG_OFFSET_SMC_NFI            (1)
0360 #define PM_HS_CFG_REG_MASK              (0x03FFFFBE)
0361 #define PM_HS_CFG_REG_MASK_SUPPORT          (0x01100806)
0362 
0363 /* PM_CACTIVE_STA_REG */
0364 #define PM_CACTIVE_STA_REG_OFFSET_SDIO          (25)
0365 #define PM_CACTIVE_STA_REG_OFFSET_GPU           (24)
0366 #define PM_CACTIVE_STA_REG_OFFSET_CIM           (23)
0367 #define PM_CACTIVE_STA_REG_OFFSET_LCDC          (22)
0368 #define PM_CACTIVE_STA_REG_OFFSET_I2S           (21)
0369 #define PM_CACTIVE_STA_REG_OFFSET_RAID          (20)
0370 #define PM_CACTIVE_STA_REG_OFFSET_SATA          (19)
0371 #define PM_CACTIVE_STA_REG_OFFSET_PCIE1         (18)
0372 #define PM_CACTIVE_STA_REG_OFFSET_PCIE0         (17)
0373 #define PM_CACTIVE_STA_REG_OFFSET_USB_HOST      (16)
0374 #define PM_CACTIVE_STA_REG_OFFSET_USB_OTG       (15)
0375 #define PM_CACTIVE_STA_REG_OFFSET_TIMER         (14)
0376 #define PM_CACTIVE_STA_REG_OFFSET_CRYPTO        (13)
0377 #define PM_CACTIVE_STA_REG_OFFSET_HCIE          (12)
0378 #define PM_CACTIVE_STA_REG_OFFSET_SWITCH        (11)
0379 #define PM_CACTIVE_STA_REG_OFFSET_GPIO          (10)
0380 #define PM_CACTIVE_STA_REG_OFFSET_UART3         (9)
0381 #define PM_CACTIVE_STA_REG_OFFSET_UART2         (8)
0382 #define PM_CACTIVE_STA_REG_OFFSET_UART1         (7)
0383 #define PM_CACTIVE_STA_REG_OFFSET_RTC           (5)
0384 #define PM_CACTIVE_STA_REG_OFFSET_GDMA          (4)
0385 #define PM_CACTIVE_STA_REG_OFFSET_SPI_PCM_I2S       (3)
0386 #define PM_CACTIVE_STA_REG_OFFSET_DMC           (2)
0387 #define PM_CACTIVE_STA_REG_OFFSET_SMC_NFI       (1)
0388 #define PM_CACTIVE_STA_REG_MASK             (0x03FFFFBE)
0389 
0390 /* PM_PWR_STA_REG */
0391 #define PM_PWR_STA_REG_REG_OFFSET_SDIO          (25)
0392 #define PM_PWR_STA_REG_REG_OFFSET_GPU           (24)
0393 #define PM_PWR_STA_REG_REG_OFFSET_CIM           (23)
0394 #define PM_PWR_STA_REG_REG_OFFSET_LCDC          (22)
0395 #define PM_PWR_STA_REG_REG_OFFSET_I2S           (21)
0396 #define PM_PWR_STA_REG_REG_OFFSET_RAID          (20)
0397 #define PM_PWR_STA_REG_REG_OFFSET_SATA          (19)
0398 #define PM_PWR_STA_REG_REG_OFFSET_PCIE1         (18)
0399 #define PM_PWR_STA_REG_REG_OFFSET_PCIE0         (17)
0400 #define PM_PWR_STA_REG_REG_OFFSET_USB_HOST      (16)
0401 #define PM_PWR_STA_REG_REG_OFFSET_USB_OTG       (15)
0402 #define PM_PWR_STA_REG_REG_OFFSET_TIMER         (14)
0403 #define PM_PWR_STA_REG_REG_OFFSET_CRYPTO        (13)
0404 #define PM_PWR_STA_REG_REG_OFFSET_HCIE          (12)
0405 #define PM_PWR_STA_REG_REG_OFFSET_SWITCH        (11)
0406 #define PM_PWR_STA_REG_REG_OFFSET_GPIO          (10)
0407 #define PM_PWR_STA_REG_REG_OFFSET_UART3         (9)
0408 #define PM_PWR_STA_REG_REG_OFFSET_UART2         (8)
0409 #define PM_PWR_STA_REG_REG_OFFSET_UART1         (7)
0410 #define PM_PWR_STA_REG_REG_OFFSET_RTC           (5)
0411 #define PM_PWR_STA_REG_REG_OFFSET_GDMA          (4)
0412 #define PM_PWR_STA_REG_REG_OFFSET_SPI_PCM_I2S       (3)
0413 #define PM_PWR_STA_REG_REG_OFFSET_DMC           (2)
0414 #define PM_PWR_STA_REG_REG_OFFSET_SMC_NFI       (1)
0415 #define PM_PWR_STA_REG_REG_MASK             (0x03FFFFBE)
0416 
0417 /* PM_CLK_CTRL_REG */
0418 #define PM_CLK_CTRL_REG_OFFSET_I2S_MCLK         (31)
0419 #define PM_CLK_CTRL_REG_OFFSET_DDR2_CHG_EN      (30)
0420 #define PM_CLK_CTRL_REG_OFFSET_PCIE_REF1_EN     (29)
0421 #define PM_CLK_CTRL_REG_OFFSET_PCIE_REF0_EN     (28)
0422 #define PM_CLK_CTRL_REG_OFFSET_TIMER_SIM_MODE       (27)
0423 #define PM_CLK_CTRL_REG_OFFSET_I2SCLK_DIV       (24)
0424 #define PM_CLK_CTRL_REG_OFFSET_I2SCLK_SEL       (22)
0425 #define PM_CLK_CTRL_REG_OFFSET_CLKOUT_DIV       (20)
0426 #define PM_CLK_CTRL_REG_OFFSET_CLKOUT_SEL       (16)
0427 #define PM_CLK_CTRL_REG_OFFSET_MDC_DIV          (14)
0428 #define PM_CLK_CTRL_REG_OFFSET_CRYPTO_CLK_SEL       (12)
0429 #define PM_CLK_CTRL_REG_OFFSET_CPU_PWR_MODE     (9)
0430 #define PM_CLK_CTRL_REG_OFFSET_PLL_DDR2_SEL     (7)
0431 #define PM_CLK_CTRL_REG_OFFSET_DIV_IMMEDIATE        (6)
0432 #define PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV      (4)
0433 #define PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL      (0)
0434 
0435 #define PM_CPU_CLK_DIV(DIV) { \
0436     PM_CLK_CTRL_REG &= ~((0x3) << PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV); \
0437     PM_CLK_CTRL_REG |= (((DIV)&0x3) << PM_CLK_CTRL_REG_OFFSET_CPU_CLK_DIV); \
0438 }
0439 
0440 #define PM_PLL_CPU_SEL(CPU) { \
0441     PM_CLK_CTRL_REG &= ~((0xF) << PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL); \
0442     PM_CLK_CTRL_REG |= (((CPU)&0xF) << PM_CLK_CTRL_REG_OFFSET_PLL_CPU_SEL); \
0443 }
0444 
0445 /* PM_PLL_LCD_I2S_CTRL_REG */
0446 #define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_MCLK_SMC_DIV (22)
0447 #define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_R_SEL        (17)
0448 #define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_P    (11)
0449 #define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_M    (3)
0450 #define PM_PLL_LCD_I2S_CTRL_REG_OFFSET_PLL_LCD_S    (0)
0451 
0452 /* PM_PLL_HM_PD_CTRL_REG */
0453 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY1      (11)
0454 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY0      (10)
0455 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_I2SCD      (6)
0456 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_I2S        (5)
0457 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_LCD        (4)
0458 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB        (3)
0459 #define PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_RGMII      (2)
0460 #define PM_PLL_HM_PD_CTRL_REG_MASK          (0x00000C7C)
0461 
0462 /* PM_WDT_CTRL_REG */
0463 #define PM_WDT_CTRL_REG_OFFSET_RESET_CPU_ONLY       (0)
0464 
0465 /* PM_CSR_REG - Clock Scaling Register*/
0466 #define PM_CSR_REG_OFFSET_CSR_EN            (30)
0467 #define PM_CSR_REG_OFFSET_CSR_NUM           (0)
0468 
0469 #define CNS3XXX_PWR_CLK_EN(BLOCK) (0x1<<PM_CLK_GATE_REG_OFFSET_##BLOCK)
0470 
0471 /* Software reset*/
0472 #define CNS3XXX_PWR_SOFTWARE_RST(BLOCK) (0x1<<PM_SOFT_RST_REG_OFFST_##BLOCK)
0473 
0474 /*
0475  * CNS3XXX support several power saving mode as following,
0476  * DFS, IDLE, HALT, DOZE, SLEEP, Hibernate
0477  */
0478 #define CNS3XXX_PWR_CPU_MODE_DFS            (0)
0479 #define CNS3XXX_PWR_CPU_MODE_IDLE           (1)
0480 #define CNS3XXX_PWR_CPU_MODE_HALT           (2)
0481 #define CNS3XXX_PWR_CPU_MODE_DOZE           (3)
0482 #define CNS3XXX_PWR_CPU_MODE_SLEEP          (4)
0483 #define CNS3XXX_PWR_CPU_MODE_HIBERNATE          (5)
0484 
0485 #define CNS3XXX_PWR_PLL(BLOCK)  (0x1<<PM_PLL_HM_PD_CTRL_REG_OFFSET_##BLOCK)
0486 #define CNS3XXX_PWR_PLL_ALL PM_PLL_HM_PD_CTRL_REG_MASK
0487 
0488 /* Change CPU frequency and divider */
0489 #define CNS3XXX_PWR_PLL_CPU_300MHZ          (0)
0490 #define CNS3XXX_PWR_PLL_CPU_333MHZ          (1)
0491 #define CNS3XXX_PWR_PLL_CPU_366MHZ          (2)
0492 #define CNS3XXX_PWR_PLL_CPU_400MHZ          (3)
0493 #define CNS3XXX_PWR_PLL_CPU_433MHZ          (4)
0494 #define CNS3XXX_PWR_PLL_CPU_466MHZ          (5)
0495 #define CNS3XXX_PWR_PLL_CPU_500MHZ          (6)
0496 #define CNS3XXX_PWR_PLL_CPU_533MHZ          (7)
0497 #define CNS3XXX_PWR_PLL_CPU_566MHZ          (8)
0498 #define CNS3XXX_PWR_PLL_CPU_600MHZ          (9)
0499 #define CNS3XXX_PWR_PLL_CPU_633MHZ          (10)
0500 #define CNS3XXX_PWR_PLL_CPU_666MHZ          (11)
0501 #define CNS3XXX_PWR_PLL_CPU_700MHZ          (12)
0502 
0503 #define CNS3XXX_PWR_CPU_CLK_DIV_BY1         (0)
0504 #define CNS3XXX_PWR_CPU_CLK_DIV_BY2         (1)
0505 #define CNS3XXX_PWR_CPU_CLK_DIV_BY4         (2)
0506 
0507 /* Change DDR2 frequency */
0508 #define CNS3XXX_PWR_PLL_DDR2_200MHZ         (0)
0509 #define CNS3XXX_PWR_PLL_DDR2_266MHZ         (1)
0510 #define CNS3XXX_PWR_PLL_DDR2_333MHZ         (2)
0511 #define CNS3XXX_PWR_PLL_DDR2_400MHZ         (3)
0512 
0513 void cns3xxx_pwr_soft_rst(unsigned int block);
0514 void cns3xxx_pwr_clk_en(unsigned int block);
0515 int cns3xxx_cpu_clock(void);
0516 
0517 /*
0518  * ARM11 MPCore interrupt sources (primary GIC)
0519  */
0520 #define IRQ_TC11MP_GIC_START    32
0521 
0522 #define IRQ_CNS3XXX_PMU         (IRQ_TC11MP_GIC_START + 0)
0523 #define IRQ_CNS3XXX_SDIO        (IRQ_TC11MP_GIC_START + 1)
0524 #define IRQ_CNS3XXX_L2CC        (IRQ_TC11MP_GIC_START + 2)
0525 #define IRQ_CNS3XXX_RTC         (IRQ_TC11MP_GIC_START + 3)
0526 #define IRQ_CNS3XXX_I2S         (IRQ_TC11MP_GIC_START + 4)
0527 #define IRQ_CNS3XXX_PCM         (IRQ_TC11MP_GIC_START + 5)
0528 #define IRQ_CNS3XXX_SPI         (IRQ_TC11MP_GIC_START + 6)
0529 #define IRQ_CNS3XXX_I2C         (IRQ_TC11MP_GIC_START + 7)
0530 #define IRQ_CNS3XXX_CIM         (IRQ_TC11MP_GIC_START + 8)
0531 #define IRQ_CNS3XXX_GPU         (IRQ_TC11MP_GIC_START + 9)
0532 #define IRQ_CNS3XXX_LCD         (IRQ_TC11MP_GIC_START + 10)
0533 #define IRQ_CNS3XXX_GPIOA       (IRQ_TC11MP_GIC_START + 11)
0534 #define IRQ_CNS3XXX_GPIOB       (IRQ_TC11MP_GIC_START + 12)
0535 #define IRQ_CNS3XXX_UART0       (IRQ_TC11MP_GIC_START + 13)
0536 #define IRQ_CNS3XXX_UART1       (IRQ_TC11MP_GIC_START + 14)
0537 #define IRQ_CNS3XXX_UART2       (IRQ_TC11MP_GIC_START + 15)
0538 #define IRQ_CNS3XXX_ARM11       (IRQ_TC11MP_GIC_START + 16)
0539 
0540 #define IRQ_CNS3XXX_SW_STATUS       (IRQ_TC11MP_GIC_START + 17)
0541 #define IRQ_CNS3XXX_SW_R0TXC        (IRQ_TC11MP_GIC_START + 18)
0542 #define IRQ_CNS3XXX_SW_R0RXC        (IRQ_TC11MP_GIC_START + 19)
0543 #define IRQ_CNS3XXX_SW_R0QE     (IRQ_TC11MP_GIC_START + 20)
0544 #define IRQ_CNS3XXX_SW_R0QF     (IRQ_TC11MP_GIC_START + 21)
0545 #define IRQ_CNS3XXX_SW_R1TXC        (IRQ_TC11MP_GIC_START + 22)
0546 #define IRQ_CNS3XXX_SW_R1RXC        (IRQ_TC11MP_GIC_START + 23)
0547 #define IRQ_CNS3XXX_SW_R1QE     (IRQ_TC11MP_GIC_START + 24)
0548 #define IRQ_CNS3XXX_SW_R1QF     (IRQ_TC11MP_GIC_START + 25)
0549 #define IRQ_CNS3XXX_SW_PPE      (IRQ_TC11MP_GIC_START + 26)
0550 
0551 #define IRQ_CNS3XXX_CRYPTO      (IRQ_TC11MP_GIC_START + 27)
0552 #define IRQ_CNS3XXX_HCIE        (IRQ_TC11MP_GIC_START + 28)
0553 #define IRQ_CNS3XXX_PCIE0_DEVICE    (IRQ_TC11MP_GIC_START + 29)
0554 #define IRQ_CNS3XXX_PCIE1_DEVICE    (IRQ_TC11MP_GIC_START + 30)
0555 #define IRQ_CNS3XXX_USB_OTG     (IRQ_TC11MP_GIC_START + 31)
0556 #define IRQ_CNS3XXX_USB_EHCI        (IRQ_TC11MP_GIC_START + 32)
0557 #define IRQ_CNS3XXX_SATA        (IRQ_TC11MP_GIC_START + 33)
0558 #define IRQ_CNS3XXX_RAID        (IRQ_TC11MP_GIC_START + 34)
0559 #define IRQ_CNS3XXX_SMC         (IRQ_TC11MP_GIC_START + 35)
0560 
0561 #define IRQ_CNS3XXX_DMAC_ABORT      (IRQ_TC11MP_GIC_START + 36)
0562 #define IRQ_CNS3XXX_DMAC0       (IRQ_TC11MP_GIC_START + 37)
0563 #define IRQ_CNS3XXX_DMAC1       (IRQ_TC11MP_GIC_START + 38)
0564 #define IRQ_CNS3XXX_DMAC2       (IRQ_TC11MP_GIC_START + 39)
0565 #define IRQ_CNS3XXX_DMAC3       (IRQ_TC11MP_GIC_START + 40)
0566 #define IRQ_CNS3XXX_DMAC4       (IRQ_TC11MP_GIC_START + 41)
0567 #define IRQ_CNS3XXX_DMAC5       (IRQ_TC11MP_GIC_START + 42)
0568 #define IRQ_CNS3XXX_DMAC6       (IRQ_TC11MP_GIC_START + 43)
0569 #define IRQ_CNS3XXX_DMAC7       (IRQ_TC11MP_GIC_START + 44)
0570 #define IRQ_CNS3XXX_DMAC8       (IRQ_TC11MP_GIC_START + 45)
0571 #define IRQ_CNS3XXX_DMAC9       (IRQ_TC11MP_GIC_START + 46)
0572 #define IRQ_CNS3XXX_DMAC10      (IRQ_TC11MP_GIC_START + 47)
0573 #define IRQ_CNS3XXX_DMAC11      (IRQ_TC11MP_GIC_START + 48)
0574 #define IRQ_CNS3XXX_DMAC12      (IRQ_TC11MP_GIC_START + 49)
0575 #define IRQ_CNS3XXX_DMAC13      (IRQ_TC11MP_GIC_START + 50)
0576 #define IRQ_CNS3XXX_DMAC14      (IRQ_TC11MP_GIC_START + 51)
0577 #define IRQ_CNS3XXX_DMAC15      (IRQ_TC11MP_GIC_START + 52)
0578 #define IRQ_CNS3XXX_DMAC16      (IRQ_TC11MP_GIC_START + 53)
0579 #define IRQ_CNS3XXX_DMAC17      (IRQ_TC11MP_GIC_START + 54)
0580 
0581 #define IRQ_CNS3XXX_PCIE0_RC        (IRQ_TC11MP_GIC_START + 55)
0582 #define IRQ_CNS3XXX_PCIE1_RC        (IRQ_TC11MP_GIC_START + 56)
0583 #define IRQ_CNS3XXX_TIMER0      (IRQ_TC11MP_GIC_START + 57)
0584 #define IRQ_CNS3XXX_TIMER1      (IRQ_TC11MP_GIC_START + 58)
0585 #define IRQ_CNS3XXX_USB_OHCI        (IRQ_TC11MP_GIC_START + 59)
0586 #define IRQ_CNS3XXX_TIMER2      (IRQ_TC11MP_GIC_START + 60)
0587 #define IRQ_CNS3XXX_EXTERNAL_PIN0   (IRQ_TC11MP_GIC_START + 61)
0588 #define IRQ_CNS3XXX_EXTERNAL_PIN1   (IRQ_TC11MP_GIC_START + 62)
0589 #define IRQ_CNS3XXX_EXTERNAL_PIN2   (IRQ_TC11MP_GIC_START + 63)
0590 
0591 #define NR_IRQS_CNS3XXX         (IRQ_TC11MP_GIC_START + 64)
0592 
0593 #endif  /* __MACH_BOARD_CNS3XXX_H */