1*274ccb5bSMichal Simek /* SPDX-License-Identifier: GPL-2.0+ */ 2*274ccb5bSMichal Simek /* 3*274ccb5bSMichal Simek * (C) Copyright 2014 - 2015 Xilinx, Inc. 4*274ccb5bSMichal Simek * Michal Simek <michal.simek@xilinx.com> 5*274ccb5bSMichal Simek */ 6*274ccb5bSMichal Simek 7*274ccb5bSMichal Simek #ifndef _ASM_ARCH_HARDWARE_H 8*274ccb5bSMichal Simek #define _ASM_ARCH_HARDWARE_H 9*274ccb5bSMichal Simek 10*274ccb5bSMichal Simek #define ARASAN_NAND_BASEADDR 0xFF100000 11*274ccb5bSMichal Simek 12*274ccb5bSMichal Simek #define ZYNQMP_TCM_BASE_ADDR 0xFFE00000 13*274ccb5bSMichal Simek #define ZYNQMP_TCM_SIZE 0x40000 14*274ccb5bSMichal Simek 15*274ccb5bSMichal Simek #define ZYNQMP_CRL_APB_BASEADDR 0xFF5E0000 16*274ccb5bSMichal Simek #define ZYNQMP_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT 0x1000000 17*274ccb5bSMichal Simek #define ZYNQMP_CRL_APB_BOOT_PIN_CTRL_OUT_EN_SHIFT 0 18*274ccb5bSMichal Simek #define ZYNQMP_CRL_APB_BOOT_PIN_CTRL_OUT_VAL_SHIFT 8 19*274ccb5bSMichal Simek 20*274ccb5bSMichal Simek #define PS_MODE0 BIT(0) 21*274ccb5bSMichal Simek #define PS_MODE1 BIT(1) 22*274ccb5bSMichal Simek #define PS_MODE2 BIT(2) 23*274ccb5bSMichal Simek #define PS_MODE3 BIT(3) 24*274ccb5bSMichal Simek 25*274ccb5bSMichal Simek #define RESET_REASON_DEBUG_SYS BIT(6) 26*274ccb5bSMichal Simek #define RESET_REASON_SOFT BIT(5) 27*274ccb5bSMichal Simek #define RESET_REASON_SRST BIT(4) 28*274ccb5bSMichal Simek #define RESET_REASON_PSONLY BIT(3) 29*274ccb5bSMichal Simek #define RESET_REASON_PMU BIT(2) 30*274ccb5bSMichal Simek #define RESET_REASON_INTERNAL BIT(1) 31*274ccb5bSMichal Simek #define RESET_REASON_EXTERNAL BIT(0) 32*274ccb5bSMichal Simek 33*274ccb5bSMichal Simek struct crlapb_regs { 34*274ccb5bSMichal Simek u32 reserved0[36]; 35*274ccb5bSMichal Simek u32 cpu_r5_ctrl; /* 0x90 */ 36*274ccb5bSMichal Simek u32 reserved1[37]; 37*274ccb5bSMichal Simek u32 timestamp_ref_ctrl; /* 0x128 */ 38*274ccb5bSMichal Simek u32 reserved2[53]; 39*274ccb5bSMichal Simek u32 boot_mode; /* 0x200 */ 40*274ccb5bSMichal Simek u32 reserved3_0[7]; 41*274ccb5bSMichal Simek u32 reset_reason; /* 0x220 */ 42*274ccb5bSMichal Simek u32 reserved3_1[6]; 43*274ccb5bSMichal Simek u32 rst_lpd_top; /* 0x23C */ 44*274ccb5bSMichal Simek u32 reserved4[4]; 45*274ccb5bSMichal Simek u32 boot_pin_ctrl; /* 0x250 */ 46*274ccb5bSMichal Simek u32 reserved5[21]; 47*274ccb5bSMichal Simek }; 48*274ccb5bSMichal Simek 49*274ccb5bSMichal Simek #define crlapb_base ((struct crlapb_regs *)ZYNQMP_CRL_APB_BASEADDR) 50*274ccb5bSMichal Simek 51*274ccb5bSMichal Simek #define ZYNQMP_IOU_SCNTR_SECURE 0xFF260000 52*274ccb5bSMichal Simek #define ZYNQMP_IOU_SCNTR_COUNTER_CONTROL_REGISTER_EN 0x1 53*274ccb5bSMichal Simek #define ZYNQMP_IOU_SCNTR_COUNTER_CONTROL_REGISTER_HDBG 0x2 54*274ccb5bSMichal Simek 55*274ccb5bSMichal Simek struct iou_scntr_secure { 56*274ccb5bSMichal Simek u32 counter_control_register; 57*274ccb5bSMichal Simek u32 reserved0[7]; 58*274ccb5bSMichal Simek u32 base_frequency_id_register; 59*274ccb5bSMichal Simek }; 60*274ccb5bSMichal Simek 61*274ccb5bSMichal Simek #define iou_scntr_secure ((struct iou_scntr_secure *)ZYNQMP_IOU_SCNTR_SECURE) 62*274ccb5bSMichal Simek 63*274ccb5bSMichal Simek /* Bootmode setting values */ 64*274ccb5bSMichal Simek #define BOOT_MODES_MASK 0x0000000F 65*274ccb5bSMichal Simek #define QSPI_MODE_24BIT 0x00000001 66*274ccb5bSMichal Simek #define QSPI_MODE_32BIT 0x00000002 67*274ccb5bSMichal Simek #define SD_MODE 0x00000003 /* sd 0 */ 68*274ccb5bSMichal Simek #define SD_MODE1 0x00000005 /* sd 1 */ 69*274ccb5bSMichal Simek #define NAND_MODE 0x00000004 70*274ccb5bSMichal Simek #define EMMC_MODE 0x00000006 71*274ccb5bSMichal Simek #define USB_MODE 0x00000007 72*274ccb5bSMichal Simek #define SD1_LSHFT_MODE 0x0000000E /* SD1 Level shifter */ 73*274ccb5bSMichal Simek #define JTAG_MODE 0x00000000 74*274ccb5bSMichal Simek #define BOOT_MODE_USE_ALT 0x100 75*274ccb5bSMichal Simek #define BOOT_MODE_ALT_SHIFT 12 76*274ccb5bSMichal Simek /* SW secondary boot modes 0xa - 0xd */ 77*274ccb5bSMichal Simek #define SW_USBHOST_MODE 0x0000000A 78*274ccb5bSMichal Simek #define SW_SATA_MODE 0x0000000B 79*274ccb5bSMichal Simek 80*274ccb5bSMichal Simek #define ZYNQMP_IOU_SLCR_BASEADDR 0xFF180000 81*274ccb5bSMichal Simek 82*274ccb5bSMichal Simek struct iou_slcr_regs { 83*274ccb5bSMichal Simek u32 mio_pin[78]; 84*274ccb5bSMichal Simek u32 reserved[442]; 85*274ccb5bSMichal Simek }; 86*274ccb5bSMichal Simek 87*274ccb5bSMichal Simek #define slcr_base ((struct iou_slcr_regs *)ZYNQMP_IOU_SLCR_BASEADDR) 88*274ccb5bSMichal Simek 89*274ccb5bSMichal Simek #define ZYNQMP_RPU_BASEADDR 0xFF9A0000 90*274ccb5bSMichal Simek 91*274ccb5bSMichal Simek struct rpu_regs { 92*274ccb5bSMichal Simek u32 rpu_glbl_ctrl; 93*274ccb5bSMichal Simek u32 reserved0[63]; 94*274ccb5bSMichal Simek u32 rpu0_cfg; /* 0x100 */ 95*274ccb5bSMichal Simek u32 reserved1[63]; 96*274ccb5bSMichal Simek u32 rpu1_cfg; /* 0x200 */ 97*274ccb5bSMichal Simek }; 98*274ccb5bSMichal Simek 99*274ccb5bSMichal Simek #define rpu_base ((struct rpu_regs *)ZYNQMP_RPU_BASEADDR) 100*274ccb5bSMichal Simek 101*274ccb5bSMichal Simek #define ZYNQMP_CRF_APB_BASEADDR 0xFD1A0000 102*274ccb5bSMichal Simek 103*274ccb5bSMichal Simek struct crfapb_regs { 104*274ccb5bSMichal Simek u32 reserved0[65]; 105*274ccb5bSMichal Simek u32 rst_fpd_apu; /* 0x104 */ 106*274ccb5bSMichal Simek u32 reserved1; 107*274ccb5bSMichal Simek }; 108*274ccb5bSMichal Simek 109*274ccb5bSMichal Simek #define crfapb_base ((struct crfapb_regs *)ZYNQMP_CRF_APB_BASEADDR) 110*274ccb5bSMichal Simek 111*274ccb5bSMichal Simek #define ZYNQMP_APU_BASEADDR 0xFD5C0000 112*274ccb5bSMichal Simek 113*274ccb5bSMichal Simek struct apu_regs { 114*274ccb5bSMichal Simek u32 reserved0[16]; 115*274ccb5bSMichal Simek u32 rvbar_addr0_l; /* 0x40 */ 116*274ccb5bSMichal Simek u32 rvbar_addr0_h; /* 0x44 */ 117*274ccb5bSMichal Simek u32 reserved1[20]; 118*274ccb5bSMichal Simek }; 119*274ccb5bSMichal Simek 120*274ccb5bSMichal Simek #define apu_base ((struct apu_regs *)ZYNQMP_APU_BASEADDR) 121*274ccb5bSMichal Simek 122*274ccb5bSMichal Simek /* Board version value */ 123*274ccb5bSMichal Simek #define ZYNQMP_CSU_BASEADDR 0xFFCA0000 124*274ccb5bSMichal Simek #define ZYNQMP_CSU_VERSION_SILICON 0x0 125*274ccb5bSMichal Simek #define ZYNQMP_CSU_VERSION_QEMU 0x3 126*274ccb5bSMichal Simek 127*274ccb5bSMichal Simek #define ZYNQMP_CSU_VERSION_EMPTY_SHIFT 20 128*274ccb5bSMichal Simek 129*274ccb5bSMichal Simek #define ZYNQMP_SILICON_VER_MASK 0xF000 130*274ccb5bSMichal Simek #define ZYNQMP_SILICON_VER_SHIFT 12 131*274ccb5bSMichal Simek 132*274ccb5bSMichal Simek struct csu_regs { 133*274ccb5bSMichal Simek u32 reserved0[17]; 134*274ccb5bSMichal Simek u32 version; 135*274ccb5bSMichal Simek }; 136*274ccb5bSMichal Simek 137*274ccb5bSMichal Simek #define csu_base ((struct csu_regs *)ZYNQMP_CSU_BASEADDR) 138*274ccb5bSMichal Simek 139*274ccb5bSMichal Simek #define ZYNQMP_PMU_BASEADDR 0xFFD80000 140*274ccb5bSMichal Simek 141*274ccb5bSMichal Simek struct pmu_regs { 142*274ccb5bSMichal Simek u32 reserved[18]; 143*274ccb5bSMichal Simek u32 gen_storage6; /* 0x48 */ 144*274ccb5bSMichal Simek }; 145*274ccb5bSMichal Simek 146*274ccb5bSMichal Simek #define pmu_base ((struct pmu_regs *)ZYNQMP_PMU_BASEADDR) 147*274ccb5bSMichal Simek 148*274ccb5bSMichal Simek #define ZYNQMP_CSU_IDCODE_ADDR 0xFFCA0040 149*274ccb5bSMichal Simek #define ZYNQMP_CSU_VER_ADDR 0xFFCA0044 150*274ccb5bSMichal Simek 151*274ccb5bSMichal Simek #endif /* _ASM_ARCH_HARDWARE_H */ 152