]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
nand: spl_loaders: Only read enough pages to load the image
authorSean Anderson <seanga2@gmail.com>
Sat, 4 Nov 2023 20:37:42 +0000 (16:37 -0400)
committerTom Rini <trini@konsulko.com>
Thu, 16 Nov 2023 17:43:48 +0000 (12:43 -0500)
All other implementations of nand_spl_load_image only read as many pages as
are necessary to load the image. However, nand_spl_loaders.c loads the full
block. Align it with other load functions so that it is easier to
determine how large of a load buffer we need.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
drivers/mtd/nand/raw/nand_spl_loaders.c

index 35d6b1d6c0c90afbef2f0db3d24a39d27645717f..db4213ea3dcdc357bc0cdc73b9a8e4ae95729506 100644 (file)
@@ -12,8 +12,11 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
        while (block <= lastblock) {
                if (!nand_is_bad_block(block)) {
                        /* Skip bad blocks */
-                       while (page < SYS_NAND_BLOCK_PAGES) {
+                       while (size && page < SYS_NAND_BLOCK_PAGES) {
                                nand_read_page(block, page, dst);
+
+                               size -= min(size, CONFIG_SYS_NAND_PAGE_SIZE -
+                                                 page_offset);
                                /*
                                 * When offs is not aligned to page address the
                                 * extra offset is copied to dst as well. Copy