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 Cmaster
commit
03268374db
@ -0,0 +1,63 @@ |
||||
/*
|
||||
* Copyright (c) 2013 Xilinx Inc. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/io.h> |
||||
#include <malloc.h> |
||||
#include <asm/arch/hardware.h> |
||||
|
||||
#define SLCR_LOCK_MAGIC 0x767B |
||||
#define SLCR_UNLOCK_MAGIC 0xDF0D |
||||
|
||||
static int slcr_lock = 1; /* 1 means locked, 0 means unlocked */ |
||||
|
||||
void zynq_slcr_lock(void) |
||||
{ |
||||
if (!slcr_lock) |
||||
writel(SLCR_LOCK_MAGIC, &slcr_base->slcr_lock); |
||||
} |
||||
|
||||
void zynq_slcr_unlock(void) |
||||
{ |
||||
if (slcr_lock) |
||||
writel(SLCR_UNLOCK_MAGIC, &slcr_base->slcr_unlock); |
||||
} |
||||
|
||||
/* Reset the entire system */ |
||||
void zynq_slcr_cpu_reset(void) |
||||
{ |
||||
/*
|
||||
* Unlock the SLCR then reset the system. |
||||
* Note that this seems to require raw i/o |
||||
* functions or there's a lockup? |
||||
*/ |
||||
zynq_slcr_unlock(); |
||||
|
||||
/*
|
||||
* Clear 0x0F000000 bits of reboot status register to workaround |
||||
* the FSBL not loading the bitstream after soft-reboot |
||||
* This is a temporary solution until we know more. |
||||
*/ |
||||
clrbits_le32(&slcr_base->reboot_status, 0xF000000); |
||||
|
||||
writel(1, &slcr_base->pss_rst_ctrl); |
||||
} |
@ -0,0 +1,85 @@ |
||||
/*
|
||||
* Copyright (c) 2013 Xilinx Inc. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#ifndef _ASM_ARCH_HARDWARE_H |
||||
#define _ASM_ARCH_HARDWARE_H |
||||
|
||||
#define XPSS_SYS_CTRL_BASEADDR 0xF8000000 |
||||
#define XPSS_DEV_CFG_APB_BASEADDR 0xF8007000 |
||||
#define XPSS_SCU_BASEADDR 0xF8F00000 |
||||
|
||||
/* Reflect slcr offsets */ |
||||
struct slcr_regs { |
||||
u32 scl; /* 0x0 */ |
||||
u32 slcr_lock; /* 0x4 */ |
||||
u32 slcr_unlock; /* 0x8 */ |
||||
u32 reserved1[125]; |
||||
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[115]; |
||||
u32 ddr_urgent; /* 0x600 */ |
||||
u32 reserved6[6]; |
||||
u32 ddr_urgent_sel; /* 0x61c */ |
||||
u32 reserved7[188]; |
||||
u32 ocm_cfg; /* 0x910 */ |
||||
}; |
||||
|
||||
#define slcr_base ((struct slcr_regs *) XPSS_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 *) XPSS_DEV_CFG_APB_BASEADDR) |
||||
|
||||
struct scu_regs { |
||||
u32 reserved1[16]; |
||||
u32 filter_start; /* 0x40 */ |
||||
u32 filter_end; /* 0x44 */ |
||||
}; |
||||
|
||||
#define scu_base ((struct scu_regs *) XPSS_SCU_BASEADDR) |
||||
|
||||
#endif /* _ASM_ARCH_HARDWARE_H */ |
@ -0,0 +1,30 @@ |
||||
/*
|
||||
* Copyright (c) 2013 Xilinx Inc. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#ifndef _SYS_PROTO_H_ |
||||
#define _SYS_PROTO_H_ |
||||
|
||||
extern void zynq_slcr_lock(void); |
||||
extern void zynq_slcr_unlock(void); |
||||
extern void zynq_slcr_cpu_reset(void); |
||||
|
||||
#endif /* _SYS_PROTO_H_ */ |
Loading…
Reference in new issue