[PATCH RFC 14/15] spl: Support SPI NAND boot in UBI
John Watts
contact at jookia.org
Thu Apr 11 06:25:31 CEST 2024
UBI supports traditional NAND and oneNAND devices already, so add
support for booting from SPI NAND devices.
Signed-off-by: John Watts <contact at jookia.org>
---
common/spl/spl_ubi.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/common/spl/spl_ubi.c b/common/spl/spl_ubi.c
index d7ab9efd11..72b4b195ed 100644
--- a/common/spl/spl_ubi.c
+++ b/common/spl/spl_ubi.c
@@ -21,6 +21,13 @@ int spl_ubi_load_image(struct spl_image_info *spl_image,
int ret = 1;
switch (bootdev->boot_device) {
+#ifdef CONFIG_SPL_SPINAND_SUPPORT
+ case BOOT_DEVICE_SPINAND:
+ spinand_init();
+ info.read = spinand_spl_read_block;
+ info.peb_size = CONFIG_SPL_SPINAND_BLOCK_SIZE;
+ break;
+#endif
#ifdef CONFIG_SPL_NAND_SUPPORT
case BOOT_DEVICE_NAND:
nand_init();
@@ -77,12 +84,18 @@ int spl_ubi_load_image(struct spl_image_info *spl_image,
if (!ret)
spl_parse_image_header(spl_image, bootdev, header);
out:
+#ifdef CONFIG_SPL_SPINAND_SUPPORT
+ if (bootdev->boot_device == BOOT_DEVICE_SPINAND)
+ spinand_deselect();
+#endif
#ifdef CONFIG_SPL_NAND_SUPPORT
if (bootdev->boot_device == BOOT_DEVICE_NAND)
nand_deselect();
#endif
return ret;
}
-/* Use priorty 0 so that Ubi will override NAND and ONENAND methods */
+
+/* Use priority 0 so that UBI will override all NAND methods */
SPL_LOAD_IMAGE_METHOD("NAND", 0, BOOT_DEVICE_NAND, spl_ubi_load_image);
SPL_LOAD_IMAGE_METHOD("OneNAND", 0, BOOT_DEVICE_ONENAND, spl_ubi_load_image);
+SPL_LOAD_IMAGE_METHOD("SPINAND", 0, BOOT_DEVICE_SPINAND, spl_ubi_load_image);
--
2.44.0
More information about the U-Boot
mailing list