Hi On Wed, Dec 21, 2022 at 8:57 PM Roger Quadros <rog...@kernel.org> wrote: > > 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. >
My bad, I'm always start from patch 1 and look on changes in every single patch Michael > > 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 > >> > > > > -- Michael Nazzareno Trimarchi Co-Founder & Chief Executive Officer M. +39 347 913 2170 mich...@amarulasolutions.com __________________________________ Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 i...@amarulasolutions.com www.amarulasolutions.com