[u-boot][PATCH v2 8/8] mtd: rawnand: omap_elm: u-boot driver model support
Michael Nazzareno Trimarchi
michael at amarulasolutions.com
Thu Dec 22 22:35:42 CET 2022
Hi Roger
On Wed, Dec 21, 2022 at 9:08 PM Michael Nazzareno Trimarchi
<michael at amarulasolutions.com> wrote:
>
> Hi
>
> On Wed, Dec 21, 2022 at 8:57 PM Roger Quadros <rogerq at 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 <rogerq at 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 <rogerq at 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
>
Pipeline is running, I have fixed another minor problem in the build
Michael
> 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
> michael at amarulasolutions.com
> __________________________________
>
> Amarula Solutions BV
> Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
> T. +31 (0)85 111 9172
> info at amarulasolutions.com
> www.amarulasolutions.com
--
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael at amarulasolutions.com
__________________________________
Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info at amarulasolutions.com
www.amarulasolutions.com
More information about the U-Boot
mailing list