xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-zynqmp/hardware.h (revision 0785dfd8a7b14cb2c99fc1271c865eb2170c620b)
184c7204bSMichal Simek /*
284c7204bSMichal Simek  * (C) Copyright 2014 - 2015 Xilinx, Inc.
384c7204bSMichal Simek  * Michal Simek <michal.simek@xilinx.com>
484c7204bSMichal Simek  *
584c7204bSMichal Simek  * SPDX-License-Identifier:	GPL-2.0+
684c7204bSMichal Simek  */
784c7204bSMichal Simek 
884c7204bSMichal Simek #ifndef _ASM_ARCH_HARDWARE_H
984c7204bSMichal Simek #define _ASM_ARCH_HARDWARE_H
1084c7204bSMichal Simek 
11cb7ea820SMichal Simek #define ZYNQ_GEM_BASEADDR0	0xFF0B0000
12cb7ea820SMichal Simek #define ZYNQ_GEM_BASEADDR1	0xFF0C0000
13cb7ea820SMichal Simek #define ZYNQ_GEM_BASEADDR2	0xFF0D0000
14cb7ea820SMichal Simek #define ZYNQ_GEM_BASEADDR3	0xFF0E0000
15cb7ea820SMichal Simek 
1648d7260dSSiva Durga Prasad Paladugu #define ZYNQ_SPI_BASEADDR0	0xFF040000
1748d7260dSSiva Durga Prasad Paladugu #define ZYNQ_SPI_BASEADDR1	0xFF050000
1848d7260dSSiva Durga Prasad Paladugu 
192594e03cSSiva Durga Prasad Paladugu #define ZYNQ_I2C_BASEADDR0	0xFF020000
202594e03cSSiva Durga Prasad Paladugu #define ZYNQ_I2C_BASEADDR1	0xFF030000
212594e03cSSiva Durga Prasad Paladugu 
226fe6f135SMichal Simek #define ZYNQMP_SATA_BASEADDR	0xFD0C0000
236fe6f135SMichal Simek 
2416fa00a7SSiva Durga Prasad Paladugu #define ZYNQMP_USB0_XHCI_BASEADDR	0xFE200000
2516fa00a7SSiva Durga Prasad Paladugu #define ZYNQMP_USB1_XHCI_BASEADDR	0xFE300000
2616fa00a7SSiva Durga Prasad Paladugu 
2784c7204bSMichal Simek #define ZYNQMP_CRL_APB_BASEADDR	0xFF5E0000
2884c7204bSMichal Simek #define ZYNQMP_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT	0x1000000
2984c7204bSMichal Simek 
3084c7204bSMichal Simek struct crlapb_regs {
315cb24200SMichal Simek 	u32 reserved0[36];
325cb24200SMichal Simek 	u32 cpu_r5_ctrl; /* 0x90 */
335cb24200SMichal Simek 	u32 reserved1[37];
3484c7204bSMichal Simek 	u32 timestamp_ref_ctrl; /* 0x128 */
355cb24200SMichal Simek 	u32 reserved2[53];
3684c7204bSMichal Simek 	u32 boot_mode; /* 0x200 */
375cb24200SMichal Simek 	u32 reserved3[14];
385cb24200SMichal Simek 	u32 rst_lpd_top; /* 0x23C */
395cb24200SMichal Simek 	u32 reserved4[26];
4084c7204bSMichal Simek };
4184c7204bSMichal Simek 
4284c7204bSMichal Simek #define crlapb_base ((struct crlapb_regs *)ZYNQMP_CRL_APB_BASEADDR)
4384c7204bSMichal Simek 
44*0785dfd8SMichal Simek #define ZYNQMP_IOU_SCNTR_SECURE	0xFF260000
4584c7204bSMichal Simek #define ZYNQMP_IOU_SCNTR	0xFF250000
4684c7204bSMichal Simek #define ZYNQMP_IOU_SCNTR_COUNTER_CONTROL_REGISTER_EN	0x1
4784c7204bSMichal Simek #define ZYNQMP_IOU_SCNTR_COUNTER_CONTROL_REGISTER_HDBG	0x2
4884c7204bSMichal Simek 
4984c7204bSMichal Simek struct iou_scntr {
5084c7204bSMichal Simek 	u32 counter_control_register;
5184c7204bSMichal Simek 	u32 reserved0[7];
5284c7204bSMichal Simek 	u32 base_frequency_id_register;
5384c7204bSMichal Simek };
5484c7204bSMichal Simek 
5584c7204bSMichal Simek #define iou_scntr ((struct iou_scntr *)ZYNQMP_IOU_SCNTR)
5684c7204bSMichal Simek 
57*0785dfd8SMichal Simek struct iou_scntr_secure {
58*0785dfd8SMichal Simek 	u32 counter_control_register;
59*0785dfd8SMichal Simek 	u32 reserved0[7];
60*0785dfd8SMichal Simek 	u32 base_frequency_id_register;
61*0785dfd8SMichal Simek };
62*0785dfd8SMichal Simek 
63*0785dfd8SMichal Simek #define iou_scntr_secure ((struct iou_scntr_secure *)ZYNQMP_IOU_SCNTR_SECURE)
64*0785dfd8SMichal Simek 
6584c7204bSMichal Simek /* Bootmode setting values */
6684c7204bSMichal Simek #define BOOT_MODES_MASK	0x0000000F
6739c56f55SMichal Simek #define SD_MODE		0x00000003
6839c56f55SMichal Simek #define EMMC_MODE	0x00000006
6984c7204bSMichal Simek #define JTAG_MODE	0x00000000
7084c7204bSMichal Simek 
71225bf9aaSMichal Simek #define ZYNQMP_IOU_SLCR_BASEADDR	0xFF180000
72225bf9aaSMichal Simek 
73225bf9aaSMichal Simek struct iou_slcr_regs {
74225bf9aaSMichal Simek 	u32 mio_pin[78];
75225bf9aaSMichal Simek 	u32 reserved[442];
76225bf9aaSMichal Simek };
77225bf9aaSMichal Simek 
78225bf9aaSMichal Simek #define slcr_base ((struct iou_slcr_regs *)ZYNQMP_IOU_SLCR_BASEADDR)
79225bf9aaSMichal Simek 
805cb24200SMichal Simek #define ZYNQMP_RPU_BASEADDR	0xFF9A0000
815cb24200SMichal Simek 
825cb24200SMichal Simek struct rpu_regs {
835cb24200SMichal Simek 	u32 rpu_glbl_ctrl;
845cb24200SMichal Simek 	u32 reserved0[63];
855cb24200SMichal Simek 	u32 rpu0_cfg; /* 0x100 */
865cb24200SMichal Simek 	u32 reserved1[63];
875cb24200SMichal Simek 	u32 rpu1_cfg; /* 0x200 */
885cb24200SMichal Simek };
895cb24200SMichal Simek 
905cb24200SMichal Simek #define rpu_base ((struct rpu_regs *)ZYNQMP_RPU_BASEADDR)
915cb24200SMichal Simek 
925cb24200SMichal Simek #define ZYNQMP_CRF_APB_BASEADDR	0xFD1A0000
935cb24200SMichal Simek 
945cb24200SMichal Simek struct crfapb_regs {
955cb24200SMichal Simek 	u32 reserved0[65];
965cb24200SMichal Simek 	u32 rst_fpd_apu; /* 0x104 */
975cb24200SMichal Simek 	u32 reserved1;
985cb24200SMichal Simek };
995cb24200SMichal Simek 
1005cb24200SMichal Simek #define crfapb_base ((struct crfapb_regs *)ZYNQMP_CRF_APB_BASEADDR)
1015cb24200SMichal Simek 
1025cb24200SMichal Simek #define ZYNQMP_APU_BASEADDR	0xFD5C0000
1035cb24200SMichal Simek 
1045cb24200SMichal Simek struct apu_regs {
1055cb24200SMichal Simek 	u32 reserved0[16];
1065cb24200SMichal Simek 	u32 rvbar_addr0_l; /* 0x40 */
1075cb24200SMichal Simek 	u32 rvbar_addr0_h; /* 0x44 */
1085cb24200SMichal Simek 	u32 reserved1[20];
1095cb24200SMichal Simek };
1105cb24200SMichal Simek 
1115cb24200SMichal Simek #define apu_base ((struct apu_regs *)ZYNQMP_APU_BASEADDR)
1125cb24200SMichal Simek 
11384c7204bSMichal Simek /* Board version value */
114*0785dfd8SMichal Simek #define ZYNQMP_CSU_BASEADDR		0xFFCA0000
11584c7204bSMichal Simek #define ZYNQMP_CSU_VERSION_SILICON	0x0
11684c7204bSMichal Simek #define ZYNQMP_CSU_VERSION_EP108	0x1
11716247d28SMichal Simek #define ZYNQMP_CSU_VERSION_VELOCE	0x2
11884c7204bSMichal Simek #define ZYNQMP_CSU_VERSION_QEMU		0x3
11984c7204bSMichal Simek 
120*0785dfd8SMichal Simek #define ZYNQMP_SILICON_VER_MASK		0xF000
121*0785dfd8SMichal Simek #define ZYNQMP_SILICON_VER_SHIFT	12
122*0785dfd8SMichal Simek 
123*0785dfd8SMichal Simek struct csu_regs {
124*0785dfd8SMichal Simek 	u32 reserved0[17];
125*0785dfd8SMichal Simek 	u32 version;
126*0785dfd8SMichal Simek };
127*0785dfd8SMichal Simek 
128*0785dfd8SMichal Simek #define csu_base ((struct csu_regs *)ZYNQMP_CSU_BASEADDR)
129*0785dfd8SMichal Simek 
13084c7204bSMichal Simek #endif /* _ASM_ARCH_HARDWARE_H */
131