From: Roger Quadros <rogerq@kernel.org>
To: dario.binacchi@amarulasolutions.com,
michael@amarulasolutions.com, trini@konsulko.com
Cc: u-boot@lists.denx.de, Roger Quadros <rogerq@kernel.org>
Subject: [u-boot][PATCH 14/14] mtd: rawnand: omap_elm: u-boot driver model support
Date: Tue, 11 Oct 2022 14:50:12 +0300 [thread overview]
Message-ID: <20221011115012.6181-15-rogerq@kernel.org> (raw)
In-Reply-To: <20221011115012.6181-1-rogerq@kernel.org>
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>
---
drivers/mtd/nand/raw/omap_elm.c | 33 ++++++++++++++++++-
.../mtd => drivers/mtd/nand/raw}/omap_elm.h | 6 ++++
drivers/mtd/nand/raw/omap_gpmc.c | 12 ++++++-
3 files changed, 49 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 35c6dd1f1b..7f4721f617 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,28 @@ void elm_init(void)
elm_cfg = (struct elm *)ELM_BASE;
elm_reset();
}
+#endif
+
+static int elm_probe(struct udevice *dev)
+{
+ struct resource res;
+
+ dev_read_resource(dev, 0, &res);
+ elm_cfg = devm_ioremap(dev, res.start, resource_size(&res));
+ elm_reset();
+
+ 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 f3db00d55d..a7f7bacb15 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 79b14ce297..68f8d48e87 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
@@ -1248,6 +1249,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.17.1
next prev parent reply other threads:[~2022-10-11 11:53 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-11 11:49 [u-boot][PATCH 00/14] rawnand: omap_gpmc: driver model support Roger Quadros
2022-10-11 11:49 ` [u-boot][PATCH 01/14] mtd: rawnand: omap_gpmc: Deprecate asm/arch/mem.h Roger Quadros
2022-10-12 10:01 ` Michael Nazzareno Trimarchi
2022-10-11 11:50 ` [u-boot][PATCH 02/14] mtd: rawnand: omap_gpmc: Enable build for K2/K3 platforms Roger Quadros
2022-10-12 11:49 ` Michael Nazzareno Trimarchi
2022-10-11 11:50 ` [u-boot][PATCH 03/14] mtd: rawnand: omap_gpmc: Fix build warning on 64-bit platforms Roger Quadros
2022-10-15 5:53 ` Michael Nazzareno Trimarchi
2022-10-11 11:50 ` [u-boot][PATCH 04/14] mtd: rawnand: omap_gpmc: Optimize NAND reads Roger Quadros
2022-10-15 7:24 ` Michael Nazzareno Trimarchi
2022-10-15 13:29 ` Roger Quadros
2022-10-17 6:39 ` Michael Nazzareno Trimarchi
2022-10-17 8:14 ` Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 05/14] mtd: rawnand: omap_gpmc: Fix BCH6/16 HW based correction Roger Quadros
2022-11-28 14:03 ` Michael Nazzareno Trimarchi
2022-11-29 15:25 ` Dario Binacchi
2022-11-29 16:17 ` Tom Rini
2022-11-30 8:11 ` Dario Binacchi
2022-12-01 11:42 ` Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 06/14] mtd: rawnand: nand_base: Allow base driver to be used in SPL without nand_bbt Roger Quadros
2022-11-28 14:27 ` Michael Nazzareno Trimarchi
2022-11-29 13:04 ` Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 07/14] mtd: rawnand: nand_spl_loaders: Fix cast type build warning Roger Quadros
2022-11-06 19:50 ` Michael Nazzareno Trimarchi
2022-10-11 11:50 ` [u-boot][PATCH 08/14] mtd: rawnand: omap_gpmc: Reduce .bss usage Roger Quadros
2022-11-28 14:11 ` Michael Nazzareno Trimarchi
2022-10-11 11:50 ` [u-boot][PATCH 09/14] dt-bindings: mtd: Add ti, gpmc-nand DT binding documentation Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 10/14] mtd: rawnand: omap_gpmc: support u-boot driver model Roger Quadros
2022-10-11 15:01 ` Adam Ford
2022-10-12 6:22 ` Roger Quadros
2022-10-12 11:42 ` Adam Ford
2022-10-12 11:57 ` Ladislav Michl
2022-10-12 12:02 ` Adam Ford
2022-10-13 11:17 ` Adam Ford
2022-10-13 19:42 ` Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 11/14] mtd: rawnand: omap_gpmc: Add SPL NAND support Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 12/14] mtd: rawnand: omap_gpmc: Enable SYS_NAND_PAGE_COUNT for OMAP_GPMC Roger Quadros
2022-10-11 11:50 ` [u-boot][PATCH 13/14] dt-bindings: mtd: Add ti, elm DT binding documentation Roger Quadros
2022-10-11 11:50 ` Roger Quadros [this message]
2022-11-04 13:27 ` [u-boot][PATCH 00/14] rawnand: omap_gpmc: driver model support Roger Quadros
2022-11-08 9:26 ` Michael Nazzareno Trimarchi
2022-11-25 12:38 ` Roger Quadros
2022-12-11 13:56 ` Dario Binacchi
2022-12-12 9:12 ` Roger Quadros
2022-12-12 9:27 ` Dario Binacchi
2022-12-12 9:39 ` Michael Nazzareno Trimarchi
2022-12-17 13:00 ` Roger Quadros
2022-12-17 13:38 ` Michael Nazzareno Trimarchi
2022-12-17 13:43 ` Roger Quadros
2022-12-17 13:46 ` Michael Nazzareno Trimarchi
2022-12-17 13:51 ` Michael Nazzareno Trimarchi
2022-12-17 13:59 ` Roger Quadros
2022-12-17 14:09 ` Michael Nazzareno Trimarchi
2022-12-17 14:48 ` Michael Nazzareno Trimarchi
2022-12-12 13:58 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221011115012.6181-15-rogerq@kernel.org \
--to=rogerq@kernel.org \
--cc=dario.binacchi@amarulasolutions.com \
--cc=michael@amarulasolutions.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox