1*e3ec6ff4SXiaoDong Huang /* 2*e3ec6ff4SXiaoDong Huang * Copyright (c) 2024, Rockchip, Inc. All rights reserved. 3*e3ec6ff4SXiaoDong Huang * 4*e3ec6ff4SXiaoDong Huang * SPDX-License-Identifier: BSD-3-Clause 5*e3ec6ff4SXiaoDong Huang */ 6*e3ec6ff4SXiaoDong Huang 7*e3ec6ff4SXiaoDong Huang #ifndef __SOC_H__ 8*e3ec6ff4SXiaoDong Huang #define __SOC_H__ 9*e3ec6ff4SXiaoDong Huang 10*e3ec6ff4SXiaoDong Huang enum pll_id { 11*e3ec6ff4SXiaoDong Huang APLL_ID, 12*e3ec6ff4SXiaoDong Huang DPLL_ID, 13*e3ec6ff4SXiaoDong Huang GPLL_ID, 14*e3ec6ff4SXiaoDong Huang CPLL_ID, 15*e3ec6ff4SXiaoDong Huang NPLL_ID, 16*e3ec6ff4SXiaoDong Huang VPLL_ID, 17*e3ec6ff4SXiaoDong Huang }; 18*e3ec6ff4SXiaoDong Huang 19*e3ec6ff4SXiaoDong Huang enum pmu_pll_id { 20*e3ec6ff4SXiaoDong Huang PPLL_ID = 0, 21*e3ec6ff4SXiaoDong Huang HPLL_ID 22*e3ec6ff4SXiaoDong Huang }; 23*e3ec6ff4SXiaoDong Huang 24*e3ec6ff4SXiaoDong Huang enum cru_mode_con00 { 25*e3ec6ff4SXiaoDong Huang CLK_APLL, 26*e3ec6ff4SXiaoDong Huang CLK_DPLL, 27*e3ec6ff4SXiaoDong Huang CLK_CPLL, 28*e3ec6ff4SXiaoDong Huang CLK_GPLL, 29*e3ec6ff4SXiaoDong Huang CLK_REVSERVED, 30*e3ec6ff4SXiaoDong Huang CLK_NPLL, 31*e3ec6ff4SXiaoDong Huang CLK_VPLL, 32*e3ec6ff4SXiaoDong Huang CLK_USBPLL, 33*e3ec6ff4SXiaoDong Huang }; 34*e3ec6ff4SXiaoDong Huang 35*e3ec6ff4SXiaoDong Huang #define KHz 1000 36*e3ec6ff4SXiaoDong Huang #define MHz (1000 * KHz) 37*e3ec6ff4SXiaoDong Huang #define OSC_HZ (24 * MHz) 38*e3ec6ff4SXiaoDong Huang 39*e3ec6ff4SXiaoDong Huang /* CRU */ 40*e3ec6ff4SXiaoDong Huang #define GLB_SRST_FST_CFG_VAL 0xfdb9 41*e3ec6ff4SXiaoDong Huang 42*e3ec6ff4SXiaoDong Huang #define CRU_PLLS_CON(pll_id, i) (0x160 + (pll_id) * 0x20 + (i) * 0x4) 43*e3ec6ff4SXiaoDong Huang #define CRU_PLL_CON(i) ((i) * 0x4) 44*e3ec6ff4SXiaoDong Huang #define CRU_MODE_CON0 0x280 45*e3ec6ff4SXiaoDong Huang #define CRU_CLKSEL_CON(i) ((i) * 0x4 + 0x300) 46*e3ec6ff4SXiaoDong Huang #define CRU_CLKGATE_CON(i) ((i) * 0x4 + 0x800) 47*e3ec6ff4SXiaoDong Huang #define CRU_CLKGATE_CON_CNT 78 48*e3ec6ff4SXiaoDong Huang #define CRU_SOFTRST_CON(i) ((i) * 0x4 + 0xa00) 49*e3ec6ff4SXiaoDong Huang #define CRU_GLB_CNT_TH 0xc00 50*e3ec6ff4SXiaoDong Huang #define CRU_GLB_SRST_FST 0xc08 51*e3ec6ff4SXiaoDong Huang #define CRU_GLB_SRST_SND 0xc0c 52*e3ec6ff4SXiaoDong Huang #define CRU_GLB_RST_CON 0xc10 53*e3ec6ff4SXiaoDong Huang #define CRU_GLB_RST_ST 0xc04 54*e3ec6ff4SXiaoDong Huang #define CRU_SDIO_CON0 0xc24 55*e3ec6ff4SXiaoDong Huang #define CRU_SDIO_CON1 0xc28 56*e3ec6ff4SXiaoDong Huang #define CRU_SDMMC_CON0 0xc30 57*e3ec6ff4SXiaoDong Huang #define CRU_SDMMC_CON1 0xc34 58*e3ec6ff4SXiaoDong Huang #define CRU_AUTOCS_CON0(id) (0xd00 + (id) * 8) 59*e3ec6ff4SXiaoDong Huang #define CRU_AUTOCS_CON1(id) (0xd04 + (id) * 8) 60*e3ec6ff4SXiaoDong Huang 61*e3ec6ff4SXiaoDong Huang #define CRU_AUTOCS_ID_CNT 74 62*e3ec6ff4SXiaoDong Huang 63*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON0_M_MASK 0x3ff 64*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON0_M_SHIFT 0 65*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON1_P_MASK 0x3f 66*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON1_P_SHIFT 0 67*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON1_S_MASK 0x7 68*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON1_S_SHIFT 6 69*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON2_K_MASK 0xffff 70*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON2_K_SHIFT 0 71*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON1_PWRDOWN BIT(13) 72*e3ec6ff4SXiaoDong Huang #define CRU_PLLCON6_LOCK_STATUS BIT(15) 73*e3ec6ff4SXiaoDong Huang 74*e3ec6ff4SXiaoDong Huang #define CRU_BIGCPU02_RST_MSK 0x30 75*e3ec6ff4SXiaoDong Huang #define CRU_BIGCPU13_RST_MSK 0x300 76*e3ec6ff4SXiaoDong Huang 77*e3ec6ff4SXiaoDong Huang #define PHPCRU_CLKGATE_CON 0x800 78*e3ec6ff4SXiaoDong Huang #define PHPCRU_CLKGATE_CON_CNT 1 79*e3ec6ff4SXiaoDong Huang 80*e3ec6ff4SXiaoDong Huang #define SECURECRU_CLKGATE_CON(i) ((i) * 0x4 + 0x800) 81*e3ec6ff4SXiaoDong Huang #define SECURECRU_CLKGATE_CON_CNT 4 82*e3ec6ff4SXiaoDong Huang 83*e3ec6ff4SXiaoDong Huang #define PMU1CRU_CLKGATE_CON_CNT 6 84*e3ec6ff4SXiaoDong Huang 85*e3ec6ff4SXiaoDong Huang /* CENTER GRF */ 86*e3ec6ff4SXiaoDong Huang #define CENTER_GRF_CON(i) ((i) * 4) 87*e3ec6ff4SXiaoDong Huang 88*e3ec6ff4SXiaoDong Huang /* PMU1GRF */ 89*e3ec6ff4SXiaoDong Huang #define PMU1GRF_SOC_CON(n) ((n) * 4) 90*e3ec6ff4SXiaoDong Huang #define PMU1GRF_SOC_ST 0x60 91*e3ec6ff4SXiaoDong Huang #define PMU1GRF_OS_REG(n) (0x200 + ((n) * 4)) 92*e3ec6ff4SXiaoDong Huang 93*e3ec6ff4SXiaoDong Huang #define PMU_MCU_HALT BIT(7) 94*e3ec6ff4SXiaoDong Huang #define PMU_MCU_SLEEP BIT(9) 95*e3ec6ff4SXiaoDong Huang #define PMU_MCU_DEEPSLEEP BIT(10) 96*e3ec6ff4SXiaoDong Huang #define PMU_MCU_STOP_MSK \ 97*e3ec6ff4SXiaoDong Huang (PMU_MCU_HALT | PMU_MCU_SLEEP | PMU_MCU_DEEPSLEEP) 98*e3ec6ff4SXiaoDong Huang 99*e3ec6ff4SXiaoDong Huang /* SYSGRF */ 100*e3ec6ff4SXiaoDong Huang #define SYS_GRF_NOC_CON(n) (0x100 + (n) * 4) 101*e3ec6ff4SXiaoDong Huang #define SYS_GRF_SOC_CON(n) (0x300 + (n) * 4) 102*e3ec6ff4SXiaoDong Huang #define SYS_GRF_SOC_STATUS(n) (0x380 + (n) * 4) 103*e3ec6ff4SXiaoDong Huang 104*e3ec6ff4SXiaoDong Huang #define SYS_GRF_LITTLE_CPUS_WFE 0xf 105*e3ec6ff4SXiaoDong Huang #define SYS_GRF_CORE0_CPUS_WFE 0x30 106*e3ec6ff4SXiaoDong Huang #define SYS_GRF_CORE1_CPUS_WFE 0xc0 107*e3ec6ff4SXiaoDong Huang #define SYS_GRF_BIG_CPUS_WFE 0xf0 108*e3ec6ff4SXiaoDong Huang #define SYS_GRF_LITTLE_CPUS_WFI 0xf00 109*e3ec6ff4SXiaoDong Huang #define SYS_GRF_CORE0_CPUS_WFI 0x3000 110*e3ec6ff4SXiaoDong Huang #define SYS_GRF_CORE1_CPUS_WFI 0xc000 111*e3ec6ff4SXiaoDong Huang 112*e3ec6ff4SXiaoDong Huang /* pvtm */ 113*e3ec6ff4SXiaoDong Huang #define PVTM_CON(i) (0x4 + (i) * 4) 114*e3ec6ff4SXiaoDong Huang #define PVTM_INTEN 0x70 115*e3ec6ff4SXiaoDong Huang #define PVTM_INTSTS 0x74 116*e3ec6ff4SXiaoDong Huang #define PVTM_STATUS(i) (0x80 + (i) * 4) 117*e3ec6ff4SXiaoDong Huang #define PVTM_CALC_CNT 0x200 118*e3ec6ff4SXiaoDong Huang 119*e3ec6ff4SXiaoDong Huang enum pvtm_con0 { 120*e3ec6ff4SXiaoDong Huang pvtm_start = 0, 121*e3ec6ff4SXiaoDong Huang pvtm_osc_en = 1, 122*e3ec6ff4SXiaoDong Huang pvtm_osc_sel = 2, 123*e3ec6ff4SXiaoDong Huang pvtm_rnd_seed_en = 5, 124*e3ec6ff4SXiaoDong Huang }; 125*e3ec6ff4SXiaoDong Huang 126*e3ec6ff4SXiaoDong Huang /* timer */ 127*e3ec6ff4SXiaoDong Huang #define TIMER_LOAD_COUNT0 0x00 128*e3ec6ff4SXiaoDong Huang #define TIMER_LOAD_COUNT1 0x04 129*e3ec6ff4SXiaoDong Huang #define TIMER_CURRENT_VALUE0 0x08 130*e3ec6ff4SXiaoDong Huang #define TIMER_CURRENT_VALUE1 0x0c 131*e3ec6ff4SXiaoDong Huang #define TIMER_CONTROL_REG 0x10 132*e3ec6ff4SXiaoDong Huang #define TIMER_INTSTATUS 0x18 133*e3ec6ff4SXiaoDong Huang 134*e3ec6ff4SXiaoDong Huang #define TIMER_DIS 0x0 135*e3ec6ff4SXiaoDong Huang #define TIMER_EN 0x1 136*e3ec6ff4SXiaoDong Huang 137*e3ec6ff4SXiaoDong Huang #define TIMER_FMODE (0x0 << 1) 138*e3ec6ff4SXiaoDong Huang #define TIMER_RMODE (0x1 << 1) 139*e3ec6ff4SXiaoDong Huang 140*e3ec6ff4SXiaoDong Huang #define STIMER0_CHN_BASE(n) (STIMER0_BASE + 0x20 * (n)) 141*e3ec6ff4SXiaoDong Huang #define STIMER1_CHN_BASE(n) (STIMER1_BASE + 0x20 * (n)) 142*e3ec6ff4SXiaoDong Huang 143*e3ec6ff4SXiaoDong Huang /* cpu timer */ 144*e3ec6ff4SXiaoDong Huang #define TIMER_HP_REVISION 0x0 145*e3ec6ff4SXiaoDong Huang #define TIMER_HP_CTRL 0x4 146*e3ec6ff4SXiaoDong Huang #define TIMER_HP_INT_EN 0x8 147*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T24_GCD 0xc 148*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T32_GCD 0x10 149*e3ec6ff4SXiaoDong Huang #define TIMER_HP_LOAD_COUNT0 0x14 150*e3ec6ff4SXiaoDong Huang #define TIMER_HP_LOAD_COUNT1 0x18 151*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T24_DELAT_COUNT0 0x1c 152*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T24_DELAT_COUNT1 0x20 153*e3ec6ff4SXiaoDong Huang #define TIMER_HP_CURR_32K_VALUE0 0x24 154*e3ec6ff4SXiaoDong Huang #define TIMER_HP_CURR_32K_VALUE1 0x28 155*e3ec6ff4SXiaoDong Huang #define TIMER_HP_CURR_TIMER_VALUE0 0x2c 156*e3ec6ff4SXiaoDong Huang #define TIMER_HP_CURR_TIMER_VALUE1 0x30 157*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T24_32BEGIN0 0x34 158*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T24_32BEGIN1 0x38 159*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T32_24END0 0x3c 160*e3ec6ff4SXiaoDong Huang #define TIMER_HP_T32_24END1 0x40 161*e3ec6ff4SXiaoDong Huang #define TIMER_HP_BEGIN_END_VALID 0x44 162*e3ec6ff4SXiaoDong Huang #define TIMER_HP_SYNC_REQ 0x48 163*e3ec6ff4SXiaoDong Huang #define TIMER_HP_INTR_STATUS 0x4c 164*e3ec6ff4SXiaoDong Huang 165*e3ec6ff4SXiaoDong Huang /* GPIO */ 166*e3ec6ff4SXiaoDong Huang #define GPIO_SWPORT_DR_L 0x0000 167*e3ec6ff4SXiaoDong Huang #define GPIO_SWPORT_DR_H 0x0004 168*e3ec6ff4SXiaoDong Huang #define GPIO_SWPORT_DDR_L 0x0008 169*e3ec6ff4SXiaoDong Huang #define GPIO_SWPORT_DDR_H 0x000c 170*e3ec6ff4SXiaoDong Huang #define GPIO_INT_EN_L 0x0010 171*e3ec6ff4SXiaoDong Huang #define GPIO_INT_EN_H 0x0014 172*e3ec6ff4SXiaoDong Huang #define GPIO_INT_MASK_L 0x0018 173*e3ec6ff4SXiaoDong Huang #define GPIO_INT_MASK_H 0x001c 174*e3ec6ff4SXiaoDong Huang #define GPIO_INT_TYPE_L 0x0020 175*e3ec6ff4SXiaoDong Huang #define GPIO_INT_TYPE_H 0x0024 176*e3ec6ff4SXiaoDong Huang #define GPIO_INT_POLARITY_L 0x0028 177*e3ec6ff4SXiaoDong Huang #define GPIO_INT_POLARITY_H 0x002c 178*e3ec6ff4SXiaoDong Huang #define GPIO_INT_BOTHEDGE_L 0x0030 179*e3ec6ff4SXiaoDong Huang #define GPIO_INT_BOTHEDGE_H 0x0034 180*e3ec6ff4SXiaoDong Huang #define GPIO_DEBOUNCE_L 0x0038 181*e3ec6ff4SXiaoDong Huang #define GPIO_DEBOUNCE_H 0x003c 182*e3ec6ff4SXiaoDong Huang #define GPIO_DBCLK_DIV_EN_L 0x0040 183*e3ec6ff4SXiaoDong Huang #define GPIO_DBCLK_DIV_EN_H 0x0044 184*e3ec6ff4SXiaoDong Huang #define GPIO_DBCLK_DIV_CON 0x0048 185*e3ec6ff4SXiaoDong Huang #define GPIO_INT_STATUS 0x0050 186*e3ec6ff4SXiaoDong Huang #define GPIO_INT_RAWSTATUS 0x0058 187*e3ec6ff4SXiaoDong Huang #define GPIO_PORT_EOI_L 0x0060 188*e3ec6ff4SXiaoDong Huang #define GPIO_PORT_EOI_H 0x0064 189*e3ec6ff4SXiaoDong Huang #define GPIO_EXT_PORT 0x0070 190*e3ec6ff4SXiaoDong Huang #define GPIO_VER_ID 0x0078 191*e3ec6ff4SXiaoDong Huang 192*e3ec6ff4SXiaoDong Huang /* DDRGRF */ 193*e3ec6ff4SXiaoDong Huang #define DDRGRF_CHA_CON(i) ((i) * 4) 194*e3ec6ff4SXiaoDong Huang #define DDRGRF_CHB_CON(i) (0x30 + (i) * 4) 195*e3ec6ff4SXiaoDong Huang 196*e3ec6ff4SXiaoDong Huang #define DDR_CHN_CNT 4 197*e3ec6ff4SXiaoDong Huang 198*e3ec6ff4SXiaoDong Huang #endif /* __SOC_H__ */ 199