xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/grf_rk3308.h (revision 355cdcf34508d6ed289df7581f2c562b32e87d25)
13d78ac3eSAndy Yan /*
23d78ac3eSAndy Yan  * (C) Copyright 2018 Rockchip Electronics Co., Ltd.
33d78ac3eSAndy Yan  *
43d78ac3eSAndy Yan  * SPDX-License-Identifier:     GPL-2.0+
53d78ac3eSAndy Yan  */
63d78ac3eSAndy Yan #ifndef _ASM_ARCH_GRF_rk3308_H
73d78ac3eSAndy Yan #define _ASM_ARCH_GRF_rk3308_H
83d78ac3eSAndy Yan 
93d78ac3eSAndy Yan #include <common.h>
103d78ac3eSAndy Yan 
113d78ac3eSAndy Yan struct rk3308_grf {
123d78ac3eSAndy Yan 	unsigned int gpio0a_iomux;
133d78ac3eSAndy Yan 	unsigned int reserved0;
143d78ac3eSAndy Yan 	unsigned int gpio0b_iomux;
153d78ac3eSAndy Yan 	unsigned int reserved1;
163d78ac3eSAndy Yan 	unsigned int gpio0c_iomux;
173d78ac3eSAndy Yan 	unsigned int reserved2[3];
183d78ac3eSAndy Yan 	unsigned int gpio1a_iomux;
193d78ac3eSAndy Yan 	unsigned int reserved3;
203d78ac3eSAndy Yan 	unsigned int gpio1bl_iomux;
213d78ac3eSAndy Yan 	unsigned int gpio1bh_iomux;
223d78ac3eSAndy Yan 	unsigned int gpio1cl_iomux;
233d78ac3eSAndy Yan 	unsigned int gpio1ch_iomux;
243d78ac3eSAndy Yan 	unsigned int gpio1d_iomux;
253d78ac3eSAndy Yan 	unsigned int reserved4;
263d78ac3eSAndy Yan 	unsigned int gpio2a_iomux;
273d78ac3eSAndy Yan 	unsigned int reserved5;
283d78ac3eSAndy Yan 	unsigned int gpio2b_iomux;
293d78ac3eSAndy Yan 	unsigned int reserved6;
303d78ac3eSAndy Yan 	unsigned int gpio2c_iomux;
313d78ac3eSAndy Yan 	unsigned int reserved7[3];
323d78ac3eSAndy Yan 	unsigned int gpio3a_iomux;
333d78ac3eSAndy Yan 	unsigned int reserved8;
343d78ac3eSAndy Yan 	unsigned int gpio3b_iomux;
353d78ac3eSAndy Yan 	unsigned int reserved9[5];
363d78ac3eSAndy Yan 	unsigned int gpio4a_iomux;
373d78ac3eSAndy Yan 	unsigned int reserved33;
383d78ac3eSAndy Yan 	unsigned int gpio4b_iomux;
393d78ac3eSAndy Yan 	unsigned int reserved10;
403d78ac3eSAndy Yan 	unsigned int gpio4c_iomux;
413d78ac3eSAndy Yan 	unsigned int reserved11;
423d78ac3eSAndy Yan 	unsigned int gpio4d_iomux;
433d78ac3eSAndy Yan 	unsigned int reserved34;
443d78ac3eSAndy Yan 	unsigned int gpio0a_p;
453d78ac3eSAndy Yan 	unsigned int gpio0b_p;
463d78ac3eSAndy Yan 	unsigned int gpio0c_p;
473d78ac3eSAndy Yan 	unsigned int reserved12;
483d78ac3eSAndy Yan 	unsigned int gpio1a_p;
493d78ac3eSAndy Yan 	unsigned int gpio1b_p;
503d78ac3eSAndy Yan 	unsigned int gpio1c_p;
513d78ac3eSAndy Yan 	unsigned int gpio1d_p;
523d78ac3eSAndy Yan 	unsigned int gpio2a_p;
533d78ac3eSAndy Yan 	unsigned int gpio2b_p;
543d78ac3eSAndy Yan 	unsigned int gpio2c_p;
553d78ac3eSAndy Yan 	unsigned int reserved13;
563d78ac3eSAndy Yan 	unsigned int gpio3a_p;
573d78ac3eSAndy Yan 	unsigned int gpio3b_p;
583d78ac3eSAndy Yan 	unsigned int reserved14[2];
593d78ac3eSAndy Yan 	unsigned int gpio4a_p;
603d78ac3eSAndy Yan 	unsigned int gpio4b_p;
613d78ac3eSAndy Yan 	unsigned int gpio4c_p;
623d78ac3eSAndy Yan 	unsigned int gpio4d_p;
633d78ac3eSAndy Yan 	unsigned int reserved15[(0x100 - 0xec) / 4 - 1];
643d78ac3eSAndy Yan 	unsigned int gpio0a_e;
653d78ac3eSAndy Yan 	unsigned int gpio0b_e;
663d78ac3eSAndy Yan 	unsigned int gpio0c_e;
673d78ac3eSAndy Yan 	unsigned int reserved16;
683d78ac3eSAndy Yan 	unsigned int gpio1a_e;
693d78ac3eSAndy Yan 	unsigned int gpio1b_e;
703d78ac3eSAndy Yan 	unsigned int gpio1c_e;
713d78ac3eSAndy Yan 	unsigned int gpio1d_e;
723d78ac3eSAndy Yan 	unsigned int gpio2a_e;
733d78ac3eSAndy Yan 	unsigned int gpio2b_e;
743d78ac3eSAndy Yan 	unsigned int gpio2c_e;
753d78ac3eSAndy Yan 	unsigned int reserved17;
763d78ac3eSAndy Yan 	unsigned int gpio3a_e;
773d78ac3eSAndy Yan 	unsigned int gpio3b_e;
783d78ac3eSAndy Yan 	unsigned int reserved18[2];
793d78ac3eSAndy Yan 	unsigned int gpio4a_e;
803d78ac3eSAndy Yan 	unsigned int gpio4b_e;
813d78ac3eSAndy Yan 	unsigned int gpio4c_e;
823d78ac3eSAndy Yan 	unsigned int gpio4d_e;
833d78ac3eSAndy Yan 	unsigned int gpio0a_sr;
843d78ac3eSAndy Yan 	unsigned int gpio0b_sr;
853d78ac3eSAndy Yan 	unsigned int gpio0c_sr;
863d78ac3eSAndy Yan 	unsigned int reserved19;
873d78ac3eSAndy Yan 	unsigned int gpio1a_sr;
883d78ac3eSAndy Yan 	unsigned int gpio1b_sr;
893d78ac3eSAndy Yan 	unsigned int gpio1c_sr;
903d78ac3eSAndy Yan 	unsigned int gpio1d_sr;
913d78ac3eSAndy Yan 	unsigned int gpio2a_sr;
923d78ac3eSAndy Yan 	unsigned int gpio2b_sr;
933d78ac3eSAndy Yan 	unsigned int gpio2c_sr;
943d78ac3eSAndy Yan 	unsigned int reserved20;
953d78ac3eSAndy Yan 	unsigned int gpio3a_sr;
963d78ac3eSAndy Yan 	unsigned int gpio3b_sr;
973d78ac3eSAndy Yan 	unsigned int reserved21[2];
983d78ac3eSAndy Yan 	unsigned int gpio4a_sr;
993d78ac3eSAndy Yan 	unsigned int gpio4b_sr;
1003d78ac3eSAndy Yan 	unsigned int gpio4c_sr;
1013d78ac3eSAndy Yan 	unsigned int gpio4d_sr;
1023d78ac3eSAndy Yan 	unsigned int gpio0a_smt;
1033d78ac3eSAndy Yan 	unsigned int gpio0b_smt;
1043d78ac3eSAndy Yan 	unsigned int gpio0c_smt;
1053d78ac3eSAndy Yan 	unsigned int reserved22;
1063d78ac3eSAndy Yan 	unsigned int gpio1a_smt;
1073d78ac3eSAndy Yan 	unsigned int gpio1b_smt;
1083d78ac3eSAndy Yan 	unsigned int gpio1c_smt;
1093d78ac3eSAndy Yan 	unsigned int gpio1d_smt;
1103d78ac3eSAndy Yan 	unsigned int gpio2a_smt;
1113d78ac3eSAndy Yan 	unsigned int gpio2b_smt;
1123d78ac3eSAndy Yan 	unsigned int gpio2c_smt;
1133d78ac3eSAndy Yan 	unsigned int reserved23;
1143d78ac3eSAndy Yan 	unsigned int gpio3a_smt;
1153d78ac3eSAndy Yan 	unsigned int gpio3b_smt;
1163d78ac3eSAndy Yan 	unsigned int reserved35[2];
1173d78ac3eSAndy Yan 	unsigned int gpio4a_smt;
1183d78ac3eSAndy Yan 	unsigned int gpio4b_smt;
1193d78ac3eSAndy Yan 	unsigned int gpio4c_smt;
1203d78ac3eSAndy Yan 	unsigned int gpio4d_smt;
1213d78ac3eSAndy Yan 	unsigned int reserved24[(0x300 - 0x1EC) / 4 - 1];
1223d78ac3eSAndy Yan 	unsigned int soc_con0;
1233d78ac3eSAndy Yan 	unsigned int soc_con1;
1243d78ac3eSAndy Yan 	unsigned int soc_con2;
1253d78ac3eSAndy Yan 	unsigned int soc_con3;
1263d78ac3eSAndy Yan 	unsigned int soc_con4;
1273d78ac3eSAndy Yan 	unsigned int soc_con5;
1283d78ac3eSAndy Yan 	unsigned int soc_con6;
1293d78ac3eSAndy Yan 	unsigned int soc_con7;
1303d78ac3eSAndy Yan 	unsigned int soc_con8;
1313d78ac3eSAndy Yan 	unsigned int soc_con9;
1323d78ac3eSAndy Yan 	unsigned int soc_con10;
1333d78ac3eSAndy Yan 	unsigned int reserved25[(0x380 - 0x328) / 4 - 1];
1343d78ac3eSAndy Yan 	unsigned int soc_status0;
1353d78ac3eSAndy Yan 	unsigned int reserved26[(0x400 - 0x380) / 4 - 1];
1363d78ac3eSAndy Yan 	unsigned int cpu_con0;
1373d78ac3eSAndy Yan 	unsigned int cpu_con1;
1383d78ac3eSAndy Yan 	unsigned int cpu_con2;
1393d78ac3eSAndy Yan 	unsigned int reserved27[(0x420 - 0x408) / 4 - 1];
1403d78ac3eSAndy Yan 	unsigned int cpu_status0;
1413d78ac3eSAndy Yan 	unsigned int cpu_status1;
1423d78ac3eSAndy Yan 	unsigned int reserved28[(0x440 - 0x424) / 4 - 1];
1433d78ac3eSAndy Yan 	unsigned int pvtm_con0;
1443d78ac3eSAndy Yan 	unsigned int pvtm_con1;
1453d78ac3eSAndy Yan 	unsigned int pvtm_status0;
1463d78ac3eSAndy Yan 	unsigned int pvtm_status1;
1473d78ac3eSAndy Yan 	unsigned int reserved29[(0x460 - 0x44C) / 4 - 1];
1483d78ac3eSAndy Yan 	unsigned int tsadc_tbl;
1493d78ac3eSAndy Yan 	unsigned int tsadc_tbh;
1503d78ac3eSAndy Yan 	unsigned int reserved30[(0x480 - 0x464) / 4 - 1];
1513d78ac3eSAndy Yan 	unsigned int host0_con0;
1523d78ac3eSAndy Yan 	unsigned int host0_con1;
1533d78ac3eSAndy Yan 	unsigned int otg_con0;
1543d78ac3eSAndy Yan 	unsigned int host0_status0;
1553d78ac3eSAndy Yan 	unsigned int reserved31[(0x4a0 - 0x48C) / 4 - 1];
1563d78ac3eSAndy Yan 	unsigned int mac_con0;
1578ec8d58eSZhihuan He 	unsigned int upctl_con0;
1588ec8d58eSZhihuan He 	unsigned int upctl_status0;
1593d78ac3eSAndy Yan 	unsigned int reserved32[(0x500 - 0x4A8) / 4 - 1];
1603d78ac3eSAndy Yan 	unsigned int os_reg0;
1613d78ac3eSAndy Yan 	unsigned int os_reg1;
1623d78ac3eSAndy Yan 	unsigned int os_reg2;
1633d78ac3eSAndy Yan 	unsigned int os_reg3;
1643d78ac3eSAndy Yan 	unsigned int os_reg4;
1653d78ac3eSAndy Yan 	unsigned int os_reg5;
1663d78ac3eSAndy Yan 	unsigned int os_reg6;
1673d78ac3eSAndy Yan 	unsigned int os_reg7;
1683d78ac3eSAndy Yan 	unsigned int os_reg8;
1693d78ac3eSAndy Yan 	unsigned int os_reg9;
1703d78ac3eSAndy Yan 	unsigned int os_reg10;
1713d78ac3eSAndy Yan 	unsigned int os_reg11;
172ce7f8a11SJason Zhu 	unsigned int reserved38[(0x600 - 0x52c) / 4 - 1];
173ce7f8a11SJason Zhu 	unsigned int soc_con12;
174ce7f8a11SJason Zhu 	unsigned int reserved39;
175ce7f8a11SJason Zhu 	unsigned int soc_con13;
176ce7f8a11SJason Zhu 	unsigned int soc_con14;
177ce7f8a11SJason Zhu 	unsigned int soc_con15;
178ce7f8a11SJason Zhu 	unsigned int reserved40[(0x800 - 0x610) / 4 - 1];
1793d78ac3eSAndy Yan 	unsigned int chip_id;
1803d78ac3eSAndy Yan };
1813d78ac3eSAndy Yan check_member(rk3308_grf, gpio0a_p, 0xa0);
1823a10ef39SJason Zhu 
1833a10ef39SJason Zhu struct rk3308_sgrf {
1843a10ef39SJason Zhu 	unsigned int soc_con0;
1853a10ef39SJason Zhu 	unsigned int soc_con1;
1863a10ef39SJason Zhu 	unsigned int con_tzma_r0size;
1873a10ef39SJason Zhu 	unsigned int con_secure0;
1883a10ef39SJason Zhu 	unsigned int reserved0;
1893a10ef39SJason Zhu 	unsigned int clk_timer_en;
1903a10ef39SJason Zhu 	unsigned int clkgat_con;
1913a10ef39SJason Zhu 	unsigned int fastboot_addr;
1923a10ef39SJason Zhu 	unsigned int fastboot_en;
1933a10ef39SJason Zhu 	unsigned int reserved1[(0x30 - 0x24) / 4];
1943a10ef39SJason Zhu 	unsigned int srst_con;
1953a10ef39SJason Zhu };
1963a10ef39SJason Zhu check_member(rk3308_sgrf, fastboot_en, 0x20);
1973a10ef39SJason Zhu 
1988ec8d58eSZhihuan He enum {
199*355cdcf3SZhihuan He 	/* GPIO0B_IOMUX */
200*355cdcf3SZhihuan He 	GPIO0B_SEL_SHIFT		= 0x0,
201*355cdcf3SZhihuan He 	GPIO0B_SEL_MASK			= 0x3 << GPIO0B_SEL_SHIFT,
202*355cdcf3SZhihuan He 
2038ec8d58eSZhihuan He 	/* GPIO1D_IOMUX */
2048ec8d58eSZhihuan He 	GPIO1D1_SEL_SHIFT		= 2,
2058ec8d58eSZhihuan He 	GPIO1D1_SEL_MASK		= 0x3 << GPIO1D1_SEL_SHIFT,
2068ec8d58eSZhihuan He 	GPIO1D1_SEL_UART1_TX		= 1,
2078ec8d58eSZhihuan He 	GPIO1D0_SEL_SHIFT		= 0,
2088ec8d58eSZhihuan He 	GPIO1D0_SEL_MASK		= 0x3 << GPIO1D0_SEL_SHIFT,
2098ec8d58eSZhihuan He 	GPIO1D1_SEL_UART1_RX		= 1,
210*355cdcf3SZhihuan He 
211*355cdcf3SZhihuan He 	/* GPIO2A_IOMUX */
212*355cdcf3SZhihuan He 	GPIO2A1_SEL_SHIFT		= 2,
213*355cdcf3SZhihuan He 	GPIO2A1_SEL_MASK		= 0x3 << GPIO2A1_SEL_SHIFT,
214*355cdcf3SZhihuan He 	GPIO2A1_SEL_UART0_TX		= 1,
215*355cdcf3SZhihuan He 	GPIO2A0_SEL_SHIFT		= 0,
216*355cdcf3SZhihuan He 	GPIO2A0_SEL_MASK		= 0x3 << GPIO2A0_SEL_SHIFT,
217*355cdcf3SZhihuan He 	GPIO2A0_SEL_UART0_RX		= 1,
218*355cdcf3SZhihuan He 
219*355cdcf3SZhihuan He 	/* GPIO3B_IOMUX */
220*355cdcf3SZhihuan He 	GPIO3B5_SEL_SHIFT		= 12,
221*355cdcf3SZhihuan He 	GPIO3B5_SEL_MASK		= 0xf << GPIO3B5_SEL_SHIFT,
222*355cdcf3SZhihuan He 	GPIO3B5_SEL_UART3_TX		= 4,
223*355cdcf3SZhihuan He 	GPIO3B4_SEL_SHIFT		= 8,
224*355cdcf3SZhihuan He 	GPIO3B4_SEL_MASK		= 0xf << GPIO3B4_SEL_SHIFT,
225*355cdcf3SZhihuan He 	GPIO3B4_SEL_UART3_RX		= 4,
226*355cdcf3SZhihuan He 
227*355cdcf3SZhihuan He 	/* GPIO4B_IOMUX */
228*355cdcf3SZhihuan He 	GPIO4B1_SEL_SHIFT		= 2,
229*355cdcf3SZhihuan He 	GPIO4B1_SEL_MASK		= 0x3 << GPIO4B1_SEL_SHIFT,
230*355cdcf3SZhihuan He 	GPIO4B1_SEL_UART4_TX		= 1,
231*355cdcf3SZhihuan He 	GPIO4B0_SEL_SHIFT		= 0,
232*355cdcf3SZhihuan He 	GPIO4B0_SEL_MASK		= 0x3 << GPIO4B0_SEL_SHIFT,
233*355cdcf3SZhihuan He 	GPIO4B0_SEL_UART4_RX		= 1,
234*355cdcf3SZhihuan He 
2358ec8d58eSZhihuan He 	/* GPIO4D_IOMUX */
2368ec8d58eSZhihuan He 	GPIO4D3_SEL_SHIFT		= 6,
2378ec8d58eSZhihuan He 	GPIO4D3_SEL_MASK		= 0x3 << GPIO4D3_SEL_SHIFT,
2388ec8d58eSZhihuan He 	GPIO4D3_SEL_UART2_TXM1		= 2,
2398ec8d58eSZhihuan He 	GPIO4D2_SEL_SHIFT		= 4,
2408ec8d58eSZhihuan He 	GPIO4D2_SEL_MASK		= 0x3 << GPIO4D2_SEL_SHIFT,
2418ec8d58eSZhihuan He 	GPIO4D2_SEL_UART2_RXM1		= 2,
242*355cdcf3SZhihuan He 
243*355cdcf3SZhihuan He 	/* PVTM_CON0 */
244*355cdcf3SZhihuan He 	PVTM_PMU_OSC_EN_SHIFT		= 1,
245*355cdcf3SZhihuan He 	PVTM_PMU_OSC_EN_MASK		= 0x1 << PVTM_PMU_OSC_EN_SHIFT,
246*355cdcf3SZhihuan He 	PVTM_PMU_OSC_EN			= 1,
247*355cdcf3SZhihuan He 
248*355cdcf3SZhihuan He 	PVTM_PMU_START_SHIFT		= 0,
249*355cdcf3SZhihuan He 	PVTM_PMU_START_MASK		= 0x1 << PVTM_PMU_START_SHIFT,
250*355cdcf3SZhihuan He 	PVTM_PMU_START			= 1,
251*355cdcf3SZhihuan He 
252*355cdcf3SZhihuan He 	/* PVTM_CON1 */
253*355cdcf3SZhihuan He 	PVTM_PMU_CAL_CNT		= 0x1234,
254*355cdcf3SZhihuan He 
255*355cdcf3SZhihuan He 	/* PVTM_STATUS0 */
256*355cdcf3SZhihuan He 	PVTM_PMU_FREQ_DONE_SHIFT	= 0,
257*355cdcf3SZhihuan He 	PVTM_PMU_FREQ_DONE_MASK		= 0x1 << PVTM_PMU_FREQ_DONE_SHIFT,
258*355cdcf3SZhihuan He 
2598ec8d58eSZhihuan He 	/* UPCTL_CON0 */
2608ec8d58eSZhihuan He 	CYSYREQ_UPCTL_DDRSTDBY_SHIFT	= 5,
2618ec8d58eSZhihuan He 	CYSYREQ_UPCTL_DDRSTDBY_MASK	= 1 << CYSYREQ_UPCTL_DDRSTDBY_SHIFT,
2628ec8d58eSZhihuan He 	CYSYREQ_UPCTL_DDRSTDBY_EN	= 1,
2638ec8d58eSZhihuan He 	GRF_DDR_16BIT_EN_SHIFT		= 0,
2648ec8d58eSZhihuan He 	GRF_DDR_16BIT_EN_MASK		= 1 << GRF_DDR_16BIT_EN_SHIFT,
2658ec8d58eSZhihuan He 	GRF_DDR_16BIT_EN		= 1,
266*355cdcf3SZhihuan He 
267*355cdcf3SZhihuan He 	/* UPCTL_STATUS0 */
268*355cdcf3SZhihuan He 	DFI_SCRAMBLE_KEY_READY_SHIFT	= 21,
269*355cdcf3SZhihuan He 	DFI_SCRAMBLE_KEY_READY_MASK	= 0x1 << DFI_SCRAMBLE_KEY_READY_SHIFT,
270*355cdcf3SZhihuan He 
2718ec8d58eSZhihuan He 	/* SOC_CON5 */
2728ec8d58eSZhihuan He 	UART2_MULTI_IOFUNC_SEL_SHIFT	= 2,
2738ec8d58eSZhihuan He 	UART2_MULTI_IOFUNC_SEL_MASK	= 0x3 << UART2_MULTI_IOFUNC_SEL_SHIFT,
2748ec8d58eSZhihuan He 	UART2_MULTI_IOFUNC_SEL_M1	= 1,
275*355cdcf3SZhihuan He 
2768ec8d58eSZhihuan He 	/* SOC_CON12 */
2778ec8d58eSZhihuan He 	NOC_MSCH_MAIN_PARTIAL_SHIFT	= 1,
2788ec8d58eSZhihuan He 	NOC_MSCH_MAIN_PARTIAL_MASK	= 0x1 << NOC_MSCH_MAIN_PARTIAL_SHIFT,
2798ec8d58eSZhihuan He 	NOC_MSCH_MAIN_PARTIAL_EN	= 1,
2808ec8d58eSZhihuan He 	NOC_MSCH_MAINDDR3_SHIFT		= 0,
2818ec8d58eSZhihuan He 	NOC_MSCH_MAINDDR3_MASK		= 0x1 << NOC_MSCH_MAINDDR3_SHIFT,
2828ec8d58eSZhihuan He 	NOC_MSCH_MAINDDR3_EN		= 1,
2838ec8d58eSZhihuan He 	NOC_MSCH_MAINDDR3_DIS		= 0,
2848ec8d58eSZhihuan He };
2858ec8d58eSZhihuan He 
286*355cdcf3SZhihuan He enum { /* SGRF_CON0 */
287*355cdcf3SZhihuan He 	DDR_DFI_SCRAMBLE_EN_SHIFT	= 13,
288*355cdcf3SZhihuan He 	DDR_DFI_SCRAMBLE_EN_MASK	= 0x1 << DDR_DFI_SCRAMBLE_EN_SHIFT,
289*355cdcf3SZhihuan He 	DDR_DFI_SCRAMBLE_EN		= 1,
290*355cdcf3SZhihuan He };
2913d78ac3eSAndy Yan #endif
292