diff options
Diffstat (limited to 'board/xilinx/zynq/board.c')
| -rw-r--r-- | board/xilinx/zynq/board.c | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c index 1589d2107..b02c364dc 100644 --- a/board/xilinx/zynq/board.c +++ b/board/xilinx/zynq/board.c @@ -22,15 +22,52 @@  #include <common.h>  #include <netdev.h> +#include <zynqpl.h>  #include <asm/arch/hardware.h>  #include <asm/arch/sys_proto.h>  DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_FPGA +Xilinx_desc fpga; + +/* It can be done differently */ +Xilinx_desc fpga010 = XILINX_XC7Z010_DESC(0x10); +Xilinx_desc fpga020 = XILINX_XC7Z020_DESC(0x20); +Xilinx_desc fpga030 = XILINX_XC7Z030_DESC(0x30); +Xilinx_desc fpga045 = XILINX_XC7Z045_DESC(0x45); +#endif +  int board_init(void)  { +#ifdef CONFIG_FPGA +	u32 idcode; + +	idcode = zynq_slcr_get_idcode(); + +	switch (idcode) { +	case XILINX_ZYNQ_7010: +		fpga = fpga010; +		break; +	case XILINX_ZYNQ_7020: +		fpga = fpga020; +		break; +	case XILINX_ZYNQ_7030: +		fpga = fpga030; +		break; +	case XILINX_ZYNQ_7045: +		fpga = fpga045; +		break; +	} +#endif +  	icache_enable(); +#ifdef CONFIG_FPGA +	fpga_init(); +	fpga_add(fpga_xilinx, &fpga); +#endif +  	return 0;  } |