arm-trusted-firmware/plat/rockchip/rk3576/rk3576_def.h
XiaoDong Huang 036935a814 feat(rk3576): support rk3576
rk3576 is an Octa-core soc with Cortex-a53/a72 inside.
This patch supports the following functions:
1. basic platform setup
2. power up/off cpus
3. suspend/resume cpus
4. suspend/resume system
5. reset system
6. power off system

Change-Id: I67a019822bd4af13e4a3cdd09cf06202f4922cc4
Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com>
2025-02-24 15:07:43 +08:00

207 lines
6.5 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause */
/*
* Copyright (c) 2025, Rockchip Electronics Co., Ltd.
*/
#ifndef __PLAT_DEF_H__
#define __PLAT_DEF_H__
#define SIZE_K(n) ((n) * 1024)
#define SIZE_M(n) ((n) * 1024 * 1024)
#define WITH_16BITS_WMSK(bits) (0xffff0000 | (bits))
#define BITS_WMSK(msk, shift) ((msk) << ((shift) + REG_MSK_SHIFT))
/* Special value used to verify platform parameters from BL2 to BL3-1 */
#define RK_BL31_PLAT_PARAM_VAL 0x0f1e2d3c4b5a6978ULL
#define RK3576_DEV_RNG0_BASE 0x00000000
#define RK3576_DEV_RNG0_SIZE 0x40000000
#define RK_DRAM_BASE 0x40000000
/* All slave base address declare below */
#define MCU_TCM_BASE 0x23800000
#define MCU_CACHE_BASE 0x23810000
#define MCU_RAM_TEST_BASE 0x23820000
#define MCU_BOOT_BASE 0x00000000
#define MCU_MAIN_BASE 0x00010000
#define PMU0SGRF_BASE 0x26000000
#define PMU1SGRF_BASE 0x26002000
#define PMU1SGRF_FW_BASE 0x26003000
#define SYS_SGRF_BASE 0x26004000
#define SYS_SGRF_FW_BASE 0x26005000
#define SYS_GRF_BASE 0x2600a000
#define BIGCORE_GRF_BASE 0x2600c000
#define LITCORE_GRF_BASE 0x2600e000
#define CCI_GRF_BASE 0x26010000
#define DDR_GRF_BASE 0x26012000
#define CENTER_GRF_BASE 0x26014000
#define GPUGRF_BASE 0x26016000
#define NPUGRF_BASE 0x26018000
#define VO_GRF_BASE 0x2601a000
#define VI_GRF_BASE 0x2601c000
#define USB_GRF_BASE 0x2601e000
#define PHP_GRF_BASE 0x26020000
#define VOP_GRF_BASE 0x26022000
#define PMU0_GRF_BASE 0x26024000
#define PMU1_GRF_BASE 0x26026000
#define USBDPPHY_GRF_BASE 0x2602c000
#define USB2PHY0_GRF_BASE 0x2602e000
#define USB2PHY1_GRF_BASE 0x26030000
#define PMU0_IOC_BASE 0x26040000
#define PMU1_IOC_BASE 0x26042000
#define TOP_IOC_BASE 0x26044000
#define VCCIO_IOC_BASE 0x26046000
#define VCCIO6_IOC_BASE 0x2604a000
#define VCCIO7_IOC_BASE 0x2604b000
#define CRU_BASE 0x27200000
#define PHP_CRU_BASE 0x27208000
#define SECURE_CRU_BASE 0x27210000
#define PMU1_CRU_BASE 0x27220000
#define DDRPHY0_CRU_BASE 0x27228000
#define DDRPHY1_CRU_BASE 0x27230000
#define BIGCORE_CRU_BASE 0x27238000
#define LITTLE_CRU_BASE 0x27240000
#define CCI_CRU_BASE 0x27248000
#define PVTPLL_CCI_BASE 0x27250000
#define PVTPLL_BIGCORE_BASE 0x27258000
#define PVTPLL_LITCORE_BASE 0x27260000
#define PVTPLL_GPU_BASE 0x27268000
#define PVTPLL_NPU_BASE 0x27270000
#define PVTPLL_CRU_BASE 0x27278000
#define I2C0_BASE 0x27300000
#define UART1_BASE 0x27310000
#define GPIO0_BASE 0x27320000
#define PWM0_BASE 0x27330000
#define WDT_PMU_BASE 0x27340000
#define TIMER_PMU_BASE 0x27350000
#define PMU_BASE 0x27360000
#define PMU0_BASE 0x27360000
#define PMU1_BASE 0x27370000
#define PMU2_BASE 0x27380000
#define PVTM_PMU_BASE 0x273f0000
#define HPTIMER_BASE 0x27400000
#define CCI_BASE 0x27500000
#define VOP_BASE 0x27d00000
#define INTERCONNECT_BASE 0x27f00000
#define FW_CCI2DDR_BASE 0x27f80000
#define FW_CENTER2DDR_BASE 0x27f90000
#define FW_SYSMEM_BASE 0x27fa0000
#define FW_VOP2DDR_BASE 0x27fb0000
#define FW_CBUF_BASE 0x27fc0000
#define FIREWALL_DDR_BASE 0x27f80000
#define DDRCTL0_BASE 0x28000000
#define DDRCTL1_BASE 0x29000000
#define DDR_MONITOR0_BASE 0x2a000000
#define DDR_MONITOR1_BASE 0x2a010000
#define DDRPHY0_BASE 0x2a020000
#define DDRPHY1_BASE 0x2a030000
#define HWLP0_BASE 0x2a060000
#define HWLP1_BASE 0x2a070000
#define KEYLADDER_BASE 0x2a420000
#define CRYPTO_S_BASE 0x2a430000
#define OTP_S_BASE 0x2a480000
#define DCF_BASE 0x2a490000
#define STIMER0_BASE 0x2a4a0000
#define STIMER1_BASE 0x2a4b0000
#define WDT_S_BASE 0x2a4c0000
#define OTP_MASK_BASE 0x2a4d0000
#define OTP_NS_BASE 0x2a580000
#define GIC400_BASE 0x2a700000
#define I2C1_BASE 0x2ac40000
#define NSTIMER0_BASE 0x2acc0000
#define NSTIMER1_BASE 0x2acd0000
#define WDT_NS_BASE 0x2ace0000
#define UART0_BASE 0x2ad40000
#define UART2_BASE 0x2ad50000
#define UART3_BASE 0x2ad60000
#define UART4_BASE 0x2ad70000
#define UART5_BASE 0x2ad80000
#define UART6_BASE 0x2ad90000
#define UART7_BASE 0x2ada0000
#define UART8_BASE 0x2adb0000
#define UART9_BASE 0x2adc0000
#define PWM1_BASE 0x2add0000
#define PWM2_BASE 0x2ade0000
#define PWM3_BASE 0x2adf0000
#define GPIO1_BASE 0x2ae10000
#define GPIO2_BASE 0x2ae20000
#define GPIO3_BASE 0x2ae30000
#define GPIO4_BASE 0x2ae40000
#define TSADC_BASE 0x2ae70000
#define PMUSRAM_BASE 0x3fe70000
#define PMUSRAM_RSIZE SIZE_K(32)
#define CBUF_BASE 0x3fe80000
#define SRAM_BASE 0x3ff80000
#define STIMER0_CHN_BASE(i) (STIMER0_BASE + 0x1000 * (i))
#define STIMER1_CHN_BASE(i) (STIMER1_BASE + 0x1000 * (i))
#define NSTIMER0_CHN_BASE(i) (NSTIMER0_BASE + 0x1000 * (i))
#define NSTIMER1_CHN_BASE(i) (NSTIMER1_BASE + 0x1000 * (i))
#define DDRPHY_BASE_CH(n) (DDRPHY0_BASE + ((n) * 0x10000))
#define DDRPHY_CRU_BASE_CH(n) (DDRPHY0_CRU_BASE + ((n) * 0x8000))
#define UMCTL_BASE_CH(n) (DDRCTL0_BASE + ((n) * 0x1000000))
#define HWLP_BASE_CH(n) (HWLP0_BASE + ((n) * 0x10000))
#define MAILBOX1_BASE (0x2ae50000 + 0xb000)
#define CRYPTO_S_BY_KEYLAD_BASE CRYPTO_S_BASE
#define DDR_SHARE_MEM (RK_DRAM_BASE + SIZE_K(1024))
#define DDR_SHARE_SIZE SIZE_K(64)
#define SHARE_MEM_BASE DDR_SHARE_MEM
#define SHARE_MEM_PAGE_NUM 15
#define SHARE_MEM_SIZE SIZE_K(SHARE_MEM_PAGE_NUM * 4)
#define SCMI_SHARE_MEM_BASE (SHARE_MEM_BASE + SHARE_MEM_SIZE)
#define SCMI_SHARE_MEM_SIZE SIZE_K(4)
#define SMT_BUFFER_BASE SCMI_SHARE_MEM_BASE
#define SMT_BUFFER0_BASE SMT_BUFFER_BASE
#define ROCKCHIP_PM_REG_REGION_MEM_SIZE SIZE_K(8)
/******************************************************************************
* sgi, ppi
******************************************************************************/
#define RK_IRQ_SEC_PHY_TIMER 29
#define RK_IRQ_SEC_SGI_0 8
#define RK_IRQ_SEC_SGI_1 9
#define RK_IRQ_SEC_SGI_2 10
#define RK_IRQ_SEC_SGI_3 11
#define RK_IRQ_SEC_SGI_4 12
#define RK_IRQ_SEC_SGI_5 13
#define RK_IRQ_SEC_SGI_6 14
#define RK_IRQ_SEC_SGI_7 15
/*
* Define a list of Group 0 interrupts.
*/
#define PLAT_RK_GICV2_G0_IRQS \
INTR_PROP_DESC(RK_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \
GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL), \
INTR_PROP_DESC(RK_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, \
GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL)
/* UART related constants */
#define RK_DBG_UART_BASE UART0_BASE
#define RK_DBG_UART_BAUDRATE 1500000
#define RK_DBG_UART_CLOCK 24000000
/* Base rk_platform compatible GIC memory map */
#define PLAT_GICD_BASE (GIC400_BASE + 0x1000)
#define PLAT_GICC_BASE (GIC400_BASE + 0x2000)
#define PLAT_GICR_BASE 0
/* CCI */
#define PLAT_RK_CCI_BASE CCI_BASE
#define PLAT_RK_CCI_CLUSTER0_SL_IFACE_IX 1
#define PLAT_RK_CCI_CLUSTER1_SL_IFACE_IX 2
#endif /* __PLAT_DEF_H__ */