]> Git Repo - J-u-boot.git/blame - board/xilinx/zynq/board.c
xilinx: Introduce board_late_init_xilinx()
[J-u-boot.git] / board / xilinx / zynq / board.c
CommitLineData
83d290c5 1// SPDX-License-Identifier: GPL-2.0+
f22651cf
MS
2/*
3 * (C) Copyright 2012 Michal Simek <[email protected]>
3e1b61de 4 * (C) Copyright 2013 - 2018 Xilinx, Inc.
f22651cf
MS
5 */
6
7#include <common.h>
5255932f 8#include <init.h>
e6cc3b25 9#include <dm/uclass.h>
9fb625ce 10#include <env.h>
9e0e37ac 11#include <fdtdec.h>
5b73caff 12#include <fpga.h>
3c7b4c35 13#include <malloc.h>
5b73caff 14#include <mmc.h>
0ecd14e6 15#include <watchdog.h>
e6cc3b25 16#include <wdt.h>
d5dae85f 17#include <zynqpl.h>
7193653e
MS
18#include <asm/arch/hardware.h>
19#include <asm/arch/sys_proto.h>
80fdef12 20#include "../common/board.h"
f22651cf
MS
21
22DECLARE_GLOBAL_DATA_PTR;
23
24int board_init(void)
25{
f22651cf
MS
26 return 0;
27}
28
b3de9249
JT
29int board_late_init(void)
30{
3c7b4c35
SDPP
31 int env_targets_len = 0;
32 const char *mode;
33 char *new_targets;
34 char *env_targets;
35
b3de9249 36 switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) {
085b2b82 37 case ZYNQ_BM_QSPI:
3c7b4c35 38 mode = "qspi";
382bee57 39 env_set("modeboot", "qspiboot");
085b2b82
MS
40 break;
41 case ZYNQ_BM_NAND:
3c7b4c35 42 mode = "nand";
382bee57 43 env_set("modeboot", "nandboot");
085b2b82 44 break;
b3de9249 45 case ZYNQ_BM_NOR:
3c7b4c35 46 mode = "nor";
382bee57 47 env_set("modeboot", "norboot");
b3de9249
JT
48 break;
49 case ZYNQ_BM_SD:
7712fb1f 50 mode = "mmc0";
382bee57 51 env_set("modeboot", "sdboot");
b3de9249
JT
52 break;
53 case ZYNQ_BM_JTAG:
c352f1e1 54 mode = "jtag pxe dhcp";
382bee57 55 env_set("modeboot", "jtagboot");
b3de9249
JT
56 break;
57 default:
3c7b4c35 58 mode = "";
382bee57 59 env_set("modeboot", "");
b3de9249
JT
60 break;
61 }
62
3c7b4c35
SDPP
63 /*
64 * One terminating char + one byte for space between mode
65 * and default boot_targets
66 */
67 env_targets = env_get("boot_targets");
68 if (env_targets)
69 env_targets_len = strlen(env_targets);
70
71 new_targets = calloc(1, strlen(mode) + env_targets_len + 2);
72 if (!new_targets)
73 return -ENOMEM;
74
75 sprintf(new_targets, "%s %s", mode,
76 env_targets ? env_targets : "");
77
78 env_set("boot_targets", new_targets);
79
80fdef12 80 return board_late_init_xilinx();
b3de9249 81}
f22651cf 82
758f29d0 83#if !defined(CONFIG_SYS_SDRAM_BASE) && !defined(CONFIG_SYS_SDRAM_SIZE)
76b00aca 84int dram_init_banksize(void)
361a8799 85{
da3f003b 86 return fdtdec_setup_memory_banksize();
361a8799 87}
8a5db0ab 88
361a8799
TR
89int dram_init(void)
90{
12308b12 91 if (fdtdec_setup_mem_size_base() != 0)
de9bf1b5 92 return -EINVAL;
64b67fb2 93
361a8799 94 zynq_ddrc_init();
64b67fb2 95
361a8799 96 return 0;
758f29d0 97}
758f29d0
MS
98#else
99int dram_init(void)
100{
61dc92a2
MS
101 gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
102 CONFIG_SYS_SDRAM_SIZE);
758f29d0 103
148ba55c
MS
104 zynq_ddrc_init();
105
f22651cf
MS
106 return 0;
107}
758f29d0 108#endif
This page took 0.482071 seconds and 4 git commands to generate.