summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2022-10-20 09:30:09 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2022-10-27 11:13:29 +0200
commit0e96cc9e8a11fd0ecff541f77b76020d7f69fa1b (patch)
tree2fdf6467b199b0e32bc085acdf429133243bc5fb
parentee1da5686dec6a13c8654800dcabc81f2868f4eb (diff)
downloadbarebox-0e96cc9e8a11fd0ecff541f77b76020d7f69fa1b.tar.gz
barebox-0e96cc9e8a11fd0ecff541f77b76020d7f69fa1b.tar.xz
ARM: i.MX8M bootsource: pull imx6_bootsource_serial() out of __imx7_get_boot_source()
i.MX8MP and i.MX8MN will need a special variant of imx6_bootsource_serial(), so pull the call to that function out of __imx7_get_boot_source(). Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-imx/boot.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/arch/arm/mach-imx/boot.c b/arch/arm/mach-imx/boot.c
index 999bd3ab91..7b3334d5e2 100644
--- a/arch/arm/mach-imx/boot.c
+++ b/arch/arm/mach-imx/boot.c
@@ -497,11 +497,6 @@ static void __imx7_get_boot_source(enum bootsource *src, int *instance,
{
const struct imx_boot_sw_info *info;
- if (imx6_bootsource_serial(sbmr2)) {
- *src = BOOTSOURCE_SERIAL;
- return;
- }
-
info = (const void *)(unsigned long)
readl(boot_sw_info_pointer_addr);
@@ -539,6 +534,11 @@ void imx7_get_boot_source(enum bootsource *src, int *instance)
void __iomem *src_base = IOMEM(MX7_SRC_BASE_ADDR);
uint32_t sbmr2 = readl(src_base + 0x70);
+ if (imx6_bootsource_serial(sbmr2)) {
+ *src = BOOTSOURCE_SERIAL;
+ return;
+ }
+
__imx7_get_boot_source(src, instance, IMX7_BOOT_SW_INFO_POINTER_ADDR,
sbmr2);
}
@@ -654,6 +654,11 @@ void imx8mq_get_boot_source(enum bootsource *src, int *instance)
IMX8M_BOOT_SW_INFO_POINTER_ADDR_A0 :
IMX8M_BOOT_SW_INFO_POINTER_ADDR_B0;
+ if (imx6_bootsource_serial(sbmr2)) {
+ *src = BOOTSOURCE_SERIAL;
+ return;
+ }
+
__imx7_get_boot_source(src, instance, addr, sbmr2);
}
@@ -668,6 +673,11 @@ void imx8mm_get_boot_source(enum bootsource *src, int *instance)
void __iomem *src_base = IOMEM(MX8MM_SRC_BASE_ADDR);
uint32_t sbmr2 = readl(src_base + 0x70);
+ if (imx6_bootsource_serial(sbmr2)) {
+ *src = BOOTSOURCE_SERIAL;
+ return;
+ }
+
addr = IMX8M_BOOT_SW_INFO_POINTER_ADDR_A0;
__imx7_get_boot_source(src, instance, addr, sbmr2);
@@ -684,6 +694,11 @@ void imx8mp_get_boot_source(enum bootsource *src, int *instance)
void __iomem *src_base = IOMEM(MX8MP_SRC_BASE_ADDR);
uint32_t sbmr2 = readl(src_base + 0x70);
+ if (imx6_bootsource_serial(sbmr2)) {
+ *src = BOOTSOURCE_SERIAL;
+ return;
+ }
+
addr = IMX8M_BOOT_SW_INFO_POINTER_ADDR_A0;
__imx7_get_boot_source(src, instance, addr, sbmr2);