Hi Michael, On 21/12/2022 19:56, Michael Nazzareno Trimarchi wrote: > Hi Roger > > On Tue, Dec 20, 2022 at 11:22 AM Roger Quadros <rog...@kernel.org> wrote: >> >> Support u-boot driver model. We still retain >> support legacy way of doing things if ELM_BASE >> is defined in <asm/arch/hardware.h> >> >> We could completely get rid of that if all >> platforms defining ELM_BASE get rid of that definition >> and enable CONFIG_SYS_NAND_SELF_INIT and are verified >> to work. >> >> Signed-off-by: Roger Quadros <rog...@kernel.org> >> --- > > When you post please include the relative changelog
I put the changelog in the cover-letter. cheers, -roger > > Michael > >> drivers/mtd/nand/raw/omap_elm.c | 35 ++++++++++++++++++- >> .../mtd => drivers/mtd/nand/raw}/omap_elm.h | 6 ++++ >> drivers/mtd/nand/raw/omap_gpmc.c | 12 ++++++- >> 3 files changed, 51 insertions(+), 2 deletions(-) >> rename {include/linux/mtd => drivers/mtd/nand/raw}/omap_elm.h (97%) >> >> diff --git a/drivers/mtd/nand/raw/omap_elm.c >> b/drivers/mtd/nand/raw/omap_elm.c >> index 35c6dd1f1bc..e528a5348d5 100644 >> --- a/drivers/mtd/nand/raw/omap_elm.c >> +++ b/drivers/mtd/nand/raw/omap_elm.c >> @@ -15,9 +15,14 @@ >> #include <common.h> >> #include <asm/io.h> >> #include <linux/errno.h> >> -#include <linux/mtd/omap_elm.h> >> #include <asm/arch/hardware.h> >> >> +#include <dm.h> >> +#include <linux/ioport.h> >> +#include <linux/io.h> >> + >> +#include "omap_elm.h" >> + >> #define DRIVER_NAME "omap-elm" >> #define ELM_DEFAULT_POLY (0) >> >> @@ -180,6 +185,7 @@ void elm_reset(void) >> ; >> } >> >> +#ifdef ELM_BASE >> /** >> * elm_init - Initialize ELM module >> * >> @@ -191,3 +197,30 @@ void elm_init(void) >> elm_cfg = (struct elm *)ELM_BASE; >> elm_reset(); >> } >> +#endif >> + >> +static int elm_probe(struct udevice *dev) >> +{ >> +#ifndef ELM_BASE >> + struct resource res; >> + >> + dev_read_resource(dev, 0, &res); >> + elm_cfg = devm_ioremap(dev, res.start, resource_size(&res)); >> + elm_reset(); >> +#endif >> + >> + return 0; >> +} >> + >> +static const struct udevice_id elm_ids[] = { >> + { .compatible = "ti,am3352-elm" }, >> + { .compatible = "ti,am64-elm" }, >> + { } >> +}; >> + >> +U_BOOT_DRIVER(gpmc_elm) = { >> + .name = DRIVER_NAME, >> + .id = UCLASS_MTD, >> + .of_match = elm_ids, >> + .probe = elm_probe, >> +}; >> diff --git a/include/linux/mtd/omap_elm.h b/drivers/mtd/nand/raw/omap_elm.h >> similarity index 97% >> rename from include/linux/mtd/omap_elm.h >> rename to drivers/mtd/nand/raw/omap_elm.h >> index f3db00d55de..a7f7bacb154 100644 >> --- a/include/linux/mtd/omap_elm.h >> +++ b/drivers/mtd/nand/raw/omap_elm.h >> @@ -74,6 +74,12 @@ int elm_check_error(u8 *syndrome, enum bch_level >> bch_type, u32 *error_count, >> u32 *error_locations); >> int elm_config(enum bch_level level); >> void elm_reset(void); >> +#ifdef ELM_BASE >> void elm_init(void); >> +#else >> +static inline void elm_init(void) >> +{ >> +} >> +#endif >> #endif /* __ASSEMBLY__ */ >> #endif /* __ASM_ARCH_ELM_H */ >> diff --git a/drivers/mtd/nand/raw/omap_gpmc.c >> b/drivers/mtd/nand/raw/omap_gpmc.c >> index ed6cdf93ad0..9692b78da3c 100644 >> --- a/drivers/mtd/nand/raw/omap_gpmc.c >> +++ b/drivers/mtd/nand/raw/omap_gpmc.c >> @@ -20,7 +20,8 @@ >> #include <linux/bch.h> >> #include <linux/compiler.h> >> #include <nand.h> >> -#include <linux/mtd/omap_elm.h> >> + >> +#include "omap_elm.h" >> >> #ifndef GPMC_MAX_CS >> #define GPMC_MAX_CS 4 >> @@ -1249,6 +1250,15 @@ void board_nand_init(void) >> struct udevice *dev; >> int ret; >> >> +#ifdef CONFIG_NAND_OMAP_ELM >> + ret = uclass_get_device_by_driver(UCLASS_MTD, >> + DM_DRIVER_GET(gpmc_elm), &dev); >> + if (ret && ret != -ENODEV) { >> + pr_err("%s: Failed to get ELM device: %d\n", __func__, ret); >> + return; >> + } >> +#endif >> + >> ret = uclass_get_device_by_driver(UCLASS_MTD, >> DM_DRIVER_GET(gpmc_nand), &dev); >> if (ret && ret != -ENODEV) >> -- >> 2.34.1 >> > >