183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 29b9c6516SMasahiro Yamada /* 39b9c6516SMasahiro Yamada * Copyright (c) 2013 Xilinx Inc. 49b9c6516SMasahiro Yamada */ 59b9c6516SMasahiro Yamada 69b9c6516SMasahiro Yamada #ifndef _ASM_ARCH_HARDWARE_H 79b9c6516SMasahiro Yamada #define _ASM_ARCH_HARDWARE_H 89b9c6516SMasahiro Yamada 99b9c6516SMasahiro Yamada #define ZYNQ_SYS_CTRL_BASEADDR 0xF8000000 109b9c6516SMasahiro Yamada #define ZYNQ_DEV_CFG_APB_BASEADDR 0xF8007000 119b9c6516SMasahiro Yamada #define ZYNQ_SCU_BASEADDR 0xF8F00000 129b9c6516SMasahiro Yamada #define ZYNQ_QSPI_BASEADDR 0xE000D000 139b9c6516SMasahiro Yamada #define ZYNQ_SMC_BASEADDR 0xE000E000 149b9c6516SMasahiro Yamada #define ZYNQ_NAND_BASEADDR 0xE1000000 159b9c6516SMasahiro Yamada #define ZYNQ_DDRC_BASEADDR 0xF8006000 169b9c6516SMasahiro Yamada #define ZYNQ_EFUSE_BASEADDR 0xF800D000 179b9c6516SMasahiro Yamada #define ZYNQ_USB_BASEADDR0 0xE0002000 189b9c6516SMasahiro Yamada #define ZYNQ_USB_BASEADDR1 0xE0003000 19*37e3a36aSSiva Durga Prasad Paladugu #define ZYNQ_OCM_BASEADDR 0xFFFC0000 209b9c6516SMasahiro Yamada 219b9c6516SMasahiro Yamada /* Bootmode setting values */ 229b9c6516SMasahiro Yamada #define ZYNQ_BM_MASK 0x7 239b9c6516SMasahiro Yamada #define ZYNQ_BM_QSPI 0x1 249b9c6516SMasahiro Yamada #define ZYNQ_BM_NOR 0x2 259b9c6516SMasahiro Yamada #define ZYNQ_BM_NAND 0x4 269b9c6516SMasahiro Yamada #define ZYNQ_BM_SD 0x5 279b9c6516SMasahiro Yamada #define ZYNQ_BM_JTAG 0x0 289b9c6516SMasahiro Yamada 299b9c6516SMasahiro Yamada /* Reflect slcr offsets */ 309b9c6516SMasahiro Yamada struct slcr_regs { 319b9c6516SMasahiro Yamada u32 scl; /* 0x0 */ 329b9c6516SMasahiro Yamada u32 slcr_lock; /* 0x4 */ 339b9c6516SMasahiro Yamada u32 slcr_unlock; /* 0x8 */ 349b9c6516SMasahiro Yamada u32 reserved0_1[61]; 359b9c6516SMasahiro Yamada u32 arm_pll_ctrl; /* 0x100 */ 369b9c6516SMasahiro Yamada u32 ddr_pll_ctrl; /* 0x104 */ 379b9c6516SMasahiro Yamada u32 io_pll_ctrl; /* 0x108 */ 389b9c6516SMasahiro Yamada u32 reserved0_2[5]; 399b9c6516SMasahiro Yamada u32 arm_clk_ctrl; /* 0x120 */ 409b9c6516SMasahiro Yamada u32 ddr_clk_ctrl; /* 0x124 */ 419b9c6516SMasahiro Yamada u32 dci_clk_ctrl; /* 0x128 */ 429b9c6516SMasahiro Yamada u32 aper_clk_ctrl; /* 0x12c */ 439b9c6516SMasahiro Yamada u32 reserved0_3[2]; 449b9c6516SMasahiro Yamada u32 gem0_rclk_ctrl; /* 0x138 */ 459b9c6516SMasahiro Yamada u32 gem1_rclk_ctrl; /* 0x13c */ 469b9c6516SMasahiro Yamada u32 gem0_clk_ctrl; /* 0x140 */ 479b9c6516SMasahiro Yamada u32 gem1_clk_ctrl; /* 0x144 */ 489b9c6516SMasahiro Yamada u32 smc_clk_ctrl; /* 0x148 */ 499b9c6516SMasahiro Yamada u32 lqspi_clk_ctrl; /* 0x14c */ 509b9c6516SMasahiro Yamada u32 sdio_clk_ctrl; /* 0x150 */ 519b9c6516SMasahiro Yamada u32 uart_clk_ctrl; /* 0x154 */ 529b9c6516SMasahiro Yamada u32 spi_clk_ctrl; /* 0x158 */ 539b9c6516SMasahiro Yamada u32 can_clk_ctrl; /* 0x15c */ 549b9c6516SMasahiro Yamada u32 can_mioclk_ctrl; /* 0x160 */ 559b9c6516SMasahiro Yamada u32 dbg_clk_ctrl; /* 0x164 */ 569b9c6516SMasahiro Yamada u32 pcap_clk_ctrl; /* 0x168 */ 579b9c6516SMasahiro Yamada u32 reserved0_4[1]; 589b9c6516SMasahiro Yamada u32 fpga0_clk_ctrl; /* 0x170 */ 599b9c6516SMasahiro Yamada u32 reserved0_5[3]; 609b9c6516SMasahiro Yamada u32 fpga1_clk_ctrl; /* 0x180 */ 619b9c6516SMasahiro Yamada u32 reserved0_6[3]; 629b9c6516SMasahiro Yamada u32 fpga2_clk_ctrl; /* 0x190 */ 639b9c6516SMasahiro Yamada u32 reserved0_7[3]; 649b9c6516SMasahiro Yamada u32 fpga3_clk_ctrl; /* 0x1a0 */ 659b9c6516SMasahiro Yamada u32 reserved0_8[8]; 669b9c6516SMasahiro Yamada u32 clk_621_true; /* 0x1c4 */ 679b9c6516SMasahiro Yamada u32 reserved1[14]; 689b9c6516SMasahiro Yamada u32 pss_rst_ctrl; /* 0x200 */ 699b9c6516SMasahiro Yamada u32 reserved2[15]; 709b9c6516SMasahiro Yamada u32 fpga_rst_ctrl; /* 0x240 */ 719b9c6516SMasahiro Yamada u32 reserved3[5]; 729b9c6516SMasahiro Yamada u32 reboot_status; /* 0x258 */ 739b9c6516SMasahiro Yamada u32 boot_mode; /* 0x25c */ 749b9c6516SMasahiro Yamada u32 reserved4[116]; 759b9c6516SMasahiro Yamada u32 trust_zone; /* 0x430 */ /* FIXME */ 769b9c6516SMasahiro Yamada u32 reserved5_1[63]; 779b9c6516SMasahiro Yamada u32 pss_idcode; /* 0x530 */ 789b9c6516SMasahiro Yamada u32 reserved5_2[51]; 799b9c6516SMasahiro Yamada u32 ddr_urgent; /* 0x600 */ 809b9c6516SMasahiro Yamada u32 reserved6[6]; 819b9c6516SMasahiro Yamada u32 ddr_urgent_sel; /* 0x61c */ 829b9c6516SMasahiro Yamada u32 reserved7[56]; 839b9c6516SMasahiro Yamada u32 mio_pin[54]; /* 0x700 - 0x7D4 */ 849b9c6516SMasahiro Yamada u32 reserved8[74]; 859b9c6516SMasahiro Yamada u32 lvl_shftr_en; /* 0x900 */ 869b9c6516SMasahiro Yamada u32 reserved9[3]; 879b9c6516SMasahiro Yamada u32 ocm_cfg; /* 0x910 */ 889b9c6516SMasahiro Yamada }; 899b9c6516SMasahiro Yamada 909b9c6516SMasahiro Yamada #define slcr_base ((struct slcr_regs *)ZYNQ_SYS_CTRL_BASEADDR) 919b9c6516SMasahiro Yamada 929b9c6516SMasahiro Yamada struct devcfg_regs { 939b9c6516SMasahiro Yamada u32 ctrl; /* 0x0 */ 949b9c6516SMasahiro Yamada u32 lock; /* 0x4 */ 959b9c6516SMasahiro Yamada u32 cfg; /* 0x8 */ 969b9c6516SMasahiro Yamada u32 int_sts; /* 0xc */ 979b9c6516SMasahiro Yamada u32 int_mask; /* 0x10 */ 989b9c6516SMasahiro Yamada u32 status; /* 0x14 */ 999b9c6516SMasahiro Yamada u32 dma_src_addr; /* 0x18 */ 1009b9c6516SMasahiro Yamada u32 dma_dst_addr; /* 0x1c */ 1019b9c6516SMasahiro Yamada u32 dma_src_len; /* 0x20 */ 1029b9c6516SMasahiro Yamada u32 dma_dst_len; /* 0x24 */ 1039b9c6516SMasahiro Yamada u32 rom_shadow; /* 0x28 */ 1049b9c6516SMasahiro Yamada u32 reserved1[2]; 1059b9c6516SMasahiro Yamada u32 unlock; /* 0x34 */ 1069b9c6516SMasahiro Yamada u32 reserved2[18]; 1079b9c6516SMasahiro Yamada u32 mctrl; /* 0x80 */ 1089b9c6516SMasahiro Yamada u32 reserved3; 1099b9c6516SMasahiro Yamada u32 write_count; /* 0x88 */ 1109b9c6516SMasahiro Yamada u32 read_count; /* 0x8c */ 1119b9c6516SMasahiro Yamada }; 1129b9c6516SMasahiro Yamada 1139b9c6516SMasahiro Yamada #define devcfg_base ((struct devcfg_regs *)ZYNQ_DEV_CFG_APB_BASEADDR) 1149b9c6516SMasahiro Yamada 1159b9c6516SMasahiro Yamada struct scu_regs { 1169b9c6516SMasahiro Yamada u32 reserved1[16]; 1179b9c6516SMasahiro Yamada u32 filter_start; /* 0x40 */ 1189b9c6516SMasahiro Yamada u32 filter_end; /* 0x44 */ 1199b9c6516SMasahiro Yamada }; 1209b9c6516SMasahiro Yamada 1219b9c6516SMasahiro Yamada #define scu_base ((struct scu_regs *)ZYNQ_SCU_BASEADDR) 1229b9c6516SMasahiro Yamada 1239b9c6516SMasahiro Yamada struct ddrc_regs { 1249b9c6516SMasahiro Yamada u32 ddrc_ctrl; /* 0x0 */ 1259b9c6516SMasahiro Yamada u32 reserved[60]; 1269b9c6516SMasahiro Yamada u32 ecc_scrub; /* 0xF4 */ 1279b9c6516SMasahiro Yamada }; 1289b9c6516SMasahiro Yamada #define ddrc_base ((struct ddrc_regs *)ZYNQ_DDRC_BASEADDR) 1299b9c6516SMasahiro Yamada 1309b9c6516SMasahiro Yamada struct efuse_reg { 1319b9c6516SMasahiro Yamada u32 reserved1[4]; 1329b9c6516SMasahiro Yamada u32 status; 1339b9c6516SMasahiro Yamada u32 reserved2[3]; 1349b9c6516SMasahiro Yamada }; 1359b9c6516SMasahiro Yamada 1369b9c6516SMasahiro Yamada #define efuse_base ((struct efuse_reg *)ZYNQ_EFUSE_BASEADDR) 1379b9c6516SMasahiro Yamada 1389b9c6516SMasahiro Yamada #endif /* _ASM_ARCH_HARDWARE_H */ 139