diff options
author | Michal Simek <michal.simek@xilinx.com> | 2020-04-08 11:04:41 +0200 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2020-04-27 13:57:18 +0200 |
commit | 51f6c52e6b12d7bc7a82db566057efe731f5aae9 (patch) | |
tree | d78ce4ad2e25a06497caf02b98b02d6644403224 /board/xilinx/zynqmp/zynqmp.c | |
parent | a29511eeca5f00e31653af28b9f758cf39e001fc (diff) | |
download | u-boot-51f6c52e6b12d7bc7a82db566057efe731f5aae9.tar.gz u-boot-51f6c52e6b12d7bc7a82db566057efe731f5aae9.tar.bz2 u-boot-51f6c52e6b12d7bc7a82db566057efe731f5aae9.zip |
xilinx: Move bootmode detection to separate function
Create special function for reading bootmode on Versal and ZynqMP.
Zynq is using specific function (without mask) already.
Future patches will be calling this function from different location too.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'board/xilinx/zynqmp/zynqmp.c')
-rw-r--r-- | board/xilinx/zynqmp/zynqmp.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c index 66a43974e6..a2a0d56331 100644 --- a/board/xilinx/zynqmp/zynqmp.c +++ b/board/xilinx/zynqmp/zynqmp.c @@ -552,9 +552,26 @@ static int set_fdtfile(void) return 0; } -int board_late_init(void) +static u8 zynqmp_get_bootmode(void) { + u8 bootmode; u32 reg = 0; + int ret; + + ret = zynqmp_mmio_read((ulong)&crlapb_base->boot_mode, ®); + if (ret) + return -EINVAL; + + if (reg >> BOOT_MODE_ALT_SHIFT) + reg >>= BOOT_MODE_ALT_SHIFT; + + bootmode = reg & BOOT_MODES_MASK; + + return bootmode; +} + +int board_late_init(void) +{ u8 bootmode; struct udevice *dev; int bootseq = -1; @@ -578,14 +595,7 @@ int board_late_init(void) if (ret) return ret; - ret = zynqmp_mmio_read((ulong)&crlapb_base->boot_mode, ®); - if (ret) - return -EINVAL; - - if (reg >> BOOT_MODE_ALT_SHIFT) - reg >>= BOOT_MODE_ALT_SHIFT; - - bootmode = reg & BOOT_MODES_MASK; + bootmode = zynqmp_get_bootmode(); puts("Bootmode: "); switch (bootmode) { |