Hi Fabio,
Thanks for the patch.

On 26/2/2026 1:10 pm, Sean Anderson wrote:
[CAUTION: This email is from outside your organization. Unless you trust the sender, do not click on links or open attachments as it may be a fraudulent email attempting to steal your information and/or compromise your computer.]

On 2/25/26 19:08, Fabio Estevam wrote:
Hi Sean,

On Wed, Feb 25, 2026 at 4:45 PM Sean Anderson <[email protected]> wrote:

Actually, I don't think this is correct. NAND devices have have multiple MTDs for each CS, and SPI-NOR devices are UCLASS_SPI_FLASH and not UCLASS_MTD. So I think it's better
to do something like

         mtd_probe_devices();
         switch (bootdev->boot_device) {
         case BOOT_DEVICE_NAND:
                 mtd = get_mtd_device_nm(CONFIG_SPL_MTD_NAND_NAME);
                 break;
         case BOOT_DEVICE_SPI:
                 mtd = get_mtd_device_nm(CONFIG_SPL_MTD_SPI_FLASH_NAME);
                 break;
         default:
                 mtd = ERR_PTR(-ENODEV);
                 break;
         }
         if (IS_ERR(mtd)) {
                 ret = PTR_ERR(mtd);
                 goto out;
         }
...

Actually, if CONFIG_SPL_NAND_SUPPORT is enabled then the native nand loader is compiled. Maybe we should add a separate Kconfig for it (CONFIG_SPL_NAND_LOAD) defaulting to SPL_NAND_SUPPORT. Then users can disable the "native" load method if they want to use MTD.

I have a patch for this that I will try to send this week.

If you would like to prepare a patch for the generic SPL MTD loader,
I'll be glad to test it.

I can try, but I can't promise I'll be done with it in any particular timeframe.

But TBH I don't think a spi_nand.c-style loader is the right way to do things when UBI exists. Maybe Dinesh can comment, but I don't really see the point except if e.g. you are really short
on space in SPL, but not so much that you can't fit in MTD.

--Sean

Based on our current design, we rely on the existing NAND framework with only a minimal set of additional helper functions provided by the controller, which keeps the SPL implementation simple and NAND-specific.

The SPI-NAND SPL loader expects a broader set of common SPL helpers which lead to compilation failures. Adapting to that model would require significant refactoring and extensive testing, so for now we plan to continue using and extending the existing |nand_spl_loaders.c|,
which aligns better with the current SPL design and our constraints.

--Dinesh

Reply via email to