u-boot/arch/arm/include/asm/arch-zynq/hardware.h
Mike Looijmans dc4a1a2729 ARM: zynq: Fix bootmode mask
Bootmode mask was defined as 0x0F, but documentation mentions 0x07.
Experiments show that bit "3" is the JTAG chain configuration.
Change the mask to "7" to allow systems with a different chain
configuration to boot correctly.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Acked-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
2014-05-14 07:43:34 +02:00

142 lines
3.6 KiB
C

/*
* Copyright (c) 2013 Xilinx Inc.
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef _ASM_ARCH_HARDWARE_H
#define _ASM_ARCH_HARDWARE_H
#define ZYNQ_SERIAL_BASEADDR0 0xE0000000
#define ZYNQ_SERIAL_BASEADDR1 0xE0001000
#define ZYNQ_SYS_CTRL_BASEADDR 0xF8000000
#define ZYNQ_DEV_CFG_APB_BASEADDR 0xF8007000
#define ZYNQ_SCU_BASEADDR 0xF8F00000
#define ZYNQ_SCUTIMER_BASEADDR 0xF8F00600
#define ZYNQ_GEM_BASEADDR0 0xE000B000
#define ZYNQ_GEM_BASEADDR1 0xE000C000
#define ZYNQ_SDHCI_BASEADDR0 0xE0100000
#define ZYNQ_SDHCI_BASEADDR1 0xE0101000
#define ZYNQ_I2C_BASEADDR0 0xE0004000
#define ZYNQ_I2C_BASEADDR1 0xE0005000
#define ZYNQ_SPI_BASEADDR0 0xE0006000
#define ZYNQ_SPI_BASEADDR1 0xE0007000
#define ZYNQ_DDRC_BASEADDR 0xF8006000
#define ZYNQ_EFUSE_BASEADDR 0xF800D000
/* Bootmode setting values */
#define ZYNQ_BM_MASK 0x7
#define ZYNQ_BM_NOR 0x2
#define ZYNQ_BM_SD 0x5
#define ZYNQ_BM_JTAG 0x0
/* Reflect slcr offsets */
struct slcr_regs {
u32 scl; /* 0x0 */
u32 slcr_lock; /* 0x4 */
u32 slcr_unlock; /* 0x8 */
u32 reserved0_1[61];
u32 arm_pll_ctrl; /* 0x100 */
u32 ddr_pll_ctrl; /* 0x104 */
u32 io_pll_ctrl; /* 0x108 */
u32 reserved0_2[5];
u32 arm_clk_ctrl; /* 0x120 */
u32 ddr_clk_ctrl; /* 0x124 */
u32 dci_clk_ctrl; /* 0x128 */
u32 aper_clk_ctrl; /* 0x12c */
u32 reserved0_3[2];
u32 gem0_rclk_ctrl; /* 0x138 */
u32 gem1_rclk_ctrl; /* 0x13c */
u32 gem0_clk_ctrl; /* 0x140 */
u32 gem1_clk_ctrl; /* 0x144 */
u32 smc_clk_ctrl; /* 0x148 */
u32 lqspi_clk_ctrl; /* 0x14c */
u32 sdio_clk_ctrl; /* 0x150 */
u32 uart_clk_ctrl; /* 0x154 */
u32 spi_clk_ctrl; /* 0x158 */
u32 can_clk_ctrl; /* 0x15c */
u32 can_mioclk_ctrl; /* 0x160 */
u32 dbg_clk_ctrl; /* 0x164 */
u32 pcap_clk_ctrl; /* 0x168 */
u32 reserved0_4[1];
u32 fpga0_clk_ctrl; /* 0x170 */
u32 reserved0_5[3];
u32 fpga1_clk_ctrl; /* 0x180 */
u32 reserved0_6[3];
u32 fpga2_clk_ctrl; /* 0x190 */
u32 reserved0_7[3];
u32 fpga3_clk_ctrl; /* 0x1a0 */
u32 reserved0_8[8];
u32 clk_621_true; /* 0x1c4 */
u32 reserved1[14];
u32 pss_rst_ctrl; /* 0x200 */
u32 reserved2[15];
u32 fpga_rst_ctrl; /* 0x240 */
u32 reserved3[5];
u32 reboot_status; /* 0x258 */
u32 boot_mode; /* 0x25c */
u32 reserved4[116];
u32 trust_zone; /* 0x430 */ /* FIXME */
u32 reserved5_1[63];
u32 pss_idcode; /* 0x530 */
u32 reserved5_2[51];
u32 ddr_urgent; /* 0x600 */
u32 reserved6[6];
u32 ddr_urgent_sel; /* 0x61c */
u32 reserved7[56];
u32 mio_pin[54]; /* 0x700 - 0x7D4 */
u32 reserved8[74];
u32 lvl_shftr_en; /* 0x900 */
u32 reserved9[3];
u32 ocm_cfg; /* 0x910 */
};
#define slcr_base ((struct slcr_regs *)ZYNQ_SYS_CTRL_BASEADDR)
struct devcfg_regs {
u32 ctrl; /* 0x0 */
u32 lock; /* 0x4 */
u32 cfg; /* 0x8 */
u32 int_sts; /* 0xc */
u32 int_mask; /* 0x10 */
u32 status; /* 0x14 */
u32 dma_src_addr; /* 0x18 */
u32 dma_dst_addr; /* 0x1c */
u32 dma_src_len; /* 0x20 */
u32 dma_dst_len; /* 0x24 */
u32 rom_shadow; /* 0x28 */
u32 reserved1[2];
u32 unlock; /* 0x34 */
u32 reserved2[18];
u32 mctrl; /* 0x80 */
u32 reserved3;
u32 write_count; /* 0x88 */
u32 read_count; /* 0x8c */
};
#define devcfg_base ((struct devcfg_regs *)ZYNQ_DEV_CFG_APB_BASEADDR)
struct scu_regs {
u32 reserved1[16];
u32 filter_start; /* 0x40 */
u32 filter_end; /* 0x44 */
};
#define scu_base ((struct scu_regs *)ZYNQ_SCU_BASEADDR)
struct ddrc_regs {
u32 ddrc_ctrl; /* 0x0 */
u32 reserved[60];
u32 ecc_scrub; /* 0xF4 */
};
#define ddrc_base ((struct ddrc_regs *)ZYNQ_DDRC_BASEADDR)
struct efuse_reg {
u32 reserved1[4];
u32 status;
u32 reserved2[3];
};
#define efuse_base ((struct efuse_reg *)ZYNQ_EFUSE_BASEADDR)
#endif /* _ASM_ARCH_HARDWARE_H */