diff options
| author | Masahisa Kojima <[email protected]> | 2024-02-08 11:33:44 +0900 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2024-03-02 12:26:19 -0500 |
| commit | fd50ae3f2628d1197829e0c2ef52aed653e80d68 (patch) | |
| tree | cb5f97f7f74fd729fed51cf1fb74ce9a58fa4f55 | |
| parent | e3f2493d61166b44e85ce5b8bdd15813f0c28883 (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.c | 31 | ||||
| -rw-r--r-- | include/configs/synquacer.h | 1 |
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 |
