All of lore.kernel.org
 help / color / mirror / Atom feed
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 11/14] mtd: rawnand: omap_gpmc: Add SPL NAND support
Date: Tue, 11 Oct 2022 14:50:09 +0300	[thread overview]
Message-ID: <20221011115012.6181-12-rogerq@kernel.org> (raw)
In-Reply-To: <20221011115012.6181-1-rogerq@kernel.org>

Enables SPL NAND support for ARCH_K3 by enabling
SPL_NAND_INIT and SPL_SYS_NAND_SELF_INIT.

Legacy OMAP2plus platforms still rely on SPL_NAND_AM33XX_BCH
instead.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 drivers/mtd/nand/raw/Kconfig     |  5 ++++
 drivers/mtd/nand/raw/Makefile    |  2 +-
 drivers/mtd/nand/raw/omap_gpmc.c | 40 ++++++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index 1d23144ce4..b803759166 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -26,6 +26,9 @@ config TPL_SYS_NAND_SELF_INIT
 config TPL_NAND_INIT
 	bool
 
+config SPL_NAND_INIT
+	bool
+
 config SYS_NAND_DRIVER_ECC_LAYOUT
 	bool "Omit standard ECC layouts to save space"
 	help
@@ -191,6 +194,8 @@ config NAND_OMAP_GPMC
 	bool "Support OMAP GPMC NAND controller"
 	depends on ARCH_OMAP2PLUS || ARCH_KEYSTONE || ARCH_K3
 	select SYS_NAND_SELF_INIT if ARCH_K3
+	select SPL_NAND_INIT if ARCH_K3
+	select SPL_SYS_NAND_SELF_INIT if ARCH_K3
 	help
 	  Enables omap_gpmc.c driver for OMAPx and AMxxxx platforms.
 	  GPMC controller is used for parallel NAND flash devices, and can
diff --git a/drivers/mtd/nand/raw/Makefile b/drivers/mtd/nand/raw/Makefile
index a398aa9d88..6fe33d2485 100644
--- a/drivers/mtd/nand/raw/Makefile
+++ b/drivers/mtd/nand/raw/Makefile
@@ -18,7 +18,7 @@ obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o nand_amd.o nand_hynix.o \
 				nand_macronix.o nand_micron.o \
 				nand_samsung.o nand_toshiba.o
 obj-$(CONFIG_SPL_NAND_IDENT) += nand_ids.o nand_timings.o
-obj-$(CONFIG_TPL_NAND_INIT) += nand.o
+obj-$(CONFIG_$(SPL_TPL_)NAND_INIT) += nand.o
 ifeq ($(CONFIG_SPL_ENV_SUPPORT),y)
 obj-$(CONFIG_ENV_IS_IN_NAND) += nand_util.o
 endif
diff --git a/drivers/mtd/nand/raw/omap_gpmc.c b/drivers/mtd/nand/raw/omap_gpmc.c
index 7192ca9e5a..79b14ce297 100644
--- a/drivers/mtd/nand/raw/omap_gpmc.c
+++ b/drivers/mtd/nand/raw/omap_gpmc.c
@@ -1254,3 +1254,43 @@ void board_nand_init(void)
 		pr_err("%s: Failed to get GPMC device: %d\n", __func__, ret);
 }
 #endif /* CONFIG_SYS_NAND_SELF_INIT */
+
+#if defined(CONFIG_SPL_NAND_INIT)
+
+/* nand_init() is provided by nand.c */
+
+/* Unselect after operation */
+void nand_deselect(void)
+{
+	struct mtd_info *mtd = nand_to_mtd(nand_chip);
+
+	if (nand_chip->select_chip)
+		nand_chip->select_chip(mtd, -1);
+}
+
+static int nand_is_bad_block(int block)
+{
+	struct mtd_info *mtd = nand_to_mtd(nand_chip);
+
+	loff_t ofs = block * CONFIG_SYS_NAND_BLOCK_SIZE;
+
+	return nand_chip->block_bad(mtd, ofs);
+}
+
+static int nand_read_page(int block, int page, uchar *dst)
+{
+	int page_addr = block * CONFIG_SYS_NAND_PAGE_COUNT + page;
+	loff_t ofs = page_addr * CONFIG_SYS_NAND_PAGE_SIZE;
+	int ret;
+	size_t len = CONFIG_SYS_NAND_PAGE_SIZE;
+	struct mtd_info *mtd = nand_to_mtd(nand_chip);
+
+	ret = nand_read(mtd, ofs, &len, dst);
+	if (ret)
+		printf("nand_read failed %d\n", ret);
+
+	return ret;
+}
+
+#include "nand_spl_loaders.c"
+#endif /* CONFIG_SPL_NAND_INIT */
-- 
2.17.1


  parent reply	other threads:[~2022-10-11 11:52 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 ` Roger Quadros [this message]
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 ` [u-boot][PATCH 14/14] mtd: rawnand: omap_elm: u-boot driver model support Roger Quadros
2022-11-04 13:27 ` [u-boot][PATCH 00/14] rawnand: omap_gpmc: " 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-12-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.