xref: /rk3399_ARM-atf/plat/nxp/soc-ls1088a/include/soc.h (revision 4bd8c929b4bc6e1731c2892b38d4a8c43e8e89dc)
19df5ba05SJiafei Pan /*
29df5ba05SJiafei Pan  * Copyright 2022 NXP
39df5ba05SJiafei Pan  *
49df5ba05SJiafei Pan  * SPDX-License-Identifier: BSD-3-Clause
59df5ba05SJiafei Pan  */
69df5ba05SJiafei Pan 
79df5ba05SJiafei Pan #ifndef SOC_H
89df5ba05SJiafei Pan #define	SOC_H
99df5ba05SJiafei Pan 
109df5ba05SJiafei Pan /* Chassis specific defines - common across SoC's of a particular platform */
119df5ba05SJiafei Pan #include "dcfg_lsch3.h"
129df5ba05SJiafei Pan #include "soc_default_base_addr.h"
139df5ba05SJiafei Pan #include "soc_default_helper_macros.h"
149df5ba05SJiafei Pan 
159df5ba05SJiafei Pan /*
169df5ba05SJiafei Pan  * SVR Definition of LS1088A
179df5ba05SJiafei Pan  * A: without security
189df5ba05SJiafei Pan  * AE: with security
199df5ba05SJiafei Pan  * (not include major and minor rev)
209df5ba05SJiafei Pan  */
219df5ba05SJiafei Pan #define SVR_LS1044A			0x870323
229df5ba05SJiafei Pan #define SVR_LS1044AE			0x870322
239df5ba05SJiafei Pan #define SVR_LS1048A			0x870321
249df5ba05SJiafei Pan #define SVR_LS1048AE			0x870320
259df5ba05SJiafei Pan #define SVR_LS1084A			0x870303
269df5ba05SJiafei Pan #define SVR_LS1084AE			0x870302
279df5ba05SJiafei Pan #define SVR_LS1088A			0x870301
289df5ba05SJiafei Pan #define SVR_LS1088AE			0x870300
299df5ba05SJiafei Pan 
309df5ba05SJiafei Pan #define SVR_WO_E			0xFFFFFE
319df5ba05SJiafei Pan 
329df5ba05SJiafei Pan /* Number of cores in platform */
339df5ba05SJiafei Pan #define NUMBER_OF_CLUSTERS		2
349df5ba05SJiafei Pan #define CORES_PER_CLUSTER		4
359df5ba05SJiafei Pan #define PLATFORM_CORE_COUNT		(NUMBER_OF_CLUSTERS * CORES_PER_CLUSTER)
369df5ba05SJiafei Pan 
379df5ba05SJiafei Pan /* set to 0 if the clusters are not symmetrical */
389df5ba05SJiafei Pan #define SYMMETRICAL_CLUSTERS		1
399df5ba05SJiafei Pan 
409df5ba05SJiafei Pan 
419df5ba05SJiafei Pan #define NUM_DRAM_REGIONS		2
429df5ba05SJiafei Pan #define	NXP_DRAM0_ADDR			0x80000000
439df5ba05SJiafei Pan #define NXP_DRAM0_MAX_SIZE		0x80000000	/*  2 GB  */
449df5ba05SJiafei Pan 
459df5ba05SJiafei Pan #define NXP_DRAM1_ADDR			0x8080000000
469df5ba05SJiafei Pan #define NXP_DRAM1_MAX_SIZE		0x7F80000000	/* 510 G */
479df5ba05SJiafei Pan 
489df5ba05SJiafei Pan /* DRAM0 Size defined in platform_def.h */
499df5ba05SJiafei Pan #define	NXP_DRAM0_SIZE			PLAT_DEF_DRAM0_SIZE
509df5ba05SJiafei Pan 
519df5ba05SJiafei Pan #define NXP_POWMGTDCR			0x700123C20
529df5ba05SJiafei Pan 
539df5ba05SJiafei Pan /* epu register offsets and values */
549df5ba05SJiafei Pan #define EPU_EPGCR_OFFSET		0x0
559df5ba05SJiafei Pan #define EPU_EPIMCR10_OFFSET		0x128
569df5ba05SJiafei Pan #define EPU_EPCTR10_OFFSET		0xa28
579df5ba05SJiafei Pan #define EPU_EPCCR10_OFFSET		0x828
589df5ba05SJiafei Pan 
599df5ba05SJiafei Pan #ifdef EPU_EPCCR10_VAL
609df5ba05SJiafei Pan #undef EPU_EPCCR10_VAL
619df5ba05SJiafei Pan #endif
629df5ba05SJiafei Pan #define EPU_EPCCR10_VAL			0xf2800000
639df5ba05SJiafei Pan 
649df5ba05SJiafei Pan #define EPU_EPIMCR10_VAL		0xba000000
659df5ba05SJiafei Pan #define EPU_EPCTR10_VAL			0x0
669df5ba05SJiafei Pan #define EPU_EPGCR_VAL			(1 << 31)
679df5ba05SJiafei Pan 
689df5ba05SJiafei Pan /* pmu register offsets and values */
699df5ba05SJiafei Pan #define PMU_PCPW20SR_OFFSET		0x830
709df5ba05SJiafei Pan #define PMU_CLAINACTSETR_OFFSET		0x1100
719df5ba05SJiafei Pan #define PMU_CLAINACTCLRR_OFFSET		0x1104
729df5ba05SJiafei Pan #define PMU_CLSINACTSETR_OFFSET		0x1108
739df5ba05SJiafei Pan #define PMU_CLSINACTCLRR_OFFSET		0x110C
749df5ba05SJiafei Pan #define PMU_CLL2FLUSHSETR_OFFSET	0x1110
759df5ba05SJiafei Pan #define PMU_CLSL2FLUSHCLRR_OFFSET	0x1114
769df5ba05SJiafei Pan #define PMU_CLL2FLUSHSR_OFFSET		0x1118
779df5ba05SJiafei Pan #define PMU_POWMGTCSR_OFFSET		0x4000
789df5ba05SJiafei Pan #define PMU_IPPDEXPCR0_OFFSET		0x4040
799df5ba05SJiafei Pan #define PMU_IPPDEXPCR1_OFFSET		0x4044
809df5ba05SJiafei Pan #define PMU_IPPDEXPCR2_OFFSET		0x4048
819df5ba05SJiafei Pan #define PMU_IPPDEXPCR3_OFFSET		0x404C
829df5ba05SJiafei Pan #define PMU_IPPDEXPCR4_OFFSET		0x4050
839df5ba05SJiafei Pan #define PMU_IPPDEXPCR5_OFFSET		0x4054
849df5ba05SJiafei Pan #define PMU_IPSTPCR0_OFFSET		0x4120
859df5ba05SJiafei Pan #define PMU_IPSTPCR1_OFFSET		0x4124
869df5ba05SJiafei Pan #define PMU_IPSTPCR2_OFFSET		0x4128
879df5ba05SJiafei Pan #define PMU_IPSTPCR3_OFFSET		0x412C
889df5ba05SJiafei Pan #define PMU_IPSTPCR4_OFFSET		0x4130
899df5ba05SJiafei Pan #define PMU_IPSTPCR5_OFFSET		0x4134
909df5ba05SJiafei Pan #define PMU_IPSTPCR6_OFFSET		0x4138
919df5ba05SJiafei Pan #define PMU_IPSTPACK0_OFFSET		0x4140
929df5ba05SJiafei Pan #define PMU_IPSTPACK1_OFFSET		0x4144
939df5ba05SJiafei Pan #define PMU_IPSTPACK2_OFFSET		0x4148
949df5ba05SJiafei Pan #define PMU_IPSTPACK3_OFFSET		0x414C
959df5ba05SJiafei Pan #define PMU_IPSTPACK4_OFFSET		0x4150
969df5ba05SJiafei Pan #define PMU_IPSTPACK5_OFFSET		0x4154
979df5ba05SJiafei Pan #define PMU_IPSTPACK6_OFFSET		0x4158
989df5ba05SJiafei Pan #define PMU_POWMGTCSR_VAL		(1 << 20)
999df5ba05SJiafei Pan 
1009df5ba05SJiafei Pan #define IPPDEXPCR0_MASK			0xFFFFFFFF
1019df5ba05SJiafei Pan #define IPPDEXPCR1_MASK			0xFFFFFFFF
1029df5ba05SJiafei Pan #define IPPDEXPCR2_MASK			0xFFFFFFFF
1039df5ba05SJiafei Pan #define IPPDEXPCR3_MASK			0xFFFFFFFF
1049df5ba05SJiafei Pan #define IPPDEXPCR4_MASK			0xFFFFFFFF
1059df5ba05SJiafei Pan #define IPPDEXPCR5_MASK			0xFFFFFFFF
1069df5ba05SJiafei Pan 
1079df5ba05SJiafei Pan /* DEVDISR5_FLX_TMR */
1089df5ba05SJiafei Pan #define IPPDEXPCR_FLX_TMR		0x00004000
1099df5ba05SJiafei Pan #define DEVDISR5_FLX_TMR		0x00004000
1109df5ba05SJiafei Pan 
1119df5ba05SJiafei Pan #define IPSTPCR0_VALUE			0x0041310C
1129df5ba05SJiafei Pan #define IPSTPCR1_VALUE			0x000003FF
1139df5ba05SJiafei Pan #define IPSTPCR2_VALUE			0x00013006
1149df5ba05SJiafei Pan 
115*1b491eeaSElyes Haouas /* Don't stop UART */
1169df5ba05SJiafei Pan #define IPSTPCR3_VALUE			0x0000033A
1179df5ba05SJiafei Pan 
1189df5ba05SJiafei Pan #define IPSTPCR4_VALUE			0x00103300
1199df5ba05SJiafei Pan #define IPSTPCR5_VALUE			0x00000001
1209df5ba05SJiafei Pan #define IPSTPCR6_VALUE			0x00000000
1219df5ba05SJiafei Pan 
1229df5ba05SJiafei Pan 
1239df5ba05SJiafei Pan #define TZPC_BLOCK_SIZE			0x1000
1249df5ba05SJiafei Pan 
1259df5ba05SJiafei Pan /* PORSR1 */
1269df5ba05SJiafei Pan #define PORSR1_RCW_MASK			0xFF800000
1279df5ba05SJiafei Pan #define PORSR1_RCW_SHIFT		23
1289df5ba05SJiafei Pan 
1299df5ba05SJiafei Pan /* CFG_RCW_SRC[6:0] */
1309df5ba05SJiafei Pan #define RCW_SRC_TYPE_MASK		0x70
1319df5ba05SJiafei Pan 
1329df5ba05SJiafei Pan /* RCW SRC NOR */
1339df5ba05SJiafei Pan #define	NOR_16B_VAL			0x20
1349df5ba05SJiafei Pan 
1359df5ba05SJiafei Pan /*
1369df5ba05SJiafei Pan  * RCW SRC Serial Flash
1379df5ba05SJiafei Pan  * 1. SERAIL NOR (QSPI)
1389df5ba05SJiafei Pan  * 2. OTHERS (SD/MMC, SPI, I2C1)
1399df5ba05SJiafei Pan  */
1409df5ba05SJiafei Pan #define RCW_SRC_SERIAL_MASK		0x7F
1419df5ba05SJiafei Pan #define QSPI_VAL			0x62
1429df5ba05SJiafei Pan #define SDHC_VAL			0x40
1439df5ba05SJiafei Pan #define EMMC_VAL			0x41
1449df5ba05SJiafei Pan 
1459df5ba05SJiafei Pan /*
1469df5ba05SJiafei Pan  * Required LS standard platform porting definitions
1479df5ba05SJiafei Pan  * for CCN-504 - Read from RN-F node ID register
1489df5ba05SJiafei Pan  */
1499df5ba05SJiafei Pan #define PLAT_CLUSTER_TO_CCN_ID_MAP 1, 9, 11, 19
1509df5ba05SJiafei Pan 
1519df5ba05SJiafei Pan /* Defines required for using XLAT tables from ARM common code */
1529df5ba05SJiafei Pan #define PLAT_PHY_ADDR_SPACE_SIZE	(1ULL << 40)
1539df5ba05SJiafei Pan #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ULL << 40)
1549df5ba05SJiafei Pan 
1559df5ba05SJiafei Pan /*
1569df5ba05SJiafei Pan  * Clock Divisors
1579df5ba05SJiafei Pan  */
1589df5ba05SJiafei Pan #define NXP_PLATFORM_CLK_DIVIDER	1
1599df5ba05SJiafei Pan #define NXP_UART_CLK_DIVIDER		2
1609df5ba05SJiafei Pan 
1619df5ba05SJiafei Pan /* dcfg register offsets and values */
1629df5ba05SJiafei Pan #define DCFG_DEVDISR1_OFFSET		0x70
1639df5ba05SJiafei Pan #define DCFG_DEVDISR2_OFFSET		0x74
1649df5ba05SJiafei Pan #define DCFG_DEVDISR3_OFFSET		0x78
1659df5ba05SJiafei Pan #define DCFG_DEVDISR5_OFFSET		0x80
1669df5ba05SJiafei Pan #define DCFG_DEVDISR6_OFFSET		0x84
1679df5ba05SJiafei Pan 
1689df5ba05SJiafei Pan #define DCFG_DEVDISR1_SEC		(1 << 22)
1699df5ba05SJiafei Pan #define DCFG_DEVDISR3_QBMAIN		(1 << 12)
1709df5ba05SJiafei Pan #define DCFG_DEVDISR4_SPI_QSPI		(1 << 4 | 1 << 5)
1719df5ba05SJiafei Pan #define DCFG_DEVDISR5_MEM		(1 << 0)
1729df5ba05SJiafei Pan 
1739df5ba05SJiafei Pan #define DEVDISR1_VALUE			0x0041310c
1749df5ba05SJiafei Pan #define DEVDISR2_VALUE			0x000003ff
1759df5ba05SJiafei Pan #define DEVDISR3_VALUE			0x00013006
1769df5ba05SJiafei Pan #define DEVDISR4_VALUE			0x0000033e
1779df5ba05SJiafei Pan #define DEVDISR5_VALUE			0x00103300
1789df5ba05SJiafei Pan #define DEVDISR6_VALUE			0x00000001
1799df5ba05SJiafei Pan 
1809df5ba05SJiafei Pan /*
1819df5ba05SJiafei Pan  * pwr mgmt features supported in the soc-specific code:
1829df5ba05SJiafei Pan  * value == 0x0, the soc code does not support this feature
1839df5ba05SJiafei Pan  * value != 0x0, the soc code supports this feature
1849df5ba05SJiafei Pan  */
1859df5ba05SJiafei Pan #define SOC_CORE_RELEASE		0x1
1869df5ba05SJiafei Pan #define SOC_CORE_RESTART		0x1
1879df5ba05SJiafei Pan #define SOC_CORE_OFF			0x1
1889df5ba05SJiafei Pan #define SOC_CORE_STANDBY		0x1
1899df5ba05SJiafei Pan #define SOC_CORE_PWR_DWN		0x1
1909df5ba05SJiafei Pan #define SOC_CLUSTER_STANDBY		0x1
1919df5ba05SJiafei Pan #define SOC_CLUSTER_PWR_DWN		0x1
1929df5ba05SJiafei Pan #define SOC_SYSTEM_STANDBY		0x1
1939df5ba05SJiafei Pan #define SOC_SYSTEM_PWR_DWN		0x1
1949df5ba05SJiafei Pan #define SOC_SYSTEM_OFF			0x1
1959df5ba05SJiafei Pan #define SOC_SYSTEM_RESET		0x1
1969df5ba05SJiafei Pan 
1979df5ba05SJiafei Pan #define SYSTEM_PWR_DOMAINS		1
1989df5ba05SJiafei Pan #define PLAT_NUM_PWR_DOMAINS	(PLATFORM_CORE_COUNT + \
1999df5ba05SJiafei Pan 				NUMBER_OF_CLUSTERS  + \
2009df5ba05SJiafei Pan 				SYSTEM_PWR_DOMAINS)
2019df5ba05SJiafei Pan 
2029df5ba05SJiafei Pan /* Power state coordination occurs at the system level */
2039df5ba05SJiafei Pan #define PLAT_PD_COORD_LVL MPIDR_AFFLVL2
2049df5ba05SJiafei Pan #define PLAT_MAX_PWR_LVL  PLAT_PD_COORD_LVL
2059df5ba05SJiafei Pan 
2069df5ba05SJiafei Pan /* Local power state for power domains in Run state */
2079df5ba05SJiafei Pan #define LS_LOCAL_STATE_RUN  PSCI_LOCAL_STATE_RUN
2089df5ba05SJiafei Pan 
2099df5ba05SJiafei Pan /* define retention state */
2109df5ba05SJiafei Pan #define PLAT_MAX_RET_STATE  (PSCI_LOCAL_STATE_RUN + 1)
2119df5ba05SJiafei Pan #define LS_LOCAL_STATE_RET  PLAT_MAX_RET_STATE
2129df5ba05SJiafei Pan 
2139df5ba05SJiafei Pan /* define power-down state */
2149df5ba05SJiafei Pan #define PLAT_MAX_OFF_STATE  (PLAT_MAX_RET_STATE + 1)
2159df5ba05SJiafei Pan #define LS_LOCAL_STATE_OFF  PLAT_MAX_OFF_STATE
2169df5ba05SJiafei Pan 
2179df5ba05SJiafei Pan #ifndef __ASSEMBLER__
2189df5ba05SJiafei Pan /* CCI slave interfaces */
2199df5ba05SJiafei Pan static const int cci_map[] = {
2209df5ba05SJiafei Pan 	3,
2219df5ba05SJiafei Pan 	4,
2229df5ba05SJiafei Pan };
2239df5ba05SJiafei Pan void soc_init_lowlevel(void);
2249df5ba05SJiafei Pan void soc_init_percpu(void);
2259df5ba05SJiafei Pan void _soc_set_start_addr(unsigned long addr);
2269df5ba05SJiafei Pan void _set_platform_security(void);
2279df5ba05SJiafei Pan #endif
2289df5ba05SJiafei Pan 
2299df5ba05SJiafei Pan #endif /* SOC_H */
230