[u-boot][PATCH v2 8/8] mtd: rawnand: omap_elm: u-boot driver model support

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Fri Dec 23 10:43:35 CET 2022


Hi

On Fri, Dec 23, 2022 at 10:34 AM Roger Quadros <rogerq at kernel.org> wrote:
>
> Hi Michael,
>
> On 22/12/2022 23:35, Michael Nazzareno Trimarchi wrote:
> > 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
>
> Thanks. You mean __maybe_unused for omap_calculate_ecc_bch()?
>

Yes, now the pipeline is clean

Michael

> cheers,
> -roger
>
> >
> > 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