summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahisa Kojima <[email protected]>2024-02-08 11:33:44 +0900
committerTom Rini <[email protected]>2024-03-02 12:26:19 -0500
commitfd50ae3f2628d1197829e0c2ef52aed653e80d68 (patch)
treecb5f97f7f74fd729fed51cf1fb74ce9a58fa4f55
parente3f2493d61166b44e85ce5b8bdd15813f0c28883 (diff)
FWU: developerbox: read boot index from NOR flash
The FWU Multi Bank Update feature allows the platform to boot the firmware images from one of the partitions(banks). On the Developerbox, SCP-firmware running on the SCB(Cortex-M3) passes the value of the boot index on the NOR flash. Add a function to read the boot index value from the NOR flash. Signed-off-by: Masahisa Kojima <[email protected]>
-rw-r--r--board/socionext/developerbox/fwu_plat.c31
-rw-r--r--include/configs/synquacer.h1
2 files changed, 32 insertions, 0 deletions
diff --git a/board/socionext/developerbox/fwu_plat.c b/board/socionext/developerbox/fwu_plat.c
index e724e702bdc..26031795b09 100644
--- a/board/socionext/developerbox/fwu_plat.c
+++ b/board/socionext/developerbox/fwu_plat.c
@@ -35,3 +35,34 @@ void set_dfu_alt_info(char *interface, char *devstr)
env_set("dfu_alt_info", buf);
}
+
+/**
+ * fwu_plat_get_bootidx() - Get the value of the boot index
+ * @boot_idx: Boot index value
+ *
+ * Get the value of the bank(partition) from which the platform
+ * has booted. This value is passed to U-Boot from the earlier
+ * stage bootloader which loads and boots all the relevant
+ * firmware images
+ */
+void fwu_plat_get_bootidx(uint *boot_idx)
+{
+ int ret;
+ u32 buf;
+ size_t readlen;
+ struct mtd_info *mtd;
+
+ *boot_idx = 0;
+
+ mtd_probe_devices();
+ mtd = get_mtd_device_nm("nor1");
+ if (IS_ERR_OR_NULL(mtd))
+ return;
+
+ ret = mtd_read(mtd, SCB_PLAT_METADATA_OFFSET, sizeof(buf),
+ &readlen, (u_char *)&buf);
+ if (ret < 0)
+ return;
+
+ *boot_idx = buf;
+}
diff --git a/include/configs/synquacer.h b/include/configs/synquacer.h
index e36e63e81e4..f0867227acc 100644
--- a/include/configs/synquacer.h
+++ b/include/configs/synquacer.h
@@ -21,6 +21,7 @@
/*
* Boot info
*/
+#define SCB_PLAT_METADATA_OFFSET (0x510000)
/*
* Hardware drivers support