diff options
author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-02-21 16:43:19 +0100 |
---|---|---|
committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-02-21 16:43:19 +0100 |
commit | 03268374db9133686b738acca212247023840ffc (patch) | |
tree | c511f6501522c2e8cf02edc85024aeb5042e792a /arch/arm/cpu/armv7/zynq/cpu.c | |
parent | 9f024f62e4604274a23213dcee30016092e32e7b (diff) | |
parent | 00ed34589880ca7092999ec5b92e061018d0fd0f (diff) | |
download | u-boot-imx-03268374db9133686b738acca212247023840ffc.zip u-boot-imx-03268374db9133686b738acca212247023840ffc.tar.gz u-boot-imx-03268374db9133686b738acca212247023840ffc.tar.bz2 |
Merge 'u-boot-microblaze/mainline/arm' into 'u-boot-arm/master'
This pulls the three following ZYNQ commits into ARM master:
7dca54f8: xilinx: zynq: Enable DCC and create new zynq_dcc board
59c651f4: arm: zynq: Add SLCR support with system reset
00ed3458: arm: zynq: Add lowlevel initialization to C
Diffstat (limited to 'arch/arm/cpu/armv7/zynq/cpu.c')
-rw-r--r-- | arch/arm/cpu/armv7/zynq/cpu.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/arch/arm/cpu/armv7/zynq/cpu.c b/arch/arm/cpu/armv7/zynq/cpu.c index ab615cc..e8f4c19 100644 --- a/arch/arm/cpu/armv7/zynq/cpu.c +++ b/arch/arm/cpu/armv7/zynq/cpu.c @@ -21,11 +21,37 @@ * MA 02111-1307 USA */ #include <common.h> +#include <asm/io.h> +#include <asm/arch/sys_proto.h> +#include <asm/arch/hardware.h> -inline void lowlevel_init(void) {} +void lowlevel_init(void) +{ + zynq_slcr_unlock(); + /* remap DDR to zero, FILTERSTART */ + writel(0, &scu_base->filter_start); + + /* Device config APB, unlock the PCAP */ + writel(0x757BDF0D, &devcfg_base->unlock); + writel(0xFFFFFFFF, &devcfg_base->rom_shadow); + + /* OCM_CFG, Mask out the ROM, map ram into upper addresses */ + writel(0x1F, &slcr_base->ocm_cfg); + /* FPGA_RST_CTRL, clear resets on AXI fabric ports */ + writel(0x0, &slcr_base->fpga_rst_ctrl); + /* TZ_DDR_RAM, Set DDR trust zone non-secure */ + writel(0xFFFFFFFF, &slcr_base->trust_zone); + /* Set urgent bits with register */ + writel(0x0, &slcr_base->ddr_urgent_sel); + /* Urgent write, ports S2/S3 */ + writel(0xC, &slcr_base->ddr_urgent); + + zynq_slcr_lock(); +} void reset_cpu(ulong addr) { + zynq_slcr_cpu_reset(); while (1) ; } |