
Hi Roger
On Wed, Dec 21, 2022 at 9:08 PM Michael Nazzareno Trimarchi michael@amarulasolutions.com wrote:
Hi
On Wed, Dec 21, 2022 at 8:57 PM Roger Quadros rogerq@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@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@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@amarulasolutions.com __________________________________
Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 info@amarulasolutions.com www.amarulasolutions.com