All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver
@ 2016-03-22  7:37 Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 02/87] mtd: Add Kconfig entry for MTD_M25P80 Jagan Teki
                   ` (85 more replies)
  0 siblings, 86 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

This is MTD SPI-NOR driver for ST M25Pxx (and similar)
serial flash chips which is written as MTD_UCLASS.

More features will be adding on further patches.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 Makefile                     |  1 +
 drivers/mtd/spi-nor/Makefile |  6 ++++++
 drivers/mtd/spi-nor/m25p80.c | 37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/Makefile
 create mode 100644 drivers/mtd/spi-nor/m25p80.c

diff --git a/Makefile b/Makefile
index 53569e8..9830410 100644
--- a/Makefile
+++ b/Makefile
@@ -633,6 +633,7 @@ libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
 libs-y += drivers/mtd/onenand/
 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
 libs-y += drivers/mtd/spi/
+libs-y += drivers/mtd/spi-nor/
 libs-y += drivers/net/
 libs-y += drivers/net/phy/
 libs-y += drivers/pci/
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
new file mode 100644
index 0000000..a4c19e3
--- /dev/null
+++ b/drivers/mtd/spi-nor/Makefile
@@ -0,0 +1,6 @@
+#
+# Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+
+obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
new file mode 100644
index 0000000..833a9c3
--- /dev/null
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -0,0 +1,37 @@
+/*
+ * MTD SPI-NOR driver for ST M25Pxx (and similar) serial flash chips
+ *
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <spi.h>
+#include <linux/mtd/mtd.h>
+
+static int m25p_probe(struct udevice *dev)
+{
+	struct spi_slave *spi = dev_get_parent_priv(dev);
+	struct mtd_info	*mtd = dev_get_uclass_priv(dev);
+
+	return 0;
+}
+
+static const struct udevice_id m25p_ids[] = {
+	/*
+	 * Generic compatibility for SPI NOR that can be identified by the
+	 * JEDEC READ ID opcode (0x9F). Use this, if possible.
+	 */
+	{ .compatible = "jedec,spi-nor" },
+	{ }
+};
+
+U_BOOT_DRIVER(m25p80) = {
+	.name		= "m25p80",
+	.id		= UCLASS_MTD,
+	.of_match	= m25p_ids,
+	.probe		= m25p_probe,
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 02/87] mtd: Add Kconfig entry for MTD_M25P80
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 03/87] mtd: Add SPI-NOR core support Jagan Teki
                   ` (84 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added Kconfig entry for MTD_M25P80

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/Kconfig

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
new file mode 100644
index 0000000..d32486c
--- /dev/null
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -0,0 +1,15 @@
+config MTD_M25P80
+	tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)"
+	help
+	  This enables access to most modern SPI flash chips, used for
+	  program and data storage.   Series supported include Atmel AT26DF,
+	  Spansion S25SL, SST 25VF, ST M25P, and Winbond W25X.  Other chips
+	  are supported as well.  See the driver source for the current list,
+	  or to add other chips.
+
+	  Note that the original DataFlash chips (AT45 series, not AT26DF),
+	  need an entirely different driver.
+
+	  Set up your spi devices with the right board-specific platform data,
+	  if you want to specify device partitioning or to use a device which
+	  doesn't support the JEDEC ID instruction.
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 03/87] mtd: Add SPI-NOR core support
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 02/87] mtd: Add Kconfig entry for MTD_M25P80 Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 04/87] doc: device-tree-bindings: jedec, spi-nor Jagan Teki
                   ` (83 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Some of the SPI device drivers at drivers/spi not a real
spi controllers, Unlike normal/generic SPI controllers they
operates only with SPI-NOR flash devices. these were technically
termed as SPI-NOR controllers, Ex: drivers/spi/fsl_qspi.c

The problem with these were resides at drivers/spi is entire
SPI layer becomes SPI-NOR flash oriented which is absolutely
a wrong indication where SPI layer getting effected more with
flash operations - So this SPI-NOR core will resolve this issue
by separating all SPI-NOR flash operations from spi layer and
creats a generic layer called SPI-NOR core which can be used to
interact SPI-NOR to SPI driver interface layer and the SPI-NOR
controller driver. The idea is taken from Linux spi-nor framework.

Before SPI-NOR:

	-----------------------
		cmd_sf.c
	-----------------------
		spi_flash.c
	-----------------------
		sf_probe.c
	-----------------------
		spi-uclass
	-----------------------
		spi drivers
	-----------------------
		SPI NOR chip
	-----------------------

After SPI-NOR:

	------------------------------
		cmd_sf.c
	------------------------------
		spi-nor.c
	-------------------------------
	m25p80.c	spi nor drivers
	-------------------------------
	spi-uclass	SPI NOR chip
	-------------------------------
	spi drivers
	-------------------------------
	SPI NOR chip
	-------------------------------

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: York Sun <york.sun@nxp.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 doc/mtd/spi-nor.txt               |   81 +++
 drivers/mtd/Kconfig               |    2 +
 drivers/mtd/spi-nor/Makefile      |    5 +
 drivers/mtd/spi-nor/spi-nor-ids.c |  276 ++++++++++
 drivers/mtd/spi-nor/spi-nor.c     | 1084 +++++++++++++++++++++++++++++++++++++
 include/linux/err.h               |    5 +
 include/linux/mtd/spi-nor.h       |  253 +++++++++
 7 files changed, 1706 insertions(+)
 create mode 100644 doc/mtd/spi-nor.txt
 create mode 100644 drivers/mtd/spi-nor/spi-nor-ids.c
 create mode 100644 drivers/mtd/spi-nor/spi-nor.c
 create mode 100644 include/linux/mtd/spi-nor.h

diff --git a/doc/mtd/spi-nor.txt b/doc/mtd/spi-nor.txt
new file mode 100644
index 0000000..8b381c1
--- /dev/null
+++ b/doc/mtd/spi-nor.txt
@@ -0,0 +1,81 @@
+                          SPI NOR framework
+               ============================================
+
+Part I - Why do we need this framework?
+---------------------------------------
+
+SPI bus controllers (drivers/spi/) only deal with streams of bytes; the bus
+controller operates agnostic of the specific device attached. However, some
+controllers (such as Freescale's QuadSPI controller) cannot easily handle
+arbitrary streams of bytes, but rather are designed specifically for SPI NOR.
+
+In particular, Freescale's QuadSPI controller must know the NOR commands to
+find the right LUT sequence. Unfortunately, the SPI subsystem has no notion of
+opcodes, addresses, or data payloads; a SPI controller simply knows to send or
+receive bytes (Tx and Rx). Therefore, we must define a new layering scheme under
+which the controller driver is aware of the opcodes, addressing, and other
+details of the SPI NOR protocol.
+
+Part II - How does the framework work?
+--------------------------------------
+
+This framework just adds a new layer between the MTD and the SPI bus driver.
+With this new layer, the SPI NOR controller driver does not depend on the
+m25p80 code anymore.
+
+Before SPI-NOR:
+
+	-----------------------
+		cmd_sf.c
+	-----------------------
+		spi_flash.c
+	-----------------------
+		sf_probe.c
+	-----------------------
+		spi-uclass
+	-----------------------
+		spi drivers
+	-----------------------
+		SPI NOR chip
+	-----------------------
+
+After SPI-NOR:
+
+	------------------------------
+		cmd_sf.c
+	------------------------------
+		spi-nor.c
+	-------------------------------
+	m25p80.c	spi nor drivers
+	-------------------------------
+	spi-uclass	SPI NOR chip
+	-------------------------------
+	spi drivers
+	-------------------------------
+	SPI NOR chip
+	-------------------------------
+
+SPI-NOR with MTD:
+
+	------------------------------
+		cmd_sf.c
+	------------------------------
+		MTD core
+	------------------------------
+		spi-nor.c
+	-------------------------------
+	m25p80.c	spi nor drivers
+	-------------------------------
+	spi-uclass	SPI NOR chip
+	-------------------------------
+	spi bus drivers
+	-------------------------------
+	SPI NOR chip
+	-------------------------------
+
+Part III - How can drivers use the framework?
+---------------------------------------------
+
+The main API is spi_nor_scan(). Before you call the hook, a driver should
+initialize the necessary fields for spi_nor{}. Please see
+drivers/mtd/spi-nor/spi-nor.c for detail.
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index c58841e..2c8846b 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -33,3 +33,5 @@ endmenu
 source "drivers/mtd/nand/Kconfig"
 
 source "drivers/mtd/spi/Kconfig"
+
+source "drivers/mtd/spi-nor/Kconfig"
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index a4c19e3..9ab6e3d 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -3,4 +3,9 @@
 #
 # SPDX-License-Identifier:	GPL-2.0+
 
+ifdef CONFIG_MTD_SPI_NOR
+obj-y += spi-nor.o
+obj-y += spi-nor-ids.o
+endif
+
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
diff --git a/drivers/mtd/spi-nor/spi-nor-ids.c b/drivers/mtd/spi-nor/spi-nor-ids.c
new file mode 100644
index 0000000..2599731
--- /dev/null
+++ b/drivers/mtd/spi-nor/spi-nor-ids.c
@@ -0,0 +1,276 @@
+/*
+ * SPI NOR ID's.
+ * Cloned most of the code from the sf_params.c and Linux spi-nor framework.
+ *
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <linux/mtd/spi-nor.h>
+
+/* Used when the "_ext_id" is two bytes at most */
+#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flash_read, _flags)	\
+		.id = {							\
+			((_jedec_id) >> 16) & 0xff,			\
+			((_jedec_id) >> 8) & 0xff,			\
+			(_jedec_id) & 0xff,				\
+			((_ext_id) >> 8) & 0xff,			\
+			(_ext_id) & 0xff,				\
+			},						\
+		.id_len = (!(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))),	\
+		.sector_size = (_sector_size),				\
+		.n_sectors = (_n_sectors),				\
+		.page_size = 256,					\
+		.flash_read = _flash_read,					\
+		.flags = (_flags),
+
+#define INFO6(_jedec_id, _ext_id, _sector_size, _n_sectors, _flash_read, _flags)	\
+		.id = {							\
+			((_jedec_id) >> 16) & 0xff,			\
+			((_jedec_id) >> 8) & 0xff,			\
+			(_jedec_id) & 0xff,				\
+			((_ext_id) >> 16) & 0xff,			\
+			((_ext_id) >> 8) & 0xff,			\
+			(_ext_id) & 0xff,				\
+			},						\
+		.id_len = 6,						\
+		.sector_size = (_sector_size),				\
+		.n_sectors = (_n_sectors),				\
+		.page_size = 256,					\
+		.flash_read = _flash_read,					\
+		.flags = (_flags),
+
+#define CAT25_INFO(_sector_size, _n_sectors, _page_size, _addr_width, _flash_read, _flags)	\
+		.sector_size = (_sector_size),				\
+		.n_sectors = (_n_sectors),				\
+		.page_size = (_page_size),				\
+		.addr_width = (_addr_width),				\
+		.flash_read = _flash_read,					\
+		.flags = (_flags),
+
+/* NOTE: double check command sets and memory organization when you add
+ * more nor chips.  This current list focusses on newer chips, which
+ * have been converging on command sets which including JEDEC ID.
+ *
+ * All newly added entries should describe *hardware* and should use SECT_4K
+ * (or SECT_4K_PMC) if hardware supports erasing 4 KiB sectors. For usage
+ * scenarios excluding small sectors there is config option that can be
+ * disabled: CONFIG_MTD_SPI_NOR_USE_4K_SECTORS.
+ * For historical (and compatibility) reasons (before we got above config) some
+ * old entries may be missing 4K flag.
+ */
+const struct spi_nor_info spi_nor_ids[] = {
+#ifdef CONFIG_SPI_FLASH_ATMEL		/* ATMEL */
+	/* Atmel -- some are (confusingly) marketed as "DataFlash" */
+	{ "at25fs010",  INFO(0x1f6601, 0, 32 * 1024,   4, SNOR_READ_BASE, SECT_4K) },
+	{ "at25fs040",  INFO(0x1f6604, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+
+	{ "at25df041a", INFO(0x1f4401, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+	{ "at25df321a", INFO(0x1f4701, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "at25df641",  INFO(0x1f4800, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+
+	{ "at26f004",   INFO(0x1f0400, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K) },
+	{ "at26df081a", INFO(0x1f4501, 0, 64 * 1024, 16, SNOR_READ_BASE, SECT_4K) },
+	{ "at26df161a", INFO(0x1f4601, 0, 64 * 1024, 32, SNOR_READ_BASE, SECT_4K) },
+	{ "at26df321",  INFO(0x1f4700, 0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
+
+	{ "at45db011d",	INFO(0x1f2200, 0, 64 * 1024,   4, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db021d",	INFO(0x1f2300, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db041d",	INFO(0x1f2400, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db081d",	INFO(0x1f2500, 0, 64 * 1024,  16, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db161d",	INFO(0x1f2600, 0, 64 * 1024,  32, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db321d",	INFO(0x1f2700, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "at45db641d",	INFO(0x1f2800, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+#endif
+#ifdef CONFIG_SPI_FLASH_EON		/* EON */
+	/* EON -- en25xxx */
+	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SNOR_READ_BASE, SECT_4K) },
+	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, SNOR_READ_BASE, 0) },
+	{ "en25q32b",   INFO(0x1c3016, 0, 64 * 1024,   64, SNOR_READ_BASE, 0) },
+	{ "en25p64",    INFO(0x1c2017, 0, 64 * 1024,  128, SNOR_READ_BASE, 0) },
+	{ "en25q64",    INFO(0x1c3017, 0, 64 * 1024,  128, SNOR_READ_BASE, SECT_4K) },
+	{ "en25q128b",	INFO(0x1c3018, 0, 64 * 1024,  256, SNOR_READ_BASE, 0) },
+	{ "en25qh128",  INFO(0x1c7018, 0, 64 * 1024,  256, SNOR_READ_BASE, 0) },
+	{ "en25qh256",  INFO(0x1c7019, 0, 64 * 1024,  512, SNOR_READ_BASE, 0) },
+	{ "en25s64",	INFO(0x1c3817, 0, 64 * 1024,  128, SNOR_READ_BASE, SECT_4K) },
+#endif
+	/* ESMT */
+	{ "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
+
+	/* Everspin */
+	{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ "mr25h10",  CAT25_INFO(128 * 1024, 1, 256, 3, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+
+	/* Fujitsu */
+	{ "mb85rs1mt", INFO(0x047f27, 0, 128 * 1024, 1, SNOR_READ_BASE, SPI_NOR_NO_ERASE) },
+
+#ifdef CONFIG_SPI_FLASH_GIGADEVICE	/* GIGADEVICE */
+	/* GigaDevice */
+	{ "gd25q32", INFO(0xc84016, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "gd25q64", INFO(0xc84017, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "gd25q128", INFO(0xc84018, 0, 64 * 1024, 256, SNOR_READ_BASE, SECT_4K) },
+	{ "gd25lq32", INFO(0xc86016, 0,	64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+#endif
+	/* Intel/Numonyx -- xxxs33b */
+	{ "160s33b",  INFO(0x898911, 0, 64 * 1024,  32, SNOR_READ_BASE, 0) },
+	{ "320s33b",  INFO(0x898912, 0, 64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "640s33b",  INFO(0x898913, 0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
+
+#ifdef CONFIG_SPI_FLASH_ISSI		/* ISSI */
+	/* ISSI */
+	{ "is25cd512", INFO(0x7f9d20, 0, 32 * 1024,   2, SNOR_READ_BASE, SECT_4K) },
+	{ "is25lp032", INFO(0x9d6016, 0, 64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "is25lp064", INFO(0x9d6017, 0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "is25lp128", INFO(0x9d6018, 0, 64 * 1024, 256, SNOR_READ_BASE, 0) },
+#endif
+#ifdef CONFIG_SPI_FLASH_MACRONIX	/* MACRONIX */
+	/* Macronix */
+	{ "mx25l512e",   INFO(0xc22010, 0, 64 * 1024,   1, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l2005a",  INFO(0xc22012, 0, 64 * 1024,   4, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l4005a",  INFO(0xc22013, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l8005",   INFO(0xc22014, 0, 64 * 1024,  16, SNOR_READ_BASE, 0) },
+	{ "mx25l1606e",  INFO(0xc22015, 0, 64 * 1024,  32, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l3205d",  INFO(0xc22016, 0, 64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "mx25l3255e",  INFO(0xc29e16, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l6405d",  INFO(0xc22017, 0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "mx25u6435f",  INFO(0xc22537, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "mx66l1g55g",  INFO(0xc2261b, 0, 64 * 1024, 2048, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+#endif
+#ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
+	/* Micron */
+	{ "n25q032",	 INFO(0x20ba16, 0, 64 * 1024,   64, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "n25q064",     INFO(0x20ba17, 0, 64 * 1024,  128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "n25q064a",    INFO(0x20bb17, 0, 64 * 1024,  128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "n25q128a11",  INFO(0x20bb18, 0, 64 * 1024,  256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "n25q128a13",  INFO(0x20ba18, 0, 64 * 1024,  256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "n25q256a",    INFO(0x20ba19, 0, 64 * 1024,  512, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "n25q512a",    INFO(0x20bb20, 0, 64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K | USE_FSR) },
+	{ "n25q512ax3",  INFO(0x20ba20, 0, 64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K | USE_FSR) },
+	{ "n25q00",      INFO(0x20ba21, 0, 64 * 1024, 2048, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K | USE_FSR) },
+#endif
+	/* PMC */
+	{ "pm25lv512",   INFO(0,        0, 32 * 1024,    2, SNOR_READ_BASE, SECT_4K_PMC) },
+	{ "pm25lv010",   INFO(0,        0, 32 * 1024,    4, SNOR_READ_BASE, SECT_4K_PMC) },
+	{ "pm25lq032",   INFO(0x7f9d46, 0, 64 * 1024,   64, SNOR_READ_BASE, SECT_4K) },
+
+#ifdef CONFIG_SPI_FLASH_SPANSION	/* SPANSION */
+	/* Spansion -- single (large) sector size only, at least
+	 * for the chips listed here (without boot sectors).
+	 */
+	{ "s25sl032p",  INFO(0x010215, 0x4d00,  64 * 1024,  64, SNOR_READ_FULL, 0) },
+	{ "s25sl064p",  INFO(0x010216, 0x4d00,  64 * 1024, 128, SNOR_READ_FULL, 0) },
+	{ "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25fl256s1", INFO(0x010219, 0x4d01,  64 * 1024, 512, SNOR_READ_FULL, 0) },
+	{ "s25fl512s",  INFO(0x010220, 0x4d00, 256 * 1024, 256, SNOR_READ_FULL, 0) },
+	{ "s25fl512s1", INFO(0x010220, 0x4d01,  64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25fl512s2", INFO(0x010220, 0x4f00, 256 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s70fl01gs",  INFO(0x010221, 0x4d00, 256 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024,  64, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25sl12801", INFO(0x012018, 0x0301,  64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25fl128s",	INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024,  64, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25fl129p1", INFO(0x012018, 0x4d01,  64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
+	{ "s25sl004a",  INFO(0x010212,      0,  64 * 1024,   8, SNOR_READ_BASE, 0) },
+	{ "s25sl008a",  INFO(0x010213,      0,  64 * 1024,  16, SNOR_READ_BASE, 0) },
+	{ "s25sl016a",  INFO(0x010214,      0,  64 * 1024,  32, SNOR_READ_BASE, 0) },
+	{ "s25sl032a",  INFO(0x010215,      0,  64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "s25sl064a",  INFO(0x010216,      0,  64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "s25fl008k",  INFO(0xef4014,      0,  64 * 1024,  16, SNOR_READ_BASE, SECT_4K) },
+	{ "s25fl016k",  INFO(0xef4015,      0,  64 * 1024,  32, SNOR_READ_BASE, SECT_4K) },
+	{ "s25fl064k",  INFO(0xef4017,      0,  64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "s25fl132k",  INFO(0x014016,      0,  64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "s25fl164k",  INFO(0x014017,      0,  64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "s25fl204k",  INFO(0x014013,      0,  64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
+#endif
+#ifdef CONFIG_SPI_FLASH_SST		/* SST */
+	/* SST -- large erase sizes are "overlays", "sectors" are 4K */
+	{ "sst25vf040b", INFO(0xbf258d, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25vf080b", INFO(0xbf258e, 0, 64 * 1024, 16, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25vf016b", INFO(0xbf2541, 0, 64 * 1024, 32, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25vf032b", INFO(0xbf254a, 0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25vf064c", INFO(0xbf254b, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "sst25wf512",  INFO(0xbf2501, 0, 64 * 1024,  1, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25wf010",  INFO(0xbf2502, 0, 64 * 1024,  2, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25wf020",  INFO(0xbf2503, 0, 64 * 1024,  4, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25wf040",	 INFO(0xbf2504, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25wf020a", INFO(0x621612, 0, 64 * 1024,  4, SNOR_READ_BASE, SECT_4K) },
+	{ "sst25wf040b", INFO(0x621613, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K) },
+	{ "sst25wf040",  INFO(0xbf2504, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+	{ "sst25wf080",  INFO(0xbf2505, 0, 64 * 1024, 16, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
+#endif
+#ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
+	/* ST Microelectronics -- newer production may have feature updates */
+	{ "m25p05",  INFO(0x202010,  0,  32 * 1024,   2, SNOR_READ_BASE, 0) },
+	{ "m25p10",  INFO(0x202011,  0,  32 * 1024,   4, SNOR_READ_BASE, 0) },
+	{ "m25p20",  INFO(0x202012,  0,  64 * 1024,   4, SNOR_READ_BASE, 0) },
+	{ "m25p40",  INFO(0x202013,  0,  64 * 1024,   8, SNOR_READ_BASE, 0) },
+	{ "m25p80",  INFO(0x202014,  0,  64 * 1024,  16, SNOR_READ_BASE, 0) },
+	{ "m25p16",  INFO(0x202015,  0,  64 * 1024,  32, SNOR_READ_BASE, 0) },
+	{ "m25p32",  INFO(0x202016,  0,  64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "m25p64",  INFO(0x202017,  0,  64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "m25p128", INFO(0x202018,  0, 256 * 1024,  64, SNOR_READ_BASE, 0) },
+
+	{ "m25p05-nonjedec",  INFO(0, 0,  32 * 1024,   2, SNOR_READ_BASE, 0) },
+	{ "m25p10-nonjedec",  INFO(0, 0,  32 * 1024,   4, SNOR_READ_BASE, 0) },
+	{ "m25p20-nonjedec",  INFO(0, 0,  64 * 1024,   4, SNOR_READ_BASE, 0) },
+	{ "m25p40-nonjedec",  INFO(0, 0,  64 * 1024,   8, SNOR_READ_BASE, 0) },
+	{ "m25p80-nonjedec",  INFO(0, 0,  64 * 1024,  16, SNOR_READ_BASE, 0) },
+	{ "m25p16-nonjedec",  INFO(0, 0,  64 * 1024,  32, SNOR_READ_BASE, 0) },
+	{ "m25p32-nonjedec",  INFO(0, 0,  64 * 1024,  64, SNOR_READ_BASE, 0) },
+	{ "m25p64-nonjedec",  INFO(0, 0,  64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "m25p128-nonjedec", INFO(0, 0, 256 * 1024,  64, SNOR_READ_BASE, 0) },
+
+	{ "m45pe10", INFO(0x204011,  0, 64 * 1024,    2, SNOR_READ_BASE, 0) },
+	{ "m45pe80", INFO(0x204014,  0, 64 * 1024,   16, SNOR_READ_BASE, 0) },
+	{ "m45pe16", INFO(0x204015,  0, 64 * 1024,   32, SNOR_READ_BASE, 0) },
+
+	{ "m25pe20", INFO(0x208012,  0, 64 * 1024,  4, SNOR_READ_BASE, 0) },
+	{ "m25pe80", INFO(0x208014,  0, 64 * 1024, 16, SNOR_READ_BASE, 0) },
+	{ "m25pe16", INFO(0x208015,  0, 64 * 1024, 32, SNOR_READ_BASE, SECT_4K) },
+
+	{ "m25px16",    INFO(0x207115,  0, 64 * 1024, 32, SNOR_READ_BASE, SECT_4K) },
+	{ "m25px32",    INFO(0x207116,  0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
+	{ "m25px32-s0", INFO(0x207316,  0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
+	{ "m25px32-s1", INFO(0x206316,  0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
+	{ "m25px64",    INFO(0x207117,  0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
+	{ "m25px80",    INFO(0x207114,  0, 64 * 1024, 16, SNOR_READ_BASE, 0) },
+#endif
+#ifdef CONFIG_SPI_FLASH_WINBOND		/* WINBOND */
+	/* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */
+	{ "W25P80", INFO(0xef2014, 0, 64 * 1024, 16, SNOR_READ_BASE, 0) },
+	{ "W25P16", INFO(0xef2015, 0, 64 * 1024, 32, SNOR_READ_BASE, 0) },
+	{ "W25P32", INFO(0xef2016, 0, 64 * 1024, 64, SNOR_READ_BASE, 0) },
+	{ "w25x05", INFO(0xef3010, 0, 64 * 1024,  1, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x10", INFO(0xef3011, 0, 64 * 1024,  2, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x20", INFO(0xef3012, 0, 64 * 1024,  4, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x40", INFO(0xef3013, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x80", INFO(0xef3014, 0, 64 * 1024,  16, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x16", INFO(0xef3015, 0, 64 * 1024,  32, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x32", INFO(0xef3016, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
+	{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
+	{ "w25q80bl", INFO(0xef4014, 0, 64 * 1024,  16, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{" w25q16cl", INFO(0xef4015, 0,	64 * 1024,  32, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q32", INFO(0xef4016, 0, 64 * 1024,  64, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q80", INFO(0xef5014, 0, 64 * 1024,  16, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q16dw", INFO(0xef6015, 0, 64 * 1024,  32, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q32dw", INFO(0xef6016, 0, 64 * 1024,  64, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q64dw", INFO(0xef6017, 0, 64 * 1024, 128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+	{ "w25q128fw", INFO(0xef6018, 0, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
+#endif
+	/* Catalyst / On Semiconductor -- non-JEDEC */
+	{ "cat25c11", CAT25_INFO(  16, 8, 16, 1, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ "cat25c03", CAT25_INFO(  32, 8, 16, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ "cat25c09", CAT25_INFO( 128, 8, 32, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ "cat25c17", CAT25_INFO( 256, 8, 32, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ "cat25128", CAT25_INFO(2048, 8, 64, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+	{ },
+};
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
new file mode 100644
index 0000000..f142ae4
--- /dev/null
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -0,0 +1,1084 @@
+/*
+ * SPI NOR Core - cloned most of the code from the spi_flash.c
+ *
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <malloc.h>
+#include <mapmem.h>
+
+#include <linux/math64.h>
+#include <linux/log2.h>
+#include <linux/mtd/spi-nor.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Set write enable latch with Write Enable command */
+static inline int write_enable(struct spi_nor *nor)
+{
+	return nor->write_reg(nor, SNOR_OP_WREN, NULL, 0);
+}
+
+/* Re-set write enable latch with Write Disable command */
+static inline int write_disable(struct spi_nor *nor)
+{
+	return nor->write_reg(nor, SNOR_OP_WRDI, NULL, 0);
+}
+
+static void spi_nor_addr(u32 addr, u8 *cmd)
+{
+	/* cmd[0] is actual command */
+	cmd[1] = addr >> 16;
+	cmd[2] = addr >> 8;
+	cmd[3] = addr >> 0;
+}
+
+static int read_sr(struct spi_nor *nor)
+{
+	u8 sr;
+	int ret;
+
+	ret = nor->read_reg(nor, SNOR_OP_RDSR, &sr, 1);
+	if (ret < 0) {
+		debug("spi-nor: fail to read status register\n");
+		return ret;
+	}
+
+	return sr;
+}
+
+static int read_fsr(struct spi_nor *nor)
+{
+	u8 fsr;
+	int ret;
+
+	ret = nor->read_reg(nor, SNOR_OP_RDFSR, &fsr, 1);
+	if (ret < 0) {
+		debug("spi-nor: fail to read flag status register\n");
+		return ret;
+	}
+
+	return fsr;
+}
+
+static int write_sr(struct spi_nor *nor, u8 ws)
+{
+	nor->cmd_buf[0] = ws;
+	return nor->write_reg(nor, SNOR_OP_WRSR, nor->cmd_buf, 1);
+}
+
+#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+static int read_cr(struct spi_nor *nor)
+{
+	u8 cr;
+	int ret;
+
+	ret = nor->read_reg(nor, SNOR_OP_RDCR, &cr, 1);
+	if (ret < 0) {
+		debug("spi-nor: fail to read config register\n");
+		return ret;
+	}
+
+	return cr;
+}
+
+/*
+ * Write status Register and configuration register with 2 bytes
+ * - First byte will be written to the status register.
+ * - Second byte will be written to the configuration register.
+ * Return negative if error occured.
+ */
+static int write_sr_cr(struct spi_nor *nor, u16 val)
+{
+	nor->cmd_buf[0] = val & 0xff;
+	nor->cmd_buf[1] = (val >> 8);
+
+	return nor->write_reg(nor, SNOR_OP_WRSR, nor->cmd_buf, 2);
+}
+#endif
+
+#ifdef CONFIG_SPI_FLASH_STMICRO
+static int read_evcr(struct spi_nor *nor)
+{
+	u8 evcr;
+	int ret;
+
+	ret = nor->read_reg(nor, SPINOR_OP_RD_EVCR, &evcr, 1);
+	if (ret < 0) {
+		debug("spi-nor: fail to read EVCR\n");
+		return ret;
+	}
+
+	return evcr;
+}
+
+static int write_evcr(struct spi_nor *nor, u8 evcr)
+{
+	nor->cmd_buf[0] = evcr;
+	return nor->write_reg(nor, SPINOR_OP_WD_EVCR, nor->cmd_buf, 1);
+}
+#endif
+
+static int spi_nor_sr_ready(struct spi_nor *nor)
+{
+	int sr = read_sr(nor);
+	if (sr < 0)
+		return sr;
+	else
+		return !(sr & SR_WIP);
+}
+
+static int spi_nor_fsr_ready(struct spi_nor *nor)
+{
+	int fsr = read_fsr(nor);
+	if (fsr < 0)
+		return fsr;
+	else
+		return fsr & FSR_READY;
+}
+
+static int spi_nor_ready(struct spi_nor *nor)
+{
+	int sr, fsr;
+
+	sr = spi_nor_sr_ready(nor);
+	if (sr < 0)
+		return sr;
+
+	fsr = 1;
+	if (nor->flags & SNOR_F_USE_FSR) {
+		fsr = spi_nor_fsr_ready(nor);
+		if (fsr < 0)
+			return fsr;
+	}
+
+	return sr && fsr;
+}
+
+static int spi_nor_wait_till_ready(struct spi_nor *nor, unsigned long timeout)
+{
+	int timebase, ret;
+
+	timebase = get_timer(0);
+
+	while (get_timer(timebase) < timeout) {
+		ret = spi_nor_ready(nor);
+		if (ret < 0)
+			return ret;
+		if (ret)
+			return 0;
+	}
+
+	printf("spi-nor: Timeout!\n");
+
+	return -ETIMEDOUT;
+}
+
+#ifdef CONFIG_SPI_FLASH_BAR
+static int spi_nor_write_bar(struct spi_nor *nor, u32 offset)
+{
+	u8 bank_sel;
+	int ret;
+
+	bank_sel = offset / (SNOR_16MB_BOUN << nor->shift);
+	if (bank_sel == nor->bank_curr)
+		goto bar_end;
+
+	write_enable(nor);
+
+	nor->cmd_buf[0] = bank_sel;
+	ret = nor->write_reg(nor, nor->bar_program_opcode, nor->cmd_buf, 1);
+	if (ret < 0) {
+		debug("spi-nor: fail to write bank register\n");
+		return ret;
+	}
+
+	ret = spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
+	if (ret < 0)
+		return ret;
+
+bar_end:
+	nor->bank_curr = bank_sel;
+	return nor->bank_curr;
+}
+
+static int spi_nor_read_bar(struct spi_nor *nor, const struct spi_nor_info *info)
+{
+	u8 curr_bank = 0;
+	int ret;
+
+	if (flash->size <= SNOR_16MB_BOUN)
+		goto bar_end;
+
+	switch (JEDEC_MFR(info)) {
+	case SNOR_MFR_SPANSION:
+		nor->bar_read_opcode = SNOR_OP_BRRD;
+		nor->bar_program_opcode = SNOR_OP_BRWR;
+		break;
+	default:
+		nor->bar_read_opcode = SNOR_OP_RDEAR;
+		nor->bar_program_opcode = SNOR_OP_WREAR;
+	}
+
+	ret = nor->read_reg(nor, nor->bar_read_opcode, &curr_bank, 1);
+	if (ret) {
+		debug("spi-nor: fail to read bank addr register\n");
+		return ret;
+	}
+
+bar_end:
+	nor->bank_curr = curr_bank;
+	return 0;
+}
+#endif
+
+#ifdef CONFIG_SF_DUAL_FLASH
+static void spi_nor_dual(struct spi_nor *nor, u32 *addr)
+{
+	struct spi_flash *flash = nor->flash;
+
+	switch (nor->dual) {
+	case SNOR_DUAL_STACKED:
+		if (*addr >= (flash->size >> 1)) {
+			*addr -= flash->size >> 1;
+			nor->flags |= SNOR_F_U_PAGE;
+		} else {
+			nor->flags &= ~SNOR_F_U_PAGE;
+		}
+		break;
+	case SNOR_DUAL_PARALLEL:
+		*addr >>= nor->shift;
+		break;
+	default:
+		debug("spi-nor: Unsupported dual_flash=%d\n", nor->dual);
+		break;
+	}
+}
+#endif
+
+#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
+static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs,
+				 u32 *len)
+{
+	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
+	int shift = ffs(mask) - 1;
+	int pow;
+
+	if (!(sr & mask)) {
+		/* No protection */
+		*ofs = 0;
+		*len = 0;
+	} else {
+		pow = ((sr & mask) ^ mask) >> shift;
+		*len = flash->size >> pow;
+		*ofs = flash->size - *len;
+	}
+}
+
+/*
+ * Return 1 if the entire region is locked, 0 otherwise
+ */
+static int stm_is_locked_sr(struct spi_nor *nor, u32 ofs, u32 len, u8 sr)
+{
+	loff_t lock_offs;
+	u32 lock_len;
+
+	stm_get_locked_range(nor, sr, &lock_offs, &lock_len);
+
+	return (ofs + len <= lock_offs + lock_len) && (ofs >= lock_offs);
+}
+
+/*
+ * Check if a region of the flash is (completely) locked. See stm_lock() for
+ * more info.
+ *
+ * Returns 1 if entire region is locked, 0 if any portion is unlocked, and
+ * negative on errors.
+ */
+static int stm_is_locked(struct spi_nor *nor, u32 ofs, size_t len)
+{
+	int status;
+
+	status = read_sr(nor);
+	if (status < 0)
+		return status;
+
+	return stm_is_locked_sr(nor, ofs, len, status);
+}
+
+/*
+ * Lock a region of the flash. Compatible with ST Micro and similar flash.
+ * Supports only the block protection bits BP{0,1,2} in the status register
+ * (SR). Does not support these features found in newer SR bitfields:
+ *   - TB: top/bottom protect - only handle TB=0 (top protect)
+ *   - SEC: sector/block protect - only handle SEC=0 (block protect)
+ *   - CMP: complement protect - only support CMP=0 (range is not complemented)
+ *
+ * Sample table portion for 8MB flash (Winbond w25q64fw):
+ *
+ *   SEC  |  TB   |  BP2  |  BP1  |  BP0  |  Prot Length  | Protected Portion
+ *  --------------------------------------------------------------------------
+ *    X   |   X   |   0   |   0   |   0   |  NONE         | NONE
+ *    0   |   0   |   0   |   0   |   1   |  128 KB       | Upper 1/64
+ *    0   |   0   |   0   |   1   |   0   |  256 KB       | Upper 1/32
+ *    0   |   0   |   0   |   1   |   1   |  512 KB       | Upper 1/16
+ *    0   |   0   |   1   |   0   |   0   |  1 MB         | Upper 1/8
+ *    0   |   0   |   1   |   0   |   1   |  2 MB         | Upper 1/4
+ *    0   |   0   |   1   |   1   |   0   |  4 MB         | Upper 1/2
+ *    X   |   X   |   1   |   1   |   1   |  8 MB         | ALL
+ *
+ * Returns negative on errors, 0 on success.
+ */
+static int stm_lock(struct spi_nor *nor, u32 ofs, size_t len)
+{
+	u8 status_old, status_new;
+	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
+	u8 shift = ffs(mask) - 1, pow, val;
+
+	status_old = read_sr(nor);
+	if (status_old < 0)
+		return status_old;
+
+	/* SPI NOR always locks to the end */
+	if (ofs + len != flash->size) {
+		/* Does combined region extend to end? */
+		if (!stm_is_locked_sr(nor, ofs + len, flash->size - ofs - len,
+				      status_old))
+			return -EINVAL;
+		len = flash->size - ofs;
+	}
+
+	/*
+	 * Need smallest pow such that:
+	 *
+	 *   1 / (2^pow) <= (len / size)
+	 *
+	 * so (assuming power-of-2 size) we do:
+	 *
+	 *   pow = ceil(log2(size / len)) = log2(size) - floor(log2(len))
+	 */
+	pow = ilog2(flash->size) - ilog2(len);
+	val = mask - (pow << shift);
+	if (val & ~mask)
+		return -EINVAL;
+
+	/* Don't "lock" with no region! */
+	if (!(val & mask))
+		return -EINVAL;
+
+	status_new = (status_old & ~mask) | val;
+
+	/* Only modify protection if it will not unlock other areas */
+	if ((status_new & mask) <= (status_old & mask))
+		return -EINVAL;
+
+	write_enable(nor);
+	return write_sr(nor, status_new);
+}
+
+/*
+ * Unlock a region of the flash. See stm_lock() for more info
+ *
+ * Returns negative on errors, 0 on success.
+ */
+static int stm_unlock(struct spi_nor *nor, u32 ofs, size_t len)
+{
+	uint8_t status_old, status_new;
+	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
+	u8 shift = ffs(mask) - 1, pow, val;
+
+	status_old = read_sr(nor);
+	if (status_old  < 0)
+		return status_old;
+
+	/* Cannot unlock; would unlock larger region than requested */
+	if (stm_is_locked_sr(nor, status_old, ofs - flash->erase_size,
+			     nor->erase_size))
+		return -EINVAL;
+	/*
+	 * Need largest pow such that:
+	 *
+	 *   1 / (2^pow) >= (len / size)
+	 *
+	 * so (assuming power-of-2 size) we do:
+	 *
+	 *   pow = floor(log2(size / len)) = log2(size) - ceil(log2(len))
+	 */
+	pow = ilog2(flash->size) - order_base_2(flash->size - (ofs + len));
+	if (ofs + len == flash->size) {
+		val = 0; /* fully unlocked */
+	} else {
+		val = mask - (pow << shift);
+		/* Some power-of-two sizes are not supported */
+		if (val & ~mask)
+			return -EINVAL;
+	}
+
+	status_new = (status_old & ~mask) | val;
+
+	/* Only modify protection if it will not lock other areas */
+	if ((status_new & mask) >= (status_old & mask))
+		return -EINVAL;
+
+	write_enable(nor);
+	return write_sr(nor, status_new);
+}
+#endif
+
+static const struct spi_nor_info *spi_nor_id(struct spi_nor *nor)
+{
+	int				tmp;
+	u8				id[SPI_NOR_MAX_ID_LEN];
+	const struct spi_nor_info	*info;
+
+	tmp = nor->read_reg(nor, SNOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN);
+	if (tmp < 0) {
+		printf("spi-nor: error %d reading JEDEC ID\n", tmp);
+		return ERR_PTR(tmp);
+	}
+
+	info = spi_nor_ids;
+	for (; info->name != NULL; info++) {
+		if (info->id_len) {
+			if (!memcmp(info->id, id, info->id_len))
+				return info;
+		}
+	}
+
+	printf("spi-nor: unrecognized JEDEC id bytes: %02x, %2x, %2x\n",
+	       id[0], id[1], id[2]);
+	return ERR_PTR(-ENODEV);
+}
+
+static int spi_nor_erase(struct spi_flash *flash, u32 offset, size_t len)
+{
+	struct spi_nor *nor = flash->nor;
+	u32 erase_size, erase_addr;
+	u8 cmd[SNOR_MAX_CMD_SIZE];
+	int ret = -1;
+
+	erase_size = nor->erase_size;
+	if (offset % erase_size || len % erase_size) {
+		debug("spi-nor: Erase offset/length not multiple of erase size\n");
+		return -1;
+	}
+
+	if (flash->flash_is_locked) {
+		if (flash->flash_is_locked(flash, offset, len) > 0) {
+			printf("offset 0x%x is protected and cannot be erased\n",
+			       offset);
+			return -EINVAL;
+		}
+	}
+
+	cmd[0] = flash->erase_opcode;
+	while (len) {
+		erase_addr = offset;
+
+#ifdef CONFIG_SF_DUAL_FLASH
+		if (nor->dual > SNOR_DUAL_SINGLE)
+			spi_nor_dual(nor, &erase_addr);
+#endif
+#ifdef CONFIG_SPI_FLASH_BAR
+		ret = spi_nor_write_bar(nor, erase_addr);
+		if (ret < 0)
+			return ret;
+#endif
+		spi_nor_addr(erase_addr, cmd);
+
+		debug("spi-nor: erase %2x %2x %2x %2x (%x)\n", cmd[0], cmd[1],
+		      cmd[2], cmd[3], erase_addr);
+
+		write_enable(nor);
+
+		ret = nor->write(nor, cmd, sizeof(cmd), NULL, 0);
+		if (ret < 0)
+			break;
+
+		ret = spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_ERASE);
+		if (ret < 0)
+			return ret;
+
+		offset += erase_size;
+		len -= erase_size;
+	}
+
+	return ret;
+}
+
+int spi_nor_write(struct spi_flash *flash, u32 offset,
+		  size_t len, const void *buf)
+{
+	struct spi_nor *nor = flash->nor;
+	unsigned long byte_addr, page_size;
+	u32 write_addr;
+	size_t chunk_len, actual;
+	u8 cmd[SNOR_MAX_CMD_SIZE];
+	int ret = -1;
+
+	page_size = nor->page_size;
+
+	if (flash->flash_is_locked) {
+		if (flash->flash_is_locked(flash, offset, len) > 0) {
+			printf("offset 0x%x is protected and cannot be written\n",
+			       offset);
+			return -EINVAL;
+		}
+	}
+
+	cmd[0] = nor->program_opcode;
+	for (actual = 0; actual < len; actual += chunk_len) {
+		write_addr = offset;
+
+#ifdef CONFIG_SF_DUAL_FLASH
+		if (nor->dual > SNOR_DUAL_SINGLE)
+			spi_nor_dual(nor, &write_addr);
+#endif
+#ifdef CONFIG_SPI_FLASH_BAR
+		ret = spi_nor_write_bar(nor, write_addr);
+		if (ret < 0)
+			return ret;
+#endif
+		byte_addr = offset % page_size;
+		chunk_len = min(len - actual, (size_t)(page_size - byte_addr));
+
+		if (nor->max_write_size)
+			chunk_len = min(chunk_len,
+					(size_t)nor->max_write_size);
+
+		spi_nor_addr(write_addr, cmd);
+
+		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %zu\n",
+		      buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
+
+		write_enable(nor);
+
+		ret = nor->write(nor, cmd, sizeof(cmd),
+				 buf + actual, chunk_len);
+		if (ret < 0)
+			break;
+
+		ret = spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
+		if (ret < 0)
+			return ret;
+
+		offset += chunk_len;
+	}
+
+	return ret;
+}
+
+int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
+{
+	struct spi_nor *nor = flash->nor;
+	u32 remain_len, read_len, read_addr;
+	u8 *cmd, cmdsz;
+	int bank_sel = 0;
+	int ret = -1;
+
+	/* Handle memory-mapped SPI */
+	if (nor->memory_map) {
+		ret = nor->read_mmap(nor, data, nor->memory_map + offset, len);
+		if (ret) {
+			debug("spi-nor: mmap read failed\n");
+			return ret;
+		}
+
+		return ret;
+	}
+
+	cmdsz = SNOR_MAX_CMD_SIZE + nor->read_dummy;
+	cmd = calloc(1, cmdsz);
+	if (!cmd) {
+		debug("spi-nor: Failed to allocate cmd\n");
+		return -ENOMEM;
+	}
+
+	cmd[0] = nor->read_opcode;
+	while (len) {
+		read_addr = offset;
+
+#ifdef CONFIG_SF_DUAL_FLASH
+		if (nor->dual > SNOR_DUAL_SINGLE)
+			spi_nor_dual(nor, &read_addr);
+#endif
+#ifdef CONFIG_SPI_FLASH_BAR
+		ret = spi_nor_write_bar(nor, read_addr);
+		if (ret < 0)
+			return ret;
+		bank_sel = nor->bank_curr;
+#endif
+		remain_len = ((SNOR_16MB_BOUN << nor->shift) *
+				(bank_sel + 1)) - offset;
+		if (len < remain_len)
+			read_len = len;
+		else
+			read_len = remain_len;
+
+		spi_nor_addr(read_addr, cmd);
+
+		ret = nor->read(nor, cmd, cmdsz, data, read_len);
+		if (ret < 0)
+			break;
+
+		offset += read_len;
+		len -= read_len;
+		data += read_len;
+	}
+
+	free(cmd);
+	return ret;
+}
+
+#ifdef CONFIG_SPI_FLASH_SST
+static int sst_byte_write(struct spi_nor *nor, u32 offset, const void *buf)
+{
+	int ret;
+	u8 cmd[4] = {
+		SNOR_OP_BP,
+		offset >> 16,
+		offset >> 8,
+		offset,
+	};
+
+	debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06x }\n",
+	      buf, cmd[0], offset);
+
+	ret = write_enable(nor);
+	if (ret)
+		return ret;
+
+	ret = nor->write(nor, cmd, sizeof(cmd), buf, 1);
+	if (ret)
+		return ret;
+
+	return spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
+}
+
+int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
+{
+	struct spi_nor *nor = flash->nor;
+	size_t actual, cmd_len;
+	int ret;
+	u8 cmd[4];
+
+	/* If the data is not word aligned, write out leading single byte */
+	actual = offset % 2;
+	if (actual) {
+		ret = sst_byte_write(nor, offset, buf);
+		if (ret)
+			goto done;
+	}
+	offset += actual;
+
+	ret = write_enable(nor);
+	if (ret)
+		goto done;
+
+	cmd_len = 4;
+	cmd[0] = SNOR_OP_AAI_WP;
+	cmd[1] = offset >> 16;
+	cmd[2] = offset >> 8;
+	cmd[3] = offset;
+
+	for (; actual < len - 1; actual += 2) {
+		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06x }\n",
+		      buf + actual, cmd[0], offset);
+
+		ret = nor->write(nor, cmd, cmd_len, buf + actual, 2);
+		if (ret) {
+			debug("spi-nor: sst word program failed\n");
+			break;
+		}
+
+		ret = spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
+		if (ret)
+			break;
+
+		cmd_len = 1;
+		offset += 2;
+	}
+
+	if (!ret)
+		ret = write_disable(nor);
+
+	/* If there is a single trailing byte, write it out */
+	if (!ret && actual != len)
+		ret = sst_byte_write(nor, offset, buf + actual);
+
+ done:
+	return ret;
+}
+
+int sst_write_bp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
+{
+	struct spi_nor *nor = flash->nor;
+	size_t actual;
+	int ret;
+
+	for (actual = 0; actual < len; actual++) {
+		ret = sst_byte_write(nor, offset, buf + actual);
+		if (ret) {
+			debug("spi-nor: sst byte program failed\n");
+			break;
+		}
+		offset++;
+	}
+
+	if (!ret)
+		ret = write_disable(nor);
+
+	return ret;
+}
+#endif
+
+#ifdef CONFIG_SPI_FLASH_MACRONIX
+static int macronix_quad_enable(struct spi_nor *nor)
+{
+	int ret, val;
+
+	val = read_sr(nor);
+	if (val < 0)
+		return val;
+
+	if (val & SR_QUAD_EN_MX)
+		return 0;
+
+	write_enable(nor);
+
+	ret = write_sr(nor, val | SR_QUAD_EN_MX);
+	if (ret < 0)
+		return ret;
+
+	if (spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG))
+		return 1;
+
+	ret = read_sr(nor);
+	if (!(ret > 0 && (ret & SR_QUAD_EN_MX))) {
+		printf("spi-nor: Macronix Quad bit not set\n");
+		return -EINVAL;
+	}
+
+	return 0;
+}
+#endif
+
+#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+static int spansion_quad_enable(struct spi_nor *nor)
+{
+	int ret, val;
+
+	val = read_cr(nor);
+	if (val < 0)
+		return val;
+
+	if (val & CR_QUAD_EN_SPAN)
+		return 0;
+
+	write_enable(nor);
+
+	ret = write_sr_cr(nor, val | CR_QUAD_EN_SPAN);
+	if (ret < 0)
+		return ret;
+
+	if (spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG))
+		return 1;
+
+	/* read back and check it */
+	ret = read_cr(nor);
+	if (!(ret > 0 && (ret & CR_QUAD_EN_SPAN))) {
+		printf("spi-nor: Spansion Quad bit not set\n");
+		return -EINVAL;
+	}
+
+	return 0;
+}
+#endif
+
+#ifdef CONFIG_SPI_FLASH_STMICRO
+static int micron_quad_enable(struct spi_nor *nor)
+{
+	int ret, val;
+
+	val = read_evcr(nor);
+	if (val < 0)
+		return val;
+
+	if (!(val & EVCR_QUAD_EN_MICRON))
+		return 0;
+
+	ret = write_evcr(nor, val & ~EVCR_QUAD_EN_MICRON);
+	if (ret < 0)
+		return ret;
+
+	/* read EVCR and check it */
+	ret = read_evcr(nor);
+	if (!(ret > 0 && !(ret & EVCR_QUAD_EN_MICRON))) {
+		printf("spi-nor: Micron EVCR Quad bit not clear\n");
+		return -EINVAL;
+	}
+
+	return ret;
+}
+#endif
+
+static int set_quad_mode(struct spi_nor *nor, const struct spi_nor_info *info)
+{
+	switch (JEDEC_MFR(info)) {
+#ifdef CONFIG_SPI_FLASH_MACRONIX
+	case SNOR_MFR_MACRONIX:
+		return macronix_quad_enable(nor);
+#endif
+#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+	case SNOR_MFR_SPANSION:
+	case SNOR_MFR_WINBOND:
+		return spansion_quad_enable(nor);
+#endif
+#ifdef CONFIG_SPI_FLASH_STMICRO
+	case SNOR_MFR_MICRON:
+		return micron_quad_enable(nor);
+#endif
+	default:
+		printf("spi-nor: Need set QEB func for %02x flash\n",
+		       JEDEC_MFR(info));
+		return -1;
+	}
+}
+
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+int spi_nor_decode_fdt(const void *blob, struct spi_nor *nor)
+{
+	fdt_addr_t addr;
+	fdt_size_t size;
+	int node;
+
+	/* If there is no node, do nothing */
+	node = fdtdec_next_compatible(blob, 0, COMPAT_GENERIC_SPI_FLASH);
+	if (node < 0)
+		return 0;
+
+	addr = fdtdec_get_addr_size(blob, node, "memory-map", &size);
+	if (addr == FDT_ADDR_T_NONE) {
+		debug("%s: Cannot decode address\n", __func__);
+		return 0;
+	}
+
+	if (flash->size != size) {
+		debug("%s: Memory map must cover entire device\n", __func__);
+		return -1;
+	}
+	nor->memory_map = map_sysmem(addr, size);
+
+	return 0;
+}
+#endif /* CONFIG_IS_ENABLED(OF_CONTROL) */
+
+static int spi_nor_check(struct spi_nor *nor)
+{
+	if (!nor->read || !nor->write ||
+	    !nor->read_reg || !nor->write_reg) {
+		pr_err("spi-nor: please fill all the necessary fields!\n");
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+int spi_nor_scan(struct spi_nor *nor)
+{
+	const struct spi_nor_info *info = NULL;
+	static u8 flash_read_cmd[] = {
+		SNOR_OP_READ,
+		SNOR_OP_READ_FAST,
+		SNOR_OP_READ_1_1_2,
+		SNOR_OP_READ_1_1_4,
+		SNOR_OP_READ_1_1_2_IO,
+		SNOR_OP_READ_1_1_4_IO };
+	u8 cmd;
+	int ret;
+
+	ret = spi_nor_check(nor);
+	if (ret)
+		return ret;
+
+	info = spi_nor_id(nor);
+	if (IS_ERR_OR_NULL(info))
+		return -ENOENT;
+
+	/*
+	 * Atmel, SST, Macronix, and others serial NOR tend to power up
+	 * with the software protection bits set
+	 */
+	if (JEDEC_MFR(info) == SNOR_MFR_ATMEL ||
+	    JEDEC_MFR(info) == SNOR_MFR_MACRONIX ||
+	    JEDEC_MFR(info) == SNOR_MFR_SST) {
+		write_enable(nor);
+		write_sr(nor, 0);
+	}
+
+	flash->name = info->name;
+
+	if (info->flags & USE_FSR)
+		nor->flags |= SNOR_F_USE_FSR;
+
+	if (info->flags & SST_WRITE)
+		nor->flags |= SNOR_F_SST_WRITE;
+
+	flash->write = spi_nor_write;
+	flash->erase = spi_nor_erase;
+	flash->read = spi_nor_read;
+#if defined(CONFIG_SPI_FLASH_SST)
+	if (nor->flags & SNOR_F_SST_WRITE) {
+		if (nor->mode & SNOR_WRITE_1_1_BYTE)
+			flash->write = sst_write_bp;
+		else
+			flash->write = sst_write_wp;
+	}
+#endif
+
+#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
+	/* NOR protection support for STmicro/Micron chips and similar */
+	if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||
+	    JEDEC_MFR(info) == SNOR_MFR_SST) {
+		nor->flash_lock = stm_lock;
+		nor->flash_unlock = stm_unlock;
+		nor->flash_is_locked = stm_is_locked;
+	}
+#endif
+
+	if (flash->flash_lock && flash->flash_unlock && flash->flash_is_locked) {
+		flash->flash_lock = spi_nor_lock;
+		flash->flash_unlock = spi_nor_unlock;
+		flash->flash_is_locked = spi_nor_is_locked;
+	}
+
+	/* Compute the flash size */
+	nor->shift = (nor->dual & SNOR_DUAL_PARALLEL) ? 1 : 0;
+	nor->page_size = info->page_size;
+	/*
+	 * The Spansion S25FL032P and S25FL064P have 256b pages, yet use the
+	 * 0x4d00 Extended JEDEC code. The rest of the Spansion flashes with
+	 * the 0x4d00 Extended JEDEC code have 512b pages. All of the others
+	 * have 256b pages.
+	 */
+	if (JEDEC_EXT(info) == 0x4d00) {
+		if ((JEDEC_ID(info) != 0x0215) &&
+		    (JEDEC_ID(info) != 0x0216))
+			nor->page_size = 512;
+	}
+	nor->page_size <<= nor->shift;
+	flash->sector_size = info->sector_size << nor->shift;
+	flash->size = flash->sector_size * info->n_sectors << nor->shift;
+#ifdef CONFIG_SF_DUAL_FLASH
+	if (nor->dual & SNOR_DUAL_STACKED)
+		flash->size <<= 1;
+#endif
+
+#ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
+	/* prefer "small sector" erase if possible */
+	if (info->flags & SECT_4K) {
+		nor->erase_opcode = SNOR_OP_BE_4K;
+		nor->erase_size = 4096 << nor->shift;
+	} else if (info->flags & SECT_4K_PMC) {
+		nor->erase_opcode = SNOR_OP_BE_4K_PMC;
+		nor->erase_size = 4096;
+	} else
+#endif
+	{
+		nor->erase_opcode = SNOR_OP_SE;
+		nor->erase_size = flash->sector_size;
+	}
+
+	/* Now erase size becomes valid sector size */
+	flash->sector_size = nor->erase_size;
+
+	/* Look for the fastest read cmd */
+	cmd = fls(info->flash_read & nor->read_mode);
+	if (cmd) {
+		cmd = flash_read_cmd[cmd - 1];
+		nor->read_opcode = cmd;
+	} else {
+		/* Go for default supported read cmd */
+		nor->read_opcode = SNOR_OP_READ_FAST;
+	}
+
+	/* Not require to look for fastest only two write cmds yet */
+	if (info->flags & SNOR_WRITE_QUAD && nor->mode & SNOR_WRITE_1_1_4)
+		nor->program_opcode = SNOR_OP_QPP;
+	else
+		/* Go for default supported write cmd */
+		nor->program_opcode = SNOR_OP_PP;
+
+	/* Set the quad enable bit - only for quad commands */
+	if ((nor->read_opcode == SNOR_OP_READ_1_1_4) ||
+	    (nor->read_opcode == SNOR_OP_READ_1_1_4_IO) ||
+	    (nor->program_opcode == SNOR_OP_QPP)) {
+		ret = set_quad_mode(nor, info);
+		if (ret) {
+			debug("spi-nor: quad mode not supported for %02x\n",
+			      JEDEC_MFR(info));
+			return ret;
+		}
+	}
+
+	/* read_dummy: dummy byte is determined based on the
+	 * dummy cycles of a particular command.
+	 * Fast commands - read_dummy = dummy_cycles/8
+	 * I/O commands- read_dummy = (dummy_cycles * no.of lines)/8
+	 * For I/O commands except cmd[0] everything goes on no.of lines
+	 * based on particular command but incase of fast commands except
+	 * data all go on single line irrespective of command.
+	 */
+	switch (nor->read_opcode) {
+	case SNOR_OP_READ_1_1_4_IO:
+		nor->read_dummy = 2;
+		break;
+	case SNOR_OP_READ:
+		nor->read_dummy = 0;
+		break;
+	default:
+		nor->read_dummy = 1;
+	}
+
+	/* Configure the BAR - discover bank cmds and read current bank */
+#ifdef CONFIG_SPI_FLASH_BAR
+	ret = spi_nor_read_bar(nor, info);
+	if (ret < 0)
+		return ret;
+#endif
+
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+	ret = spi_nor_decode_fdt(gd->fdt_blob, nor);
+	if (ret) {
+		debug("spi-nor: FDT decode error\n");
+		return -EINVAL;
+	}
+#endif
+
+#ifndef CONFIG_SPL_BUILD
+	printf("spi-nor: detected %s with page size ", flash->name);
+	print_size(nor->page_size, ", erase size ");
+	print_size(nor->erase_size, ", total ");
+	print_size(flash->size, "");
+	if (nor->memory_map)
+		printf(", mapped at %p", nor->memory_map);
+	puts("\n");
+#endif
+
+#ifndef CONFIG_SPI_FLASH_BAR
+	if (((nor->dual == SNOR_DUAL_SINGLE) &&
+	     (flash->size > SNOR_16MB_BOUN)) ||
+	     ((nor->dual > SNOR_DUAL_SINGLE) &&
+	     (flash->size > SNOR_16MB_BOUN << 1))) {
+		puts("spi-nor: Warning - Only lower 16MiB accessible,");
+		puts(" Full access #define CONFIG_SPI_FLASH_BAR\n");
+	}
+#endif
+
+	return ret;
+}
diff --git a/include/linux/err.h b/include/linux/err.h
index 5b3c8bc..1bba498 100644
--- a/include/linux/err.h
+++ b/include/linux/err.h
@@ -36,6 +36,11 @@ static inline long IS_ERR(const void *ptr)
 	return IS_ERR_VALUE((unsigned long)ptr);
 }
 
+static inline bool IS_ERR_OR_NULL(const void *ptr)
+{
+	return !ptr || IS_ERR_VALUE((unsigned long)ptr);
+}
+
 /**
  * ERR_CAST - Explicitly cast an error-valued pointer to another pointer type
  * @ptr: The pointer to cast.
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
new file mode 100644
index 0000000..4f2e8bc
--- /dev/null
+++ b/include/linux/mtd/spi-nor.h
@@ -0,0 +1,253 @@
+/*
+ * SPI NOR Core header file.
+ *
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __MTD_SPI_NOR_H
+#define __MTD_SPI_NOR_H
+
+#include <common.h>
+
+/*
+ * Manufacturer IDs
+ *
+ * The first byte returned from the flash after sending opcode SPINOR_OP_RDID.
+ * Sometimes these are the same as CFI IDs, but sometimes they aren't.
+ */
+#define SNOR_MFR_ATMEL		0x1f
+#define SNOR_MFR_MACRONIX	0xc2
+#define SNOR_MFR_MICRON	0x20	/* ST Micro <--> Micron */
+#define SNOR_MFR_SPANSION	0x01
+#define SNOR_MFR_SST		0xbf
+#define SNOR_MFR_WINBOND	0xef
+
+/**
+ * SPI NOR opcodes.
+ *
+ * Note on opcode nomenclature: some opcodes have a format like
+ * SNOR_OP_FUNCTION{4,}_x_y_z. The numbers x, y, and z stand for the number
+ * of I/O lines used for the opcode, address, and data (respectively). The
+ * FUNCTION has an optional suffix of '4', to represent an opcode which
+ * requires a 4-byte (32-bit) address.
+ */
+#define SNOR_OP_WRDI		0x04	/* Write disable */
+#define SNOR_OP_WREN		0x06	/* Write enable */
+#define SNOR_OP_RDSR		0x05	/* Read status register */
+#define SNOR_OP_WRSR		0x01	/* Write status register 1 byte */
+#define SNOR_OP_READ		0x03	/* Read data bytes (low frequency) */
+#define SNOR_OP_READ_FAST	0x0b	/* Read data bytes (high frequency) */
+#define SNOR_OP_READ_1_1_2	0x3b	/* Read data bytes (Dual SPI) */
+#define SNOR_OP_READ_1_1_2_IO	0xbb	/* Read data bytes (Dual IO SPI) */
+#define SNOR_OP_READ_1_1_4	0x6b	/* Read data bytes (Quad SPI) */
+#define SNOR_OP_READ_1_1_4_IO	0xeb	/* Read data bytes (Quad IO SPI) */
+#define SNOR_OP_BRWR		0x17	/* Bank register write */
+#define SNOR_OP_BRRD		0x16	/* Bank register read */
+#define SNOR_OP_WREAR		0xC5	/* Write extended address register */
+#define SNOR_OP_RDEAR		0xC8	/* Read extended address register */
+#define SNOR_OP_PP		0x02	/* Page program (up to 256 bytes) */
+#define SNOR_OP_QPP		0x32	/* Quad Page program */
+#define SNOR_OP_BE_4K		0x20	/* Erase 4KiB block */
+#define SNOR_OP_BE_4K_PMC	0xd7    /* Erase 4KiB block on PMC chips */
+#define SNOR_OP_BE_32K		0x52    /* Erase 32KiB block */
+#define SPINOR_OP_CHIP_ERASE	0xc7    /* Erase whole flash chip */
+#define SNOR_OP_SE		0xd8	/* Sector erase (usually 64KiB) */
+#define SNOR_OP_RDID		0x9f	/* Read JEDEC ID */
+#define SNOR_OP_RDCR		0x35	/* Read configuration register */
+#define SNOR_OP_RDFSR		0x70	/* Read flag status register */
+
+/* Used for SST flashes only. */
+#define SNOR_OP_BP		0x02	/* Byte program */
+#define SNOR_OP_AAI_WP		0xad	/* Auto addr increment word program */
+
+/* Used for Micron flashes only. */
+#define SPINOR_OP_RD_EVCR      0x65    /* Read EVCR register */
+#define SPINOR_OP_WD_EVCR      0x61    /* Write EVCR register */
+
+/* Status Register bits. */
+#define SR_WIP			BIT(0)	/* Write in progress */
+#define SR_WEL			BIT(1)	/* Write enable latch */
+
+/* meaning of other SR_* bits may differ between vendors */
+#define SR_BP0			BIT(2)	/* Block protect 0 */
+#define SR_BP1			BIT(3)	/* Block protect 1 */
+#define SR_BP2			BIT(4)	/* Block protect 2 */
+#define SR_SRWD		BIT(7)	/* SR write protect */
+
+#define SR_QUAD_EN_MX		BIT(6)	/* Macronix Quad I/O */
+
+/* Enhanced Volatile Configuration Register bits */
+#define EVCR_QUAD_EN_MICRON	BIT(7)	/* Micron Quad I/O */
+
+/* Flag Status Register bits */
+#define FSR_READY		BIT(7)
+
+/* Configuration Register bits. */
+#define CR_QUAD_EN_SPAN	BIT(1) /* Spansion/Winbond Quad I/O */
+
+/* Flash timeout values */
+#define SNOR_READY_WAIT_PROG	(2 * CONFIG_SYS_HZ)
+#define SNOR_READY_WAIT_ERASE	(5 * CONFIG_SYS_HZ)
+#define SNOR_MAX_CMD_SIZE	4	/* opcode + 3-byte address */
+#define SNOR_16MB_BOUN		0x1000000
+
+enum snor_dual {
+	SNOR_DUAL_SINGLE	= 0,
+	SNOR_DUAL_STACKED	= BIT(0),
+	SNOR_DUAL_PARALLEL	= BIT(1),
+};
+
+enum snor_option_flags {
+	SNOR_F_SST_WRITE	= BIT(0),
+	SNOR_F_USE_FSR		= BIT(1),
+	SNOR_F_U_PAGE		= BIT(1),
+};
+
+enum write_mode {
+	SNOR_WRITE_1_1_BYTE	= BIT(0),
+	SNOR_WRITE_1_1_4	= BIT(1),
+};
+
+enum read_mode {
+	SNOR_READ		= BIT(0),
+	SNOR_READ_FAST		= BIT(1),
+	SNOR_READ_1_1_2		= BIT(2),
+	SNOR_READ_1_1_4		= BIT(3),
+	SNOR_READ_1_1_2_IO	= BIT(4),
+	SNOR_READ_1_1_4_IO	= BIT(5),
+};
+
+#define SNOR_READ_BASE		(SNOR_READ | SNOR_READ_FAST)
+#define SNOR_READ_FULL		(SNOR_READ_BASE | SNOR_READ_1_1_2 | \
+				 SNOR_READ_1_1_4 | SNOR_READ_1_1_2_IO | \
+				 SNOR_READ_1_1_4_IO)
+
+#define JEDEC_MFR(info)	((info)->id[0])
+#define JEDEC_ID(info)		(((info)->id[1]) << 8 | ((info)->id[2]))
+#define JEDEC_EXT(info)	(((info)->id[3]) << 8 | ((info)->id[4]))
+#define SPI_NOR_MAX_ID_LEN	6
+
+struct spi_nor_info {
+	char		*name;
+
+	/*
+	 * This array stores the ID bytes.
+	 * The first three bytes are the JEDIC ID.
+	 * JEDEC ID zero means "no ID" (mostly older chips).
+	 */
+	u8		id[SPI_NOR_MAX_ID_LEN];
+	u8		id_len;
+
+	/* The size listed here is what works with SNOR_OP_SE, which isn't
+	 * necessarily called a "sector" by the vendor.
+	 */
+	unsigned	sector_size;
+	u16		n_sectors;
+
+	u16		page_size;
+	u16		addr_width;
+
+	/* Enum list for read modes */
+	enum read_mode	flash_read;
+
+	u16		flags;
+#define SECT_4K		BIT(0)	/* SNOR_OP_BE_4K works uniformly */
+#define SECT_32K		BIT(1)	/* SNOR_OP_BE_32K works uniformly */
+#define SPI_NOR_NO_ERASE	BIT(2)	/* No erase command needed */
+#define SST_WRITE		BIT(3)	/* use SST byte programming */
+#define SPI_NOR_NO_FR		BIT(4)	/* Can't do fastread */
+#define SECT_4K_PMC		BIT(5)	/* SNOR_OP_BE_4K_PMC works uniformly */
+#define USE_FSR		BIT(6)	/* use flag status register */
+#define SNOR_WRITE_QUAD	BIT(7)	/* Flash supports Quad Read */
+};
+
+extern const struct spi_nor_info spi_nor_ids[];
+
+/**
+ * struct spi_nor - Structure for defining a the SPI NOR layer
+ *
+ * @mtd:		point to a mtd_info structure
+ * @name:		name of the SPI NOR device
+ * @page_size:		the page size of the SPI NOR
+ * @erase_opcode:	the opcode for erasing a sector
+ * @read_opcode:	the read opcode
+ * @read_dummy:	the dummy bytes needed by the read operation
+ * @program_opcode:	the program opcode
+ * @bar_read_opcode:	the read opcode for bank/extended address registers
+ * @bar_program_opcode: the program opcode for bank/extended address registers
+ * @bank_curr:		indicates current flash bank
+ * @dual:		indicates dual flash memories - dual stacked, parallel
+ * @shift:		flash shift useful in dual parallel
+ * @max_write_size:	If non-zero, the maximum number of bytes which can
+ *			be written at once, excluding command bytes.
+ * @flags:		flag options for the current SPI-NOR (SNOR_F_*)
+ * @mode:		write mode or any other mode bits.
+ * @read_mode:		read mode.
+ * @cmd_buf:		used by the write_reg
+ * @read_reg:		[DRIVER-SPECIFIC] read out the register
+ * @write_reg:		[DRIVER-SPECIFIC] write data to the register
+ * @read_mmap:		[DRIVER-SPECIFIC] read data from the mmapped SPI NOR
+ * @read:		[DRIVER-SPECIFIC] read data from the SPI NOR
+ * @write:		[DRIVER-SPECIFIC] write data to the SPI NOR
+ * @flash_lock:	[FLASH-SPECIFIC] lock a region of the SPI NOR
+ * @flash_unlock:	[FLASH-SPECIFIC] unlock a region of the SPI NOR
+ * @flash_is_locked:	[FLASH-SPECIFIC] check if a region of the SPI NOR is
+ * @memory_map:	address of read-only SPI NOR access
+ * @priv:		the private data
+ */
+struct spi_nor {
+	struct mtd_info		*mtd;
+	const char		*name;
+	u32			page_size;
+	u8			erase_opcode;
+	u8			read_opcode;
+	u8			read_dummy;
+	u8			program_opcode;
+#ifdef CONFIG_SPI_FLASH_BAR
+	u8			bar_read_opcode;
+	u8			bar_program_opcode;
+	u8			bank_curr;
+#endif
+	u8			dual;
+	u8			shift;
+	u32			max_write_size;
+	u32			flags;
+	u8			mode;
+	u8			read_mode;
+	u8			cmd_buf[SNOR_MAX_CMD_SIZE];
+
+	int (*read_reg)(struct spi_nor *nor, u8 cmd, u8 *val, int len);
+	int (*write_reg)(struct spi_nor *nor, u8 cmd, u8 *data, int len);
+
+	int (*read_mmap)(struct spi_nor *nor, void *data, void *offset,
+			size_t len);
+	int (*read)(struct spi_nor *nor, const u8 *opcode, size_t cmd_len,
+			void *data, size_t data_len);
+	int (*write)(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
+			const void *data, size_t data_len);
+
+	int (*flash_lock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
+	int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
+	int (*flash_is_locked)(struct spi_nor *nor, loff_t ofs, uint64_t len);
+
+	void *memory_map;
+	void *priv;
+};
+
+/**
+ * spi_nor_scan() - scan the SPI NOR
+ * @nor:	the spi_nor structure
+ *
+ * The drivers can use this fuction to scan the SPI NOR.
+ * In the scanning, it will try to get all the necessary information to
+ * fill the mtd_info{} and the spi_nor{}.
+ *
+ * The chip type name can be provided through the @name parameter.
+ *
+ * Return: 0 for success, others for failure.
+ */
+int spi_nor_scan(struct spi_nor *nor);
+
+#endif /* __MTD_SPI_NOR_H */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 04/87] doc: device-tree-bindings: jedec, spi-nor
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 02/87] mtd: Add Kconfig entry for MTD_M25P80 Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 03/87] mtd: Add SPI-NOR core support Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 05/87] mtd: spi-nor: Add Kconfig entry for MTD_SPI_NOR Jagan Teki
                   ` (82 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since m25p80 follows similar naming convention as Linux,
hence added jedec, spi-nor device tree bindings from Linux.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 doc/device-tree-bindings/mtd/jedec,spi-nor.txt | 78 ++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)
 create mode 100644 doc/device-tree-bindings/mtd/jedec,spi-nor.txt

diff --git a/doc/device-tree-bindings/mtd/jedec,spi-nor.txt b/doc/device-tree-bindings/mtd/jedec,spi-nor.txt
new file mode 100644
index 0000000..2c91c03
--- /dev/null
+++ b/doc/device-tree-bindings/mtd/jedec,spi-nor.txt
@@ -0,0 +1,78 @@
+* SPI NOR flash: ST M25Pxx (and similar) serial flash chips
+
+Required properties:
+- #address-cells, #size-cells : Must be present if the device has sub-nodes
+  representing partitions.
+- compatible : May include a device-specific string consisting of the
+               manufacturer and name of the chip. A list of supported chip
+               names follows.
+               Must also include "jedec,spi-nor" for any SPI NOR flash that can
+               be identified by the JEDEC READ ID opcode (0x9F).
+
+               Supported chip names:
+                 at25df321a
+                 at25df641
+                 at26df081a
+                 mr25h256
+                 mx25l4005a
+                 mx25l1606e
+                 mx25l6405d
+                 mx25l12805d
+                 mx25l25635e
+                 n25q064
+                 n25q128a11
+                 n25q128a13
+                 n25q512a
+                 s25fl256s1
+                 s25fl512s
+                 s25sl12801
+                 s25fl008k
+                 s25fl064k
+                 sst25vf040b
+                 m25p40
+                 m25p80
+                 m25p16
+                 m25p32
+                 m25p64
+                 m25p128
+                 w25x80
+                 w25x32
+                 w25q32
+                 w25q32dw
+                 w25q80bl
+                 w25q128
+                 w25q256
+
+               The following chip names have been used historically to
+               designate quirky versions of flash chips that do not support the
+               JEDEC READ ID opcode (0x9F):
+                 m25p05-nonjedec
+                 m25p10-nonjedec
+                 m25p20-nonjedec
+                 m25p40-nonjedec
+                 m25p80-nonjedec
+                 m25p16-nonjedec
+                 m25p32-nonjedec
+                 m25p64-nonjedec
+                 m25p128-nonjedec
+
+- reg : Chip-Select number
+- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at
+
+Optional properties:
+- m25p,fast-read : Use the "fast read" opcode to read data from the chip instead
+                   of the usual "read" opcode. This opcode is not supported by
+                   all chips and support for it can not be detected at runtime.
+                   Refer to your chips' datasheet to check if this is supported
+                   by your chip.
+
+Example:
+
+	flash: m25p80 at 0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spansion,m25p80", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <40000000>;
+		m25p,fast-read;
+	};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 05/87] mtd: spi-nor: Add Kconfig entry for MTD_SPI_NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (2 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 04/87] doc: device-tree-bindings: jedec, spi-nor Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 06/87] mtd: spi-nor: Add kconfig for MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
                   ` (81 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added kconfig entry for MTD_SPI_NOR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index d32486c..f0ea9f9 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -1,3 +1,19 @@
+menuconfig MTD_SPI_NOR
+	tristate "SPI-NOR device support"
+	help
+	  This is the core SPI NOR framework which can be used to interact SPI-NOR
+	  to SPI driver interface layer and the SPI-NOR controller driver.
+
+	  Unlike normal/generic spi controllers, they are few controllers which are
+	  exclusively used to connect SPI-NOR devices, called SPI-NOR controllers.
+	  So technically these controllers shouldn't reside at drivers/spi as these
+	  may effect the generic SPI bus functionalities, so this SPI-NOR core acts
+	  as a common core framework between the generic SPI controller drivers vs
+	  SPI-NOR controller drivers for SPI-NOR device access. Note that from SPI-NOR
+	  core to SPI drivers there should be an interface layer.
+
+if MTD_SPI_NOR
+
 config MTD_M25P80
 	tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)"
 	help
@@ -13,3 +29,5 @@ config MTD_M25P80
 	  Set up your spi devices with the right board-specific platform data,
 	  if you want to specify device partitioning or to use a device which
 	  doesn't support the JEDEC ID instruction.
+
+endif # MTD_SPI_NOR
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 06/87] mtd: spi-nor: Add kconfig for MTD_SPI_NOR_USE_4K_SECTORS
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (3 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 05/87] mtd: spi-nor: Add Kconfig entry for MTD_SPI_NOR Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 07/87] mtd: spi-nor: Add MTD support Jagan Teki
                   ` (80 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added kconfig entry for MTD_SPI_NOR_USE_4K_SECTORS.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index f0ea9f9..374cdcb 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -30,4 +30,18 @@ config MTD_M25P80
 	  if you want to specify device partitioning or to use a device which
 	  doesn't support the JEDEC ID instruction.
 
+config MTD_SPI_NOR_USE_4K_SECTORS
+	bool "Use small 4096 B erase sectors"
+	default y
+	help
+	  Many flash memories support erasing small (4096 B) sectors. Depending
+	  on the usage this feature may provide performance gain in comparison
+	  to erasing whole blocks (32/64 KiB).
+	  Changing a small part of the flash's contents is usually faster with
+	  small sectors. On the other hand erasing should be faster when using
+	  64 KiB block instead of 16 ? 4 KiB sectors.
+
+	  Please note that some tools/drivers/filesystems may not work with
+	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
+
 endif # MTD_SPI_NOR
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 07/87] mtd: spi-nor: Add MTD support
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (4 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 06/87] mtd: spi-nor: Add kconfig for MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 08/87] mtd: spi-nor: Add spi_nor support in m25p80 Jagan Teki
                   ` (79 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

This patch adds mtd_info support to spi-nor core instead
of using legacy spi_flash{}.

SPI-NOR with MTD:

	------------------------------
		cmd_sf.c
	------------------------------
		MTD core
	------------------------------
		spi-nor.c
	-------------------------------
	m25p80.c	spi nor drivers
	-------------------------------
	spi-uclass	SPI NOR chip
	-------------------------------
	spi drivers
	-------------------------------
	SPI NOR chip
	-------------------------------

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 275 +++++++++++++++++++++++++-----------------
 1 file changed, 166 insertions(+), 109 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index f142ae4..b867ce9 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -7,6 +7,7 @@
  */
 
 #include <common.h>
+#include <div64.h>
 #include <dm.h>
 #include <errno.h>
 #include <malloc.h>
@@ -14,6 +15,7 @@
 
 #include <linux/math64.h>
 #include <linux/log2.h>
+#include <linux/mtd/mtd.h>
 #include <linux/mtd/spi-nor.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -209,10 +211,11 @@ bar_end:
 
 static int spi_nor_read_bar(struct spi_nor *nor, const struct spi_nor_info *info)
 {
+	struct mtd_info *mtd = nor->mtd;
 	u8 curr_bank = 0;
 	int ret;
 
-	if (flash->size <= SNOR_16MB_BOUN)
+	if (mtd->size <= SNOR_16MB_BOUN)
 		goto bar_end;
 
 	switch (JEDEC_MFR(info)) {
@@ -240,12 +243,12 @@ bar_end:
 #ifdef CONFIG_SF_DUAL_FLASH
 static void spi_nor_dual(struct spi_nor *nor, u32 *addr)
 {
-	struct spi_flash *flash = nor->flash;
+	struct mtd_info *mtd = nor->mtd;
 
 	switch (nor->dual) {
 	case SNOR_DUAL_STACKED:
-		if (*addr >= (flash->size >> 1)) {
-			*addr -= flash->size >> 1;
+		if (*addr >= (mtd->size >> 1)) {
+			*addr -= mtd->size >> 1;
 			nor->flags |= SNOR_F_U_PAGE;
 		} else {
 			nor->flags &= ~SNOR_F_U_PAGE;
@@ -263,8 +266,9 @@ static void spi_nor_dual(struct spi_nor *nor, u32 *addr)
 
 #if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
 static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs,
-				 u32 *len)
+				 uint64_t *len)
 {
+	struct mtd_info *mtd = nor->mtd;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	int shift = ffs(mask) - 1;
 	int pow;
@@ -275,18 +279,19 @@ static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs,
 		*len = 0;
 	} else {
 		pow = ((sr & mask) ^ mask) >> shift;
-		*len = flash->size >> pow;
-		*ofs = flash->size - *len;
+		*len = mtd->size >> pow;
+		*ofs = mtd->size - *len;
 	}
 }
 
 /*
  * Return 1 if the entire region is locked, 0 otherwise
  */
-static int stm_is_locked_sr(struct spi_nor *nor, u32 ofs, u32 len, u8 sr)
+static int stm_is_locked_sr(struct spi_nor *nor, loff_t ofs, uint64_t len,
+			    u8 sr)
 {
 	loff_t lock_offs;
-	u32 lock_len;
+	uint64_t lock_len;
 
 	stm_get_locked_range(nor, sr, &lock_offs, &lock_len);
 
@@ -294,24 +299,6 @@ static int stm_is_locked_sr(struct spi_nor *nor, u32 ofs, u32 len, u8 sr)
 }
 
 /*
- * Check if a region of the flash is (completely) locked. See stm_lock() for
- * more info.
- *
- * Returns 1 if entire region is locked, 0 if any portion is unlocked, and
- * negative on errors.
- */
-static int stm_is_locked(struct spi_nor *nor, u32 ofs, size_t len)
-{
-	int status;
-
-	status = read_sr(nor);
-	if (status < 0)
-		return status;
-
-	return stm_is_locked_sr(nor, ofs, len, status);
-}
-
-/*
  * Lock a region of the flash. Compatible with ST Micro and similar flash.
  * Supports only the block protection bits BP{0,1,2} in the status register
  * (SR). Does not support these features found in newer SR bitfields:
@@ -334,9 +321,10 @@ static int stm_is_locked(struct spi_nor *nor, u32 ofs, size_t len)
  *
  * Returns negative on errors, 0 on success.
  */
-static int stm_lock(struct spi_nor *nor, u32 ofs, size_t len)
+static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len)
 {
-	u8 status_old, status_new;
+	struct mtd_info *mtd = nor->mtd;
+	int status_old, status_new;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	u8 shift = ffs(mask) - 1, pow, val;
 
@@ -345,12 +333,12 @@ static int stm_lock(struct spi_nor *nor, u32 ofs, size_t len)
 		return status_old;
 
 	/* SPI NOR always locks to the end */
-	if (ofs + len != flash->size) {
+	if (ofs + len != mtd->size) {
 		/* Does combined region extend to end? */
-		if (!stm_is_locked_sr(nor, ofs + len, flash->size - ofs - len,
+		if (!stm_is_locked_sr(nor, ofs + len, mtd->size - ofs - len,
 				      status_old))
 			return -EINVAL;
-		len = flash->size - ofs;
+		len = mtd->size - ofs;
 	}
 
 	/*
@@ -362,11 +350,10 @@ static int stm_lock(struct spi_nor *nor, u32 ofs, size_t len)
 	 *
 	 *   pow = ceil(log2(size / len)) = log2(size) - floor(log2(len))
 	 */
-	pow = ilog2(flash->size) - ilog2(len);
+	pow = ilog2(mtd->size) - ilog2(len);
 	val = mask - (pow << shift);
 	if (val & ~mask)
 		return -EINVAL;
-
 	/* Don't "lock" with no region! */
 	if (!(val & mask))
 		return -EINVAL;
@@ -386,20 +373,22 @@ static int stm_lock(struct spi_nor *nor, u32 ofs, size_t len)
  *
  * Returns negative on errors, 0 on success.
  */
-static int stm_unlock(struct spi_nor *nor, u32 ofs, size_t len)
+static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len)
 {
-	uint8_t status_old, status_new;
+	struct mtd_info *mtd = nor->mtd;
+	int status_old, status_new;
 	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
 	u8 shift = ffs(mask) - 1, pow, val;
 
 	status_old = read_sr(nor);
-	if (status_old  < 0)
+	if (status_old < 0)
 		return status_old;
 
 	/* Cannot unlock; would unlock larger region than requested */
-	if (stm_is_locked_sr(nor, status_old, ofs - flash->erase_size,
-			     nor->erase_size))
+	if (stm_is_locked_sr(nor, status_old, ofs - mtd->erasesize,
+			     mtd->erasesize))
 		return -EINVAL;
+
 	/*
 	 * Need largest pow such that:
 	 *
@@ -409,8 +398,8 @@ static int stm_unlock(struct spi_nor *nor, u32 ofs, size_t len)
 	 *
 	 *   pow = floor(log2(size / len)) = log2(size) - ceil(log2(len))
 	 */
-	pow = ilog2(flash->size) - order_base_2(flash->size - (ofs + len));
-	if (ofs + len == flash->size) {
+	pow = ilog2(mtd->size) - order_base_2(mtd->size - (ofs + len));
+	if (ofs + len == mtd->size) {
 		val = 0; /* fully unlocked */
 	} else {
 		val = mask - (pow << shift);
@@ -428,8 +417,47 @@ static int stm_unlock(struct spi_nor *nor, u32 ofs, size_t len)
 	write_enable(nor);
 	return write_sr(nor, status_new);
 }
+
+/*
+ * Check if a region of the flash is (completely) locked. See stm_lock() for
+ * more info.
+ *
+ * Returns 1 if entire region is locked, 0 if any portion is unlocked, and
+ * negative on errors.
+ */
+static int stm_is_locked(struct spi_nor *nor, loff_t ofs, uint64_t len)
+{
+	int status;
+
+	status = read_sr(nor);
+	if (status < 0)
+		return status;
+
+	return stm_is_locked_sr(nor, ofs, len, status);
+}
 #endif
 
+static int spi_nor_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
+{
+	struct spi_nor *nor = mtd->priv;
+
+	return nor->flash_lock(nor, ofs, len);
+}
+
+static int spi_nor_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
+{
+	struct spi_nor *nor = mtd->priv;
+
+	return nor->flash_unlock(nor, ofs, len);
+}
+
+static int spi_nor_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)
+{
+	struct spi_nor *nor = mtd->priv;
+
+	return nor->flash_is_locked(nor, ofs, len);
+}
+
 static const struct spi_nor_info *spi_nor_id(struct spi_nor *nor)
 {
 	int				tmp;
@@ -455,30 +483,32 @@ static const struct spi_nor_info *spi_nor_id(struct spi_nor *nor)
 	return ERR_PTR(-ENODEV);
 }
 
-static int spi_nor_erase(struct spi_flash *flash, u32 offset, size_t len)
+static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
-	struct spi_nor *nor = flash->nor;
-	u32 erase_size, erase_addr;
+	struct spi_nor *nor = mtd->priv;
+	u32 addr, len, erase_addr;
 	u8 cmd[SNOR_MAX_CMD_SIZE];
+	uint32_t rem;
 	int ret = -1;
 
-	erase_size = nor->erase_size;
-	if (offset % erase_size || len % erase_size) {
-		debug("spi-nor: Erase offset/length not multiple of erase size\n");
-		return -1;
-	}
+	div_u64_rem(instr->len, mtd->erasesize, &rem);
+	if (rem)
+		return -EINVAL;
 
-	if (flash->flash_is_locked) {
-		if (flash->flash_is_locked(flash, offset, len) > 0) {
+	addr = instr->addr;
+	len = instr->len;
+
+	if (mtd->_is_locked) {
+		if (mtd->_is_locked(mtd, addr, len) > 0) {
 			printf("offset 0x%x is protected and cannot be erased\n",
-			       offset);
+			       addr);
 			return -EINVAL;
 		}
 	}
 
-	cmd[0] = flash->erase_opcode;
+	cmd[0] = nor->erase_opcode;
 	while (len) {
-		erase_addr = offset;
+		erase_addr = addr;
 
 #ifdef CONFIG_SF_DUAL_FLASH
 		if (nor->dual > SNOR_DUAL_SINGLE)
@@ -498,39 +528,47 @@ static int spi_nor_erase(struct spi_flash *flash, u32 offset, size_t len)
 
 		ret = nor->write(nor, cmd, sizeof(cmd), NULL, 0);
 		if (ret < 0)
-			break;
+			goto erase_err;
 
 		ret = spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_ERASE);
 		if (ret < 0)
-			return ret;
+			goto erase_err;
 
-		offset += erase_size;
-		len -= erase_size;
+		addr += mtd->erasesize;
+		len -= mtd->erasesize;
 	}
 
+	write_disable(nor);
+
+	instr->state = MTD_ERASE_DONE;
+	mtd_erase_callback(instr);
+
+	return ret;
+
+erase_err:
+	instr->state = MTD_ERASE_FAILED;
 	return ret;
 }
 
-int spi_nor_write(struct spi_flash *flash, u32 offset,
-		  size_t len, const void *buf)
+static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
+			 size_t *retlen, const u_char *buf)
 {
-	struct spi_nor *nor = flash->nor;
-	unsigned long byte_addr, page_size;
-	u32 write_addr;
+	struct spi_nor *nor = mtd->priv;
+	u32 byte_addr, page_size, write_addr;
 	size_t chunk_len, actual;
 	u8 cmd[SNOR_MAX_CMD_SIZE];
 	int ret = -1;
 
-	page_size = nor->page_size;
-
-	if (flash->flash_is_locked) {
-		if (flash->flash_is_locked(flash, offset, len) > 0) {
-			printf("offset 0x%x is protected and cannot be written\n",
+	if (mtd->_is_locked) {
+		if (mtd->_is_locked(mtd, offset, len) > 0) {
+			printf("offset 0x%llx is protected and cannot be written\n",
 			       offset);
 			return -EINVAL;
 		}
 	}
 
+	page_size = nor->page_size;
+
 	cmd[0] = nor->program_opcode;
 	for (actual = 0; actual < len; actual += chunk_len) {
 		write_addr = offset;
@@ -568,14 +606,16 @@ int spi_nor_write(struct spi_flash *flash, u32 offset,
 			return ret;
 
 		offset += chunk_len;
+		*retlen += chunk_len;
 	}
 
 	return ret;
 }
 
-int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
+static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
+			size_t *retlen, u_char *buf)
 {
-	struct spi_nor *nor = flash->nor;
+	struct spi_nor *nor = mtd->priv;
 	u32 remain_len, read_len, read_addr;
 	u8 *cmd, cmdsz;
 	int bank_sel = 0;
@@ -583,7 +623,7 @@ int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
 
 	/* Handle memory-mapped SPI */
 	if (nor->memory_map) {
-		ret = nor->read_mmap(nor, data, nor->memory_map + offset, len);
+		ret = nor->read_mmap(nor, buf, nor->memory_map + from, len);
 		if (ret) {
 			debug("spi-nor: mmap read failed\n");
 			return ret;
@@ -601,7 +641,7 @@ int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
 
 	cmd[0] = nor->read_opcode;
 	while (len) {
-		read_addr = offset;
+		read_addr = from;
 
 #ifdef CONFIG_SF_DUAL_FLASH
 		if (nor->dual > SNOR_DUAL_SINGLE)
@@ -614,7 +654,7 @@ int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
 		bank_sel = nor->bank_curr;
 #endif
 		remain_len = ((SNOR_16MB_BOUN << nor->shift) *
-				(bank_sel + 1)) - offset;
+				(bank_sel + 1)) - from;
 		if (len < remain_len)
 			read_len = len;
 		else
@@ -622,13 +662,14 @@ int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
 
 		spi_nor_addr(read_addr, cmd);
 
-		ret = nor->read(nor, cmd, cmdsz, data, read_len);
+		ret = nor->read(nor, cmd, cmdsz, buf, read_len);
 		if (ret < 0)
 			break;
 
-		offset += read_len;
+		from += read_len;
 		len -= read_len;
-		data += read_len;
+		buf += read_len;
+		*retlen += read_len;
 	}
 
 	free(cmd);
@@ -636,7 +677,8 @@ int spi_nor_read(struct spi_flash *flash, u32 offset, size_t len, void *data)
 }
 
 #ifdef CONFIG_SPI_FLASH_SST
-static int sst_byte_write(struct spi_nor *nor, u32 offset, const void *buf)
+static int sst_byte_write(struct spi_nor *nor, u32 offset,
+			  const void *buf, size_t *retlen)
 {
 	int ret;
 	u8 cmd[4] = {
@@ -657,12 +699,15 @@ static int sst_byte_write(struct spi_nor *nor, u32 offset, const void *buf)
 	if (ret)
 		return ret;
 
+	*retlen += 1;
+
 	return spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
 }
 
-int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
+static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
+			size_t *retlen, const u_char *buf)
 {
-	struct spi_nor *nor = flash->nor;
+	struct spi_nor *nor = mtd->priv;
 	size_t actual, cmd_len;
 	int ret;
 	u8 cmd[4];
@@ -670,7 +715,7 @@ int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
 	/* If the data is not word aligned, write out leading single byte */
 	actual = offset % 2;
 	if (actual) {
-		ret = sst_byte_write(nor, offset, buf);
+		ret = sst_byte_write(nor, offset, buf, retlen);
 		if (ret)
 			goto done;
 	}
@@ -687,7 +732,7 @@ int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
 	cmd[3] = offset;
 
 	for (; actual < len - 1; actual += 2) {
-		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06x }\n",
+		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06llx }\n",
 		      buf + actual, cmd[0], offset);
 
 		ret = nor->write(nor, cmd, cmd_len, buf + actual, 2);
@@ -702,6 +747,7 @@ int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
 
 		cmd_len = 1;
 		offset += 2;
+		*retlen += 2;
 	}
 
 	if (!ret)
@@ -709,20 +755,21 @@ int sst_write_wp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
 
 	/* If there is a single trailing byte, write it out */
 	if (!ret && actual != len)
-		ret = sst_byte_write(nor, offset, buf + actual);
+		ret = sst_byte_write(nor, offset, buf + actual, retlen);
 
  done:
 	return ret;
 }
 
-int sst_write_bp(struct spi_nor *nor, u32 offset, size_t len, const void *buf)
+static int sst_write_bp(struct mtd_info *mtd, loff_t offset, size_t len,
+			size_t *retlen, const u_char *buf)
 {
-	struct spi_nor *nor = flash->nor;
+	struct spi_nor *nor = mtd->priv;
 	size_t actual;
 	int ret;
 
 	for (actual = 0; actual < len; actual++) {
-		ret = sst_byte_write(nor, offset, buf + actual);
+		ret = sst_byte_write(nor, offset, buf + actual, retlen);
 		if (ret) {
 			debug("spi-nor: sst byte program failed\n");
 			break;
@@ -853,6 +900,7 @@ static int set_quad_mode(struct spi_nor *nor, const struct spi_nor_info *info)
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 int spi_nor_decode_fdt(const void *blob, struct spi_nor *nor)
 {
+	struct mtd_info *mtd = nor->mtd;
 	fdt_addr_t addr;
 	fdt_size_t size;
 	int node;
@@ -868,7 +916,7 @@ int spi_nor_decode_fdt(const void *blob, struct spi_nor *nor)
 		return 0;
 	}
 
-	if (flash->size != size) {
+	if (mtd->size != size) {
 		debug("%s: Memory map must cover entire device\n", __func__);
 		return -1;
 	}
@@ -891,6 +939,7 @@ static int spi_nor_check(struct spi_nor *nor)
 
 int spi_nor_scan(struct spi_nor *nor)
 {
+	struct mtd_info *mtd = nor->mtd;
 	const struct spi_nor_info *info = NULL;
 	static u8 flash_read_cmd[] = {
 		SNOR_OP_READ,
@@ -921,7 +970,13 @@ int spi_nor_scan(struct spi_nor *nor)
 		write_sr(nor, 0);
 	}
 
-	flash->name = info->name;
+	mtd->name = info->name;
+	mtd->priv = nor;
+	mtd->type = MTD_NORFLASH;
+	mtd->writesize = 1;
+	mtd->flags = MTD_CAP_NORFLASH;
+	mtd->_erase = spi_nor_erase;
+	mtd->_read = spi_nor_read;
 
 	if (info->flags & USE_FSR)
 		nor->flags |= SNOR_F_USE_FSR;
@@ -929,15 +984,13 @@ int spi_nor_scan(struct spi_nor *nor)
 	if (info->flags & SST_WRITE)
 		nor->flags |= SNOR_F_SST_WRITE;
 
-	flash->write = spi_nor_write;
-	flash->erase = spi_nor_erase;
-	flash->read = spi_nor_read;
+	mtd->_write = spi_nor_write;
 #if defined(CONFIG_SPI_FLASH_SST)
 	if (nor->flags & SNOR_F_SST_WRITE) {
 		if (nor->mode & SNOR_WRITE_1_1_BYTE)
-			flash->write = sst_write_bp;
+			mtd->_write = sst_write_bp;
 		else
-			flash->write = sst_write_wp;
+			mtd->_write = sst_write_wp;
 	}
 #endif
 
@@ -951,10 +1004,10 @@ int spi_nor_scan(struct spi_nor *nor)
 	}
 #endif
 
-	if (flash->flash_lock && flash->flash_unlock && flash->flash_is_locked) {
-		flash->flash_lock = spi_nor_lock;
-		flash->flash_unlock = spi_nor_unlock;
-		flash->flash_is_locked = spi_nor_is_locked;
+	if (nor->flash_lock && nor->flash_unlock && nor->flash_is_locked) {
+		mtd->_lock = spi_nor_lock;
+		mtd->_unlock = spi_nor_unlock;
+		mtd->_is_locked = spi_nor_is_locked;
 	}
 
 	/* Compute the flash size */
@@ -972,30 +1025,30 @@ int spi_nor_scan(struct spi_nor *nor)
 			nor->page_size = 512;
 	}
 	nor->page_size <<= nor->shift;
-	flash->sector_size = info->sector_size << nor->shift;
-	flash->size = flash->sector_size * info->n_sectors << nor->shift;
+	mtd->writebufsize = nor->page_size;
+	mtd->size = (info->sector_size * info->n_sectors) << nor->shift;
 #ifdef CONFIG_SF_DUAL_FLASH
 	if (nor->dual & SNOR_DUAL_STACKED)
-		flash->size <<= 1;
+		mtd->size <<= 1;
 #endif
 
 #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
 	/* prefer "small sector" erase if possible */
 	if (info->flags & SECT_4K) {
 		nor->erase_opcode = SNOR_OP_BE_4K;
-		nor->erase_size = 4096 << nor->shift;
+		mtd->erasesize = 4096 << nor->shift;
 	} else if (info->flags & SECT_4K_PMC) {
 		nor->erase_opcode = SNOR_OP_BE_4K_PMC;
-		nor->erase_size = 4096;
+		mtd->erasesize = 4096;
 	} else
 #endif
 	{
 		nor->erase_opcode = SNOR_OP_SE;
-		nor->erase_size = flash->sector_size;
+		mtd->erasesize = info->sector_size << nor->shift;
 	}
 
-	/* Now erase size becomes valid sector size */
-	flash->sector_size = nor->erase_size;
+	if (info->flags & SPI_NOR_NO_ERASE)
+		mtd->flags |= MTD_NO_ERASE;
 
 	/* Look for the fastest read cmd */
 	cmd = fls(info->flash_read & nor->read_mode);
@@ -1007,6 +1060,10 @@ int spi_nor_scan(struct spi_nor *nor)
 		nor->read_opcode = SNOR_OP_READ_FAST;
 	}
 
+	/* Some devices cannot do fast-read */
+	if (info->flags & SPI_NOR_NO_FR)
+		nor->read_opcode = SNOR_OP_READ;
+
 	/* Not require to look for fastest only two write cmds yet */
 	if (info->flags & SNOR_WRITE_QUAD && nor->mode & SNOR_WRITE_1_1_4)
 		nor->program_opcode = SNOR_OP_QPP;
@@ -1061,10 +1118,10 @@ int spi_nor_scan(struct spi_nor *nor)
 #endif
 
 #ifndef CONFIG_SPL_BUILD
-	printf("spi-nor: detected %s with page size ", flash->name);
+	printf("spi-nor: detected %s with page size ", mtd->name);
 	print_size(nor->page_size, ", erase size ");
-	print_size(nor->erase_size, ", total ");
-	print_size(flash->size, "");
+	print_size(mtd->erasesize, ", total ");
+	print_size(mtd->size, "");
 	if (nor->memory_map)
 		printf(", mapped at %p", nor->memory_map);
 	puts("\n");
@@ -1072,9 +1129,9 @@ int spi_nor_scan(struct spi_nor *nor)
 
 #ifndef CONFIG_SPI_FLASH_BAR
 	if (((nor->dual == SNOR_DUAL_SINGLE) &&
-	     (flash->size > SNOR_16MB_BOUN)) ||
+	     (mtd->size > SNOR_16MB_BOUN)) ||
 	     ((nor->dual > SNOR_DUAL_SINGLE) &&
-	     (flash->size > SNOR_16MB_BOUN << 1))) {
+	     (mtd->size > SNOR_16MB_BOUN << 1))) {
 		puts("spi-nor: Warning - Only lower 16MiB accessible,");
 		puts(" Full access #define CONFIG_SPI_FLASH_BAR\n");
 	}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 08/87] mtd: spi-nor: Add spi_nor support in m25p80
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (5 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 07/87] mtd: spi-nor: Add MTD support Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 09/87] mtd: spi-nor: Add dm spi-nor probing Jagan Teki
                   ` (78 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

m25p80 is flash interface for spi-nor core and drivers/spi
so add spi_nor{} functionalities like
- allocate spi_nor{}
- basic initilization
- install hooks
- call to spi-nor core, using spi_nor_scan
- register with mtd core

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 245 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 245 insertions(+)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 833a9c3..6a892d2 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -8,16 +8,260 @@
 
 #include <common.h>
 #include <dm.h>
+#include <dma.h>
 #include <errno.h>
 #include <spi.h>
+
+#include <dm/device-internal.h>
+
 #include <linux/mtd/mtd.h>
+#include <linux/mtd/spi-nor.h>
+
+struct m25p {
+	struct spi_slave	*spi;
+	struct spi_nor		spi_nor;
+};
+
+static int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
+			       size_t cmd_len, const u8 *data_out,
+			       u8 *data_in, size_t data_len)
+{
+	unsigned long flags = SPI_XFER_BEGIN;
+	int ret;
+
+	if (data_len == 0)
+		flags |= SPI_XFER_END;
+
+	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
+	if (ret) {
+		debug("SF: Failed to send command (%zu bytes): %d\n",
+		      cmd_len, ret);
+	} else if (data_len != 0) {
+		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
+					SPI_XFER_END);
+		if (ret)
+			debug("SF: Failed to transfer %zu bytes of data: %d\n",
+			      data_len, ret);
+	}
+
+	return ret;
+}
+
+static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret < 0) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	if (nor->flags & SNOR_F_U_PAGE)
+		spi->flags |= SPI_XFER_U_PAGE;
+
+	ret = spi_read_then_write(spi, &cmd, 1, NULL, val, len);
+	if (ret < 0) {
+		debug("m25p80: error %d reading register %x\n", ret, cmd);
+		return ret;
+	}
+
+	spi_release_bus(spi);
+
+	return ret;
+}
+
+static int m25p80_write_reg(struct spi_nor *nor, u8 cmd, u8 *buf, int len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret < 0) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	if (nor->flags & SNOR_F_U_PAGE)
+		spi->flags |= SPI_XFER_U_PAGE;
+
+	ret = spi_read_then_write(spi, &cmd, 1, buf, NULL, len);
+	if (ret < 0) {
+		debug("m25p80: error %d writing register %x\n", ret, cmd);
+		return ret;
+	}
+
+	spi_release_bus(spi);
+
+	return ret;
+}
+
+/*
+ * TODO: remove the weak after all the other spi_flash_copy_mmap
+ * implementations removed from drivers
+ */
+void __weak flash_copy_mmap(void *data, void *offset, size_t len)
+{
+#ifdef CONFIG_DMA
+	if (!dma_memcpy(data, offset, len))
+		return;
+#endif
+	memcpy(data, offset, len);
+}
+
+static int m25p80_read_mmap(struct spi_nor *nor, void *data,
+			    void *offset, size_t len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP);
+	flash_copy_mmap(data, offset, len);
+	spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
+
+	spi_release_bus(spi);
+
+	return ret;
+}
+
+static int m25p80_read(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
+				void *data, size_t data_len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret < 0) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	if (nor->flags & SNOR_F_U_PAGE)
+		spi->flags |= SPI_XFER_U_PAGE;
+
+	ret = spi_read_then_write(spi, cmd, cmd_len, NULL, data, data_len);
+	if (ret < 0) {
+		debug("m25p80: error %d reading %x\n", ret, *cmd);
+		return ret;
+	}
+
+	spi_release_bus(spi);
+
+	return ret;
+}
+
+static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
+				const void *data, size_t data_len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret < 0) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	if (nor->flags & SNOR_F_U_PAGE)
+		spi->flags |= SPI_XFER_U_PAGE;
+
+	ret = spi_read_then_write(spi, cmd, cmd_len, data, NULL, data_len);
+	if (ret < 0) {
+		debug("m25p80: error %d writing %x\n", ret, *cmd);
+		return ret;
+	}
+
+	spi_release_bus(spi);
+
+	return ret;
+}
 
 static int m25p_probe(struct udevice *dev)
 {
 	struct spi_slave *spi = dev_get_parent_priv(dev);
 	struct mtd_info	*mtd = dev_get_uclass_priv(dev);
+	struct m25p *flash = dev_get_priv(dev);
+	struct spi_nor *nor;
+	int ret;
+
+	nor = &flash->spi_nor;
+
+	/* install hooks */
+	nor->read_mmap = m25p80_read_mmap;
+	nor->read = m25p80_read;
+	nor->write = m25p80_write;
+	nor->read_reg = m25p80_read_reg;
+	nor->write_reg = m25p80_write_reg;
+
+	nor->mtd = mtd;
+	nor->priv = flash;
+	flash->spi = spi;
+
+	/* claim spi bus */
+	ret = spi_claim_bus(spi);
+	if (ret) {
+		debug("m25p80: failed to claim SPI bus: %d\n", ret);
+		return ret;
+	}
+
+	switch (spi->mode_rx) {
+	case SPI_RX_SLOW:
+		nor->read_mode = SNOR_READ;
+		break;
+	case SPI_RX_DUAL:
+		nor->read_mode = SNOR_READ_1_1_2;
+		break;
+	case SPI_RX_QUAD:
+		nor->read_mode = SNOR_READ_1_1_4;
+		break;
+	}
+
+	switch (spi->mode) {
+	case SPI_TX_BYTE:
+		nor->mode = SNOR_WRITE_1_1_BYTE;
+		break;
+	case SPI_TX_QUAD:
+		nor->mode = SNOR_WRITE_1_1_4;
+		break;
+	}
+
+	nor->memory_map = spi->memory_map;
+	nor->max_write_size = spi->max_write_size;
+
+	/* TODO: unrelated to spi_slave{} */
+	if (spi->option & SPI_CONN_DUAL_SHARED)
+		nor->dual = SNOR_DUAL_STACKED;
+	else if (spi->option & SPI_CONN_DUAL_SEPARATED)
+		nor->dual = SNOR_DUAL_PARALLEL;
+
+	ret = spi_nor_scan(nor);
+	if (ret)
+		goto err_scan;
+
+	ret = add_mtd_device(mtd);
+	if (ret)
+		goto err_mtd;
 
 	return 0;
+
+err_scan:
+	spi_release_bus(spi);
+err_mtd:
+	spi_free_slave(spi);
+	device_remove(dev);
+	return ret;
 }
 
 static const struct udevice_id m25p_ids[] = {
@@ -34,4 +278,5 @@ U_BOOT_DRIVER(m25p80) = {
 	.id		= UCLASS_MTD,
 	.of_match	= m25p_ids,
 	.probe		= m25p_probe,
+	.priv_auto_alloc_size = sizeof(struct m25p),
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 09/87] mtd: spi-nor: Add dm spi-nor probing
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (6 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 08/87] mtd: spi-nor: Add spi_nor support in m25p80 Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 10/87] mtd: spi-nor: Add spi_flash_probe for mtd-dm-spi-nor Jagan Teki
                   ` (77 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

This patch adds driver-model probe from cmd_sf through
MTD_DM_SPI_NOR which is depends on MTD and DM_SPI uclass.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 cmd/sf.c                            |  4 ++--
 common/env_sf.c                     |  4 ++--
 drivers/mtd/spi-nor/Kconfig         |  7 +++++++
 drivers/mtd/spi-nor/Makefile        |  2 ++
 drivers/mtd/spi-nor/spi-nor-probe.c | 36 ++++++++++++++++++++++++++++++++++++
 include/spi_flash.h                 | 18 +++++++++++++++++-
 6 files changed, 66 insertions(+), 5 deletions(-)
 create mode 100644 drivers/mtd/spi-nor/spi-nor-probe.c

diff --git a/cmd/sf.c b/cmd/sf.c
index 42862d9..89ab41e 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -85,7 +85,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
 	unsigned int mode = CONFIG_SF_DEFAULT_MODE;
 	char *endp;
-#ifdef CONFIG_DM_SPI_FLASH
+#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
 	struct udevice *new, *bus_dev;
 	int ret;
 #else
@@ -118,7 +118,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 			return -1;
 	}
 
-#ifdef CONFIG_DM_SPI_FLASH
+#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
 	/* Remove the old device, otherwise probe will just be a nop */
 	ret = spi_find_bus_and_cs(bus, cs, &bus_dev, &new);
 	if (!ret) {
diff --git a/common/env_sf.c b/common/env_sf.c
index 892e6cb..ec88792 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -52,7 +52,7 @@ int saveenv(void)
 	char	*saved_buffer = NULL, flag = OBSOLETE_FLAG;
 	u32	saved_size, saved_offset, sector = 1;
 	int	ret;
-#ifdef CONFIG_DM_SPI_FLASH
+#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
 	struct udevice *new;
 
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
@@ -242,7 +242,7 @@ int saveenv(void)
 	char	*saved_buffer = NULL;
 	int	ret = 1;
 	env_t	env_new;
-#ifdef CONFIG_DM_SPI_FLASH
+#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
 	struct udevice *new;
 
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 374cdcb..342164d 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -1,5 +1,6 @@
 menuconfig MTD_SPI_NOR
 	tristate "SPI-NOR device support"
+	select DM_MTD_SPI_NOR if DM_SPI && MTD
 	help
 	  This is the core SPI NOR framework which can be used to interact SPI-NOR
 	  to SPI driver interface layer and the SPI-NOR controller driver.
@@ -12,6 +13,12 @@ menuconfig MTD_SPI_NOR
 	  SPI-NOR controller drivers for SPI-NOR device access. Note that from SPI-NOR
 	  core to SPI drivers there should be an interface layer.
 
+config DM_MTD_SPI_NOR
+	bool "MTD driver model for SPI-NOR"
+	help
+	  This is enables MTD driver model support for SPI-NOR. Both MTD and SPI
+	  driver models need to define for enabling this support.
+
 if MTD_SPI_NOR
 
 config MTD_M25P80
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index 9ab6e3d..2f41630 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -6,6 +6,8 @@
 ifdef CONFIG_MTD_SPI_NOR
 obj-y += spi-nor.o
 obj-y += spi-nor-ids.o
+
+obj-$(CONFIG_DM_MTD_SPI_NOR)	+= spi-nor-probe.o
 endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
diff --git a/drivers/mtd/spi-nor/spi-nor-probe.c b/drivers/mtd/spi-nor/spi-nor-probe.c
new file mode 100644
index 0000000..532d8a7
--- /dev/null
+++ b/drivers/mtd/spi-nor/spi-nor-probe.c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <spi.h>
+#include <spi_flash.h>
+
+int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
+			   unsigned int max_hz, unsigned int spi_mode,
+			   struct udevice **devp)
+{
+	struct spi_slave *slave;
+	struct udevice *bus;
+	char *str;
+	int ret;
+
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_USE_TINY_PRINTF)
+	str = "spi_flash";
+#else
+	char name[30];
+
+	snprintf(name, sizeof(name), "spi_flash@%d:%d", busnum, cs);
+	str = strdup(name);
+#endif
+	ret = spi_get_bus_and_cs(busnum, cs, max_hz, spi_mode,
+				  "spi_flash_std", str, &bus, &slave);
+	if (ret)
+		return ret;
+
+	*devp = slave->dev;
+	return 0;
+}
diff --git a/include/spi_flash.h b/include/spi_flash.h
index d0ce9e7..d39941f 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -108,6 +108,14 @@ struct spi_flash {
 #endif
 };
 
+#if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_DM_MTD_SPI_NOR)
+
+int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
+			   unsigned int max_hz, unsigned int spi_mode,
+			   struct udevice **devp);
+
+#endif
+
 struct dm_spi_flash_ops {
 	int (*read)(struct udevice *dev, u32 offset, size_t len, void *buf);
 	int (*write)(struct udevice *dev, u32 offset, size_t len,
@@ -190,7 +198,15 @@ int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
 
 void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
 
-#else
+#elif !defined(CONFIG_MTD_SPI_NOR)
+
+struct sandbox_state;
+
+int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
+			 struct udevice *bus, int of_offset, const char *spec);
+
+void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
+
 struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 		unsigned int max_hz, unsigned int spi_mode);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 10/87] mtd: spi-nor: Add spi_flash_probe for mtd-dm-spi-nor
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (7 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 09/87] mtd: spi-nor: Add dm spi-nor probing Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 11/87] mtd: spi-nor: Add spi_flash_free " Jagan Teki
                   ` (76 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

While probing spi-nor in SPL spi_flash_probe is needed,
so add the flash probe code in spi-nor-probe.c

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor-probe.c | 15 +++++++++++++++
 include/spi_flash.h                 |  6 ++++++
 2 files changed, 21 insertions(+)

diff --git a/drivers/mtd/spi-nor/spi-nor-probe.c b/drivers/mtd/spi-nor/spi-nor-probe.c
index 532d8a7..713968b 100644
--- a/drivers/mtd/spi-nor/spi-nor-probe.c
+++ b/drivers/mtd/spi-nor/spi-nor-probe.c
@@ -9,6 +9,21 @@
 #include <spi.h>
 #include <spi_flash.h>
 
+/*
+ * TODO(sjg at chromium.org): This is an old-style function. We should remove
+ * it when all SPI flash drivers use dm
+ */
+spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
+			     unsigned int max_hz, unsigned int spi_mode)
+{
+	struct udevice *dev;
+
+	if (spi_flash_probe_bus_cs(bus, cs, max_hz, spi_mode, &dev))
+		return NULL;
+
+	return dev_get_uclass_priv(dev);
+}
+
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 			   unsigned int max_hz, unsigned int spi_mode,
 			   struct udevice **devp)
diff --git a/include/spi_flash.h b/include/spi_flash.h
index d39941f..0350767 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -110,10 +110,16 @@ struct spi_flash {
 
 #if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_DM_MTD_SPI_NOR)
 
+typedef struct mtd_info spi_flash_t;
+
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 			   unsigned int max_hz, unsigned int spi_mode,
 			   struct udevice **devp);
 
+/* Compatibility function - this is the old U-Boot API */
+spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
+			     unsigned int max_hz, unsigned int spi_mode);
+
 #endif
 
 struct dm_spi_flash_ops {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 11/87] mtd: spi-nor: Add spi_flash_free for mtd-dm-spi-nor
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (8 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 10/87] mtd: spi-nor: Add spi_flash_probe for mtd-dm-spi-nor Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 12/87] mtd: spi-nor: m25p80: Add spi_nor support for non-dm Jagan Teki
                   ` (75 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

env_sf need to free the flash while read error, so
add the flash probe code in spi-nor-probe.c

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor-probe.c | 7 +++++++
 include/spi_flash.h                 | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/drivers/mtd/spi-nor/spi-nor-probe.c b/drivers/mtd/spi-nor/spi-nor-probe.c
index 713968b..76c48b7 100644
--- a/drivers/mtd/spi-nor/spi-nor-probe.c
+++ b/drivers/mtd/spi-nor/spi-nor-probe.c
@@ -9,6 +9,8 @@
 #include <spi.h>
 #include <spi_flash.h>
 
+#include <dm/device-internal.h>
+
 /*
  * TODO(sjg at chromium.org): This is an old-style function. We should remove
  * it when all SPI flash drivers use dm
@@ -24,6 +26,11 @@ spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
 	return dev_get_uclass_priv(dev);
 }
 
+void spi_flash_free(spi_flash_t *flash)
+{
+	device_remove(flash->dev);
+}
+
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 			   unsigned int max_hz, unsigned int spi_mode,
 			   struct udevice **devp)
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 0350767..5895d8b 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -120,6 +120,9 @@ int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
 			     unsigned int max_hz, unsigned int spi_mode);
 
+/* Compatibility function - this is the old U-Boot API */
+void spi_flash_free(spi_flash_t *flash);
+
 #endif
 
 struct dm_spi_flash_ops {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 12/87] mtd: spi-nor: m25p80: Add spi_nor support for non-dm
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (9 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 11/87] mtd: spi-nor: Add spi_flash_free " Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 13/87] sf: Rename erase_size to erasesize Jagan Teki
                   ` (74 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Like adding spi_nor support for dm-driven code in m25p80
add the same way for non-dm code as well.
- allocate spi_nor{}
- basic initilization
- install hooks
- call to spi-nor core, using spi_nor_scan
- register with mtd core

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 108 ++++++++++++++++++++++++++++++++++++++-----
 include/spi_flash.h          |  18 +++++++-
 2 files changed, 112 insertions(+), 14 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 6a892d2..79293b2 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -20,6 +20,9 @@
 struct m25p {
 	struct spi_slave	*spi;
 	struct spi_nor		spi_nor;
+#ifndef CONFIG_DM_MTD_SPI_NOR
+	struct mtd_info		mtd;
+#endif
 };
 
 static int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
@@ -188,16 +191,13 @@ static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	return ret;
 }
 
-static int m25p_probe(struct udevice *dev)
+static int m25p80_spi_nor(struct spi_nor *nor)
 {
-	struct spi_slave *spi = dev_get_parent_priv(dev);
-	struct mtd_info	*mtd = dev_get_uclass_priv(dev);
-	struct m25p *flash = dev_get_priv(dev);
-	struct spi_nor *nor;
+	struct mtd_info *mtd = nor->mtd;
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
 	int ret;
 
-	nor = &flash->spi_nor;
-
 	/* install hooks */
 	nor->read_mmap = m25p80_read_mmap;
 	nor->read = m25p80_read;
@@ -205,10 +205,6 @@ static int m25p_probe(struct udevice *dev)
 	nor->read_reg = m25p80_read_reg;
 	nor->write_reg = m25p80_write_reg;
 
-	nor->mtd = mtd;
-	nor->priv = flash;
-	flash->spi = spi;
-
 	/* claim spi bus */
 	ret = spi_claim_bus(spi);
 	if (ret) {
@@ -260,10 +256,33 @@ err_scan:
 	spi_release_bus(spi);
 err_mtd:
 	spi_free_slave(spi);
-	device_remove(dev);
 	return ret;
 }
 
+#ifdef CONFIG_DM_MTD_SPI_NOR
+static int m25p_probe(struct udevice *dev)
+{
+	struct spi_slave *spi = dev_get_parent_priv(dev);
+	struct mtd_info	*mtd = dev_get_uclass_priv(dev);
+	struct m25p *flash = dev_get_priv(dev);
+	struct spi_nor *nor;
+	int ret;
+
+	nor = &flash->spi_nor;
+
+	nor->mtd = mtd;
+	nor->priv = flash;
+	flash->spi = spi;
+
+	ret = m25p80_spi_nor(nor);
+	if (ret) {
+		device_remove(dev);
+		return ret;
+	}
+
+	return 0;
+}
+
 static const struct udevice_id m25p_ids[] = {
 	/*
 	 * Generic compatibility for SPI NOR that can be identified by the
@@ -280,3 +299,68 @@ U_BOOT_DRIVER(m25p80) = {
 	.probe		= m25p_probe,
 	.priv_auto_alloc_size = sizeof(struct m25p),
 };
+
+#else
+
+static struct mtd_info *m25p80_probe_tail(struct spi_slave *bus)
+{
+	struct m25p *flash;
+	struct spi_nor *nor;
+	int ret;
+
+	flash = calloc(1, sizeof(*flash));
+	if (!flash) {
+		debug("mp25p80: failed to allocate m25p\n");
+		return NULL;
+	}
+
+	nor = &flash->spi_nor;
+	nor->mtd = &flash->mtd;
+
+	nor->priv = flash;
+	flash->spi = bus;
+
+	ret = m25p80_spi_nor(nor);
+	if (ret) {
+		free(flash);
+		return NULL;
+	}
+
+	return nor->mtd;
+}
+
+struct mtd_info *spi_flash_probe(unsigned int busnum, unsigned int cs,
+				 unsigned int max_hz, unsigned int spi_mode)
+{
+	struct spi_slave *bus;
+
+	bus = spi_setup_slave(busnum, cs, max_hz, spi_mode);
+	if (!bus)
+		return NULL;
+	return m25p80_probe_tail(bus);
+}
+
+#ifdef CONFIG_OF_SPI_FLASH
+struct mtd_info *spi_flash_probe_fdt(const void *blob, int slave_node,
+				     int spi_node)
+{
+	struct spi_slave *bus;
+
+	bus = spi_setup_slave_fdt(blob, slave_node, spi_node);
+	if (!bus)
+		return NULL;
+	return m25p80_probe_tail(bus);
+}
+#endif
+
+void spi_flash_free(struct mtd_info *info)
+{
+	struct spi_nor *nor = info->priv;
+	struct m25p *flash = nor->priv;
+
+	del_mtd_device(info);
+	spi_free_slave(flash->spi);
+	free(flash);
+}
+
+#endif /* CONFIG_DM_MTD_SPI_NOR */
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 5895d8b..e137ede 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -108,10 +108,12 @@ struct spi_flash {
 #endif
 };
 
-#if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_DM_MTD_SPI_NOR)
+#ifdef CONFIG_MTD_SPI_NOR
 
 typedef struct mtd_info spi_flash_t;
 
+#ifdef CONFIG_DM_MTD_SPI_NOR
+
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 			   unsigned int max_hz, unsigned int spi_mode,
 			   struct udevice **devp);
@@ -123,7 +125,19 @@ spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
 /* Compatibility function - this is the old U-Boot API */
 void spi_flash_free(spi_flash_t *flash);
 
-#endif
+#else
+
+spi_flash_t *spi_flash_probe(unsigned int bus, unsigned int cs,
+			     unsigned int max_hz, unsigned int spi_mode);
+
+spi_flash_t *spi_flash_probe_fdt(const void *blob, int slave_node,
+				 int spi_node);
+
+void spi_flash_free(spi_flash_t *flash);
+
+#endif /* CONFIG_DM_MTD_SPI_NOR */
+
+#endif /* CONFIG_MTD_SPI_NOR */
 
 struct dm_spi_flash_ops {
 	int (*read)(struct udevice *dev, u32 offset, size_t len, void *buf);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 13/87] sf: Rename erase_size to erasesize
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (10 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 12/87] mtd: spi-nor: m25p80: Add spi_nor support for non-dm Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 14/87] sf: Use erasesize instead of sector_size Jagan Teki
                   ` (73 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

erasesize name looks similar as the way mtd_info{}
used so renamed erase_size to erasesize and more over
the spi-flash will use mtd in future patches.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi/sf_dataflash.c |  4 ++--
 drivers/mtd/spi/spi_flash.c    | 14 +++++++-------
 include/spi_flash.h            |  4 ++--
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
index b2a56da..0f66b99 100644
--- a/drivers/mtd/spi/sf_dataflash.c
+++ b/drivers/mtd/spi/sf_dataflash.c
@@ -427,12 +427,12 @@ static int add_dataflash(struct udevice *dev, char *name, int nr_pages,
 	spi_flash->name = name;
 	spi_flash->page_size = pagesize;
 	spi_flash->size = nr_pages * pagesize;
-	spi_flash->erase_size = pagesize;
+	spi_flash->erasesize = pagesize;
 
 #ifndef CONFIG_SPL_BUILD
 	printf("SPI DataFlash: Detected %s with page size ", spi_flash->name);
 	print_size(spi_flash->page_size, ", erase size ");
-	print_size(spi_flash->erase_size, ", total ");
+	print_size(spi_flash->erasesize, ", total ");
 	print_size(spi_flash->size, "");
 	printf(", revision %c", revision);
 	puts("\n");
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 44d9e9b..dfadb77 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -329,7 +329,7 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
 	u8 cmd[SPI_FLASH_CMD_LEN];
 	int ret = -1;
 
-	erase_size = flash->erase_size;
+	erase_size = flash->erasesize;
 	if (offset % erase_size || len % erase_size) {
 		debug("SF: Erase offset/length not multiple of erase size\n");
 		return -1;
@@ -804,7 +804,7 @@ int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len)
 		return ret;
 
 	/* Cannot unlock; would unlock larger region than requested */
-	if (stm_is_locked_sr(flash, ofs - flash->erase_size, flash->erase_size,
+	if (stm_is_locked_sr(flash, ofs - flash->erasesize, flash->erasesize,
 			     status_old))
 		return -EINVAL;
 	/*
@@ -1091,17 +1091,17 @@ int spi_flash_scan(struct spi_flash *flash)
 	/* Compute erase sector and command */
 	if (params->flags & SECT_4K) {
 		flash->erase_cmd = CMD_ERASE_4K;
-		flash->erase_size = 4096 << flash->shift;
+		flash->erasesize = 4096 << flash->shift;
 	} else if (params->flags & SECT_32K) {
 		flash->erase_cmd = CMD_ERASE_32K;
-		flash->erase_size = 32768 << flash->shift;
+		flash->erasesize = 32768 << flash->shift;
 	} else {
 		flash->erase_cmd = CMD_ERASE_64K;
-		flash->erase_size = flash->sector_size;
+		flash->erasesize = flash->sector_size;
 	}
 
 	/* Now erase size becomes valid sector size */
-	flash->sector_size = flash->erase_size;
+	flash->sector_size = flash->erasesize;
 
 	/* Look for the fastest read cmd */
 	cmd = fls(params->e_rd_cmd & spi->mode_rx);
@@ -1173,7 +1173,7 @@ int spi_flash_scan(struct spi_flash *flash)
 #ifndef CONFIG_SPL_BUILD
 	printf("SF: Detected %s with page size ", flash->name);
 	print_size(flash->page_size, ", erase size ");
-	print_size(flash->erase_size, ", total ");
+	print_size(flash->erasesize, ", total ");
 	print_size(flash->size, "");
 	if (flash->memory_map)
 		printf(", mapped at %p", flash->memory_map);
diff --git a/include/spi_flash.h b/include/spi_flash.h
index e137ede..4b92605 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -40,7 +40,7 @@ struct spi_slave;
  * @size:		Total flash size
  * @page_size:		Write (page) size
  * @sector_size:	Sector size
- * @erase_size:		Erase size
+ * @erasesize:		Erase size
  * @bank_read_cmd:	Bank read cmd
  * @bank_write_cmd:	Bank write cmd
  * @bank_curr:		Current flash bank
@@ -73,7 +73,7 @@ struct spi_flash {
 	u32 size;
 	u32 page_size;
 	u32 sector_size;
-	u32 erase_size;
+	u32 erasesize;
 #ifdef CONFIG_SPI_FLASH_BAR
 	u8 bank_read_cmd;
 	u8 bank_write_cmd;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 14/87] sf: Use erasesize instead of sector_size
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (11 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 13/87] sf: Rename erase_size to erasesize Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 15/87] sf: Use uint64_t for flash->size Jagan Teki
                   ` (72 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

For computing proper sector_size the below patch
assigned erase_size which is a proper sector
computation size, so this patch directly used
erasesize instead of assignment.
"sf: Fix to compute proper sector_size"
(sha1: c650ca7b4c160193791dc7a52381c71c6a29e871)

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 cmd/sf.c                    | 20 ++++++++++----------
 drivers/dfu/dfu_sf.c        |  8 ++++----
 drivers/mtd/spi/sf_mtd.c    |  2 +-
 drivers/mtd/spi/spi_flash.c |  3 ---
 4 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/cmd/sf.c b/cmd/sf.c
index 89ab41e..1e0dcb4 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -53,8 +53,8 @@ static int sf_parse_len_arg(char *arg, ulong *len)
 	if (ep == arg || *ep != '\0')
 		return -1;
 
-	if (round_up_len && flash->sector_size > 0)
-		*len = ROUND(len_arg, flash->sector_size);
+	if (round_up_len && flash->erasesize > 0)
+		*len = ROUND(len_arg, flash->erasesize);
 	else
 		*len = len_arg;
 
@@ -171,10 +171,10 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
 {
 	char *ptr = (char *)buf;
 
-	debug("offset=%#x, sector_size=%#x, len=%#zx\n",
-	      offset, flash->sector_size, len);
+	debug("offset=%#x, erasesize=%#x, len=%#zx\n",
+	      offset, flash->erasesize, len);
 	/* Read the entire sector so to allow for rewriting */
-	if (spi_flash_read(flash, offset, flash->sector_size, cmp_buf))
+	if (spi_flash_read(flash, offset, flash->erasesize, cmp_buf))
 		return "read";
 	/* Compare only what is meaningful (len) */
 	if (memcmp(cmp_buf, buf, len) == 0) {
@@ -184,15 +184,15 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
 		return NULL;
 	}
 	/* Erase the entire sector */
-	if (spi_flash_erase(flash, offset, flash->sector_size))
+	if (spi_flash_erase(flash, offset, flash->erasesize))
 		return "erase";
 	/* If it's a partial sector, copy the data into the temp-buffer */
-	if (len != flash->sector_size) {
+	if (len != flash->erasesize) {
 		memcpy(cmp_buf, buf, len);
 		ptr = cmp_buf;
 	}
 	/* Write one complete sector */
-	if (spi_flash_write(flash, offset, flash->sector_size, ptr))
+	if (spi_flash_write(flash, offset, flash->erasesize, ptr))
 		return "write";
 
 	return NULL;
@@ -223,12 +223,12 @@ static int spi_flash_update(struct spi_flash *flash, u32 offset,
 
 	if (end - buf >= 200)
 		scale = (end - buf) / 100;
-	cmp_buf = memalign(ARCH_DMA_MINALIGN, flash->sector_size);
+	cmp_buf = memalign(ARCH_DMA_MINALIGN, flash->erasesize);
 	if (cmp_buf) {
 		ulong last_update = get_timer(0);
 
 		for (; buf < end && !err_oper; buf += todo, offset += todo) {
-			todo = min_t(size_t, end - buf, flash->sector_size);
+			todo = min_t(size_t, end - buf, flash->erasesize);
 			if (get_timer(last_update) > 100) {
 				printf("   \rUpdating, %zu%% %lu B/s",
 				       100 - (end - buf) / scale,
diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c
index 9702eee..13e7f92 100644
--- a/drivers/dfu/dfu_sf.c
+++ b/drivers/dfu/dfu_sf.c
@@ -25,8 +25,8 @@ static int dfu_read_medium_sf(struct dfu_entity *dfu, u64 offset, void *buf,
 
 static u64 find_sector(struct dfu_entity *dfu, u64 start, u64 offset)
 {
-	return (lldiv((start + offset), dfu->data.sf.dev->sector_size)) *
-		dfu->data.sf.dev->sector_size;
+	return (lldiv((start + offset), dfu->data.sf.dev->erasesize)) *
+		dfu->data.sf.dev->erasesize;
 }
 
 static int dfu_write_medium_sf(struct dfu_entity *dfu,
@@ -36,7 +36,7 @@ static int dfu_write_medium_sf(struct dfu_entity *dfu,
 
 	ret = spi_flash_erase(dfu->data.sf.dev,
 			      find_sector(dfu, dfu->data.sf.start, offset),
-			      dfu->data.sf.dev->sector_size);
+			      dfu->data.sf.dev->erasesize);
 	if (ret)
 		return ret;
 
@@ -123,7 +123,7 @@ int dfu_fill_entity_sf(struct dfu_entity *dfu, char *devstr, char *s)
 		return -ENODEV;
 
 	dfu->dev_type = DFU_DEV_SF;
-	dfu->max_buf_size = dfu->data.sf.dev->sector_size;
+	dfu->max_buf_size = dfu->data.sf.dev->erasesize;
 
 	st = strsep(&s, " ");
 	if (!strcmp(st, "raw")) {
diff --git a/drivers/mtd/spi/sf_mtd.c b/drivers/mtd/spi/sf_mtd.c
index 0b9cb62..9a8302d 100644
--- a/drivers/mtd/spi/sf_mtd.c
+++ b/drivers/mtd/spi/sf_mtd.c
@@ -93,7 +93,7 @@ int spi_flash_mtd_register(struct spi_flash *flash)
 
 	/* Only uniform flash devices for now */
 	sf_mtd_info.numeraseregions = 0;
-	sf_mtd_info.erasesize = flash->sector_size;
+	sf_mtd_info.erasesize = flash->erasesize;
 
 	return add_mtd_device(&sf_mtd_info);
 }
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index dfadb77..4614c9c 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -1100,9 +1100,6 @@ int spi_flash_scan(struct spi_flash *flash)
 		flash->erasesize = flash->sector_size;
 	}
 
-	/* Now erase size becomes valid sector size */
-	flash->sector_size = flash->erasesize;
-
 	/* Look for the fastest read cmd */
 	cmd = fls(params->e_rd_cmd & spi->mode_rx);
 	if (cmd) {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 15/87] sf: Use uint64_t for flash->size
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (12 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 14/87] sf: Use erasesize instead of sector_size Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 16/87] spi_flash: Use mtd_info operation for SPI-NOR Jagan Teki
                   ` (71 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

To sync with size in mtd_info{} this patch change
data type of size to uint64_t

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 cmd/sf.c            | 4 ++--
 include/spi_flash.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cmd/sf.c b/cmd/sf.c
index 1e0dcb4..0d0a02c 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -280,7 +280,7 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
 
 	/* Consistency checking */
 	if (offset + len > flash->size) {
-		printf("ERROR: attempting %s past flash size (%#x)\n",
+		printf("ERROR: attempting %s past flash size (%#llx)\n",
 		       argv[0], flash->size);
 		return 1;
 	}
@@ -336,7 +336,7 @@ static int do_spi_flash_erase(int argc, char * const argv[])
 
 	/* Consistency checking */
 	if (offset + size > flash->size) {
-		printf("ERROR: attempting %s past flash size (%#x)\n",
+		printf("ERROR: attempting %s past flash size (%#llx)\n",
 		       argv[0], flash->size);
 		return 1;
 	}
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 4b92605..c7fd4f3 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -70,7 +70,7 @@ struct spi_flash {
 	u8 shift;
 	u16 flags;
 
-	u32 size;
+	uint64_t size;
 	u32 page_size;
 	u32 sector_size;
 	u32 erasesize;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 16/87] spi_flash: Use mtd_info operation for SPI-NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (13 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 15/87] sf: Use uint64_t for flash->size Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 17/87] spi_flash: Use spi_flash_t instead of struct spi_flash Jagan Teki
                   ` (70 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since spi-nor is using mtd layer for flash operations
this patch used mtd ops from user commands instead of
legacy spi_flash{} ops.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 include/spi_flash.h | 60 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 48 insertions(+), 12 deletions(-)

diff --git a/include/spi_flash.h b/include/spi_flash.h
index c7fd4f3..43abec9 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -12,6 +12,7 @@
 
 #include <dm.h>	/* Because we dereference struct udevice here */
 #include <linux/types.h>
+#include <linux/mtd/mtd.h>
 
 #ifndef CONFIG_SF_DEFAULT_SPEED
 # define CONFIG_SF_DEFAULT_SPEED	1000000
@@ -112,6 +113,39 @@ struct spi_flash {
 
 typedef struct mtd_info spi_flash_t;
 
+static inline int spi_flash_read(spi_flash_t *info, u32 offset,
+				 size_t len, void *buf)
+{
+	return mtd_read(info, offset, len, &len, (u_char *)buf);
+}
+
+static inline int spi_flash_write(spi_flash_t *info, u32 offset,
+				  size_t len, const void *buf)
+{
+	return mtd_write(info, offset, len, &len, (u_char *)buf);
+}
+
+static inline int spi_flash_erase(spi_flash_t *info, u32 offset, size_t len)
+{
+	struct erase_info instr;
+
+	instr.mtd = info;
+	instr.addr = offset;
+	instr.len = len;
+	instr.callback = 0;
+
+	return mtd_erase(info, &instr);
+}
+
+static inline int spi_flash_protect(spi_flash_t *info, u32 ofs,
+				    u32 len, bool prot)
+{
+	if (prot)
+		return mtd_lock(info, ofs, len);
+	else
+		return mtd_unlock(info, ofs, len);
+}
+
 #ifdef CONFIG_DM_MTD_SPI_NOR
 
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
@@ -137,6 +171,20 @@ void spi_flash_free(spi_flash_t *flash);
 
 #endif /* CONFIG_DM_MTD_SPI_NOR */
 
+#else
+
+static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len,
+					bool prot)
+{
+	if (!flash->flash_lock || !flash->flash_unlock)
+		return -EOPNOTSUPP;
+
+	if (prot)
+		return flash->flash_lock(flash, ofs, len);
+	else
+		return flash->flash_unlock(flash, ofs, len);
+}
+
 #endif /* CONFIG_MTD_SPI_NOR */
 
 struct dm_spi_flash_ops {
@@ -266,18 +314,6 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
 }
 #endif
 
-static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len,
-					bool prot)
-{
-	if (!flash->flash_lock || !flash->flash_unlock)
-		return -EOPNOTSUPP;
-
-	if (prot)
-		return flash->flash_lock(flash, ofs, len);
-	else
-		return flash->flash_unlock(flash, ofs, len);
-}
-
 void spi_boot(void) __noreturn;
 void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 17/87] spi_flash: Use spi_flash_t instead of struct spi_flash
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (14 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 16/87] spi_flash: Use mtd_info operation for SPI-NOR Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 18/87] mtd: spi-nor: Move spi_read_then_write to spi layer Jagan Teki
                   ` (69 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

spi_flash_t same typedef alias name for spi_flash
and mtd_info so which one will use based on the
user config definition.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 cmd/sf.c            | 10 +++++-----
 common/env_sf.c     |  2 +-
 include/spi_flash.h |  2 ++
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/cmd/sf.c b/cmd/sf.c
index 0d0a02c..389244b 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -19,7 +19,7 @@
 #include <asm/io.h>
 #include <dm/device-internal.h>
 
-static struct spi_flash *flash;
+static spi_flash_t *flash;
 
 /*
  * This function computes the length argument for the erase command.
@@ -89,7 +89,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 	struct udevice *new, *bus_dev;
 	int ret;
 #else
-	struct spi_flash *new;
+	spi_flash_t *new;
 #endif
 
 	if (argc >= 2) {
@@ -166,7 +166,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
  * @param skipped	Count of skipped data (incremented by this function)
  * @return NULL if OK, else a string containing the stage which failed
  */
-static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
+static const char *spi_flash_update_block(spi_flash_t *flash, u32 offset,
 		size_t len, const char *buf, char *cmp_buf, size_t *skipped)
 {
 	char *ptr = (char *)buf;
@@ -208,7 +208,7 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
  * @param buf		buffer to write from
  * @return 0 if ok, 1 on error
  */
-static int spi_flash_update(struct spi_flash *flash, u32 offset,
+static int spi_flash_update(spi_flash_t *flash, u32 offset,
 		size_t len, const char *buf)
 {
 	const char *err_oper = NULL;
@@ -436,7 +436,7 @@ static void spi_test_next_stage(struct test_info *test)
  * @param vbuf		Verification buffer
  * @return 0 if ok, -1 on error
  */
-static int spi_flash_test(struct spi_flash *flash, uint8_t *buf, ulong len,
+static int spi_flash_test(spi_flash_t *flash, uint8_t *buf, ulong len,
 			   ulong offset, uint8_t *vbuf)
 {
 	struct test_info test;
diff --git a/common/env_sf.c b/common/env_sf.c
index ec88792..b927fe8 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -43,7 +43,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 char *env_name_spec = "SPI Flash";
 
-static struct spi_flash *env_flash;
+static spi_flash_t *env_flash;
 
 #if defined(CONFIG_ENV_OFFSET_REDUND)
 int saveenv(void)
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 43abec9..f77a9c9 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -173,6 +173,8 @@ void spi_flash_free(spi_flash_t *flash);
 
 #else
 
+typedef struct spi_flash spi_flash_t;
+
 static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len,
 					bool prot)
 {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 18/87] mtd: spi-nor: Move spi_read_then_write to spi layer
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (15 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 17/87] spi_flash: Use spi_flash_t instead of struct spi_flash Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 19/87] spi: Rename spi_read_then_write to spi_write_then_read Jagan Teki
                   ` (68 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since spi_read_then_write is doing spi operations like
setting up commands, tx and rx through spi_xfer, So
it is meanfull to have this definition at spi layer and
flash layer should use this whenever required.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 25 -------------------------
 drivers/spi/spi-uclass.c     | 25 +++++++++++++++++++++++++
 drivers/spi/spi.c            | 31 +++++++++++++++++++++++++++++++
 include/spi.h                |  5 +++++
 4 files changed, 61 insertions(+), 25 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 79293b2..6033b48 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -25,31 +25,6 @@ struct m25p {
 #endif
 };
 
-static int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
-			       size_t cmd_len, const u8 *data_out,
-			       u8 *data_in, size_t data_len)
-{
-	unsigned long flags = SPI_XFER_BEGIN;
-	int ret;
-
-	if (data_len == 0)
-		flags |= SPI_XFER_END;
-
-	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
-	if (ret) {
-		debug("SF: Failed to send command (%zu bytes): %d\n",
-		      cmd_len, ret);
-	} else if (data_len != 0) {
-		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
-					SPI_XFER_END);
-		if (ret)
-			debug("SF: Failed to transfer %zu bytes of data: %d\n",
-			      data_len, ret);
-	}
-
-	return ret;
-}
-
 static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 {
 	struct m25p *flash = nor->priv;
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 5561f36..2cf2a52 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -95,6 +95,31 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 	return spi_get_ops(bus)->xfer(dev, bitlen, dout, din, flags);
 }
 
+int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
+			size_t cmd_len, const u8 *data_out,
+			u8 *data_in, size_t data_len)
+{
+	unsigned long flags = SPI_XFER_BEGIN;
+	int ret;
+
+	if (data_len == 0)
+		flags |= SPI_XFER_END;
+
+	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
+	if (ret) {
+		debug("spi: failed to send command (%zu bytes): %d\n",
+		      cmd_len, ret);
+	} else if (data_len != 0) {
+		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
+			       SPI_XFER_END);
+		if (ret)
+			debug("spi: failed to transfer %zu bytes of data: %d\n",
+			      data_len, ret);
+	}
+
+	return ret;
+}
+
 static int spi_post_bind(struct udevice *dev)
 {
 	/* Scan the bus for devices */
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 7d81fbd..aceaf9b 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -39,6 +39,37 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,
 	return ptr;
 }
 
+int __weak spi_xfer(struct spi_slave *slave, unsigned int bitlen,
+		    const void *dout, void *din, unsigned long flags)
+{
+	return 0;
+}
+
+int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
+			size_t cmd_len, const u8 *data_out,
+			u8 *data_in, size_t data_len)
+{
+	unsigned long flags = SPI_XFER_BEGIN;
+	int ret;
+
+	if (data_len == 0)
+		flags |= SPI_XFER_END;
+
+	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
+	if (ret) {
+		debug("spi: failed to send command (%zu bytes): %d\n",
+		      cmd_len, ret);
+	} else if (data_len != 0) {
+		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
+					SPI_XFER_END);
+		if (ret)
+			debug("spi: failed to transfer %zu bytes of data: %d\n",
+			      data_len, ret);
+	}
+
+	return ret;
+}
+
 #ifdef CONFIG_OF_SPI
 struct spi_slave *spi_base_setup_slave_fdt(const void *blob, int busnum,
 					   int node)
diff --git a/include/spi.h b/include/spi.h
index 4b88d39..139292c 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -265,6 +265,11 @@ int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
 int  spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		void *din, unsigned long flags);
 
+/* spi_write_then_read - SPI synchronous read followed by write */
+int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
+			size_t cmd_len, const u8 *data_out,
+			u8 *data_in, size_t data_len);
+
 /* Copy memory mapped data */
 void spi_flash_copy_mmap(void *data, void *offset, size_t len);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 19/87] spi: Rename spi_read_then_write to spi_write_then_read
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (16 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 18/87] mtd: spi-nor: Move spi_read_then_write to spi layer Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 20/87] mtd: spi-nor: Rename SPI_FLASH_BAR to SPI_NOR_BAR Jagan Teki
                   ` (67 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since spi_read_then_write moved into spi layer,
the meaning of data transfer is also change from
read_then_write to write_then_read, this means
first spi will write the opcode through and then
read the respective buffer.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c |  8 ++++----
 drivers/spi/spi-uclass.c     | 19 +++++++++----------
 drivers/spi/spi.c            | 19 +++++++++----------
 include/spi.h                | 23 +++++++++++++++++++----
 4 files changed, 41 insertions(+), 28 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 6033b48..429d710 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -40,7 +40,7 @@ static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_read_then_write(spi, &cmd, 1, NULL, val, len);
+	ret = spi_write_then_read(spi, &cmd, 1, NULL, val, len);
 	if (ret < 0) {
 		debug("m25p80: error %d reading register %x\n", ret, cmd);
 		return ret;
@@ -66,7 +66,7 @@ static int m25p80_write_reg(struct spi_nor *nor, u8 cmd, u8 *buf, int len)
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_read_then_write(spi, &cmd, 1, buf, NULL, len);
+	ret = spi_write_then_read(spi, &cmd, 1, buf, NULL, len);
 	if (ret < 0) {
 		debug("m25p80: error %d writing register %x\n", ret, cmd);
 		return ret;
@@ -128,7 +128,7 @@ static int m25p80_read(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_read_then_write(spi, cmd, cmd_len, NULL, data, data_len);
+	ret = spi_write_then_read(spi, cmd, cmd_len, NULL, data, data_len);
 	if (ret < 0) {
 		debug("m25p80: error %d reading %x\n", ret, *cmd);
 		return ret;
@@ -155,7 +155,7 @@ static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_read_then_write(spi, cmd, cmd_len, data, NULL, data_len);
+	ret = spi_write_then_read(spi, cmd, cmd_len, data, NULL, data_len);
 	if (ret < 0) {
 		debug("m25p80: error %d writing %x\n", ret, *cmd);
 		return ret;
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 2cf2a52..7ef2496 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -95,26 +95,25 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 	return spi_get_ops(bus)->xfer(dev, bitlen, dout, din, flags);
 }
 
-int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
-			size_t cmd_len, const u8 *data_out,
-			u8 *data_in, size_t data_len)
+int spi_write_then_read(struct spi_slave *slave, const u8 *opcode,
+			size_t n_opcode, const u8 *txbuf, u8 *rxbuf,
+			size_t n_buf)
 {
 	unsigned long flags = SPI_XFER_BEGIN;
 	int ret;
 
-	if (data_len == 0)
+	if (n_buf == 0)
 		flags |= SPI_XFER_END;
 
-	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
+	ret = spi_xfer(slave, n_opcode * 8, opcode, NULL, flags);
 	if (ret) {
 		debug("spi: failed to send command (%zu bytes): %d\n",
-		      cmd_len, ret);
-	} else if (data_len != 0) {
-		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
-			       SPI_XFER_END);
+		      n_opcode, ret);
+	} else if (n_buf != 0) {
+		ret = spi_xfer(slave, n_buf * 8, txbuf, rxbuf, SPI_XFER_END);
 		if (ret)
 			debug("spi: failed to transfer %zu bytes of data: %d\n",
-			      data_len, ret);
+			      n_buf, ret);
 	}
 
 	return ret;
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index aceaf9b..80aba57 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -45,26 +45,25 @@ int __weak spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 	return 0;
 }
 
-int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
-			size_t cmd_len, const u8 *data_out,
-			u8 *data_in, size_t data_len)
+int spi_write_then_read(struct spi_slave *slave, const u8 *opcode,
+			size_t n_opcode, const u8 *txbuf, u8 *rxbuf,
+			size_t n_buf)
 {
 	unsigned long flags = SPI_XFER_BEGIN;
 	int ret;
 
-	if (data_len == 0)
+	if (n_buf == 0)
 		flags |= SPI_XFER_END;
 
-	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
+	ret = spi_xfer(slave, n_opcode * 8, opcode, NULL, flags);
 	if (ret) {
 		debug("spi: failed to send command (%zu bytes): %d\n",
-		      cmd_len, ret);
-	} else if (data_len != 0) {
-		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
-					SPI_XFER_END);
+		      n_opcode, ret);
+	} else if (n_buf != 0) {
+		ret = spi_xfer(slave, n_buf * 8, txbuf, rxbuf, SPI_XFER_END);
 		if (ret)
 			debug("spi: failed to transfer %zu bytes of data: %d\n",
-			      data_len, ret);
+			      n_buf, ret);
 	}
 
 	return ret;
diff --git a/include/spi.h b/include/spi.h
index 139292c..dd0b11b 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -265,10 +265,25 @@ int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
 int  spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		void *din, unsigned long flags);
 
-/* spi_write_then_read - SPI synchronous read followed by write */
-int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
-			size_t cmd_len, const u8 *data_out,
-			u8 *data_in, size_t data_len);
+/**
+ * spi_write_then_read - SPI synchronous write followed by read
+ *
+ * This performs a half duplex transaction in which the first transaction
+ * is to send the opcode and if the length of buf is non-zero then it start
+ * the second transaction as tx or rx based on the need from respective slave.
+ *
+ * @slave:	slave device with which opcode/data will be exchanged
+ * @opcode:	opcode used for specific transfer
+ * @n_opcode:	size of opcode, in bytes
+ * @txbuf:	buffer into which data to be written
+ * @rxbuf:	buffer into which data will be read
+ * @n_buf:	size of buf (whether it's [tx|rx]buf), in bytes
+ *
+ * Returns: 0 on success, not 0 on failure
+ */
+int spi_write_then_read(struct spi_slave *slave, const u8 *opcode,
+			size_t n_opcode, const u8 *txbuf, u8 *rxbuf,
+			size_t n_buf);
 
 /* Copy memory mapped data */
 void spi_flash_copy_mmap(void *data, void *offset, size_t len);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 20/87] mtd: spi-nor: Rename SPI_FLASH_BAR to SPI_NOR_BAR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (17 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 19/87] spi: Rename spi_read_then_write to spi_write_then_read Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 21/87] mtd: spi-nor: Add Kconfig entry for SPI_NOR_BAR Jagan Teki
                   ` (66 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Renamed SPI_FLASH_BAR to SPI_NOR_BAR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index b867ce9..130f7af 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -181,7 +181,7 @@ static int spi_nor_wait_till_ready(struct spi_nor *nor, unsigned long timeout)
 	return -ETIMEDOUT;
 }
 
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 static int spi_nor_write_bar(struct spi_nor *nor, u32 offset)
 {
 	u8 bank_sel;
@@ -514,7 +514,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 		if (nor->dual > SNOR_DUAL_SINGLE)
 			spi_nor_dual(nor, &erase_addr);
 #endif
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 		ret = spi_nor_write_bar(nor, erase_addr);
 		if (ret < 0)
 			return ret;
@@ -577,7 +577,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 		if (nor->dual > SNOR_DUAL_SINGLE)
 			spi_nor_dual(nor, &write_addr);
 #endif
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 		ret = spi_nor_write_bar(nor, write_addr);
 		if (ret < 0)
 			return ret;
@@ -647,7 +647,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 		if (nor->dual > SNOR_DUAL_SINGLE)
 			spi_nor_dual(nor, &read_addr);
 #endif
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 		ret = spi_nor_write_bar(nor, read_addr);
 		if (ret < 0)
 			return ret;
@@ -1103,7 +1103,7 @@ int spi_nor_scan(struct spi_nor *nor)
 	}
 
 	/* Configure the BAR - discover bank cmds and read current bank */
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	ret = spi_nor_read_bar(nor, info);
 	if (ret < 0)
 		return ret;
@@ -1127,13 +1127,13 @@ int spi_nor_scan(struct spi_nor *nor)
 	puts("\n");
 #endif
 
-#ifndef CONFIG_SPI_FLASH_BAR
+#ifndef CONFIG_SPI_NOR_BAR
 	if (((nor->dual == SNOR_DUAL_SINGLE) &&
 	     (mtd->size > SNOR_16MB_BOUN)) ||
 	     ((nor->dual > SNOR_DUAL_SINGLE) &&
 	     (mtd->size > SNOR_16MB_BOUN << 1))) {
 		puts("spi-nor: Warning - Only lower 16MiB accessible,");
-		puts(" Full access #define CONFIG_SPI_FLASH_BAR\n");
+		puts(" Full access #define CONFIG_SPI_NOR_BAR\n");
 	}
 #endif
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 21/87] mtd: spi-nor: Add Kconfig entry for SPI_NOR_BAR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (18 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 20/87] mtd: spi-nor: Rename SPI_FLASH_BAR to SPI_NOR_BAR Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 22/87] mtd: spi-nor: Copy spl files from drivers/mtd/spi Jagan Teki
                   ` (65 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added kconfig entry for SPI_NOR_BAR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 342164d..dd62e24 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -51,4 +51,11 @@ config MTD_SPI_NOR_USE_4K_SECTORS
 	  Please note that some tools/drivers/filesystems may not work with
 	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
 
+config SPI_NOR_BAR
+	bool "SPI NOR Bank/Extended address register support"
+	help
+	  Enable the SPI NOR Bank/Extended address register support.
+	  Bank/Extended address registers are used to access the flash
+	  which has size > 16MiB in 3-byte addressing.
+
 endif # MTD_SPI_NOR
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 22/87] mtd: spi-nor: Copy spl files from drivers/mtd/spi
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (19 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 21/87] mtd: spi-nor: Add Kconfig entry for SPI_NOR_BAR Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 23/87] mtd: spi-nor: spl: Follow ascending order of include headers Jagan Teki
                   ` (64 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Copy spl files from drivers/mtd/spi to spi-nor,
more changes will added on future patches.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Makefile       |  5 +++
 drivers/mtd/spi-nor/fsl_espi_spl.c | 90 ++++++++++++++++++++++++++++++++++++++
 drivers/mtd/spi-nor/spi_spl_load.c | 90 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 185 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/fsl_espi_spl.c
 create mode 100644 drivers/mtd/spi-nor/spi_spl_load.c

diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index 2f41630..4a854fa 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -3,6 +3,11 @@
 #
 # SPDX-License-Identifier:	GPL-2.0+
 
+ifdef CONFIG_SPL_BUILD
+obj-$(CONFIG_SPL_SPI_LOAD)	+= spi_spl_load.o
+obj-$(CONFIG_SPL_SPI_BOOT)	+= fsl_espi_spl.o
+endif
+
 ifdef CONFIG_MTD_SPI_NOR
 obj-y += spi-nor.o
 obj-y += spi-nor-ids.o
diff --git a/drivers/mtd/spi-nor/fsl_espi_spl.c b/drivers/mtd/spi-nor/fsl_espi_spl.c
new file mode 100644
index 0000000..b915469
--- /dev/null
+++ b/drivers/mtd/spi-nor/fsl_espi_spl.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <spi_flash.h>
+#include <malloc.h>
+
+#define ESPI_BOOT_IMAGE_SIZE	0x48
+#define ESPI_BOOT_IMAGE_ADDR	0x50
+#define CONFIG_CFG_DATA_SECTOR	0
+
+void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst)
+{
+	struct spi_flash *flash;
+
+	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
+	if (flash == NULL) {
+		puts("\nspi_flash_probe failed");
+		hang();
+	}
+
+	spi_flash_read(flash, offs, size, vdst);
+}
+
+/*
+ * The main entry for SPI booting. It's necessary that SDRAM is already
+ * configured and available since this code loads the main U-Boot image
+ * from SPI into SDRAM and starts it from there.
+ */
+void spi_boot(void)
+{
+	void (*uboot)(void) __noreturn;
+	u32 offset, code_len, copy_len = 0;
+#ifndef CONFIG_FSL_CORENET
+	unsigned char *buf = NULL;
+#endif
+	struct spi_flash *flash;
+
+	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
+	if (flash == NULL) {
+		puts("\nspi_flash_probe failed");
+		hang();
+	}
+
+#ifdef CONFIG_FSL_CORENET
+	offset = CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
+	code_len = CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE;
+#else
+	/*
+	* Load U-Boot image from SPI flash into RAM
+	*/
+	buf = malloc(flash->page_size);
+	if (buf == NULL) {
+		puts("\nmalloc failed");
+		hang();
+	}
+	memset(buf, 0, flash->page_size);
+
+	spi_flash_read(flash, CONFIG_CFG_DATA_SECTOR,
+		       flash->page_size, (void *)buf);
+	offset = *(u32 *)(buf + ESPI_BOOT_IMAGE_ADDR);
+	/* Skip spl code */
+	offset += CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
+	/* Get the code size from offset 0x48 */
+	code_len = *(u32 *)(buf + ESPI_BOOT_IMAGE_SIZE);
+	/* Skip spl code */
+	code_len = code_len - CONFIG_SPL_MAX_SIZE;
+#endif
+	/* copy code to DDR */
+	printf("Loading second stage boot loader ");
+	while (copy_len <= code_len) {
+		spi_flash_read(flash, offset + copy_len, 0x2000,
+			       (void *)(CONFIG_SYS_SPI_FLASH_U_BOOT_DST
+			       + copy_len));
+		copy_len = copy_len + 0x2000;
+		putc('.');
+	}
+
+	/*
+	* Jump to U-Boot image
+	*/
+	flush_cache(CONFIG_SYS_SPI_FLASH_U_BOOT_DST, code_len);
+	uboot = (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_START;
+	(*uboot)();
+}
diff --git a/drivers/mtd/spi-nor/spi_spl_load.c b/drivers/mtd/spi-nor/spi_spl_load.c
new file mode 100644
index 0000000..ca56fe9
--- /dev/null
+++ b/drivers/mtd/spi-nor/spi_spl_load.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2011 OMICRON electronics GmbH
+ *
+ * based on drivers/mtd/nand/nand_spl_load.c
+ *
+ * Copyright (C) 2011
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <spi.h>
+#include <spi_flash.h>
+#include <errno.h>
+#include <spl.h>
+
+#ifdef CONFIG_SPL_OS_BOOT
+/*
+ * Load the kernel, check for a valid header we can parse, and if found load
+ * the kernel and then device tree.
+ */
+static int spi_load_image_os(struct spi_flash *flash,
+			     struct image_header *header)
+{
+	/* Read for a header, parse or error out. */
+	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, 0x40,
+		       (void *)header);
+
+	if (image_get_magic(header) != IH_MAGIC)
+		return -1;
+
+	spl_parse_image_header(header);
+
+	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS,
+		       spl_image.size, (void *)spl_image.load_addr);
+
+	/* Read device tree. */
+	spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS,
+		       CONFIG_SYS_SPI_ARGS_SIZE,
+		       (void *)CONFIG_SYS_SPL_ARGS_ADDR);
+
+	return 0;
+}
+#endif
+
+/*
+ * The main entry for SPI booting. It's necessary that SDRAM is already
+ * configured and available since this code loads the main U-Boot image
+ * from SPI into SDRAM and starts it from there.
+ */
+int spl_spi_load_image(void)
+{
+	int err = 0;
+	struct spi_flash *flash;
+	struct image_header *header;
+
+	/*
+	 * Load U-Boot image from SPI flash into RAM
+	 */
+
+	flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
+				CONFIG_SF_DEFAULT_CS,
+				CONFIG_SF_DEFAULT_SPEED,
+				CONFIG_SF_DEFAULT_MODE);
+	if (!flash) {
+		puts("SPI probe failed.\n");
+		return -ENODEV;
+	}
+
+	/* use CONFIG_SYS_TEXT_BASE as temporary storage area */
+	header = (struct image_header *)(CONFIG_SYS_TEXT_BASE);
+
+#ifdef CONFIG_SPL_OS_BOOT
+	if (spl_start_uboot() || spi_load_image_os(flash, header))
+#endif
+	{
+		/* Load u-boot, mkimage header is 64 bytes. */
+		err = spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, 0x40,
+				     (void *)header);
+		if (err)
+			return err;
+
+		spl_parse_image_header(header);
+		err = spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS,
+			       spl_image.size, (void *)spl_image.load_addr);
+	}
+
+	return err;
+}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 23/87] mtd: spi-nor: spl: Follow ascending order of include headers
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (20 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 22/87] mtd: spi-nor: Copy spl files from drivers/mtd/spi Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 24/87] mtd: spi-nor: fsl_espi_spl: Use mtd_info Jagan Teki
                   ` (63 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Use ascending order while including headers files.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/fsl_espi_spl.c | 2 +-
 drivers/mtd/spi-nor/spi_spl_load.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/fsl_espi_spl.c b/drivers/mtd/spi-nor/fsl_espi_spl.c
index b915469..7c40245 100644
--- a/drivers/mtd/spi-nor/fsl_espi_spl.c
+++ b/drivers/mtd/spi-nor/fsl_espi_spl.c
@@ -5,8 +5,8 @@
  */
 
 #include <common.h>
-#include <spi_flash.h>
 #include <malloc.h>
+#include <spi_flash.h>
 
 #define ESPI_BOOT_IMAGE_SIZE	0x48
 #define ESPI_BOOT_IMAGE_ADDR	0x50
diff --git a/drivers/mtd/spi-nor/spi_spl_load.c b/drivers/mtd/spi-nor/spi_spl_load.c
index ca56fe9..285b6da 100644
--- a/drivers/mtd/spi-nor/spi_spl_load.c
+++ b/drivers/mtd/spi-nor/spi_spl_load.c
@@ -10,9 +10,9 @@
  */
 
 #include <common.h>
+#include <errno.h>
 #include <spi.h>
 #include <spi_flash.h>
-#include <errno.h>
 #include <spl.h>
 
 #ifdef CONFIG_SPL_OS_BOOT
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 24/87] mtd: spi-nor: fsl_espi_spl: Use mtd_info
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (21 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 23/87] mtd: spi-nor: spl: Follow ascending order of include headers Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 25/87] mtd: spi-nor: fsl_espi_spl: Use writebufsize instead of page_size Jagan Teki
                   ` (62 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Replace spi_flash{} with mtd_info{}

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/fsl_espi_spl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/fsl_espi_spl.c b/drivers/mtd/spi-nor/fsl_espi_spl.c
index 7c40245..93b0b2e 100644
--- a/drivers/mtd/spi-nor/fsl_espi_spl.c
+++ b/drivers/mtd/spi-nor/fsl_espi_spl.c
@@ -14,7 +14,7 @@
 
 void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst)
 {
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 
 	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
 			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
@@ -38,7 +38,7 @@ void spi_boot(void)
 #ifndef CONFIG_FSL_CORENET
 	unsigned char *buf = NULL;
 #endif
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 
 	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
 			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 25/87] mtd: spi-nor: fsl_espi_spl: Use writebufsize instead of page_size
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (22 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 24/87] mtd: spi-nor: fsl_espi_spl: Use mtd_info Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 26/87] mtd: spi-nor: spi_spl_load: Use mtd_info Jagan Teki
                   ` (61 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Replace spi_flash{} with mtd_info{}

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/fsl_espi_spl.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/mtd/spi-nor/fsl_espi_spl.c b/drivers/mtd/spi-nor/fsl_espi_spl.c
index 93b0b2e..581c346 100644
--- a/drivers/mtd/spi-nor/fsl_espi_spl.c
+++ b/drivers/mtd/spi-nor/fsl_espi_spl.c
@@ -54,15 +54,15 @@ void spi_boot(void)
 	/*
 	* Load U-Boot image from SPI flash into RAM
 	*/
-	buf = malloc(flash->page_size);
+	buf = malloc(flash->writebufsize);
 	if (buf == NULL) {
 		puts("\nmalloc failed");
 		hang();
 	}
-	memset(buf, 0, flash->page_size);
+	memset(buf, 0, flash->writebufsize);
 
 	spi_flash_read(flash, CONFIG_CFG_DATA_SECTOR,
-		       flash->page_size, (void *)buf);
+		       flash->writebufsize, (void *)buf);
 	offset = *(u32 *)(buf + ESPI_BOOT_IMAGE_ADDR);
 	/* Skip spl code */
 	offset += CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 26/87] mtd: spi-nor: spi_spl_load: Use mtd_info
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (23 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 25/87] mtd: spi-nor: fsl_espi_spl: Use writebufsize instead of page_size Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 27/87] spl: Add CONFIG_SPL_SPI_NOR_SUPPORT Jagan Teki
                   ` (60 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Replace spi_flash{} with mtd_info{}

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi_spl_load.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi_spl_load.c b/drivers/mtd/spi-nor/spi_spl_load.c
index 285b6da..9f33826 100644
--- a/drivers/mtd/spi-nor/spi_spl_load.c
+++ b/drivers/mtd/spi-nor/spi_spl_load.c
@@ -20,8 +20,7 @@
  * Load the kernel, check for a valid header we can parse, and if found load
  * the kernel and then device tree.
  */
-static int spi_load_image_os(struct spi_flash *flash,
-			     struct image_header *header)
+static int spi_load_image_os(spi_flash_t *flash, struct image_header *header)
 {
 	/* Read for a header, parse or error out. */
 	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, 0x40,
@@ -52,7 +51,7 @@ static int spi_load_image_os(struct spi_flash *flash,
 int spl_spi_load_image(void)
 {
 	int err = 0;
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 	struct image_header *header;
 
 	/*
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 27/87] spl: Add CONFIG_SPL_SPI_NOR_SUPPORT
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (24 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 26/87] mtd: spi-nor: spi_spl_load: Use mtd_info Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 28/87] mtd: spi-nor: Add flash vendor Kconfig entries Jagan Teki
                   ` (59 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Add SPL support for SPI-NOR flash.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/Makefile b/drivers/Makefile
index e7eab66..1d179b9 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_ARMADA_38X) += ddr/marvell/a38x/
 obj-$(CONFIG_ARMADA_XP) += ddr/marvell/axp/
 obj-$(CONFIG_ALTERA_SDRAM) += ddr/altera/
 obj-$(CONFIG_SPL_SERIAL_SUPPORT) += serial/
+obj-$(CONFIG_SPL_SPI_NOR_SUPPORT) += mtd/spi-nor/
 obj-$(CONFIG_SPL_SPI_FLASH_SUPPORT) += mtd/spi/
 obj-$(CONFIG_SPL_SPI_SUPPORT) += spi/
 obj-$(CONFIG_SPL_POWER_SUPPORT) += power/ power/pmic/
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 28/87] mtd: spi-nor: Add flash vendor Kconfig entries
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (25 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 27/87] spl: Add CONFIG_SPL_SPI_NOR_SUPPORT Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 29/87] arm: zynq: Kconfig: Select MTD uclass Jagan Teki
                   ` (58 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added flash vendor kconfig entries from drivers/mtd/spi

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index dd62e24..a035fd3 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -58,4 +58,44 @@ config SPI_NOR_BAR
 	  Bank/Extended address registers are used to access the flash
 	  which has size > 16MiB in 3-byte addressing.
 
+config SPI_FLASH_ATMEL
+	bool "Atmel SPI flash support"
+	help
+	  Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx)
+
+config SPI_FLASH_EON
+	bool "EON SPI flash support"
+	help
+	  Add support for various EON SPI flash chips (EN25xxx)
+
+config SPI_FLASH_GIGADEVICE
+	bool "GigaDevice SPI flash support"
+	help
+	  Add support for various GigaDevice SPI flash chips (GD25xxx)
+
+config SPI_FLASH_MACRONIX
+	bool "Macronix SPI flash support"
+	help
+	  Add support for various Macronix SPI flash chips (MX25Lxxx)
+
+config SPI_FLASH_SPANSION
+	bool "Spansion SPI flash support"
+	help
+	  Add support for various Spansion SPI flash chips (S25FLxxx)
+
+config SPI_FLASH_STMICRO
+	bool "STMicro SPI flash support"
+	help
+	  Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)
+
+config SPI_FLASH_SST
+	bool "SST SPI flash support"
+	help
+	  Add support for various SST SPI flash chips (SST25xxx)
+
+config SPI_FLASH_WINBOND
+	bool "Winbond SPI flash support"
+	help
+	  Add support for various Winbond SPI flash chips (W25xxx)
+
 endif # MTD_SPI_NOR
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 29/87] arm: zynq: Kconfig: Select MTD uclass
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (26 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 28/87] mtd: spi-nor: Add flash vendor Kconfig entries Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 30/87] arm: zynq: Kconfig: Drop DM_SPI_FLASH Jagan Teki
                   ` (57 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since SPI-NOR core relies on MTD uclass.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e5f57ef..1e92be0 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -568,6 +568,7 @@ config ARCH_ZYNQ
 	select DM_MMC
 	select DM_SPI
 	select DM_SERIAL
+	select MTD
 	select DM_SPI_FLASH
 	select SPL_SEPARATE_BSS if SPL
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 30/87] arm: zynq: Kconfig: Drop DM_SPI_FLASH
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (27 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 29/87] arm: zynq: Kconfig: Select MTD uclass Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 31/87] mtd: spi-nor: Copy sf_dataflash Jagan Teki
                   ` (56 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Drop using legacy DM_SPI_FLASH.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/arm/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1e92be0..b22a04f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -569,7 +569,6 @@ config ARCH_ZYNQ
 	select DM_SPI
 	select DM_SERIAL
 	select MTD
-	select DM_SPI_FLASH
 	select SPL_SEPARATE_BSS if SPL
 
 config ARCH_ZYNQMP
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 31/87] mtd: spi-nor: Copy sf_dataflash
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (28 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 30/87] arm: zynq: Kconfig: Drop DM_SPI_FLASH Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 32/87] mtd: dataflash: Remove unneeded spi data Jagan Teki
                   ` (55 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Copy sf_dataflash.c from drivers/mtd/spi to spi-nor,
more changes will see on future patches.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 701 +++++++++++++++++++++++++++++++++++++
 1 file changed, 701 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/sf_dataflash.c

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
new file mode 100644
index 0000000..b2a56da
--- /dev/null
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -0,0 +1,701 @@
+/*
+ *
+ * Atmel DataFlash probing
+ *
+ * Copyright (C) 2004-2009, 2015 Freescale Semiconductor, Inc.
+ * Haikun Wang (haikun.wang at freescale.com)
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+*/
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <spi.h>
+#include <spi_flash.h>
+#include <div64.h>
+#include <linux/err.h>
+#include <linux/math64.h>
+
+#include "sf_internal.h"
+
+/* reads can bypass the buffers */
+#define OP_READ_CONTINUOUS	0xE8
+#define OP_READ_PAGE		0xD2
+
+/* group B requests can run even while status reports "busy" */
+#define OP_READ_STATUS		0xD7	/* group B */
+
+/* move data between host and buffer */
+#define OP_READ_BUFFER1		0xD4	/* group B */
+#define OP_READ_BUFFER2		0xD6	/* group B */
+#define OP_WRITE_BUFFER1	0x84	/* group B */
+#define OP_WRITE_BUFFER2	0x87	/* group B */
+
+/* erasing flash */
+#define OP_ERASE_PAGE		0x81
+#define OP_ERASE_BLOCK		0x50
+
+/* move data between buffer and flash */
+#define OP_TRANSFER_BUF1	0x53
+#define OP_TRANSFER_BUF2	0x55
+#define OP_MREAD_BUFFER1	0xD4
+#define OP_MREAD_BUFFER2	0xD6
+#define OP_MWERASE_BUFFER1	0x83
+#define OP_MWERASE_BUFFER2	0x86
+#define OP_MWRITE_BUFFER1	0x88	/* sector must be pre-erased */
+#define OP_MWRITE_BUFFER2	0x89	/* sector must be pre-erased */
+
+/* write to buffer, then write-erase to flash */
+#define OP_PROGRAM_VIA_BUF1	0x82
+#define OP_PROGRAM_VIA_BUF2	0x85
+
+/* compare buffer to flash */
+#define OP_COMPARE_BUF1		0x60
+#define OP_COMPARE_BUF2		0x61
+
+/* read flash to buffer, then write-erase to flash */
+#define OP_REWRITE_VIA_BUF1	0x58
+#define OP_REWRITE_VIA_BUF2	0x59
+
+/*
+ * newer chips report JEDEC manufacturer and device IDs; chip
+ * serial number and OTP bits; and per-sector writeprotect.
+ */
+#define OP_READ_ID		0x9F
+#define OP_READ_SECURITY	0x77
+#define OP_WRITE_SECURITY_REVC	0x9A
+#define OP_WRITE_SECURITY	0x9B	/* revision D */
+
+
+struct dataflash {
+	uint8_t			command[16];
+	unsigned short		page_offset;	/* offset in flash address */
+};
+
+/*
+ * Return the status of the DataFlash device.
+ */
+static inline int dataflash_status(struct spi_slave *spi)
+{
+	int ret;
+	u8 status;
+	/*
+	 * NOTE:  at45db321c over 25 MHz wants to write
+	 * a dummy byte after the opcode...
+	 */
+	ret = spi_flash_cmd(spi, OP_READ_STATUS, &status, 1);
+	return ret ? -EIO : status;
+}
+
+/*
+ * Poll the DataFlash device until it is READY.
+ * This usually takes 5-20 msec or so; more for sector erase.
+ * ready: return > 0
+ */
+static int dataflash_waitready(struct spi_slave *spi)
+{
+	int status;
+	int timeout = 2 * CONFIG_SYS_HZ;
+	int timebase;
+
+	timebase = get_timer(0);
+	do {
+		status = dataflash_status(spi);
+		if (status < 0)
+			status = 0;
+
+		if (status & (1 << 7))	/* RDY/nBSY */
+			return status;
+
+		mdelay(3);
+	} while (get_timer(timebase) < timeout);
+
+	return -ETIME;
+}
+
+/*
+ * Erase pages of flash.
+ */
+static int spi_dataflash_erase(struct udevice *dev, u32 offset, size_t len)
+{
+	struct dataflash	*dataflash;
+	struct spi_flash	*spi_flash;
+	struct spi_slave	*spi;
+	unsigned		blocksize;
+	uint8_t			*command;
+	uint32_t		rem;
+	int			status;
+
+	dataflash = dev_get_priv(dev);
+	spi_flash = dev_get_uclass_priv(dev);
+	spi = spi_flash->spi;
+
+	blocksize = spi_flash->page_size << 3;
+
+	memset(dataflash->command, 0 , sizeof(dataflash->command));
+	command = dataflash->command;
+
+	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
+
+	div_u64_rem(len, spi_flash->page_size, &rem);
+	if (rem)
+		return -EINVAL;
+	div_u64_rem(offset, spi_flash->page_size, &rem);
+	if (rem)
+		return -EINVAL;
+
+	status = spi_claim_bus(spi);
+	if (status) {
+		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		return status;
+	}
+
+	while (len > 0) {
+		unsigned int	pageaddr;
+		int		do_block;
+		/*
+		 * Calculate flash page address; use block erase (for speed) if
+		 * we're at a block boundary and need to erase the whole block.
+		 */
+		pageaddr = div_u64(offset, spi_flash->page_size);
+		do_block = (pageaddr & 0x7) == 0 && len >= blocksize;
+		pageaddr = pageaddr << dataflash->page_offset;
+
+		command[0] = do_block ? OP_ERASE_BLOCK : OP_ERASE_PAGE;
+		command[1] = (uint8_t)(pageaddr >> 16);
+		command[2] = (uint8_t)(pageaddr >> 8);
+		command[3] = 0;
+
+		debug("%s ERASE %s: (%x) %x %x %x [%d]\n",
+		      dev->name, do_block ? "block" : "page",
+		      command[0], command[1], command[2], command[3],
+		      pageaddr);
+
+		status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
+		if (status < 0) {
+			debug("%s: erase send command error!\n", dev->name);
+			return -EIO;
+		}
+
+		status = dataflash_waitready(spi);
+		if (status < 0) {
+			debug("%s: erase waitready error!\n", dev->name);
+			return status;
+		}
+
+		if (do_block) {
+			offset += blocksize;
+			len -= blocksize;
+		} else {
+			offset += spi_flash->page_size;
+			len -= spi_flash->page_size;
+		}
+	}
+
+	spi_release_bus(spi);
+
+	return 0;
+}
+
+/*
+ * Read from the DataFlash device.
+ *   offset : Start offset in flash device
+ *   len    : Amount to read
+ *   buf    : Buffer containing the data
+ */
+static int spi_dataflash_read(struct udevice *dev, u32 offset, size_t len,
+			      void *buf)
+{
+	struct dataflash	*dataflash;
+	struct spi_flash	*spi_flash;
+	struct spi_slave	*spi;
+	unsigned int		addr;
+	uint8_t			*command;
+	int			status;
+
+	dataflash = dev_get_priv(dev);
+	spi_flash = dev_get_uclass_priv(dev);
+	spi = spi_flash->spi;
+
+	memset(dataflash->command, 0 , sizeof(dataflash->command));
+	command = dataflash->command;
+
+	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
+	debug("READ: (%x) %x %x %x\n",
+	      command[0], command[1], command[2], command[3]);
+
+	/* Calculate flash page/byte address */
+	addr = (((unsigned)offset / spi_flash->page_size)
+	       << dataflash->page_offset)
+	       + ((unsigned)offset % spi_flash->page_size);
+
+	status = spi_claim_bus(spi);
+	if (status) {
+		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		return status;
+	}
+
+	/*
+	 * Continuous read, max clock = f(car) which may be less than
+	 * the peak rate available.  Some chips support commands with
+	 * fewer "don't care" bytes.  Both buffers stay unchanged.
+	 */
+	command[0] = OP_READ_CONTINUOUS;
+	command[1] = (uint8_t)(addr >> 16);
+	command[2] = (uint8_t)(addr >> 8);
+	command[3] = (uint8_t)(addr >> 0);
+
+	/* plus 4 "don't care" bytes, command len: 4 + 4 "don't care" bytes */
+	status = spi_flash_cmd_read(spi, command, 8, buf, len);
+
+	spi_release_bus(spi);
+
+	return status;
+}
+
+/*
+ * Write to the DataFlash device.
+ *   offset     : Start offset in flash device
+ *   len    : Amount to write
+ *   buf    : Buffer containing the data
+ */
+int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
+			const void *buf)
+{
+	struct dataflash	*dataflash;
+	struct spi_flash	*spi_flash;
+	struct spi_slave	*spi;
+	uint8_t			*command;
+	unsigned int		pageaddr, addr, to, writelen;
+	size_t			remaining = len;
+	u_char			*writebuf = (u_char *)buf;
+	int			status = -EINVAL;
+
+	dataflash = dev_get_priv(dev);
+	spi_flash = dev_get_uclass_priv(dev);
+	spi = spi_flash->spi;
+
+	memset(dataflash->command, 0 , sizeof(dataflash->command));
+	command = dataflash->command;
+
+	debug("%s: write 0x%x..0x%x\n", dev->name, offset, (offset + len));
+
+	pageaddr = ((unsigned)offset / spi_flash->page_size);
+	to = ((unsigned)offset % spi_flash->page_size);
+	if (to + len > spi_flash->page_size)
+		writelen = spi_flash->page_size - to;
+	else
+		writelen = len;
+
+	status = spi_claim_bus(spi);
+	if (status) {
+		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		return status;
+	}
+
+	while (remaining > 0) {
+		debug("write @ %d:%d len=%d\n", pageaddr, to, writelen);
+
+		/*
+		 * REVISIT:
+		 * (a) each page in a sector must be rewritten at least
+		 *     once every 10K sibling erase/program operations.
+		 * (b) for pages that are already erased, we could
+		 *     use WRITE+MWRITE not PROGRAM for ~30% speedup.
+		 * (c) WRITE to buffer could be done while waiting for
+		 *     a previous MWRITE/MWERASE to complete ...
+		 * (d) error handling here seems to be mostly missing.
+		 *
+		 * Two persistent bits per page, plus a per-sector counter,
+		 * could support (a) and (b) ... we might consider using
+		 * the second half of sector zero, which is just one block,
+		 * to track that state.  (On AT91, that sector should also
+		 * support boot-from-DataFlash.)
+		 */
+
+		addr = pageaddr << dataflash->page_offset;
+
+		/* (1) Maybe transfer partial page to Buffer1 */
+		if (writelen != spi_flash->page_size) {
+			command[0] = OP_TRANSFER_BUF1;
+			command[1] = (addr & 0x00FF0000) >> 16;
+			command[2] = (addr & 0x0000FF00) >> 8;
+			command[3] = 0;
+
+			debug("TRANSFER: (%x) %x %x %x\n",
+			      command[0], command[1], command[2], command[3]);
+
+			status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
+			if (status < 0) {
+				debug("%s: write(<pagesize) command error!\n",
+				      dev->name);
+				return -EIO;
+			}
+
+			status = dataflash_waitready(spi);
+			if (status < 0) {
+				debug("%s: write(<pagesize) waitready error!\n",
+				      dev->name);
+				return status;
+			}
+		}
+
+		/* (2) Program full page via Buffer1 */
+		addr += to;
+		command[0] = OP_PROGRAM_VIA_BUF1;
+		command[1] = (addr & 0x00FF0000) >> 16;
+		command[2] = (addr & 0x0000FF00) >> 8;
+		command[3] = (addr & 0x000000FF);
+
+		debug("PROGRAM: (%x) %x %x %x\n",
+		      command[0], command[1], command[2], command[3]);
+
+		status = spi_flash_cmd_write(spi, command,
+					     4, writebuf, writelen);
+		if (status < 0) {
+			debug("%s: write send command error!\n", dev->name);
+			return -EIO;
+		}
+
+		status = dataflash_waitready(spi);
+		if (status < 0) {
+			debug("%s: write waitready error!\n", dev->name);
+			return status;
+		}
+
+#ifdef CONFIG_SPI_DATAFLASH_WRITE_VERIFY
+		/* (3) Compare to Buffer1 */
+		addr = pageaddr << dataflash->page_offset;
+		command[0] = OP_COMPARE_BUF1;
+		command[1] = (addr & 0x00FF0000) >> 16;
+		command[2] = (addr & 0x0000FF00) >> 8;
+		command[3] = 0;
+
+		debug("COMPARE: (%x) %x %x %x\n",
+		      command[0], command[1], command[2], command[3]);
+
+		status = spi_flash_cmd_write(spi, command,
+					     4, writebuf, writelen);
+		if (status < 0) {
+			debug("%s: write(compare) send command error!\n",
+			      dev->name);
+			return -EIO;
+		}
+
+		status = dataflash_waitready(spi);
+
+		/* Check result of the compare operation */
+		if (status & (1 << 6)) {
+			printf("SPI DataFlash: write compare page %u, err %d\n",
+			       pageaddr, status);
+			remaining = 0;
+			status = -EIO;
+			break;
+		} else {
+			status = 0;
+		}
+
+#endif	/* CONFIG_SPI_DATAFLASH_WRITE_VERIFY */
+		remaining = remaining - writelen;
+		pageaddr++;
+		to = 0;
+		writebuf += writelen;
+
+		if (remaining > spi_flash->page_size)
+			writelen = spi_flash->page_size;
+		else
+			writelen = remaining;
+	}
+
+	spi_release_bus(spi);
+
+	return 0;
+}
+
+static int add_dataflash(struct udevice *dev, char *name, int nr_pages,
+			     int pagesize, int pageoffset, char revision)
+{
+	struct spi_flash *spi_flash;
+	struct dataflash *dataflash;
+
+	dataflash = dev_get_priv(dev);
+	spi_flash = dev_get_uclass_priv(dev);
+
+	dataflash->page_offset = pageoffset;
+
+	spi_flash->name = name;
+	spi_flash->page_size = pagesize;
+	spi_flash->size = nr_pages * pagesize;
+	spi_flash->erase_size = pagesize;
+
+#ifndef CONFIG_SPL_BUILD
+	printf("SPI DataFlash: Detected %s with page size ", spi_flash->name);
+	print_size(spi_flash->page_size, ", erase size ");
+	print_size(spi_flash->erase_size, ", total ");
+	print_size(spi_flash->size, "");
+	printf(", revision %c", revision);
+	puts("\n");
+#endif
+
+	return 0;
+}
+
+struct flash_info {
+	char		*name;
+
+	/*
+	 * JEDEC id has a high byte of zero plus three data bytes:
+	 * the manufacturer id, then a two byte device id.
+	 */
+	uint32_t	jedec_id;
+
+	/* The size listed here is what works with OP_ERASE_PAGE. */
+	unsigned	nr_pages;
+	uint16_t	pagesize;
+	uint16_t	pageoffset;
+
+	uint16_t	flags;
+#define SUP_POW2PS	0x0002		/* supports 2^N byte pages */
+#define IS_POW2PS	0x0001		/* uses 2^N byte pages */
+};
+
+static struct flash_info dataflash_data[] = {
+	/*
+	 * NOTE:  chips with SUP_POW2PS (rev D and up) need two entries,
+	 * one with IS_POW2PS and the other without.  The entry with the
+	 * non-2^N byte page size can't name exact chip revisions without
+	 * losing backwards compatibility for cmdlinepart.
+	 *
+	 * Those two entries have different name spelling format in order to
+	 * show their difference obviously.
+	 * The upper case refer to the chip isn't in normal 2^N bytes page-size
+	 * mode.
+	 * The lower case refer to the chip is in normal 2^N bytes page-size
+	 * mode.
+	 *
+	 * These newer chips also support 128-byte security registers (with
+	 * 64 bytes one-time-programmable) and software write-protection.
+	 */
+	{ "AT45DB011B",  0x1f2200, 512, 264, 9, SUP_POW2PS},
+	{ "at45db011d",  0x1f2200, 512, 256, 8, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB021B",  0x1f2300, 1024, 264, 9, SUP_POW2PS},
+	{ "at45db021d",  0x1f2300, 1024, 256, 8, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB041x",  0x1f2400, 2048, 264, 9, SUP_POW2PS},
+	{ "at45db041d",  0x1f2400, 2048, 256, 8, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB081B",  0x1f2500, 4096, 264, 9, SUP_POW2PS},
+	{ "at45db081d",  0x1f2500, 4096, 256, 8, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB161x",  0x1f2600, 4096, 528, 10, SUP_POW2PS},
+	{ "at45db161d",  0x1f2600, 4096, 512, 9, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB321x",  0x1f2700, 8192, 528, 10, 0},		/* rev C */
+
+	{ "AT45DB321x",  0x1f2701, 8192, 528, 10, SUP_POW2PS},
+	{ "at45db321d",  0x1f2701, 8192, 512, 9, SUP_POW2PS | IS_POW2PS},
+
+	{ "AT45DB642x",  0x1f2800, 8192, 1056, 11, SUP_POW2PS},
+	{ "at45db642d",  0x1f2800, 8192, 1024, 10, SUP_POW2PS | IS_POW2PS},
+};
+
+static struct flash_info *jedec_probe(struct spi_slave *spi, u8 *id)
+{
+	int			tmp;
+	uint32_t		jedec;
+	struct flash_info	*info;
+	int status;
+
+	/*
+	 * JEDEC also defines an optional "extended device information"
+	 * string for after vendor-specific data, after the three bytes
+	 * we use here.  Supporting some chips might require using it.
+	 *
+	 * If the vendor ID isn't Atmel's (0x1f), assume this call failed.
+	 * That's not an error; only rev C and newer chips handle it, and
+	 * only Atmel sells these chips.
+	 */
+	if (id[0] != 0x1f)
+		return NULL;
+
+	jedec = id[0];
+	jedec = jedec << 8;
+	jedec |= id[1];
+	jedec = jedec << 8;
+	jedec |= id[2];
+
+	for (tmp = 0, info = dataflash_data;
+			tmp < ARRAY_SIZE(dataflash_data);
+			tmp++, info++) {
+		if (info->jedec_id == jedec) {
+			if (info->flags & SUP_POW2PS) {
+				status = dataflash_status(spi);
+				if (status < 0) {
+					debug("SPI DataFlash: status error %d\n",
+					      status);
+					return NULL;
+				}
+				if (status & 0x1) {
+					if (info->flags & IS_POW2PS)
+						return info;
+				} else {
+					if (!(info->flags & IS_POW2PS))
+						return info;
+				}
+			} else {
+				return info;
+			}
+		}
+	}
+
+	/*
+	 * Treat other chips as errors ... we won't know the right page
+	 * size (it might be binary) even when we can tell which density
+	 * class is involved (legacy chip id scheme).
+	 */
+	printf("SPI DataFlash: Unsupported flash IDs: ");
+	printf("manuf %02x, jedec %04x, ext_jedec %04x\n",
+	       id[0], jedec, id[3] << 8 | id[4]);
+	return NULL;
+}
+
+/*
+ * Detect and initialize DataFlash device, using JEDEC IDs on newer chips
+ * or else the ID code embedded in the status bits:
+ *
+ *   Device      Density         ID code          #Pages PageSize  Offset
+ *   AT45DB011B  1Mbit   (128K)  xx0011xx (0x0c)    512    264      9
+ *   AT45DB021B  2Mbit   (256K)  xx0101xx (0x14)   1024    264      9
+ *   AT45DB041B  4Mbit   (512K)  xx0111xx (0x1c)   2048    264      9
+ *   AT45DB081B  8Mbit   (1M)    xx1001xx (0x24)   4096    264      9
+ *   AT45DB0161B 16Mbit  (2M)    xx1011xx (0x2c)   4096    528     10
+ *   AT45DB0321B 32Mbit  (4M)    xx1101xx (0x34)   8192    528     10
+ *   AT45DB0642  64Mbit  (8M)    xx111xxx (0x3c)   8192   1056     11
+ *   AT45DB1282  128Mbit (16M)   xx0100xx (0x10)  16384   1056     11
+ */
+static int spi_dataflash_probe(struct udevice *dev)
+{
+	struct spi_slave *spi = dev_get_parent_priv(dev);
+	struct spi_flash *spi_flash;
+	struct flash_info *info;
+	u8 idcode[5];
+	int ret, status = 0;
+
+	spi_flash = dev_get_uclass_priv(dev);
+	spi_flash->dev = dev;
+
+	ret = spi_claim_bus(spi);
+	if (ret)
+		return ret;
+
+	ret = spi_flash_cmd(spi, CMD_READ_ID, idcode, sizeof(idcode));
+	if (ret) {
+		printf("SPI DataFlash: Failed to get idcodes\n");
+		goto err_read_cmd;
+	}
+
+	/*
+	 * Try to detect dataflash by JEDEC ID.
+	 * If it succeeds we know we have either a C or D part.
+	 * D will support power of 2 pagesize option.
+	 * Both support the security register, though with different
+	 * write procedures.
+	 */
+	info = jedec_probe(spi, idcode);
+	if (info != NULL)
+		add_dataflash(dev, info->name, info->nr_pages,
+			      info->pagesize, info->pageoffset,
+			      (info->flags & SUP_POW2PS) ? 'd' : 'c');
+	else {
+		/*
+		* Older chips support only legacy commands, identifing
+		* capacity using bits in the status byte.
+		*/
+		status = dataflash_status(spi);
+		if (status <= 0 || status == 0xff) {
+			printf("SPI DataFlash: read status error %d\n", status);
+			if (status == 0 || status == 0xff)
+				status = -ENODEV;
+			goto err_read_cmd;
+		}
+		/*
+		* if there's a device there, assume it's dataflash.
+		* board setup should have set spi->max_speed_max to
+		* match f(car) for continuous reads, mode 0 or 3.
+		*/
+		switch (status & 0x3c) {
+		case 0x0c:	/* 0 0 1 1 x x */
+			status = add_dataflash(dev, "AT45DB011B",
+					       512, 264, 9, 0);
+			break;
+		case 0x14:	/* 0 1 0 1 x x */
+			status = add_dataflash(dev, "AT45DB021B",
+					       1024, 264, 9, 0);
+			break;
+		case 0x1c:	/* 0 1 1 1 x x */
+			status = add_dataflash(dev, "AT45DB041x",
+					       2048, 264, 9, 0);
+			break;
+		case 0x24:	/* 1 0 0 1 x x */
+			status = add_dataflash(dev, "AT45DB081B",
+					       4096, 264, 9, 0);
+			break;
+		case 0x2c:	/* 1 0 1 1 x x */
+			status = add_dataflash(dev, "AT45DB161x",
+					       4096, 528, 10, 0);
+			break;
+		case 0x34:	/* 1 1 0 1 x x */
+			status = add_dataflash(dev, "AT45DB321x",
+					       8192, 528, 10, 0);
+			break;
+		case 0x38:	/* 1 1 1 x x x */
+		case 0x3c:
+			status = add_dataflash(dev, "AT45DB642x",
+					       8192, 1056, 11, 0);
+			break;
+		/* obsolete AT45DB1282 not (yet?) supported */
+		default:
+			dev_info(&spi->dev, "unsupported device (%x)\n",
+				 status & 0x3c);
+			status = -ENODEV;
+			goto err_read_cmd;
+		}
+	}
+
+	/* Assign spi data */
+	spi_flash->spi = spi;
+	spi_flash->memory_map = spi->memory_map;
+	spi_flash->dual_flash = spi->option;
+
+	spi_release_bus(spi);
+
+	return 0;
+
+err_read_cmd:
+	spi_release_bus(spi);
+
+	return status;
+}
+
+static const struct dm_spi_flash_ops spi_dataflash_ops = {
+	.read = spi_dataflash_read,
+	.write = spi_dataflash_write,
+	.erase = spi_dataflash_erase,
+};
+
+static const struct udevice_id spi_dataflash_ids[] = {
+	{ .compatible = "atmel,at45", },
+	{ .compatible = "atmel,dataflash", },
+	{ }
+};
+
+U_BOOT_DRIVER(spi_dataflash) = {
+	.name		= "spi_dataflash",
+	.id		= UCLASS_SPI_FLASH,
+	.of_match	= spi_dataflash_ids,
+	.probe		= spi_dataflash_probe,
+	.priv_auto_alloc_size = sizeof(struct dataflash),
+	.ops		= &spi_dataflash_ops,
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 32/87] mtd: dataflash: Remove unneeded spi data
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (29 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 31/87] mtd: spi-nor: Copy sf_dataflash Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 33/87] mtd: dataflash: Move flash id detection into jedec_probe Jagan Teki
                   ` (54 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

dataflash doesn't require options, memory_map from spi.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index b2a56da..6a9dfef 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -584,6 +584,7 @@ static int spi_dataflash_probe(struct udevice *dev)
 	int ret, status = 0;
 
 	spi_flash = dev_get_uclass_priv(dev);
+	spi_flash->spi = spi;
 	spi_flash->dev = dev;
 
 	ret = spi_claim_bus(spi);
@@ -664,11 +665,6 @@ static int spi_dataflash_probe(struct udevice *dev)
 		}
 	}
 
-	/* Assign spi data */
-	spi_flash->spi = spi;
-	spi_flash->memory_map = spi->memory_map;
-	spi_flash->dual_flash = spi->option;
-
 	spi_release_bus(spi);
 
 	return 0;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 33/87] mtd: dataflash: Move flash id detection into jedec_probe
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (30 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 32/87] mtd: dataflash: Remove unneeded spi data Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 34/87] mtd: dataflash: Fix add_dataflash return logic Jagan Teki
                   ` (53 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Flash id detection should be the first step to enumerate
the connected flash on the board, once ie done checking
with respective id codes locally in the driver all this
should be part of jedec_probe instead of id detection and
validated through flash_info{} table separatly.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index 6a9dfef..7c6c8d2 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -501,9 +501,10 @@ static struct flash_info dataflash_data[] = {
 	{ "at45db642d",  0x1f2800, 8192, 1024, 10, SUP_POW2PS | IS_POW2PS},
 };
 
-static struct flash_info *jedec_probe(struct spi_slave *spi, u8 *id)
+static struct flash_info *jedec_probe(struct spi_slave *spi)
 {
 	int			tmp;
+	uint8_t			id[5];
 	uint32_t		jedec;
 	struct flash_info	*info;
 	int status;
@@ -517,6 +518,11 @@ static struct flash_info *jedec_probe(struct spi_slave *spi, u8 *id)
 	 * That's not an error; only rev C and newer chips handle it, and
 	 * only Atmel sells these chips.
 	 */
+	tmp = spi_flash_cmd(spi, CMD_READ_ID, id, sizeof(id));
+	if (tmp < 0) {
+		printf("dataflash: error %d reading JEDEC ID\n", tmp);
+		return ERR_PTR(tmp);
+	}
 	if (id[0] != 0x1f)
 		return NULL;
 
@@ -580,7 +586,6 @@ static int spi_dataflash_probe(struct udevice *dev)
 	struct spi_slave *spi = dev_get_parent_priv(dev);
 	struct spi_flash *spi_flash;
 	struct flash_info *info;
-	u8 idcode[5];
 	int ret, status = 0;
 
 	spi_flash = dev_get_uclass_priv(dev);
@@ -591,12 +596,6 @@ static int spi_dataflash_probe(struct udevice *dev)
 	if (ret)
 		return ret;
 
-	ret = spi_flash_cmd(spi, CMD_READ_ID, idcode, sizeof(idcode));
-	if (ret) {
-		printf("SPI DataFlash: Failed to get idcodes\n");
-		goto err_read_cmd;
-	}
-
 	/*
 	 * Try to detect dataflash by JEDEC ID.
 	 * If it succeeds we know we have either a C or D part.
@@ -604,7 +603,9 @@ static int spi_dataflash_probe(struct udevice *dev)
 	 * Both support the security register, though with different
 	 * write procedures.
 	 */
-	info = jedec_probe(spi, idcode);
+	info = jedec_probe(spi);
+	if (IS_ERR(info))
+		return PTR_ERR(info);
 	if (info != NULL)
 		add_dataflash(dev, info->name, info->nr_pages,
 			      info->pagesize, info->pageoffset,
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 34/87] mtd: dataflash: Fix add_dataflash return logic
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (31 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 33/87] mtd: dataflash: Move flash id detection into jedec_probe Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 35/87] mtd: dataflash: Add UCLASS_MTD support Jagan Teki
                   ` (52 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

This patch fixed the add_dataflash return logic,
so-that it can handle both jedec and older chips
same as Linux.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 127 ++++++++++++++++++-------------------
 1 file changed, 61 insertions(+), 66 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index 7c6c8d2..b7e2a83 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -586,15 +586,15 @@ static int spi_dataflash_probe(struct udevice *dev)
 	struct spi_slave *spi = dev_get_parent_priv(dev);
 	struct spi_flash *spi_flash;
 	struct flash_info *info;
-	int ret, status = 0;
+	int status;
 
 	spi_flash = dev_get_uclass_priv(dev);
 	spi_flash->spi = spi;
 	spi_flash->dev = dev;
 
-	ret = spi_claim_bus(spi);
-	if (ret)
-		return ret;
+	status = spi_claim_bus(spi);
+	if (status)
+		return status;
 
 	/*
 	 * Try to detect dataflash by JEDEC ID.
@@ -605,74 +605,69 @@ static int spi_dataflash_probe(struct udevice *dev)
 	 */
 	info = jedec_probe(spi);
 	if (IS_ERR(info))
-		return PTR_ERR(info);
-	if (info != NULL)
-		add_dataflash(dev, info->name, info->nr_pages,
-			      info->pagesize, info->pageoffset,
-			      (info->flags & SUP_POW2PS) ? 'd' : 'c');
-	else {
-		/*
-		* Older chips support only legacy commands, identifing
-		* capacity using bits in the status byte.
-		*/
-		status = dataflash_status(spi);
-		if (status <= 0 || status == 0xff) {
-			printf("SPI DataFlash: read status error %d\n", status);
-			if (status == 0 || status == 0xff)
-				status = -ENODEV;
-			goto err_read_cmd;
-		}
-		/*
-		* if there's a device there, assume it's dataflash.
-		* board setup should have set spi->max_speed_max to
-		* match f(car) for continuous reads, mode 0 or 3.
-		*/
-		switch (status & 0x3c) {
-		case 0x0c:	/* 0 0 1 1 x x */
-			status = add_dataflash(dev, "AT45DB011B",
-					       512, 264, 9, 0);
-			break;
-		case 0x14:	/* 0 1 0 1 x x */
-			status = add_dataflash(dev, "AT45DB021B",
-					       1024, 264, 9, 0);
-			break;
-		case 0x1c:	/* 0 1 1 1 x x */
-			status = add_dataflash(dev, "AT45DB041x",
-					       2048, 264, 9, 0);
-			break;
-		case 0x24:	/* 1 0 0 1 x x */
-			status = add_dataflash(dev, "AT45DB081B",
-					       4096, 264, 9, 0);
-			break;
-		case 0x2c:	/* 1 0 1 1 x x */
-			status = add_dataflash(dev, "AT45DB161x",
-					       4096, 528, 10, 0);
-			break;
-		case 0x34:	/* 1 1 0 1 x x */
-			status = add_dataflash(dev, "AT45DB321x",
-					       8192, 528, 10, 0);
-			break;
-		case 0x38:	/* 1 1 1 x x x */
-		case 0x3c:
-			status = add_dataflash(dev, "AT45DB642x",
-					       8192, 1056, 11, 0);
-			break;
-		/* obsolete AT45DB1282 not (yet?) supported */
-		default:
-			dev_info(&spi->dev, "unsupported device (%x)\n",
-				 status & 0x3c);
+		goto err_jedec_probe;
+	if (info != NULL) {
+		status = add_dataflash(dev, info->name, info->nr_pages,
+				info->pagesize, info->pageoffset,
+				(info->flags & SUP_POW2PS) ? 'd' : 'c');
+		if (status < 0)
+			goto err_status;
+	}
+
+	/*
+	* Older chips support only legacy commands, identifing
+	* capacity using bits in the status byte.
+	*/
+	status = dataflash_status(spi);
+	if (status <= 0 || status == 0xff) {
+		printf("SPI DataFlash: read status error %d\n", status);
+		if (status == 0 || status == 0xff)
 			status = -ENODEV;
-			goto err_read_cmd;
-		}
+		goto err_jedec_probe;
 	}
 
-	spi_release_bus(spi);
+	/*
+	* if there's a device there, assume it's dataflash.
+	* board setup should have set spi->max_speed_max to
+	* match f(car) for continuous reads, mode 0 or 3.
+	*/
+	switch (status & 0x3c) {
+	case 0x0c:	/* 0 0 1 1 x x */
+		status = add_dataflash(dev, "AT45DB011B", 512, 264, 9, 0);
+		break;
+	case 0x14:	/* 0 1 0 1 x x */
+		status = add_dataflash(dev, "AT45DB021B", 1024, 264, 9, 0);
+		break;
+	case 0x1c:	/* 0 1 1 1 x x */
+		status = add_dataflash(dev, "AT45DB041x", 2048, 264, 9, 0);
+		break;
+	case 0x24:	/* 1 0 0 1 x x */
+		status = add_dataflash(dev, "AT45DB081B", 4096, 264, 9, 0);
+		break;
+	case 0x2c:	/* 1 0 1 1 x x */
+		status = add_dataflash(dev, "AT45DB161x", 4096, 528, 10, 0);
+		break;
+	case 0x34:	/* 1 1 0 1 x x */
+		status = add_dataflash(dev, "AT45DB321x", 8192, 528, 10, 0);
+		break;
+	case 0x38:	/* 1 1 1 x x x */
+	case 0x3c:
+		status = add_dataflash(dev, "AT45DB642x", 8192, 1056, 11, 0);
+		break;
+	/* obsolete AT45DB1282 not (yet?) supported */
+	default:
+		dev_info(&spi->dev, "unsupported device (%x)\n",
+			 status & 0x3c);
+		status = -ENODEV;
+		goto err_status;
+	}
 
-	return 0;
+	return status;
 
-err_read_cmd:
+err_status:
+	spi_free_slave(spi);
+err_jedec_probe:
 	spi_release_bus(spi);
-
 	return status;
 }
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 35/87] mtd: dataflash: Add UCLASS_MTD support
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (32 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 34/87] mtd: dataflash: Fix add_dataflash return logic Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 36/87] mtd: dataflash: Use spi_write_then_read Jagan Teki
                   ` (51 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

This patch replace the dataflash driver from SPI_FLASH
uclass to MTD UCLASS along with the support of mtd opertaions.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 214 ++++++++++++++++++-------------------
 1 file changed, 107 insertions(+), 107 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index b7e2a83..722ab7e 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -2,6 +2,7 @@
  *
  * Atmel DataFlash probing
  *
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
  * Copyright (C) 2004-2009, 2015 Freescale Semiconductor, Inc.
  * Haikun Wang (haikun.wang at freescale.com)
  *
@@ -12,10 +13,10 @@
 #include <errno.h>
 #include <fdtdec.h>
 #include <spi.h>
-#include <spi_flash.h>
 #include <div64.h>
 #include <linux/err.h>
 #include <linux/math64.h>
+#include <linux/mtd/mtd.h>
 
 #include "sf_internal.h"
 
@@ -70,7 +71,11 @@
 
 struct dataflash {
 	uint8_t			command[16];
+
 	unsigned short		page_offset;	/* offset in flash address */
+	unsigned int		page_size;	/* of bytes per page */
+
+	struct spi_slave	*spi;
 };
 
 /*
@@ -117,31 +122,25 @@ static int dataflash_waitready(struct spi_slave *spi)
 /*
  * Erase pages of flash.
  */
-static int spi_dataflash_erase(struct udevice *dev, u32 offset, size_t len)
+static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
-	unsigned		blocksize;
+	struct dataflash	*priv = mtd->priv;
+	struct spi_slave	*spi = priv->spi;
+	unsigned		blocksize = priv->page_size << 3;
 	uint8_t			*command;
 	uint32_t		rem;
 	int			status;
 
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
-
-	blocksize = spi_flash->page_size << 3;
-
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
+	memset(priv->command, 0 , sizeof(priv->command));
+	command = priv->command;
 
-	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
+	debug("%s: erase addr=0x%llx len 0x%llx\n", mtd->name,
+	      instr->addr, instr->len);
 
-	div_u64_rem(len, spi_flash->page_size, &rem);
+	div_u64_rem(instr->len, priv->page_size, &rem);
 	if (rem)
 		return -EINVAL;
-	div_u64_rem(offset, spi_flash->page_size, &rem);
+	div_u64_rem(instr->addr, priv->page_size, &rem);
 	if (rem)
 		return -EINVAL;
 
@@ -151,16 +150,16 @@ static int spi_dataflash_erase(struct udevice *dev, u32 offset, size_t len)
 		return status;
 	}
 
-	while (len > 0) {
+	while (instr->len > 0) {
 		unsigned int	pageaddr;
 		int		do_block;
 		/*
 		 * Calculate flash page address; use block erase (for speed) if
 		 * we're at a block boundary and need to erase the whole block.
 		 */
-		pageaddr = div_u64(offset, spi_flash->page_size);
-		do_block = (pageaddr & 0x7) == 0 && len >= blocksize;
-		pageaddr = pageaddr << dataflash->page_offset;
+		pageaddr = div_u64(instr->addr, priv->page_size);
+		do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize;
+		pageaddr = pageaddr << priv->page_offset;
 
 		command[0] = do_block ? OP_ERASE_BLOCK : OP_ERASE_PAGE;
 		command[1] = (uint8_t)(pageaddr >> 16);
@@ -168,67 +167,68 @@ static int spi_dataflash_erase(struct udevice *dev, u32 offset, size_t len)
 		command[3] = 0;
 
 		debug("%s ERASE %s: (%x) %x %x %x [%d]\n",
-		      dev->name, do_block ? "block" : "page",
+		      mtd->name, do_block ? "block" : "page",
 		      command[0], command[1], command[2], command[3],
 		      pageaddr);
 
 		status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
 		if (status < 0) {
-			debug("%s: erase send command error!\n", dev->name);
+			debug("%s: erase send command error!\n", mtd->name);
 			return -EIO;
 		}
 
 		status = dataflash_waitready(spi);
 		if (status < 0) {
-			debug("%s: erase waitready error!\n", dev->name);
+			debug("%s: erase waitready error!\n", mtd->name);
 			return status;
 		}
 
 		if (do_block) {
-			offset += blocksize;
-			len -= blocksize;
+			instr->addr += blocksize;
+			instr->len -= blocksize;
 		} else {
-			offset += spi_flash->page_size;
-			len -= spi_flash->page_size;
+			instr->addr += priv->page_size;
+			instr->len -= priv->page_size;
 		}
 	}
 
 	spi_release_bus(spi);
 
+	/* Inform MTD subsystem that erase is complete */
+	instr->state = MTD_ERASE_DONE;
+	mtd_erase_callback(instr);
+
 	return 0;
 }
 
 /*
  * Read from the DataFlash device.
- *   offset : Start offset in flash device
+ *   from   : Start offset in flash device
  *   len    : Amount to read
+ *   retlen : About of data actually read
  *   buf    : Buffer containing the data
  */
-static int spi_dataflash_read(struct udevice *dev, u32 offset, size_t len,
-			      void *buf)
+static int dataflash_read(struct mtd_info *mtd, loff_t from, size_t len,
+			       size_t *retlen, u_char *buf)
 {
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
+	struct dataflash	*priv = mtd->priv;
+	struct spi_slave	*spi = priv->spi;
 	unsigned int		addr;
 	uint8_t			*command;
 	int			status;
 
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
-
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
+	memset(priv->command, 0 , sizeof(priv->command));
+	command = priv->command;
 
-	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
+	debug("%s: read 0x%x..0x%x\n", mtd->name, (unsigned)from,
+	      (unsigned)(from + len));
 	debug("READ: (%x) %x %x %x\n",
 	      command[0], command[1], command[2], command[3]);
 
 	/* Calculate flash page/byte address */
-	addr = (((unsigned)offset / spi_flash->page_size)
-	       << dataflash->page_offset)
-	       + ((unsigned)offset % spi_flash->page_size);
+	addr = (((unsigned)from / priv->page_size)
+	       << priv->page_offset)
+	       + ((unsigned)from % priv->page_size);
 
 	status = spi_claim_bus(spi);
 	if (status) {
@@ -248,6 +248,10 @@ static int spi_dataflash_read(struct udevice *dev, u32 offset, size_t len,
 
 	/* plus 4 "don't care" bytes, command len: 4 + 4 "don't care" bytes */
 	status = spi_flash_cmd_read(spi, command, 8, buf, len);
+	if (status >= 0) {
+		*retlen = len - 8;
+		status = 0;
+	}
 
 	spi_release_bus(spi);
 
@@ -256,35 +260,32 @@ static int spi_dataflash_read(struct udevice *dev, u32 offset, size_t len,
 
 /*
  * Write to the DataFlash device.
- *   offset     : Start offset in flash device
+ *   to     : Start offset in flash device
  *   len    : Amount to write
+ *   retlen : Amount of data actually written
  *   buf    : Buffer containing the data
  */
-int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
-			const void *buf)
+static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
+				size_t *retlen, const u_char *buf)
 {
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
+	struct dataflash	*priv = mtd->priv;
+	struct spi_slave	*spi = priv->spi;
 	uint8_t			*command;
-	unsigned int		pageaddr, addr, to, writelen;
+	unsigned int		pageaddr, addr, offset, writelen;
 	size_t			remaining = len;
 	u_char			*writebuf = (u_char *)buf;
 	int			status = -EINVAL;
 
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
+	memset(priv->command, 0 , sizeof(priv->command));
+	command = priv->command;
 
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
+	debug("%s: write 0x%x..0x%x\n", mtd->name, (unsigned)to,
+	      (unsigned)(to + len));
 
-	debug("%s: write 0x%x..0x%x\n", dev->name, offset, (offset + len));
-
-	pageaddr = ((unsigned)offset / spi_flash->page_size);
-	to = ((unsigned)offset % spi_flash->page_size);
-	if (to + len > spi_flash->page_size)
-		writelen = spi_flash->page_size - to;
+	pageaddr = ((unsigned)to / priv->page_size);
+	offset = ((unsigned)to % priv->page_size);
+	if (offset + len > priv->page_size)
+		writelen = priv->page_size - offset;
 	else
 		writelen = len;
 
@@ -295,7 +296,7 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 	}
 
 	while (remaining > 0) {
-		debug("write @ %d:%d len=%d\n", pageaddr, to, writelen);
+		debug("write @ %d:%d len=%d\n", pageaddr, offset, writelen);
 
 		/*
 		 * REVISIT:
@@ -314,10 +315,10 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 		 * support boot-from-DataFlash.)
 		 */
 
-		addr = pageaddr << dataflash->page_offset;
+		addr = pageaddr << priv->page_offset;
 
 		/* (1) Maybe transfer partial page to Buffer1 */
-		if (writelen != spi_flash->page_size) {
+		if (writelen != priv->page_size) {
 			command[0] = OP_TRANSFER_BUF1;
 			command[1] = (addr & 0x00FF0000) >> 16;
 			command[2] = (addr & 0x0000FF00) >> 8;
@@ -329,20 +330,20 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 			status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
 			if (status < 0) {
 				debug("%s: write(<pagesize) command error!\n",
-				      dev->name);
+				      mtd->name);
 				return -EIO;
 			}
 
 			status = dataflash_waitready(spi);
 			if (status < 0) {
 				debug("%s: write(<pagesize) waitready error!\n",
-				      dev->name);
+				      mtd->name);
 				return status;
 			}
 		}
 
 		/* (2) Program full page via Buffer1 */
-		addr += to;
+		addr += offset;
 		command[0] = OP_PROGRAM_VIA_BUF1;
 		command[1] = (addr & 0x00FF0000) >> 16;
 		command[2] = (addr & 0x0000FF00) >> 8;
@@ -354,19 +355,19 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 		status = spi_flash_cmd_write(spi, command,
 					     4, writebuf, writelen);
 		if (status < 0) {
-			debug("%s: write send command error!\n", dev->name);
+			debug("%s: write send command error!\n", mtd->name);
 			return -EIO;
 		}
 
 		status = dataflash_waitready(spi);
 		if (status < 0) {
-			debug("%s: write waitready error!\n", dev->name);
+			debug("%s: write waitready error!\n", mtd->name);
 			return status;
 		}
 
 #ifdef CONFIG_SPI_DATAFLASH_WRITE_VERIFY
 		/* (3) Compare to Buffer1 */
-		addr = pageaddr << dataflash->page_offset;
+		addr = pageaddr << priv->page_offset;
 		command[0] = OP_COMPARE_BUF1;
 		command[1] = (addr & 0x00FF0000) >> 16;
 		command[2] = (addr & 0x0000FF00) >> 8;
@@ -379,7 +380,7 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 					     4, writebuf, writelen);
 		if (status < 0) {
 			debug("%s: write(compare) send command error!\n",
-			      dev->name);
+			      mtd->name);
 			return -EIO;
 		}
 
@@ -399,11 +400,12 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 #endif	/* CONFIG_SPI_DATAFLASH_WRITE_VERIFY */
 		remaining = remaining - writelen;
 		pageaddr++;
-		to = 0;
+		offset = 0;
 		writebuf += writelen;
+		*retlen += writelen;
 
-		if (remaining > spi_flash->page_size)
-			writelen = spi_flash->page_size;
+		if (remaining > priv->page_size)
+			writelen = priv->page_size;
 		else
 			writelen = remaining;
 	}
@@ -414,31 +416,41 @@ int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
 }
 
 static int add_dataflash(struct udevice *dev, char *name, int nr_pages,
-			     int pagesize, int pageoffset, char revision)
+			 int pagesize, int pageoffset, char revision)
 {
-	struct spi_flash *spi_flash;
-	struct dataflash *dataflash;
-
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-
-	dataflash->page_offset = pageoffset;
+	struct dataflash	*priv = dev_get_priv(dev);
+	struct mtd_info		*mtd = dev_get_uclass_priv(dev);
+	int ret;
 
-	spi_flash->name = name;
-	spi_flash->page_size = pagesize;
-	spi_flash->size = nr_pages * pagesize;
-	spi_flash->erase_size = pagesize;
+	priv->spi = dev_get_parent_priv(dev);
+	priv->page_size = pagesize;
+	priv->page_offset = pageoffset;
+
+	mtd->name = name;
+	mtd->size = nr_pages * pagesize;
+	mtd->erasesize = pagesize;
+	mtd->writesize = pagesize;
+	mtd->type = MTD_DATAFLASH;
+	mtd->flags = MTD_WRITEABLE;
+	mtd->_erase = dataflash_erase;
+	mtd->_read = dataflash_read;
+	mtd->_write = dataflash_write;
+	mtd->priv = priv;
 
 #ifndef CONFIG_SPL_BUILD
-	printf("SPI DataFlash: Detected %s with page size ", spi_flash->name);
-	print_size(spi_flash->page_size, ", erase size ");
-	print_size(spi_flash->erase_size, ", total ");
-	print_size(spi_flash->size, "");
+	printf("SPI DataFlash: Detected %s with page size ", mtd->name);
+	print_size(priv->page_size, ", erase size ");
+	print_size(mtd->erasesize, ", total ");
+	print_size(mtd->size, "");
 	printf(", revision %c", revision);
 	puts("\n");
 #endif
 
-	return 0;
+	ret = add_mtd_device(mtd);
+	if (ret)
+		return ret;
+
+	return ret;
 }
 
 struct flash_info {
@@ -583,15 +595,10 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
  */
 static int spi_dataflash_probe(struct udevice *dev)
 {
-	struct spi_slave *spi = dev_get_parent_priv(dev);
-	struct spi_flash *spi_flash;
-	struct flash_info *info;
+	struct spi_slave	*spi = dev_get_parent_priv(dev);
+	struct flash_info	*info;
 	int status;
 
-	spi_flash = dev_get_uclass_priv(dev);
-	spi_flash->spi = spi;
-	spi_flash->dev = dev;
-
 	status = spi_claim_bus(spi);
 	if (status)
 		return status;
@@ -671,12 +678,6 @@ err_jedec_probe:
 	return status;
 }
 
-static const struct dm_spi_flash_ops spi_dataflash_ops = {
-	.read = spi_dataflash_read,
-	.write = spi_dataflash_write,
-	.erase = spi_dataflash_erase,
-};
-
 static const struct udevice_id spi_dataflash_ids[] = {
 	{ .compatible = "atmel,at45", },
 	{ .compatible = "atmel,dataflash", },
@@ -685,9 +686,8 @@ static const struct udevice_id spi_dataflash_ids[] = {
 
 U_BOOT_DRIVER(spi_dataflash) = {
 	.name		= "spi_dataflash",
-	.id		= UCLASS_SPI_FLASH,
+	.id		= UCLASS_MTD,
 	.of_match	= spi_dataflash_ids,
 	.probe		= spi_dataflash_probe,
 	.priv_auto_alloc_size = sizeof(struct dataflash),
-	.ops		= &spi_dataflash_ops,
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 36/87] mtd: dataflash: Use spi_write_then_read
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (33 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 35/87] mtd: dataflash: Add UCLASS_MTD support Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 37/87] mtd: dataflash: Drop sf_internal.h Jagan Teki
                   ` (50 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Use spi_write_then_read call from spi layer for
dataflash write and then read calling.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index 722ab7e..525af0a 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -84,12 +84,12 @@ struct dataflash {
 static inline int dataflash_status(struct spi_slave *spi)
 {
 	int ret;
-	u8 status;
+	u8 cmd = OP_READ_STATUS, status;
 	/*
 	 * NOTE:  at45db321c over 25 MHz wants to write
 	 * a dummy byte after the opcode...
 	 */
-	ret = spi_flash_cmd(spi, OP_READ_STATUS, &status, 1);
+	ret = spi_write_then_read(spi, &cmd, 1, NULL, &status, 1);
 	return ret ? -EIO : status;
 }
 
@@ -171,7 +171,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
 		      command[0], command[1], command[2], command[3],
 		      pageaddr);
 
-		status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
+		status = spi_write_then_read(spi, command, 4, NULL, NULL, 0);
 		if (status < 0) {
 			debug("%s: erase send command error!\n", mtd->name);
 			return -EIO;
@@ -247,7 +247,7 @@ static int dataflash_read(struct mtd_info *mtd, loff_t from, size_t len,
 	command[3] = (uint8_t)(addr >> 0);
 
 	/* plus 4 "don't care" bytes, command len: 4 + 4 "don't care" bytes */
-	status = spi_flash_cmd_read(spi, command, 8, buf, len);
+	status = spi_write_then_read(spi, command, 8, NULL, buf, len);
 	if (status >= 0) {
 		*retlen = len - 8;
 		status = 0;
@@ -327,7 +327,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 			debug("TRANSFER: (%x) %x %x %x\n",
 			      command[0], command[1], command[2], command[3]);
 
-			status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
+			status = spi_write_then_read(spi, command, 4, NULL, NULL, 0);
 			if (status < 0) {
 				debug("%s: write(<pagesize) command error!\n",
 				      mtd->name);
@@ -352,8 +352,8 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 		debug("PROGRAM: (%x) %x %x %x\n",
 		      command[0], command[1], command[2], command[3]);
 
-		status = spi_flash_cmd_write(spi, command,
-					     4, writebuf, writelen);
+		status = spi_write_then_read(spi, command, 4,
+					     writebuf, NULL, writelen);
 		if (status < 0) {
 			debug("%s: write send command error!\n", mtd->name);
 			return -EIO;
@@ -376,8 +376,8 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 		debug("COMPARE: (%x) %x %x %x\n",
 		      command[0], command[1], command[2], command[3]);
 
-		status = spi_flash_cmd_write(spi, command,
-					     4, writebuf, writelen);
+		status = spi_write_then_read(spi, command, 4,
+					     writebuf, NULL, writelen);
 		if (status < 0) {
 			debug("%s: write(compare) send command error!\n",
 			      mtd->name);
@@ -519,6 +519,7 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
 	uint8_t			id[5];
 	uint32_t		jedec;
 	struct flash_info	*info;
+	u8 cmd = CMD_READ_ID;
 	int status;
 
 	/*
@@ -530,7 +531,7 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
 	 * That's not an error; only rev C and newer chips handle it, and
 	 * only Atmel sells these chips.
 	 */
-	tmp = spi_flash_cmd(spi, CMD_READ_ID, id, sizeof(id));
+	tmp = spi_write_then_read(spi, &cmd, 1, NULL, id, sizeof(id));
 	if (tmp < 0) {
 		printf("dataflash: error %d reading JEDEC ID\n", tmp);
 		return ERR_PTR(tmp);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 37/87] mtd: dataflash: Drop sf_internal.h
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (34 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 36/87] mtd: dataflash: Use spi_write_then_read Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 38/87] mtd: dataflash: Minor cleanups Jagan Teki
                   ` (49 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Drop using sf_internal.h and get the RDID from spi-nor.h

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index 525af0a..9943560 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -17,8 +17,7 @@
 #include <linux/err.h>
 #include <linux/math64.h>
 #include <linux/mtd/mtd.h>
-
-#include "sf_internal.h"
+#include <linux/mtd/spi-nor.h>
 
 /* reads can bypass the buffers */
 #define OP_READ_CONTINUOUS	0xE8
@@ -519,7 +518,7 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
 	uint8_t			id[5];
 	uint32_t		jedec;
 	struct flash_info	*info;
-	u8 cmd = CMD_READ_ID;
+	u8 cmd = SNOR_OP_RDID;
 	int status;
 
 	/*
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 38/87] mtd: dataflash: Minor cleanups
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (35 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 37/87] mtd: dataflash: Drop sf_internal.h Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 39/87] mtd: Rename sf_dataflash.c to mtd_dataflash.c Jagan Teki
                   ` (48 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

- rename spi_dataflash to mtd_dataflash
- fix single line comments
- remove unneeded spaces
- ascending order of include files
- rename spi_dataflash_* to dataflash_*
- rename SPI DATAFLASH to dataflash
- rename SPI DataFlash to dataflash
- return NULL replaced with error code

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 51 ++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 29 deletions(-)

diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/sf_dataflash.c
index 9943560..2a5f5ae 100644
--- a/drivers/mtd/spi-nor/sf_dataflash.c
+++ b/drivers/mtd/spi-nor/sf_dataflash.c
@@ -1,5 +1,4 @@
 /*
- *
  * Atmel DataFlash probing
  *
  * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
@@ -7,8 +6,10 @@
  * Haikun Wang (haikun.wang at freescale.com)
  *
  * SPDX-License-Identifier:	GPL-2.0+
-*/
+ */
+
 #include <common.h>
+#include <div64.h>
 #include <dm.h>
 #include <errno.h>
 #include <fdtdec.h>
@@ -67,7 +68,6 @@
 #define OP_WRITE_SECURITY_REVC	0x9A
 #define OP_WRITE_SECURITY	0x9B	/* revision D */
 
-
 struct dataflash {
 	uint8_t			command[16];
 
@@ -77,9 +77,7 @@ struct dataflash {
 	struct spi_slave	*spi;
 };
 
-/*
- * Return the status of the DataFlash device.
- */
+/* Return the status of the DataFlash device */
 static inline int dataflash_status(struct spi_slave *spi)
 {
 	int ret;
@@ -118,9 +116,7 @@ static int dataflash_waitready(struct spi_slave *spi)
 	return -ETIME;
 }
 
-/*
- * Erase pages of flash.
- */
+/* Erase pages of flash */
 static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
 	struct dataflash	*priv = mtd->priv;
@@ -145,7 +141,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
 
 	status = spi_claim_bus(spi);
 	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		debug("dataflash: unable to claim SPI bus\n");
 		return status;
 	}
 
@@ -231,7 +227,7 @@ static int dataflash_read(struct mtd_info *mtd, loff_t from, size_t len,
 
 	status = spi_claim_bus(spi);
 	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		debug("dataflash: unable to claim SPI bus\n");
 		return status;
 	}
 
@@ -290,7 +286,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 
 	status = spi_claim_bus(spi);
 	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
+		debug("dataflash: unable to claim SPI bus\n");
 		return status;
 	}
 
@@ -387,7 +383,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 
 		/* Check result of the compare operation */
 		if (status & (1 << 6)) {
-			printf("SPI DataFlash: write compare page %u, err %d\n",
+			printf("dataflash: write compare page %u, err %d\n",
 			       pageaddr, status);
 			remaining = 0;
 			status = -EIO;
@@ -551,7 +547,7 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
 			if (info->flags & SUP_POW2PS) {
 				status = dataflash_status(spi);
 				if (status < 0) {
-					debug("SPI DataFlash: status error %d\n",
+					debug("dataflash: status error %d\n",
 					      status);
 					return NULL;
 				}
@@ -573,10 +569,8 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
 	 * size (it might be binary) even when we can tell which density
 	 * class is involved (legacy chip id scheme).
 	 */
-	printf("SPI DataFlash: Unsupported flash IDs: ");
-	printf("manuf %02x, jedec %04x, ext_jedec %04x\n",
-	       id[0], jedec, id[3] << 8 | id[4]);
-	return NULL;
+	printf("dataflash: JEDEC id %06x not handled\n", jedec);
+	return ERR_PTR(-ENODEV);
 }
 
 /*
@@ -593,7 +587,7 @@ static struct flash_info *jedec_probe(struct spi_slave *spi)
  *   AT45DB0642  64Mbit  (8M)    xx111xxx (0x3c)   8192   1056     11
  *   AT45DB1282  128Mbit (16M)   xx0100xx (0x10)  16384   1056     11
  */
-static int spi_dataflash_probe(struct udevice *dev)
+static int dataflash_probe(struct udevice *dev)
 {
 	struct spi_slave	*spi = dev_get_parent_priv(dev);
 	struct flash_info	*info;
@@ -621,19 +615,19 @@ static int spi_dataflash_probe(struct udevice *dev)
 			goto err_status;
 	}
 
-	/*
+       /*
 	* Older chips support only legacy commands, identifing
 	* capacity using bits in the status byte.
 	*/
 	status = dataflash_status(spi);
 	if (status <= 0 || status == 0xff) {
-		printf("SPI DataFlash: read status error %d\n", status);
+		printf("dataflash: read status error %d\n", status);
 		if (status == 0 || status == 0xff)
 			status = -ENODEV;
 		goto err_jedec_probe;
 	}
 
-	/*
+       /*
 	* if there's a device there, assume it's dataflash.
 	* board setup should have set spi->max_speed_max to
 	* match f(car) for continuous reads, mode 0 or 3.
@@ -663,8 +657,7 @@ static int spi_dataflash_probe(struct udevice *dev)
 		break;
 	/* obsolete AT45DB1282 not (yet?) supported */
 	default:
-		dev_info(&spi->dev, "unsupported device (%x)\n",
-			 status & 0x3c);
+		printf("dataflash: unsupported device (%x)\n", status & 0x3c);
 		status = -ENODEV;
 		goto err_status;
 	}
@@ -678,16 +671,16 @@ err_jedec_probe:
 	return status;
 }
 
-static const struct udevice_id spi_dataflash_ids[] = {
+static const struct udevice_id dataflash_ids[] = {
 	{ .compatible = "atmel,at45", },
 	{ .compatible = "atmel,dataflash", },
 	{ }
 };
 
-U_BOOT_DRIVER(spi_dataflash) = {
-	.name		= "spi_dataflash",
+U_BOOT_DRIVER(mtd_dataflash) = {
+	.name		= "mtd_dataflash",
 	.id		= UCLASS_MTD,
-	.of_match	= spi_dataflash_ids,
-	.probe		= spi_dataflash_probe,
+	.of_match	= dataflash_ids,
+	.probe		= dataflash_probe,
 	.priv_auto_alloc_size = sizeof(struct dataflash),
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 39/87] mtd: Rename sf_dataflash.c to mtd_dataflash.c
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (36 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 38/87] mtd: dataflash: Minor cleanups Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 40/87] mtd: spi-nor: Add Kconfig entry for mtd_dataflash Jagan Teki
                   ` (47 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since dataflash driver is using mtd_info core
functionalities this patch renames file and
config name similar way as Linux.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Makefile                            | 1 +
 drivers/mtd/spi-nor/{sf_dataflash.c => mtd_dataflash.c} | 0
 2 files changed, 1 insertion(+)
 rename drivers/mtd/spi-nor/{sf_dataflash.c => mtd_dataflash.c} (100%)

diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index 4a854fa..525fccd 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -16,3 +16,4 @@ obj-$(CONFIG_DM_MTD_SPI_NOR)	+= spi-nor-probe.o
 endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
+obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
diff --git a/drivers/mtd/spi-nor/sf_dataflash.c b/drivers/mtd/spi-nor/mtd_dataflash.c
similarity index 100%
rename from drivers/mtd/spi-nor/sf_dataflash.c
rename to drivers/mtd/spi-nor/mtd_dataflash.c
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 40/87] mtd: spi-nor: Add Kconfig entry for mtd_dataflash
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (37 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 39/87] mtd: Rename sf_dataflash.c to mtd_dataflash.c Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 41/87] mtd: dataflash: Add MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
                   ` (46 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added kconfig entry for MTD_DATAFLASH

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index a035fd3..f2bd630 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -99,3 +99,18 @@ config SPI_FLASH_WINBOND
 	  Add support for various Winbond SPI flash chips (W25xxx)
 
 endif # MTD_SPI_NOR
+
+config MTD_DATAFLASH
+	bool "AT45xxx DataFlash support"
+	depends on MTD
+	help
+	  Enable the access for SPI-flash-based AT45xxx DataFlash chips.
+	  DataFlash is a kind of SPI flash. Most AT45 chips have two buffers
+	  in each chip, which may be used for double buffered I/O; but this
+	  driver doesn't (yet) use these for any kind of i/o overlap or prefetching.
+
+	  Sometimes DataFlash is packaged in MMC-format cards, although the
+	  MMC stack can't (yet?) distinguish between MMC and DataFlash
+	  protocols during enumeration.
+
+	  If unsure, say N
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 41/87] mtd: dataflash: Add MTD_DATAFLASH_WRITE_VERIFY
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (38 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 40/87] mtd: spi-nor: Add Kconfig entry for mtd_dataflash Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 42/87] mtd: spi-nor: Add kconfig MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
                   ` (45 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

mtd_dataflash driver almost similar to Linux, so rename the
CONFIG_SPI_DATAFLASH_WRITE_VERIFY => CONFIG_MTD_DATAFLASH_WRITE_VERIFY

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/mtd_dataflash.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/mtd_dataflash.c b/drivers/mtd/spi-nor/mtd_dataflash.c
index 2a5f5ae..fae862e 100644
--- a/drivers/mtd/spi-nor/mtd_dataflash.c
+++ b/drivers/mtd/spi-nor/mtd_dataflash.c
@@ -360,7 +360,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 			return status;
 		}
 
-#ifdef CONFIG_SPI_DATAFLASH_WRITE_VERIFY
+#ifdef CONFIG_MTD_DATAFLASH_WRITE_VERIFY
 		/* (3) Compare to Buffer1 */
 		addr = pageaddr << priv->page_offset;
 		command[0] = OP_COMPARE_BUF1;
@@ -392,7 +392,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
 			status = 0;
 		}
 
-#endif	/* CONFIG_SPI_DATAFLASH_WRITE_VERIFY */
+#endif	/* CONFIG_MTD_DATAFLASH_WRITE_VERIFY */
 		remaining = remaining - writelen;
 		pageaddr++;
 		offset = 0;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 42/87] mtd: spi-nor: Add kconfig MTD_DATAFLASH_WRITE_VERIFY
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (39 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 41/87] mtd: dataflash: Add MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 43/87] configs: ls1021aqds: Drop DM_SPI_FLASH and DATAFLASH Jagan Teki
                   ` (44 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Added kconfig entry for MTD_DATAFLASH_WRITE_VERIFY

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index f2bd630..12dcede 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -114,3 +114,13 @@ config MTD_DATAFLASH
 	  protocols during enumeration.
 
 	  If unsure, say N
+
+config MTD_DATAFLASH_WRITE_VERIFY
+	bool "Verify DataFlash page writes"
+	depends on MTD_DATAFLASH
+	help
+	  This adds an extra check when data is written to the flash.
+	  It may help if you are verifying chip setup (timings etc) on
+	  your board.  There is a rare possibility that even though the
+	  device thinks the write was successful, a bit could have been
+	  flipped accidentally due to device wear or something else.
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 43/87] configs: ls1021aqds: Drop DM_SPI_FLASH and DATAFLASH
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (40 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 42/87] mtd: spi-nor: Add kconfig MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 44/87] defconfig: ls1021aqds_qspi: Enable SPI-NOR Jagan Teki
                   ` (43 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Dropped DM_SPI_FLASH and SPI_FLASH_DATAFLASH

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 include/configs/ls1021aqds.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/configs/ls1021aqds.h b/include/configs/ls1021aqds.h
index d7025f6..b5415f4 100644
--- a/include/configs/ls1021aqds.h
+++ b/include/configs/ls1021aqds.h
@@ -432,8 +432,6 @@ unsigned long get_board_ddr_clk(void);
 /* DM SPI */
 #if defined(CONFIG_FSL_DSPI) || defined(CONFIG_FSL_QSPI)
 #define CONFIG_CMD_SF
-#define CONFIG_DM_SPI_FLASH
-#define CONFIG_SPI_FLASH_DATAFLASH
 #endif
 #endif
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 44/87] defconfig: ls1021aqds_qspi: Enable SPI-NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (41 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 43/87] configs: ls1021aqds: Drop DM_SPI_FLASH and DATAFLASH Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 45/87] defconfig: ls1021aqds_qspi: Enable CONFIG_MTD_DATAFLASH Jagan Teki
                   ` (42 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Enable SPI-NOR with MTD uclass.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1021aqds_qspi_defconfig | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/configs/ls1021aqds_qspi_defconfig b/configs/ls1021aqds_qspi_defconfig
index 025fd4e..32a8662 100644
--- a/configs/ls1021aqds_qspi_defconfig
+++ b/configs/ls1021aqds_qspi_defconfig
@@ -9,7 +9,9 @@ CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 45/87] defconfig: ls1021aqds_qspi: Enable CONFIG_MTD_DATAFLASH
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (42 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 44/87] defconfig: ls1021aqds_qspi: Enable SPI-NOR Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 46/87] mtd: spi-nor: Copy sandbox Jagan Teki
                   ` (41 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Enable CONFIG_MTD_DATAFLASH

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1021aqds_qspi_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/ls1021aqds_qspi_defconfig b/configs/ls1021aqds_qspi_defconfig
index 32a8662..ce4b677 100644
--- a/configs/ls1021aqds_qspi_defconfig
+++ b/configs/ls1021aqds_qspi_defconfig
@@ -12,6 +12,7 @@ CONFIG_DM=y
 CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD_DATAFLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 46/87] mtd: spi-nor: Copy sandbox
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (43 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 45/87] defconfig: ls1021aqds_qspi: Enable CONFIG_MTD_DATAFLASH Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 47/87] mtd: spi-nor: sandbox: Use spi-nor header Jagan Teki
                   ` (40 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Copy sandbox.c from drivers/mtd/spi to spi-nor,
more changes will added on future patches.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sandbox.c | 703 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 703 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/sandbox.c

diff --git a/drivers/mtd/spi-nor/sandbox.c b/drivers/mtd/spi-nor/sandbox.c
new file mode 100644
index 0000000..53470b9
--- /dev/null
+++ b/drivers/mtd/spi-nor/sandbox.c
@@ -0,0 +1,703 @@
+/*
+ * Simulate a SPI flash
+ *
+ * Copyright (c) 2011-2013 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <malloc.h>
+#include <spi.h>
+#include <os.h>
+
+#include <spi_flash.h>
+#include "sf_internal.h"
+
+#include <asm/getopt.h>
+#include <asm/spi.h>
+#include <asm/state.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
+#include <dm/uclass-internal.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * The different states that our SPI flash transitions between.
+ * We need to keep track of this across multiple xfer calls since
+ * the SPI bus could possibly call down into us multiple times.
+ */
+enum sandbox_sf_state {
+	SF_CMD,   /* default state -- we're awaiting a command */
+	SF_ID,    /* read the flash's (jedec) ID code */
+	SF_ADDR,  /* processing the offset in the flash to read/etc... */
+	SF_READ,  /* reading data from the flash */
+	SF_WRITE, /* writing data to the flash, i.e. page programming */
+	SF_ERASE, /* erase the flash */
+	SF_READ_STATUS, /* read the flash's status register */
+	SF_READ_STATUS1, /* read the flash's status register upper 8 bits*/
+	SF_WRITE_STATUS, /* write the flash's status register */
+};
+
+static const char *sandbox_sf_state_name(enum sandbox_sf_state state)
+{
+	static const char * const states[] = {
+		"CMD", "ID", "ADDR", "READ", "WRITE", "ERASE", "READ_STATUS",
+		"READ_STATUS1", "WRITE_STATUS",
+	};
+	return states[state];
+}
+
+/* Bits for the status register */
+#define STAT_WIP	(1 << 0)
+#define STAT_WEL	(1 << 1)
+
+/* Assume all SPI flashes have 3 byte addresses since they do atm */
+#define SF_ADDR_LEN	3
+
+#define IDCODE_LEN 3
+
+/* Used to quickly bulk erase backing store */
+static u8 sandbox_sf_0xff[0x1000];
+
+/* Internal state data for each SPI flash */
+struct sandbox_spi_flash {
+	unsigned int cs;	/* Chip select we are attached to */
+	/*
+	 * As we receive data over the SPI bus, our flash transitions
+	 * between states.  For example, we start off in the SF_CMD
+	 * state where the first byte tells us what operation to perform
+	 * (such as read or write the flash).  But the operation itself
+	 * can go through a few states such as first reading in the
+	 * offset in the flash to perform the requested operation.
+	 * Thus "state" stores the exact state that our machine is in
+	 * while "cmd" stores the overall command we're processing.
+	 */
+	enum sandbox_sf_state state;
+	uint cmd;
+	/* Erase size of current erase command */
+	uint erase_size;
+	/* Current position in the flash; used when reading/writing/etc... */
+	uint off;
+	/* How many address bytes we've consumed */
+	uint addr_bytes, pad_addr_bytes;
+	/* The current flash status (see STAT_XXX defines above) */
+	u16 status;
+	/* Data describing the flash we're emulating */
+	const struct spi_flash_params *data;
+	/* The file on disk to serv up data from */
+	int fd;
+};
+
+struct sandbox_spi_flash_plat_data {
+	const char *filename;
+	const char *device_name;
+	int bus;
+	int cs;
+};
+
+/**
+ * This is a very strange probe function. If it has platform data (which may
+ * have come from the device tree) then this function gets the filename and
+ * device type from there. Failing that it looks@the command line
+ * parameter.
+ */
+static int sandbox_sf_probe(struct udevice *dev)
+{
+	/* spec = idcode:file */
+	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
+	const char *file;
+	size_t len, idname_len;
+	const struct spi_flash_params *data;
+	struct sandbox_spi_flash_plat_data *pdata = dev_get_platdata(dev);
+	struct sandbox_state *state = state_get_current();
+	struct udevice *bus = dev->parent;
+	const char *spec = NULL;
+	int ret = 0;
+	int cs = -1;
+	int i;
+
+	debug("%s: bus %d, looking for emul=%p: ", __func__, bus->seq, dev);
+	if (bus->seq >= 0 && bus->seq < CONFIG_SANDBOX_SPI_MAX_BUS) {
+		for (i = 0; i < CONFIG_SANDBOX_SPI_MAX_CS; i++) {
+			if (state->spi[bus->seq][i].emul == dev)
+				cs = i;
+		}
+	}
+	if (cs == -1) {
+		printf("Error: Unknown chip select for device '%s'\n",
+		       dev->name);
+		return -EINVAL;
+	}
+	debug("found at cs %d\n", cs);
+
+	if (!pdata->filename) {
+		struct sandbox_state *state = state_get_current();
+
+		assert(bus->seq != -1);
+		if (bus->seq < CONFIG_SANDBOX_SPI_MAX_BUS)
+			spec = state->spi[bus->seq][cs].spec;
+		if (!spec) {
+			debug("%s:  No spec found for bus %d, cs %d\n",
+			      __func__, bus->seq, cs);
+			ret = -ENOENT;
+			goto error;
+		}
+
+		file = strchr(spec, ':');
+		if (!file) {
+			printf("%s: unable to parse file\n", __func__);
+			ret = -EINVAL;
+			goto error;
+		}
+		idname_len = file - spec;
+		pdata->filename = file + 1;
+		pdata->device_name = spec;
+		++file;
+	} else {
+		spec = strchr(pdata->device_name, ',');
+		if (spec)
+			spec++;
+		else
+			spec = pdata->device_name;
+		idname_len = strlen(spec);
+	}
+	debug("%s: device='%s'\n", __func__, spec);
+
+	for (data = spi_flash_params_table; data->name; data++) {
+		len = strlen(data->name);
+		if (idname_len != len)
+			continue;
+		if (!strncasecmp(spec, data->name, len))
+			break;
+	}
+	if (!data->name) {
+		printf("%s: unknown flash '%*s'\n", __func__, (int)idname_len,
+		       spec);
+		ret = -EINVAL;
+		goto error;
+	}
+
+	if (sandbox_sf_0xff[0] == 0x00)
+		memset(sandbox_sf_0xff, 0xff, sizeof(sandbox_sf_0xff));
+
+	sbsf->fd = os_open(pdata->filename, 02);
+	if (sbsf->fd == -1) {
+		printf("%s: unable to open file '%s'\n", __func__,
+		       pdata->filename);
+		ret = -EIO;
+		goto error;
+	}
+
+	sbsf->data = data;
+	sbsf->cs = cs;
+
+	return 0;
+
+ error:
+	debug("%s: Got error %d\n", __func__, ret);
+	return ret;
+}
+
+static int sandbox_sf_remove(struct udevice *dev)
+{
+	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
+
+	os_close(sbsf->fd);
+
+	return 0;
+}
+
+static void sandbox_sf_cs_activate(struct udevice *dev)
+{
+	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
+
+	debug("sandbox_sf: CS activated; state is fresh!\n");
+
+	/* CS is asserted, so reset state */
+	sbsf->off = 0;
+	sbsf->addr_bytes = 0;
+	sbsf->pad_addr_bytes = 0;
+	sbsf->state = SF_CMD;
+	sbsf->cmd = SF_CMD;
+}
+
+static void sandbox_sf_cs_deactivate(struct udevice *dev)
+{
+	debug("sandbox_sf: CS deactivated; cmd done processing!\n");
+}
+
+/*
+ * There are times when the data lines are allowed to tristate.  What
+ * is actually sensed on the line depends on the hardware.  It could
+ * always be 0xFF/0x00 (if there are pull ups/downs), or things could
+ * float and so we'd get garbage back.  This func encapsulates that
+ * scenario so we can worry about the details here.
+ */
+static void sandbox_spi_tristate(u8 *buf, uint len)
+{
+	/* XXX: make this into a user config option ? */
+	memset(buf, 0xff, len);
+}
+
+/* Figure out what command this stream is telling us to do */
+static int sandbox_sf_process_cmd(struct sandbox_spi_flash *sbsf, const u8 *rx,
+				  u8 *tx)
+{
+	enum sandbox_sf_state oldstate = sbsf->state;
+
+	/* We need to output a byte for the cmd byte we just ate */
+	if (tx)
+		sandbox_spi_tristate(tx, 1);
+
+	sbsf->cmd = rx[0];
+	switch (sbsf->cmd) {
+	case CMD_READ_ID:
+		sbsf->state = SF_ID;
+		sbsf->cmd = SF_ID;
+		break;
+	case CMD_READ_ARRAY_FAST:
+		sbsf->pad_addr_bytes = 1;
+	case CMD_READ_ARRAY_SLOW:
+	case CMD_PAGE_PROGRAM:
+		sbsf->state = SF_ADDR;
+		break;
+	case CMD_WRITE_DISABLE:
+		debug(" write disabled\n");
+		sbsf->status &= ~STAT_WEL;
+		break;
+	case CMD_READ_STATUS:
+		sbsf->state = SF_READ_STATUS;
+		break;
+	case CMD_READ_STATUS1:
+		sbsf->state = SF_READ_STATUS1;
+		break;
+	case CMD_WRITE_ENABLE:
+		debug(" write enabled\n");
+		sbsf->status |= STAT_WEL;
+		break;
+	case CMD_WRITE_STATUS:
+		sbsf->state = SF_WRITE_STATUS;
+		break;
+	default: {
+		int flags = sbsf->data->flags;
+
+		/* we only support erase here */
+		if (sbsf->cmd == CMD_ERASE_CHIP) {
+			sbsf->erase_size = sbsf->data->sector_size *
+				sbsf->data->nr_sectors;
+		} else if (sbsf->cmd == CMD_ERASE_4K && (flags & SECT_4K)) {
+			sbsf->erase_size = 4 << 10;
+		} else if (sbsf->cmd == CMD_ERASE_32K && (flags & SECT_32K)) {
+			sbsf->erase_size = 32 << 10;
+		} else if (sbsf->cmd == CMD_ERASE_64K &&
+			   !(flags & (SECT_4K | SECT_32K))) {
+			sbsf->erase_size = 64 << 10;
+		} else {
+			debug(" cmd unknown: %#x\n", sbsf->cmd);
+			return -EIO;
+		}
+		sbsf->state = SF_ADDR;
+		break;
+	}
+	}
+
+	if (oldstate != sbsf->state)
+		debug(" cmd: transition to %s state\n",
+		      sandbox_sf_state_name(sbsf->state));
+
+	return 0;
+}
+
+int sandbox_erase_part(struct sandbox_spi_flash *sbsf, int size)
+{
+	int todo;
+	int ret;
+
+	while (size > 0) {
+		todo = min(size, (int)sizeof(sandbox_sf_0xff));
+		ret = os_write(sbsf->fd, sandbox_sf_0xff, todo);
+		if (ret != todo)
+			return ret;
+		size -= todo;
+	}
+
+	return 0;
+}
+
+static int sandbox_sf_xfer(struct udevice *dev, unsigned int bitlen,
+			   const void *rxp, void *txp, unsigned long flags)
+{
+	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
+	const uint8_t *rx = rxp;
+	uint8_t *tx = txp;
+	uint cnt, pos = 0;
+	int bytes = bitlen / 8;
+	int ret;
+
+	debug("sandbox_sf: state:%x(%s) bytes:%u\n", sbsf->state,
+	      sandbox_sf_state_name(sbsf->state), bytes);
+
+	if ((flags & SPI_XFER_BEGIN))
+		sandbox_sf_cs_activate(dev);
+
+	if (sbsf->state == SF_CMD) {
+		/* Figure out the initial state */
+		ret = sandbox_sf_process_cmd(sbsf, rx, tx);
+		if (ret)
+			return ret;
+		++pos;
+	}
+
+	/* Process the remaining data */
+	while (pos < bytes) {
+		switch (sbsf->state) {
+		case SF_ID: {
+			u8 id;
+
+			debug(" id: off:%u tx:", sbsf->off);
+			if (sbsf->off < IDCODE_LEN) {
+				/* Extract correct byte from ID 0x00aabbcc */
+				id = sbsf->data->jedec >>
+					(8 * (IDCODE_LEN - 1 - sbsf->off));
+			} else {
+				id = 0;
+			}
+			debug("%d %02x\n", sbsf->off, id);
+			tx[pos++] = id;
+			++sbsf->off;
+			break;
+		}
+		case SF_ADDR:
+			debug(" addr: bytes:%u rx:%02x ", sbsf->addr_bytes,
+			      rx[pos]);
+
+			if (sbsf->addr_bytes++ < SF_ADDR_LEN)
+				sbsf->off = (sbsf->off << 8) | rx[pos];
+			debug("addr:%06x\n", sbsf->off);
+
+			if (tx)
+				sandbox_spi_tristate(&tx[pos], 1);
+			pos++;
+
+			/* See if we're done processing */
+			if (sbsf->addr_bytes <
+					SF_ADDR_LEN + sbsf->pad_addr_bytes)
+				break;
+
+			/* Next state! */
+			if (os_lseek(sbsf->fd, sbsf->off, OS_SEEK_SET) < 0) {
+				puts("sandbox_sf: os_lseek() failed");
+				return -EIO;
+			}
+			switch (sbsf->cmd) {
+			case CMD_READ_ARRAY_FAST:
+			case CMD_READ_ARRAY_SLOW:
+				sbsf->state = SF_READ;
+				break;
+			case CMD_PAGE_PROGRAM:
+				sbsf->state = SF_WRITE;
+				break;
+			default:
+				/* assume erase state ... */
+				sbsf->state = SF_ERASE;
+				goto case_sf_erase;
+			}
+			debug(" cmd: transition to %s state\n",
+			      sandbox_sf_state_name(sbsf->state));
+			break;
+		case SF_READ:
+			/*
+			 * XXX: need to handle exotic behavior:
+			 *      - reading past end of device
+			 */
+
+			cnt = bytes - pos;
+			debug(" tx: read(%u)\n", cnt);
+			assert(tx);
+			ret = os_read(sbsf->fd, tx + pos, cnt);
+			if (ret < 0) {
+				puts("sandbox_sf: os_read() failed\n");
+				return -EIO;
+			}
+			pos += ret;
+			break;
+		case SF_READ_STATUS:
+			debug(" read status: %#x\n", sbsf->status);
+			cnt = bytes - pos;
+			memset(tx + pos, sbsf->status, cnt);
+			pos += cnt;
+			break;
+		case SF_READ_STATUS1:
+			debug(" read status: %#x\n", sbsf->status);
+			cnt = bytes - pos;
+			memset(tx + pos, sbsf->status >> 8, cnt);
+			pos += cnt;
+			break;
+		case SF_WRITE_STATUS:
+			debug(" write status: %#x (ignored)\n", rx[pos]);
+			pos = bytes;
+			break;
+		case SF_WRITE:
+			/*
+			 * XXX: need to handle exotic behavior:
+			 *      - unaligned addresses
+			 *      - more than a page (256) worth of data
+			 *      - reading past end of device
+			 */
+			if (!(sbsf->status & STAT_WEL)) {
+				puts("sandbox_sf: write enable not set before write\n");
+				goto done;
+			}
+
+			cnt = bytes - pos;
+			debug(" rx: write(%u)\n", cnt);
+			if (tx)
+				sandbox_spi_tristate(&tx[pos], cnt);
+			ret = os_write(sbsf->fd, rx + pos, cnt);
+			if (ret < 0) {
+				puts("sandbox_spi: os_write() failed\n");
+				return -EIO;
+			}
+			pos += ret;
+			sbsf->status &= ~STAT_WEL;
+			break;
+		case SF_ERASE:
+ case_sf_erase: {
+			if (!(sbsf->status & STAT_WEL)) {
+				puts("sandbox_sf: write enable not set before erase\n");
+				goto done;
+			}
+
+			/* verify address is aligned */
+			if (sbsf->off & (sbsf->erase_size - 1)) {
+				debug(" sector erase: cmd:%#x needs align:%#x, but we got %#x\n",
+				      sbsf->cmd, sbsf->erase_size,
+				      sbsf->off);
+				sbsf->status &= ~STAT_WEL;
+				goto done;
+			}
+
+			debug(" sector erase addr: %u, size: %u\n", sbsf->off,
+			      sbsf->erase_size);
+
+			cnt = bytes - pos;
+			if (tx)
+				sandbox_spi_tristate(&tx[pos], cnt);
+			pos += cnt;
+
+			/*
+			 * TODO(vapier at gentoo.org): latch WIP in status, and
+			 * delay before clearing it ?
+			 */
+			ret = sandbox_erase_part(sbsf, sbsf->erase_size);
+			sbsf->status &= ~STAT_WEL;
+			if (ret) {
+				debug("sandbox_sf: Erase failed\n");
+				goto done;
+			}
+			goto done;
+		}
+		default:
+			debug(" ??? no idea what to do ???\n");
+			goto done;
+		}
+	}
+
+ done:
+	if (flags & SPI_XFER_END)
+		sandbox_sf_cs_deactivate(dev);
+	return pos == bytes ? 0 : -EIO;
+}
+
+int sandbox_sf_ofdata_to_platdata(struct udevice *dev)
+{
+	struct sandbox_spi_flash_plat_data *pdata = dev_get_platdata(dev);
+	const void *blob = gd->fdt_blob;
+	int node = dev->of_offset;
+
+	pdata->filename = fdt_getprop(blob, node, "sandbox,filename", NULL);
+	pdata->device_name = fdt_getprop(blob, node, "compatible", NULL);
+	if (!pdata->filename || !pdata->device_name) {
+		debug("%s: Missing properties, filename=%s, device_name=%s\n",
+		      __func__, pdata->filename, pdata->device_name);
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static const struct dm_spi_emul_ops sandbox_sf_emul_ops = {
+	.xfer          = sandbox_sf_xfer,
+};
+
+#ifdef CONFIG_SPI_FLASH
+static int sandbox_cmdline_cb_spi_sf(struct sandbox_state *state,
+				     const char *arg)
+{
+	unsigned long bus, cs;
+	const char *spec = sandbox_spi_parse_spec(arg, &bus, &cs);
+
+	if (!spec)
+		return 1;
+
+	/*
+	 * It is safe to not make a copy of 'spec' because it comes from the
+	 * command line.
+	 *
+	 * TODO(sjg at chromium.org): It would be nice if we could parse the
+	 * spec here, but the problem is that no U-Boot init has been done
+	 * yet. Perhaps we can figure something out.
+	 */
+	state->spi[bus][cs].spec = spec;
+	debug("%s:  Setting up spec '%s' for bus %ld, cs %ld\n", __func__,
+	      spec, bus, cs);
+
+	return 0;
+}
+SANDBOX_CMDLINE_OPT(spi_sf, 1, "connect a SPI flash: <bus>:<cs>:<id>:<file>");
+
+int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
+			 struct udevice *bus, int of_offset, const char *spec)
+{
+	struct udevice *emul;
+	char name[20], *str;
+	struct driver *drv;
+	int ret;
+
+	/* now the emulator */
+	strncpy(name, spec, sizeof(name) - 6);
+	name[sizeof(name) - 6] = '\0';
+	strcat(name, "-emul");
+	str = strdup(name);
+	if (!str)
+		return -ENOMEM;
+	drv = lists_driver_lookup_name("sandbox_sf_emul");
+	if (!drv) {
+		puts("Cannot find sandbox_sf_emul driver\n");
+		return -ENOENT;
+	}
+	ret = device_bind(bus, drv, str, NULL, of_offset, &emul);
+	if (ret) {
+		printf("Cannot create emul device for spec '%s' (err=%d)\n",
+		       spec, ret);
+		return ret;
+	}
+	state->spi[busnum][cs].emul = emul;
+
+	return 0;
+}
+
+void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs)
+{
+	struct udevice *dev;
+
+	dev = state->spi[busnum][cs].emul;
+	device_remove(dev);
+	device_unbind(dev);
+	state->spi[busnum][cs].emul = NULL;
+}
+
+static int sandbox_sf_bind_bus_cs(struct sandbox_state *state, int busnum,
+				  int cs, const char *spec)
+{
+	struct udevice *bus, *slave;
+	int ret;
+
+	ret = uclass_find_device_by_seq(UCLASS_SPI, busnum, true, &bus);
+	if (ret) {
+		printf("Invalid bus %d for spec '%s' (err=%d)\n", busnum,
+		       spec, ret);
+		return ret;
+	}
+	ret = spi_find_chip_select(bus, cs, &slave);
+	if (!ret) {
+		printf("Chip select %d already exists for spec '%s'\n", cs,
+		       spec);
+		return -EEXIST;
+	}
+
+	ret = device_bind_driver(bus, "spi_flash_std", spec, &slave);
+	if (ret)
+		return ret;
+
+	return sandbox_sf_bind_emul(state, busnum, cs, bus, -1, spec);
+}
+
+int sandbox_spi_get_emul(struct sandbox_state *state,
+			 struct udevice *bus, struct udevice *slave,
+			 struct udevice **emulp)
+{
+	struct sandbox_spi_info *info;
+	int busnum = bus->seq;
+	int cs = spi_chip_select(slave);
+	int ret;
+
+	info = &state->spi[busnum][cs];
+	if (!info->emul) {
+		/* Use the same device tree node as the SPI flash device */
+		debug("%s: busnum=%u, cs=%u: binding SPI flash emulation: ",
+		      __func__, busnum, cs);
+		ret = sandbox_sf_bind_emul(state, busnum, cs, bus,
+					   slave->of_offset, slave->name);
+		if (ret) {
+			debug("failed (err=%d)\n", ret);
+			return ret;
+		}
+		debug("OK\n");
+	}
+	*emulp = info->emul;
+
+	return 0;
+}
+
+int dm_scan_other(bool pre_reloc_only)
+{
+	struct sandbox_state *state = state_get_current();
+	int busnum, cs;
+
+	if (pre_reloc_only)
+		return 0;
+	for (busnum = 0; busnum < CONFIG_SANDBOX_SPI_MAX_BUS; busnum++) {
+		for (cs = 0; cs < CONFIG_SANDBOX_SPI_MAX_CS; cs++) {
+			const char *spec = state->spi[busnum][cs].spec;
+			int ret;
+
+			if (spec) {
+				ret = sandbox_sf_bind_bus_cs(state, busnum,
+							     cs, spec);
+				if (ret) {
+					debug("%s: Bind failed for bus %d, cs %d\n",
+					      __func__, busnum, cs);
+					return ret;
+				}
+				debug("%s:  Setting up spec '%s' for bus %d, cs %d\n",
+				      __func__, spec, busnum, cs);
+			}
+		}
+	}
+
+	return 0;
+}
+#endif
+
+static const struct udevice_id sandbox_sf_ids[] = {
+	{ .compatible = "sandbox,spi-flash" },
+	{ }
+};
+
+U_BOOT_DRIVER(sandbox_sf_emul) = {
+	.name		= "sandbox_sf_emul",
+	.id		= UCLASS_SPI_EMUL,
+	.of_match	= sandbox_sf_ids,
+	.ofdata_to_platdata = sandbox_sf_ofdata_to_platdata,
+	.probe		= sandbox_sf_probe,
+	.remove		= sandbox_sf_remove,
+	.priv_auto_alloc_size = sizeof(struct sandbox_spi_flash),
+	.platdata_auto_alloc_size = sizeof(struct sandbox_spi_flash_plat_data),
+	.ops		= &sandbox_sf_emul_ops,
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 47/87] mtd: spi-nor: sandbox: Use spi-nor header
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (44 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 46/87] mtd: spi-nor: Copy sandbox Jagan Teki
@ 2016-03-22  7:37 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 48/87] mtd: spi-nor: sandbox: Fix ID exctract from spi_nor_info Jagan Teki
                   ` (39 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:37 UTC (permalink / raw)
  To: u-boot

Since sandbox moved to use spi-nor layer, this patch
replaced the header changes from sf_internal.h to
mtd/spi-nor.h

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sandbox.c | 46 +++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/drivers/mtd/spi-nor/sandbox.c b/drivers/mtd/spi-nor/sandbox.c
index 53470b9..cc7b2a4 100644
--- a/drivers/mtd/spi-nor/sandbox.c
+++ b/drivers/mtd/spi-nor/sandbox.c
@@ -12,10 +12,8 @@
 #include <dm.h>
 #include <malloc.h>
 #include <spi.h>
-#include <os.h>
-
 #include <spi_flash.h>
-#include "sf_internal.h"
+#include <os.h>
 
 #include <asm/getopt.h>
 #include <asm/spi.h>
@@ -24,6 +22,8 @@
 #include <dm/lists.h>
 #include <dm/uclass-internal.h>
 
+#include <linux/mtd/spi-nor.h>
+
 DECLARE_GLOBAL_DATA_PTR;
 
 /*
@@ -88,7 +88,7 @@ struct sandbox_spi_flash {
 	/* The current flash status (see STAT_XXX defines above) */
 	u16 status;
 	/* Data describing the flash we're emulating */
-	const struct spi_flash_params *data;
+	const struct spi_nor_info *data;
 	/* The file on disk to serv up data from */
 	int fd;
 };
@@ -112,7 +112,7 @@ static int sandbox_sf_probe(struct udevice *dev)
 	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
 	const char *file;
 	size_t len, idname_len;
-	const struct spi_flash_params *data;
+	const struct spi_nor_info *data;
 	struct sandbox_spi_flash_plat_data *pdata = dev_get_platdata(dev);
 	struct sandbox_state *state = state_get_current();
 	struct udevice *bus = dev->parent;
@@ -168,7 +168,7 @@ static int sandbox_sf_probe(struct udevice *dev)
 	}
 	debug("%s: device='%s'\n", __func__, spec);
 
-	for (data = spi_flash_params_table; data->name; data++) {
+	for (data = spi_nor_ids; data->name; data++) {
 		len = strlen(data->name);
 		if (idname_len != len)
 			continue;
@@ -256,45 +256,45 @@ static int sandbox_sf_process_cmd(struct sandbox_spi_flash *sbsf, const u8 *rx,
 
 	sbsf->cmd = rx[0];
 	switch (sbsf->cmd) {
-	case CMD_READ_ID:
+	case SNOR_OP_RDID:
 		sbsf->state = SF_ID;
 		sbsf->cmd = SF_ID;
 		break;
-	case CMD_READ_ARRAY_FAST:
+	case SNOR_OP_READ_FAST:
 		sbsf->pad_addr_bytes = 1;
-	case CMD_READ_ARRAY_SLOW:
-	case CMD_PAGE_PROGRAM:
+	case SNOR_OP_READ:
+	case SNOR_OP_PP:
 		sbsf->state = SF_ADDR;
 		break;
-	case CMD_WRITE_DISABLE:
+	case SNOR_OP_WRDI:
 		debug(" write disabled\n");
 		sbsf->status &= ~STAT_WEL;
 		break;
-	case CMD_READ_STATUS:
+	case SNOR_OP_RDSR:
 		sbsf->state = SF_READ_STATUS;
 		break;
-	case CMD_READ_STATUS1:
+	case SNOR_OP_RDCR:
 		sbsf->state = SF_READ_STATUS1;
 		break;
-	case CMD_WRITE_ENABLE:
+	case SNOR_OP_WREN:
 		debug(" write enabled\n");
 		sbsf->status |= STAT_WEL;
 		break;
-	case CMD_WRITE_STATUS:
+	case SNOR_OP_WRSR:
 		sbsf->state = SF_WRITE_STATUS;
 		break;
 	default: {
 		int flags = sbsf->data->flags;
 
 		/* we only support erase here */
-		if (sbsf->cmd == CMD_ERASE_CHIP) {
+		if (sbsf->cmd == SPINOR_OP_CHIP_ERASE) {
 			sbsf->erase_size = sbsf->data->sector_size *
-				sbsf->data->nr_sectors;
-		} else if (sbsf->cmd == CMD_ERASE_4K && (flags & SECT_4K)) {
+				sbsf->data->n_sectors;
+		} else if (sbsf->cmd == SNOR_OP_BE_4K && (flags & SECT_4K)) {
 			sbsf->erase_size = 4 << 10;
-		} else if (sbsf->cmd == CMD_ERASE_32K && (flags & SECT_32K)) {
+		} else if (sbsf->cmd == SNOR_OP_BE_32K && (flags & SECT_32K)) {
 			sbsf->erase_size = 32 << 10;
-		} else if (sbsf->cmd == CMD_ERASE_64K &&
+		} else if (sbsf->cmd == SNOR_OP_SE &&
 			   !(flags & (SECT_4K | SECT_32K))) {
 			sbsf->erase_size = 64 << 10;
 		} else {
@@ -395,11 +395,11 @@ static int sandbox_sf_xfer(struct udevice *dev, unsigned int bitlen,
 				return -EIO;
 			}
 			switch (sbsf->cmd) {
-			case CMD_READ_ARRAY_FAST:
-			case CMD_READ_ARRAY_SLOW:
+			case SNOR_OP_READ_FAST:
+			case SNOR_OP_READ:
 				sbsf->state = SF_READ;
 				break;
-			case CMD_PAGE_PROGRAM:
+			case SNOR_OP_PP:
 				sbsf->state = SF_WRITE;
 				break;
 			default:
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 48/87] mtd: spi-nor: sandbox: Fix ID exctract from spi_nor_info
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (45 preceding siblings ...)
  2016-03-22  7:37 ` [U-Boot] [PATCH v7 47/87] mtd: spi-nor: sandbox: Use spi-nor header Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 49/87] mtd: spi-nor: Add SPI_NOR_SANDBOX Jagan Teki
                   ` (38 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

This patch fix the id exctract from spi_nor_info ids.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/sandbox.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/spi-nor/sandbox.c b/drivers/mtd/spi-nor/sandbox.c
index cc7b2a4..8bd06f4 100644
--- a/drivers/mtd/spi-nor/sandbox.c
+++ b/drivers/mtd/spi-nor/sandbox.c
@@ -362,7 +362,8 @@ static int sandbox_sf_xfer(struct udevice *dev, unsigned int bitlen,
 			debug(" id: off:%u tx:", sbsf->off);
 			if (sbsf->off < IDCODE_LEN) {
 				/* Extract correct byte from ID 0x00aabbcc */
-				id = sbsf->data->jedec >>
+				id = ((JEDEC_MFR(sbsf->data) << 16) |
+					JEDEC_ID(sbsf->data)) >>
 					(8 * (IDCODE_LEN - 1 - sbsf->off));
 			} else {
 				id = 0;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 49/87] mtd: spi-nor: Add SPI_NOR_SANDBOX
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (46 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 48/87] mtd: spi-nor: sandbox: Fix ID exctract from spi_nor_info Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 50/87] test/dm: Makefile: Use CONFIG_DM_MTD_SPI_NOR Jagan Teki
                   ` (37 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

To follow spi-nor notation replaced CONFIG_SPI_FLASH_SANDBOX
with CONFIG_SPI_NOR_SANDBOX.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig  | 10 ++++++++++
 drivers/mtd/spi-nor/Makefile |  1 +
 2 files changed, 11 insertions(+)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 12dcede..cdef6aa 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -98,6 +98,16 @@ config SPI_FLASH_WINBOND
 	help
 	  Add support for various Winbond SPI flash chips (W25xxx)
 
+config SPI_NOR_SANDBOX
+	bool "Support sandbox SPI flash device"
+	depends on SANDBOX
+	help
+	  Since sandbox cannot access real devices, an emulation mechanism is
+	  provided instead. Drivers can be connected up to the sandbox SPI
+	  bus (see CONFIG_SANDBOX_SPI) and SPI traffic will be routed to this
+	  device. Typically the contents of the emulated SPI flash device is
+	  stored in a file on the host filesystem.
+
 endif # MTD_SPI_NOR
 
 config MTD_DATAFLASH
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
index 525fccd..a4bd5ba 100644
--- a/drivers/mtd/spi-nor/Makefile
+++ b/drivers/mtd/spi-nor/Makefile
@@ -17,3 +17,4 @@ endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
 obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
+obj-$(CONFIG_SPI_NOR_SANDBOX)	+= sandbox.o
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 50/87] test/dm: Makefile: Use CONFIG_DM_MTD_SPI_NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (47 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 49/87] mtd: spi-nor: Add SPI_NOR_SANDBOX Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 51/87] test/dm: spi: " Jagan Teki
                   ` (36 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use CONFIG_DM_MTD_SPI_NOR instead of CONFIG_DM_SPI_FLASH

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 test/dm/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/dm/Makefile b/test/dm/Makefile
index df2d71f..ae8e5c2 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -28,7 +28,7 @@ obj-y += regmap.o
 obj-$(CONFIG_REMOTEPROC) += remoteproc.o
 obj-$(CONFIG_RESET) += reset.o
 obj-$(CONFIG_DM_RTC) += rtc.o
-obj-$(CONFIG_DM_SPI_FLASH) += sf.o
+obj-$(CONFIG_DM_MTD_SPI_NOR) += sf.o
 obj-$(CONFIG_DM_SPI) += spi.o
 obj-y += syscon.o
 obj-$(CONFIG_DM_USB) += usb.o
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 51/87] test/dm: spi: Use CONFIG_DM_MTD_SPI_NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (48 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 50/87] test/dm: Makefile: Use CONFIG_DM_MTD_SPI_NOR Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 52/87] configs: sandbox: Enable SPI-NOR sandbox driver Jagan Teki
                   ` (35 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use CONFIG_DM_MTD_SPI_NOR instead of CONFIG_DM_SPI_FLASH

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 test/dm/spi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/dm/spi.c b/test/dm/spi.c
index 2e27da7..f234c80 100644
--- a/test/dm/spi.c
+++ b/test/dm/spi.c
@@ -118,7 +118,7 @@ static int dm_test_spi_xfer(struct unit_test_state *uts)
 	 * Since we are about to destroy all devices, we must tell sandbox
 	 * to forget the emulation device
 	 */
-#ifdef CONFIG_DM_SPI_FLASH
+#ifdef CONFIG_DM_MTD_SPI_NOR
 	sandbox_sf_unbind_emul(state_get_current(), busnum, cs);
 #endif
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 52/87] configs: sandbox: Enable SPI-NOR sandbox driver
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (49 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 51/87] test/dm: spi: " Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 53/87] test/dm: spi: Use m25p80 as driver name Jagan Teki
                   ` (34 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

- CONFIG_DM_SPI_FLASH
+ CONFIG_MTD
+ CONFIG_MTD_M25P80
+ CONFIG_MTD_SPI_NOR
+ CONFIG_SPI_NOR_SANDBOX

Replace CONFIG_SPI_FLASH with CONFIG_MTD_SPI_NOR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/Kconfig                  |  2 +-
 configs/sandbox_defconfig     |  5 +++--
 drivers/mtd/spi-nor/sandbox.c |  2 +-
 include/spi_flash.h           | 14 +++++++-------
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index ec12013..2c58b9a 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -87,11 +87,11 @@ config SANDBOX
 	select SYS_GENERIC_BOARD
 	select SUPPORT_OF_CONTROL
 	select DM
-	select DM_SPI_FLASH
 	select DM_SERIAL
 	select DM_I2C
 	select DM_SPI
 	select DM_GPIO
+	select MTD
 
 config SH
 	bool "SuperH architecture"
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index d69c9fc..6873d7a 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -40,8 +40,9 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SANDBOX=y
 CONFIG_RESET=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH_SANDBOX=y
-CONFIG_SPI_FLASH=y
+CONFIG_SPI_NOR_SANDBOX=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
diff --git a/drivers/mtd/spi-nor/sandbox.c b/drivers/mtd/spi-nor/sandbox.c
index 8bd06f4..a3ffea2 100644
--- a/drivers/mtd/spi-nor/sandbox.c
+++ b/drivers/mtd/spi-nor/sandbox.c
@@ -536,7 +536,7 @@ static const struct dm_spi_emul_ops sandbox_sf_emul_ops = {
 	.xfer          = sandbox_sf_xfer,
 };
 
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 static int sandbox_cmdline_cb_spi_sf(struct sandbox_state *state,
 				     const char *arg)
 {
diff --git a/include/spi_flash.h b/include/spi_flash.h
index f77a9c9..712ad61 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -148,6 +148,13 @@ static inline int spi_flash_protect(spi_flash_t *info, u32 ofs,
 
 #ifdef CONFIG_DM_MTD_SPI_NOR
 
+struct sandbox_state;
+
+int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
+			 struct udevice *bus, int of_offset, const char *spec);
+
+void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
+
 int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
 			   unsigned int max_hz, unsigned int spi_mode,
 			   struct udevice **devp);
@@ -273,13 +280,6 @@ void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
 
 #elif !defined(CONFIG_MTD_SPI_NOR)
 
-struct sandbox_state;
-
-int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
-			 struct udevice *bus, int of_offset, const char *spec);
-
-void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
-
 struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 		unsigned int max_hz, unsigned int spi_mode);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 53/87] test/dm: spi: Use m25p80 as driver name
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (50 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 52/87] configs: sandbox: Enable SPI-NOR sandbox driver Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 54/87] dts: sandbox: Use jedec, spi-nor compatible string Jagan Teki
                   ` (33 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Since new spi-nor using m25p80 as a driver name for
probing flash chip using spi_get_bus_and_cs, hence
replace the 'spi_flash_std' with 'm25p80

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 test/dm/spi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/dm/spi.c b/test/dm/spi.c
index f234c80..82ddd7e 100644
--- a/test/dm/spi.c
+++ b/test/dm/spi.c
@@ -59,7 +59,7 @@ static int dm_test_spi_find(struct unit_test_state *uts)
 	 */
 	ut_asserteq(-ENODEV, spi_find_bus_and_cs(busnum, cs, &bus, &dev));
 	ut_asserteq(-ENOENT, spi_get_bus_and_cs(busnum, cs, speed, mode,
-						"spi_flash_std", "name", &bus,
+						"m25p80", "name", &bus,
 						&slave));
 	sandbox_sf_unbind_emul(state_get_current(), busnum, cs);
 	ut_assertok(spi_cs_info(bus, cs, &info));
@@ -70,7 +70,7 @@ static int dm_test_spi_find(struct unit_test_state *uts)
 					 "name"));
 	ut_assertok(spi_find_bus_and_cs(busnum, cs, &bus, &dev));
 	ut_assertok(spi_get_bus_and_cs(busnum, cs, speed, mode,
-				       "spi_flash_std", "name", &bus, &slave));
+				       "m25p80", "name", &bus, &slave));
 
 	ut_assertok(spi_cs_info(bus, cs, &info));
 	ut_asserteq_ptr(info.dev, slave->dev);
@@ -79,7 +79,7 @@ static int dm_test_spi_find(struct unit_test_state *uts)
 	ut_assertok(sandbox_sf_bind_emul(state, busnum, cs_b, bus, of_offset,
 					 "name"));
 	ut_assertok(spi_get_bus_and_cs(busnum, cs_b, speed, mode,
-				       "spi_flash_std", "name", &bus, &slave));
+				       "m25p80", "name", &bus, &slave));
 	ut_assertok(spi_cs_info(bus, cs_b, &info));
 	ut_asserteq_ptr(info.dev, slave->dev);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 54/87] dts: sandbox: Use jedec, spi-nor compatible string
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (51 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 53/87] test/dm: spi: Use m25p80 as driver name Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 55/87] x86: Drop using spi_flash_dm_ops Jagan Teki
                   ` (32 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use spi-nor flash driver compatible string as 'jedec,spi-nor'
instead of spi-flash

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/sandbox/dts/test.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 9b8d658..cdb21a5 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -267,7 +267,7 @@
 		cs-gpios = <0>, <&gpio_a 0>;
 		spi.bin at 0 {
 			reg = <0>;
-			compatible = "spansion,m25p16", "spi-flash";
+			compatible = "spansion,m25p16", "jedec,spi-nor";
 			spi-max-frequency = <40000000>;
 			sandbox,filename = "spi.bin";
 		};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 55/87] x86: Drop using spi_flash_dm_ops
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (52 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 54/87] dts: sandbox: Use jedec, spi-nor compatible string Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 56/87] spi_flash: Use spi_flash_t Jagan Teki
                   ` (31 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Since spi-nor flash is part of MTD uclass, so replaced
UCLASS_SPI_FLASH with UCLASS_MTD and use respective
spi_flash operations as well.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/arm/mach-rockchip/rk3288-board-spl.c | 2 +-
 arch/x86/lib/mrccache.c                   | 9 ++++-----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-rockchip/rk3288-board-spl.c b/arch/arm/mach-rockchip/rk3288-board-spl.c
index e133cca..7aed5c6 100644
--- a/arch/arm/mach-rockchip/rk3288-board-spl.c
+++ b/arch/arm/mach-rockchip/rk3288-board-spl.c
@@ -53,7 +53,7 @@ u32 spl_boot_device(void)
 	}
 	debug("Found device %s\n", dev->name);
 	switch (device_get_uclass_id(dev)) {
-	case UCLASS_SPI_FLASH:
+	case UCLASS_MTD:
 		return BOOT_DEVICE_SPI;
 	case UCLASS_MMC:
 		return BOOT_DEVICE_MMC1;
diff --git a/arch/x86/lib/mrccache.c b/arch/x86/lib/mrccache.c
index 67bace4..1d6ce35 100644
--- a/arch/x86/lib/mrccache.c
+++ b/arch/x86/lib/mrccache.c
@@ -109,6 +109,7 @@ static struct mrc_data_container *find_next_mrc_cache(struct mrc_region *entry,
 int mrccache_update(struct udevice *sf, struct mrc_region *entry,
 		    struct mrc_data_container *cur)
 {
+	spi_flash_t *flash = dev_get_uclass_priv(sf);
 	struct mrc_data_container *cache;
 	ulong offset;
 	ulong base_addr;
@@ -139,7 +140,7 @@ int mrccache_update(struct udevice *sf, struct mrc_region *entry,
 		debug("Erasing the MRC cache region of %x bytes at %x\n",
 		      entry->length, entry->offset);
 
-		ret = spi_flash_erase_dm(sf, entry->offset, entry->length);
+		ret = spi_flash_erase(flash, entry->offset, entry->length);
 		if (ret) {
 			debug("Failed to erase flash region\n");
 			return ret;
@@ -150,8 +151,7 @@ int mrccache_update(struct udevice *sf, struct mrc_region *entry,
 	/* Write the data out */
 	offset = (ulong)cache - base_addr + entry->offset;
 	debug("Write MRC cache update to flash at %lx\n", offset);
-	ret = spi_flash_write_dm(sf, offset, cur->data_size + sizeof(*cur),
-				 cur);
+	ret = spi_flash_write(flash, offset, cur->data_size + sizeof(*cur), cur);
 	if (ret) {
 		debug("Failed to write to SPI flash\n");
 		return ret;
@@ -216,8 +216,7 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
 	entry->length = reg[1];
 
 	if (devp) {
-		ret = uclass_get_device_by_of_offset(UCLASS_SPI_FLASH, node,
-						     devp);
+		ret = uclass_get_device_by_of_offset(UCLASS_MTD, node, devp);
 		debug("ret = %d\n", ret);
 		if (ret)
 			return ret;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 56/87] spi_flash: Use spi_flash_t
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (53 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 55/87] x86: Drop using spi_flash_dm_ops Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 57/87] defconfig: zynq_zc770_xm013: Enable ZYNQ_QSPI Jagan Teki
                   ` (30 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use spi_flash_t instead of struct spi_flash.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 board/Arcturus/ucp1020/cmd_arc.c         | 2 +-
 board/Synology/ds414/cmd_syno.c          | 2 +-
 board/buffalo/lsxl/lsxl.c                | 2 +-
 board/congatec/cgtqmx6eval/cgtqmx6eval.c | 2 +-
 board/davinci/da8xxevm/da850evm.c        | 2 +-
 board/renesas/sh7752evb/sh7752evb.c      | 4 ++--
 board/renesas/sh7753evb/sh7753evb.c      | 4 ++--
 board/renesas/sh7757lcr/sh7757lcr.c      | 6 +++---
 board/siemens/taurus/taurus.c            | 2 +-
 common/splash_source.c                   | 2 +-
 drivers/dfu/dfu_sf.c                     | 4 ++--
 drivers/net/fm/fm.c                      | 2 +-
 drivers/net/phy/cortina.c                | 2 +-
 include/dfu.h                            | 2 +-
 14 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/board/Arcturus/ucp1020/cmd_arc.c b/board/Arcturus/ucp1020/cmd_arc.c
index fa6b485..9f98d6d 100644
--- a/board/Arcturus/ucp1020/cmd_arc.c
+++ b/board/Arcturus/ucp1020/cmd_arc.c
@@ -37,7 +37,7 @@
 #define FIRM_ADDR3 (CONFIG_ENV_SECT_SIZE + 0x200 - sizeof(smac))
 #define FIRM_ADDR4 (CONFIG_ENV_SECT_SIZE + 0x400 - sizeof(smac))
 
-static struct spi_flash *flash;
+static spi_flash_t *flash;
 char smac[4][18];
 
 static int ishwaddr(char *hwaddr)
diff --git a/board/Synology/ds414/cmd_syno.c b/board/Synology/ds414/cmd_syno.c
index 20544e2..1d0f3e7 100644
--- a/board/Synology/ds414/cmd_syno.c
+++ b/board/Synology/ds414/cmd_syno.c
@@ -27,7 +27,7 @@ static int do_syno_populate(int argc, char * const argv[])
 	unsigned int cs = CONFIG_SF_DEFAULT_CS;
 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
 	unsigned int mode = CONFIG_SF_DEFAULT_MODE;
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 	unsigned long addr = 0x80000; /* XXX: parameterize this? */
 	loff_t offset = 0x007d0000;
 	loff_t len = 0x00010000;
diff --git a/board/buffalo/lsxl/lsxl.c b/board/buffalo/lsxl/lsxl.c
index 0f37345..298d26e 100644
--- a/board/buffalo/lsxl/lsxl.c
+++ b/board/buffalo/lsxl/lsxl.c
@@ -211,7 +211,7 @@ void check_enetaddr(void)
 
 static void erase_environment(void)
 {
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 
 	printf("Erasing environment..\n");
 	flash = spi_flash_probe(0, 0, 1000000, SPI_MODE_3);
diff --git a/board/congatec/cgtqmx6eval/cgtqmx6eval.c b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
index 225de7c..8db2b9e 100644
--- a/board/congatec/cgtqmx6eval/cgtqmx6eval.c
+++ b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
@@ -1005,7 +1005,7 @@ static void conv_ascii(unsigned char *dst, unsigned char *src, int len)
 #define CFG_MFG_ADDR_OFFSET	(spi->size - SZ_16K)
 static bool is_2gb(void)
 {
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	int ret;
 	char buf[sizeof(struct mfgdata)];
 	struct mfgdata *data = (struct mfgdata *)buf;
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index b82385a..356d3ce 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -49,7 +49,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #ifdef CONFIG_MAC_ADDR_IN_SPIFLASH
 static int get_mac_addr(u8 *addr)
 {
-	struct spi_flash *flash;
+	spi_flash_t *flash;
 	int ret;
 
 	flash = spi_flash_probe(CFG_MAC_ADDR_SPI_BUS, CFG_MAC_ADDR_SPI_CS,
diff --git a/board/renesas/sh7752evb/sh7752evb.c b/board/renesas/sh7752evb/sh7752evb.c
index 3aad532..35360fd 100644
--- a/board/renesas/sh7752evb/sh7752evb.c
+++ b/board/renesas/sh7752evb/sh7752evb.c
@@ -185,7 +185,7 @@ int board_mmc_init(bd_t *bis)
 
 static int get_sh_eth_mac_raw(unsigned char *buf, int size)
 {
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	int ret;
 
 	spi = spi_flash_probe(0, 0, 1000000, SPI_MODE_3);
@@ -254,7 +254,7 @@ int do_write_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	int i, ret;
 	char mac_string[256];
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	unsigned char *buf;
 
 	if (argc != 3) {
diff --git a/board/renesas/sh7753evb/sh7753evb.c b/board/renesas/sh7753evb/sh7753evb.c
index 52a1906..8d609ec 100644
--- a/board/renesas/sh7753evb/sh7753evb.c
+++ b/board/renesas/sh7753evb/sh7753evb.c
@@ -201,7 +201,7 @@ int board_mmc_init(bd_t *bis)
 
 static int get_sh_eth_mac_raw(unsigned char *buf, int size)
 {
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	int ret;
 
 	spi = spi_flash_probe(0, 0, 1000000, SPI_MODE_3);
@@ -270,7 +270,7 @@ int do_write_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	int i, ret;
 	char mac_string[256];
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	unsigned char *buf;
 
 	if (argc != 3) {
diff --git a/board/renesas/sh7757lcr/sh7757lcr.c b/board/renesas/sh7757lcr/sh7757lcr.c
index ddcf275..9793f1f 100644
--- a/board/renesas/sh7757lcr/sh7757lcr.c
+++ b/board/renesas/sh7757lcr/sh7757lcr.c
@@ -30,7 +30,7 @@ static void init_gctrl(void)
 
 static int init_pcie_bridge_from_spi(void *buf, size_t size)
 {
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	int ret;
 	unsigned long pcie_addr;
 
@@ -256,7 +256,7 @@ int board_mmc_init(bd_t *bis)
 
 static int get_sh_eth_mac_raw(unsigned char *buf, int size)
 {
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	int ret;
 
 	spi = spi_flash_probe(0, 0, 1000000, SPI_MODE_3);
@@ -381,7 +381,7 @@ int do_write_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	int i, ret;
 	char mac_string[256];
-	struct spi_flash *spi;
+	spi_flash_t *spi;
 	unsigned char *buf;
 
 	if (argc != 5) {
diff --git a/board/siemens/taurus/taurus.c b/board/siemens/taurus/taurus.c
index b0385d8..14907c8 100644
--- a/board/siemens/taurus/taurus.c
+++ b/board/siemens/taurus/taurus.c
@@ -121,7 +121,7 @@ void spl_board_init(void)
 
 	/* check for recovery mode */
 	if (at91_is_recovery() == 1) {
-		struct spi_flash *flash;
+		spi_flash_t *flash;
 
 		puts("Recovery button pressed\n");
 		nand_init();
diff --git a/common/splash_source.c b/common/splash_source.c
index a09dd4b..3393f73 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -20,7 +20,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_SPI_FLASH
-static struct spi_flash *sf;
+static spi_flash_t *sf;
 static int splash_sf_read_raw(u32 bmp_load_addr, int offset, size_t read_size)
 {
 	if (!sf) {
diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c
index 13e7f92..48eb546 100644
--- a/drivers/dfu/dfu_sf.c
+++ b/drivers/dfu/dfu_sf.c
@@ -63,14 +63,14 @@ static void dfu_free_entity_sf(struct dfu_entity *dfu)
 	spi_flash_free(dfu->data.sf.dev);
 }
 
-static struct spi_flash *parse_dev(char *devstr)
+static spi_flash_t *parse_dev(char *devstr)
 {
 	unsigned int bus;
 	unsigned int cs;
 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
 	unsigned int mode = CONFIG_SF_DEFAULT_MODE;
 	char *s, *endp;
-	struct spi_flash *dev;
+	spi_flash_t *dev;
 
 	s = strsep(&devstr, ":");
 	if (!s || !*s || (bus = simple_strtoul(s, &endp, 0), *endp)) {
diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index e2a8ed3..9647ec1 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -367,7 +367,7 @@ int fm_init_common(int index, struct ccsr_fman *reg)
 			CONFIG_SYS_FMAN_FW_ADDR, rc);
 	}
 #elif defined(CONFIG_SYS_QE_FW_IN_SPIFLASH)
-	struct spi_flash *ucode_flash;
+	spi_flash_t *ucode_flash;
 	void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
 	int ret = 0;
 
diff --git a/drivers/net/phy/cortina.c b/drivers/net/phy/cortina.c
index f975fd8..f7961a4 100644
--- a/drivers/net/phy/cortina.c
+++ b/drivers/net/phy/cortina.c
@@ -147,7 +147,7 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 	}
 #elif defined(CONFIG_SYS_CORTINA_FW_IN_SPIFLASH)
 	int ret;
-	struct spi_flash *ucode_flash;
+	spi_flash_t *ucode_flash;
 
 	addr = malloc(CONFIG_CORTINA_FW_LENGTH);
 	ucode_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
diff --git a/include/dfu.h b/include/dfu.h
index f39d3f1..28d263d 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -73,7 +73,7 @@ struct ram_internal_data {
 };
 
 struct sf_internal_data {
-	struct spi_flash *dev;
+	spi_flash_t *dev;
 
 	/* RAW programming */
 	u64 start;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 57/87] defconfig: zynq_zc770_xm013: Enable ZYNQ_QSPI
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (54 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 56/87] spi_flash: Use spi_flash_t Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 58/87] configs: Drop CONFIG_SPI_FLASH_MTD Jagan Teki
                   ` (29 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use zynq qspi driver for zynq zc770_xm013 board.

Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/zynq_zc770_xm013_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/zynq_zc770_xm013_defconfig b/configs/zynq_zc770_xm013_defconfig
index 9672940..9feaca8 100644
--- a/configs/zynq_zc770_xm013_defconfig
+++ b/configs/zynq_zc770_xm013_defconfig
@@ -17,3 +17,4 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_ZYNQ_GEM=y
+CONFIG_ZYNQ_QSPI=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 58/87] configs: Drop CONFIG_SPI_FLASH_MTD
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (55 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 57/87] defconfig: zynq_zc770_xm013: Enable ZYNQ_QSPI Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 59/87] config: Enable SPI-NOR framework Jagan Teki
                   ` (28 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Since mtd support is part of spi-nor core, hence
removed legacy defines.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 include/configs/aristainetos-common.h | 1 -
 include/configs/gw_ventana.h          | 1 -
 include/configs/socfpga_common.h      | 1 -
 3 files changed, 3 deletions(-)

diff --git a/include/configs/aristainetos-common.h b/include/configs/aristainetos-common.h
index efbf816..d9e14b2 100644
--- a/include/configs/aristainetos-common.h
+++ b/include/configs/aristainetos-common.h
@@ -42,7 +42,6 @@
 #define CONFIG_PHY_MICREL
 
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_MTD
 #define CONFIG_MXC_SPI
 #define CONFIG_SF_DEFAULT_SPEED		20000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
index 38c921a..cf71f21 100644
--- a/include/configs/gw_ventana.h
+++ b/include/configs/gw_ventana.h
@@ -68,7 +68,6 @@
 #define CONFIG_CMD_SF
 #ifdef CONFIG_CMD_SF
   #define CONFIG_MXC_SPI
-  #define CONFIG_SPI_FLASH_MTD
   #define CONFIG_SPI_FLASH_BAR
   #define CONFIG_SF_DEFAULT_BUS              0
   #define CONFIG_SF_DEFAULT_CS               0
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index 56d32e6..b002260 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -206,7 +206,6 @@ unsigned int cm_get_l4_sp_clk_hz(void);
  */
 /* Enable multiple SPI NOR flash manufacturers */
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_SPI_FLASH_MTD
 #define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 59/87] config: Enable SPI-NOR framework
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (56 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 58/87] configs: Drop CONFIG_SPI_FLASH_MTD Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 60/87] spi-nor: Use CONFIG_MTD_SPI_NOR Jagan Teki
                   ` (27 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

- CONFIG_DM_SPI_FLASH
- CONFIG_SPI_FLASH
- CONFIG_SPL_SPI_FLASH_SUPPORT
+ CONFIG_MTD
+ CONFIG_MTD_M25P80
+ CONFIG_MTD_SPI_NOR
+ CONFIG_SPL_SPI_NOR_SUPPORT
+ CONFIG_SPL_MTD_SUPPORT

for conditional construct
CONFIG_SPI_FLASH => CONFIG_MTD_SPI_NOR

Cc: Tom Rini <trini@konsulko.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: York Sun <york.sun@nxp.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/Kconfig                                           |  2 +-
 arch/arm/Kconfig                                       | 11 ++++++-----
 arch/arm/mach-rockchip/Kconfig                         |  2 +-
 arch/arm/mach-tegra/Kconfig                            |  2 +-
 board/davinci/ea20/ea20.c                              |  2 +-
 configs/B4420QDS_NAND_defconfig                        |  3 ++-
 configs/B4420QDS_SPIFLASH_defconfig                    |  3 ++-
 configs/B4420QDS_defconfig                             |  3 ++-
 configs/B4860QDS_NAND_defconfig                        |  3 ++-
 configs/B4860QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/B4860QDS_SPIFLASH_defconfig                    |  3 ++-
 configs/B4860QDS_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/B4860QDS_defconfig                             |  3 ++-
 configs/BSC9131RDB_NAND_SYSCLK100_defconfig            |  3 ++-
 configs/BSC9131RDB_NAND_defconfig                      |  3 ++-
 configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig        |  3 ++-
 configs/BSC9131RDB_SPIFLASH_defconfig                  |  3 ++-
 configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig     |  3 ++-
 configs/BSC9132QDS_NAND_DDRCLK100_defconfig            |  3 ++-
 configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig     |  3 ++-
 configs/BSC9132QDS_NAND_DDRCLK133_defconfig            |  3 ++-
 configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig      |  3 ++-
 configs/BSC9132QDS_NOR_DDRCLK100_defconfig             |  3 ++-
 configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig      |  3 ++-
 configs/BSC9132QDS_NOR_DDRCLK133_defconfig             |  3 ++-
 configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig   |  3 ++-
 configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig          |  3 ++-
 configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig   |  3 ++-
 configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig          |  3 ++-
 configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig |  3 ++-
 configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig        |  3 ++-
 configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig |  3 ++-
 configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig        |  3 ++-
 configs/C29XPCIE_NAND_defconfig                        |  3 ++-
 configs/C29XPCIE_NOR_SECBOOT_defconfig                 |  3 ++-
 configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig            |  3 ++-
 configs/C29XPCIE_SPIFLASH_defconfig                    |  3 ++-
 configs/C29XPCIE_defconfig                             |  3 ++-
 configs/M52277EVB_defconfig                            |  3 ++-
 configs/M52277EVB_stmicro_defconfig                    |  3 ++-
 configs/M54418TWR_defconfig                            |  3 ++-
 configs/M54418TWR_nand_mii_defconfig                   |  3 ++-
 configs/M54418TWR_nand_rmii_defconfig                  |  3 ++-
 configs/M54418TWR_nand_rmii_lowfreq_defconfig          |  3 ++-
 configs/M54418TWR_serial_mii_defconfig                 |  3 ++-
 configs/M54418TWR_serial_rmii_defconfig                |  3 ++-
 configs/M54451EVB_defconfig                            |  3 ++-
 configs/M54451EVB_stmicro_defconfig                    |  3 ++-
 configs/M54455EVB_a66_defconfig                        |  3 ++-
 configs/M54455EVB_defconfig                            |  3 ++-
 configs/M54455EVB_i66_defconfig                        |  3 ++-
 configs/M54455EVB_intel_defconfig                      |  3 ++-
 configs/M54455EVB_stm33_defconfig                      |  3 ++-
 configs/MPC8536DS_36BIT_defconfig                      |  3 ++-
 configs/MPC8536DS_SDCARD_defconfig                     |  3 ++-
 configs/MPC8536DS_SPIFLASH_defconfig                   |  3 ++-
 configs/MPC8536DS_defconfig                            |  3 ++-
 configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig       |  3 ++-
 configs/P1010RDB-PA_36BIT_NAND_defconfig               |  3 ++-
 configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig        |  3 ++-
 configs/P1010RDB-PA_36BIT_NOR_defconfig                |  3 ++-
 configs/P1010RDB-PA_36BIT_SDCARD_defconfig             |  3 ++-
 configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig   |  3 ++-
 configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig           |  3 ++-
 configs/P1010RDB-PA_NAND_SECBOOT_defconfig             |  3 ++-
 configs/P1010RDB-PA_NAND_defconfig                     |  3 ++-
 configs/P1010RDB-PA_NOR_SECBOOT_defconfig              |  3 ++-
 configs/P1010RDB-PA_NOR_defconfig                      |  3 ++-
 configs/P1010RDB-PA_SDCARD_defconfig                   |  3 ++-
 configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig         |  3 ++-
 configs/P1010RDB-PA_SPIFLASH_defconfig                 |  3 ++-
 configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig       |  3 ++-
 configs/P1010RDB-PB_36BIT_NAND_defconfig               |  3 ++-
 configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig        |  3 ++-
 configs/P1010RDB-PB_36BIT_NOR_defconfig                |  3 ++-
 configs/P1010RDB-PB_36BIT_SDCARD_defconfig             |  3 ++-
 configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig   |  3 ++-
 configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig           |  3 ++-
 configs/P1010RDB-PB_NAND_SECBOOT_defconfig             |  3 ++-
 configs/P1010RDB-PB_NAND_defconfig                     |  3 ++-
 configs/P1010RDB-PB_NOR_SECBOOT_defconfig              |  3 ++-
 configs/P1010RDB-PB_NOR_defconfig                      |  3 ++-
 configs/P1010RDB-PB_SDCARD_defconfig                   |  3 ++-
 configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig         |  3 ++-
 configs/P1010RDB-PB_SPIFLASH_defconfig                 |  3 ++-
 configs/P1020RDB-PC_36BIT_NAND_defconfig               |  3 ++-
 configs/P1020RDB-PC_36BIT_SDCARD_defconfig             |  3 ++-
 configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig           |  3 ++-
 configs/P1020RDB-PC_36BIT_defconfig                    |  3 ++-
 configs/P1020RDB-PC_NAND_defconfig                     |  3 ++-
 configs/P1020RDB-PC_SDCARD_defconfig                   |  3 ++-
 configs/P1020RDB-PC_SPIFLASH_defconfig                 |  3 ++-
 configs/P1020RDB-PC_defconfig                          |  3 ++-
 configs/P1020RDB-PD_NAND_defconfig                     |  3 ++-
 configs/P1020RDB-PD_SDCARD_defconfig                   |  3 ++-
 configs/P1020RDB-PD_SPIFLASH_defconfig                 |  3 ++-
 configs/P1020RDB-PD_defconfig                          |  3 ++-
 configs/P1021RDB-PC_36BIT_NAND_defconfig               |  3 ++-
 configs/P1021RDB-PC_36BIT_SDCARD_defconfig             |  3 ++-
 configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig           |  3 ++-
 configs/P1021RDB-PC_36BIT_defconfig                    |  3 ++-
 configs/P1021RDB-PC_NAND_defconfig                     |  3 ++-
 configs/P1021RDB-PC_SDCARD_defconfig                   |  3 ++-
 configs/P1021RDB-PC_SPIFLASH_defconfig                 |  3 ++-
 configs/P1021RDB-PC_defconfig                          |  3 ++-
 configs/P1022DS_36BIT_NAND_defconfig                   |  3 ++-
 configs/P1022DS_36BIT_SDCARD_defconfig                 |  3 ++-
 configs/P1022DS_36BIT_SPIFLASH_defconfig               |  3 ++-
 configs/P1022DS_36BIT_defconfig                        |  3 ++-
 configs/P1022DS_NAND_defconfig                         |  3 ++-
 configs/P1022DS_SDCARD_defconfig                       |  3 ++-
 configs/P1022DS_SPIFLASH_defconfig                     |  3 ++-
 configs/P1022DS_defconfig                              |  3 ++-
 configs/P1024RDB_36BIT_defconfig                       |  3 ++-
 configs/P1024RDB_NAND_defconfig                        |  3 ++-
 configs/P1024RDB_SDCARD_defconfig                      |  3 ++-
 configs/P1024RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/P1024RDB_defconfig                             |  3 ++-
 configs/P1025RDB_36BIT_defconfig                       |  3 ++-
 configs/P1025RDB_NAND_defconfig                        |  3 ++-
 configs/P1025RDB_SDCARD_defconfig                      |  3 ++-
 configs/P1025RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/P1025RDB_defconfig                             |  3 ++-
 configs/P2020RDB-PC_36BIT_NAND_defconfig               |  3 ++-
 configs/P2020RDB-PC_36BIT_SDCARD_defconfig             |  3 ++-
 configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig           |  3 ++-
 configs/P2020RDB-PC_36BIT_defconfig                    |  3 ++-
 configs/P2020RDB-PC_NAND_defconfig                     |  3 ++-
 configs/P2020RDB-PC_SDCARD_defconfig                   |  3 ++-
 configs/P2020RDB-PC_SPIFLASH_defconfig                 |  3 ++-
 configs/P2020RDB-PC_defconfig                          |  3 ++-
 configs/P2041RDB_NAND_defconfig                        |  3 ++-
 configs/P2041RDB_SDCARD_defconfig                      |  3 ++-
 configs/P2041RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/P2041RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/P2041RDB_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/P2041RDB_defconfig                             |  3 ++-
 configs/P3041DS_NAND_SECURE_BOOT_defconfig             |  3 ++-
 configs/P3041DS_NAND_defconfig                         |  3 ++-
 configs/P3041DS_SDCARD_defconfig                       |  3 ++-
 configs/P3041DS_SECURE_BOOT_defconfig                  |  3 ++-
 configs/P3041DS_SPIFLASH_defconfig                     |  3 ++-
 configs/P3041DS_SRIO_PCIE_BOOT_defconfig               |  3 ++-
 configs/P3041DS_defconfig                              |  3 ++-
 configs/P4080DS_SDCARD_defconfig                       |  3 ++-
 configs/P4080DS_SECURE_BOOT_defconfig                  |  3 ++-
 configs/P4080DS_SPIFLASH_defconfig                     |  3 ++-
 configs/P4080DS_SRIO_PCIE_BOOT_defconfig               |  3 ++-
 configs/P4080DS_defconfig                              |  3 ++-
 configs/P5020DS_NAND_SECURE_BOOT_defconfig             |  3 ++-
 configs/P5020DS_NAND_defconfig                         |  3 ++-
 configs/P5020DS_SDCARD_defconfig                       |  3 ++-
 configs/P5020DS_SECURE_BOOT_defconfig                  |  3 ++-
 configs/P5020DS_SPIFLASH_defconfig                     |  3 ++-
 configs/P5020DS_SRIO_PCIE_BOOT_defconfig               |  3 ++-
 configs/P5020DS_defconfig                              |  3 ++-
 configs/P5040DS_NAND_SECURE_BOOT_defconfig             |  3 ++-
 configs/P5040DS_NAND_defconfig                         |  3 ++-
 configs/P5040DS_SDCARD_defconfig                       |  3 ++-
 configs/P5040DS_SECURE_BOOT_defconfig                  |  3 ++-
 configs/P5040DS_SPIFLASH_defconfig                     |  3 ++-
 configs/P5040DS_defconfig                              |  3 ++-
 configs/T1023RDB_NAND_defconfig                        |  3 ++-
 configs/T1023RDB_SDCARD_defconfig                      |  3 ++-
 configs/T1023RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1023RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/T1023RDB_defconfig                             |  3 ++-
 configs/T1024QDS_DDR4_SECURE_BOOT_defconfig            |  3 ++-
 configs/T1024QDS_DDR4_defconfig                        |  3 ++-
 configs/T1024QDS_NAND_defconfig                        |  3 ++-
 configs/T1024QDS_SDCARD_defconfig                      |  3 ++-
 configs/T1024QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1024QDS_SPIFLASH_defconfig                    |  3 ++-
 configs/T1024QDS_defconfig                             |  3 ++-
 configs/T1024RDB_NAND_defconfig                        |  3 ++-
 configs/T1024RDB_SDCARD_defconfig                      |  3 ++-
 configs/T1024RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1024RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/T1024RDB_defconfig                             |  3 ++-
 configs/T1040D4RDB_NAND_defconfig                      |  3 ++-
 configs/T1040D4RDB_SDCARD_defconfig                    |  3 ++-
 configs/T1040D4RDB_SECURE_BOOT_defconfig               |  3 ++-
 configs/T1040D4RDB_SPIFLASH_defconfig                  |  3 ++-
 configs/T1040D4RDB_defconfig                           |  3 ++-
 configs/T1040QDS_DDR4_defconfig                        |  3 ++-
 configs/T1040QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1040QDS_defconfig                             |  3 ++-
 configs/T1040RDB_NAND_defconfig                        |  3 ++-
 configs/T1040RDB_SDCARD_defconfig                      |  3 ++-
 configs/T1040RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1040RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/T1040RDB_defconfig                             |  3 ++-
 configs/T1042D4RDB_NAND_defconfig                      |  3 ++-
 configs/T1042D4RDB_SDCARD_defconfig                    |  3 ++-
 configs/T1042D4RDB_SECURE_BOOT_defconfig               |  3 ++-
 configs/T1042D4RDB_SPIFLASH_defconfig                  |  3 ++-
 configs/T1042D4RDB_defconfig                           |  3 ++-
 configs/T1042RDB_PI_NAND_defconfig                     |  3 ++-
 configs/T1042RDB_PI_SDCARD_defconfig                   |  3 ++-
 configs/T1042RDB_PI_SPIFLASH_defconfig                 |  3 ++-
 configs/T1042RDB_PI_defconfig                          |  3 ++-
 configs/T1042RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T1042RDB_defconfig                             |  3 ++-
 configs/T2080QDS_NAND_defconfig                        |  3 ++-
 configs/T2080QDS_SDCARD_defconfig                      |  3 ++-
 configs/T2080QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T2080QDS_SPIFLASH_defconfig                    |  3 ++-
 configs/T2080QDS_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/T2080QDS_defconfig                             |  3 ++-
 configs/T2080RDB_NAND_defconfig                        |  3 ++-
 configs/T2080RDB_SDCARD_defconfig                      |  3 ++-
 configs/T2080RDB_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T2080RDB_SPIFLASH_defconfig                    |  3 ++-
 configs/T2080RDB_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/T2080RDB_defconfig                             |  3 ++-
 configs/T2081QDS_NAND_defconfig                        |  3 ++-
 configs/T2081QDS_SDCARD_defconfig                      |  3 ++-
 configs/T2081QDS_SPIFLASH_defconfig                    |  3 ++-
 configs/T2081QDS_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/T2081QDS_defconfig                             |  3 ++-
 configs/T4160QDS_NAND_defconfig                        |  3 ++-
 configs/T4160QDS_SDCARD_defconfig                      |  3 ++-
 configs/T4160QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T4160QDS_defconfig                             |  3 ++-
 configs/T4160RDB_defconfig                             |  3 ++-
 configs/T4240QDS_NAND_defconfig                        |  3 ++-
 configs/T4240QDS_SDCARD_defconfig                      |  3 ++-
 configs/T4240QDS_SECURE_BOOT_defconfig                 |  3 ++-
 configs/T4240QDS_SRIO_PCIE_BOOT_defconfig              |  3 ++-
 configs/T4240QDS_defconfig                             |  3 ++-
 configs/T4240RDB_SDCARD_defconfig                      |  3 ++-
 configs/T4240RDB_defconfig                             |  3 ++-
 configs/UCP1020_SPIFLASH_defconfig                     |  3 ++-
 configs/UCP1020_defconfig                              |  3 ++-
 configs/alt_defconfig                                  |  3 ++-
 configs/am335x_boneblack_defconfig                     |  3 ++-
 configs/am335x_boneblack_vboot_defconfig               |  3 ++-
 configs/am335x_evm_defconfig                           |  3 ++-
 configs/am335x_evm_nor_defconfig                       |  3 ++-
 configs/am335x_evm_norboot_defconfig                   |  3 ++-
 configs/am335x_evm_spiboot_defconfig                   |  3 ++-
 configs/am335x_evm_usbspl_defconfig                    |  3 ++-
 configs/am335x_gp_evm_defconfig                        |  3 ++-
 configs/am437x_gp_evm_defconfig                        |  3 ++-
 configs/am437x_sk_evm_defconfig                        |  5 +++--
 configs/am43xx_evm_defconfig                           |  3 ++-
 configs/am43xx_evm_ethboot_defconfig                   |  3 ++-
 configs/am43xx_evm_qspiboot_defconfig                  |  3 ++-
 configs/am43xx_evm_usbhost_boot_defconfig              |  3 ++-
 configs/am57xx_evm_defconfig                           |  3 ++-
 configs/aristainetos2_defconfig                        |  3 ++-
 configs/aristainetos2b_defconfig                       |  3 ++-
 configs/aristainetos_defconfig                         |  3 ++-
 configs/at91sam9n12ek_mmc_defconfig                    |  3 ++-
 configs/at91sam9n12ek_nandflash_defconfig              |  3 ++-
 configs/at91sam9n12ek_spiflash_defconfig               |  3 ++-
 configs/at91sam9x5ek_dataflash_defconfig               |  3 ++-
 configs/at91sam9x5ek_mmc_defconfig                     |  3 ++-
 configs/at91sam9x5ek_nandflash_defconfig               |  3 ++-
 configs/at91sam9x5ek_spiflash_defconfig                |  3 ++-
 configs/atngw100_defconfig                             |  3 ++-
 configs/atngw100mkii_defconfig                         |  3 ++-
 configs/axm_defconfig                                  |  3 ++-
 configs/bayleybay_defconfig                            |  3 ++-
 configs/beaver_defconfig                               |  3 ++-
 configs/bf518f-ezbrd_defconfig                         |  3 ++-
 configs/bf525-ucr2_defconfig                           |  3 ++-
 configs/bf526-ezbrd_defconfig                          |  3 ++-
 configs/bf527-ad7160-eval_defconfig                    |  3 ++-
 configs/bf527-ezkit-v2_defconfig                       |  3 ++-
 configs/bf527-ezkit_defconfig                          |  3 ++-
 configs/bf527-sdp_defconfig                            |  3 ++-
 configs/bf537-minotaur_defconfig                       |  3 ++-
 configs/bf537-pnav_defconfig                           |  3 ++-
 configs/bf537-srv1_defconfig                           |  3 ++-
 configs/bf537-stamp_defconfig                          |  3 ++-
 configs/bf548-ezkit_defconfig                          |  3 ++-
 configs/bf561-acvilon_defconfig                        |  3 ++-
 configs/bf609-ezkit_defconfig                          |  3 ++-
 configs/bg0900_defconfig                               |  3 ++-
 configs/birdland_bav335a_defconfig                     |  3 ++-
 configs/birdland_bav335b_defconfig                     |  3 ++-
 configs/blackstamp_defconfig                           |  3 ++-
 configs/blackvme_defconfig                             |  3 ++-
 configs/br4_defconfig                                  |  3 ++-
 configs/cardhu_defconfig                               |  3 ++-
 configs/cgtqmx6eval_defconfig                          |  2 ++
 configs/chromebook_jerry_defconfig                     |  2 ++
 configs/chromebook_link_defconfig                      |  3 ++-
 configs/chromebook_samus_defconfig                     |  3 ++-
 configs/chromebox_panther_defconfig                    |  3 ++-
 configs/clearfog_defconfig                             |  3 ++-
 configs/cm_fx6_defconfig                               |  3 ++-
 configs/cm_t43_defconfig                               |  3 ++-
 configs/conga-qeval20-qa3-e3845_defconfig              |  3 ++-
 configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  |  3 ++-
 configs/controlcenterd_36BIT_SDCARD_defconfig          |  3 ++-
 configs/coreboot-x86_defconfig                         |  3 ++-
 configs/cougarcanyon2_defconfig                        |  3 ++-
 configs/crownbay_defconfig                             |  3 ++-
 configs/d2net_v2_defconfig                             |  3 ++-
 configs/da850_am18xxevm_defconfig                      |  3 ++-
 configs/da850evm_defconfig                             |  3 ++-
 configs/da850evm_direct_nor_defconfig                  |  3 ++-
 configs/dalmore_defconfig                              |  3 ++-
 configs/db-88f6820-gp_defconfig                        |  3 ++-
 configs/db-mv784mp-gp_defconfig                        |  3 ++-
 configs/dra72_evm_defconfig                            |  5 +++--
 configs/dra74_evm_defconfig                            |  5 +++--
 configs/dra7xx_evm_defconfig                           |  4 +++-
 configs/dra7xx_evm_qspiboot_defconfig                  |  4 +++-
 configs/dra7xx_evm_uart3_defconfig                     |  4 +++-
 configs/draco_defconfig                                |  3 ++-
 configs/dreamplug_defconfig                            |  3 ++-
 configs/ds414_defconfig                                |  3 ++-
 configs/e2220-1170_defconfig                           |  3 ++-
 configs/ea20_defconfig                                 |  3 ++-
 configs/ethernut5_defconfig                            |  3 ++-
 configs/firefly-rk3288_defconfig                       |  2 ++
 configs/galileo_defconfig                              |  3 ++-
 configs/gose_defconfig                                 |  3 ++-
 configs/gplugd_defconfig                               |  3 ++-
 configs/inetspace_v2_defconfig                         |  3 ++-
 configs/ip04_defconfig                                 |  3 ++-
 configs/jetson-tk1_defconfig                           |  3 ++-
 configs/k2e_evm_defconfig                              |  3 ++-
 configs/k2g_evm_defconfig                              |  3 ++-
 configs/k2hk_evm_defconfig                             |  3 ++-
 configs/k2l_evm_defconfig                              |  3 ++-
 configs/km_kirkwood_128m16_defconfig                   |  3 ++-
 configs/km_kirkwood_defconfig                          |  3 ++-
 configs/km_kirkwood_pci_defconfig                      |  3 ++-
 configs/kmcoge4_defconfig                              |  3 ++-
 configs/kmcoge5un_defconfig                            |  3 ++-
 configs/kmlion1_defconfig                              |  3 ++-
 configs/kmnusa_defconfig                               |  3 ++-
 configs/kmsugp1_defconfig                              |  3 ++-
 configs/kmsuv31_defconfig                              |  3 ++-
 configs/koelsch_defconfig                              |  3 ++-
 configs/kylin-rk3036_defconfig                         |  2 ++
 configs/lager_defconfig                                |  3 ++-
 configs/legoev3_defconfig                              |  3 ++-
 configs/ls1021aqds_sdcard_qspi_defconfig               |  3 ++-
 configs/ls1021atwr_qspi_defconfig                      |  4 +++-
 configs/ls1021atwr_sdcard_qspi_defconfig               |  3 ++-
 configs/ls1043aqds_defconfig                           |  3 ++-
 configs/ls1043aqds_lpuart_defconfig                    |  3 ++-
 configs/ls1043aqds_nand_defconfig                      |  3 ++-
 configs/ls1043aqds_nor_ddr3_defconfig                  |  3 ++-
 configs/ls1043aqds_qspi_defconfig                      |  3 ++-
 configs/ls1043aqds_sdcard_ifc_defconfig                |  3 ++-
 configs/ls1043aqds_sdcard_qspi_defconfig               |  3 ++-
 configs/ls1043ardb_SECURE_BOOT_defconfig               |  3 ++-
 configs/ls1043ardb_defconfig                           |  3 ++-
 configs/ls1043ardb_nand_defconfig                      |  3 ++-
 configs/ls1043ardb_sdcard_defconfig                    |  3 ++-
 configs/ls2080aqds_defconfig                           |  2 +-
 configs/ls2080ardb_defconfig                           |  2 +-
 configs/ls2085aqds_defconfig                           |  2 +-
 configs/ls2085ardb_defconfig                           |  2 +-
 configs/lschlv2_defconfig                              |  3 ++-
 configs/lsxhl_defconfig                                |  3 ++-
 configs/m28evk_defconfig                               |  3 ++-
 configs/ma5d4evk_defconfig                             |  3 ++-
 configs/marsboard_defconfig                            |  3 ++-
 configs/maxbcm_defconfig                               |  3 ++-
 configs/mgcoge3un_defconfig                            |  3 ++-
 configs/minnowmax_defconfig                            |  3 ++-
 configs/mx28evk_auart_console_defconfig                |  3 ++-
 configs/mx28evk_defconfig                              |  3 ++-
 configs/mx28evk_nand_defconfig                         |  3 ++-
 configs/mx28evk_spi_defconfig                          |  3 ++-
 configs/mx6dlsabreauto_defconfig                       |  3 ++-
 configs/mx6dlsabresd_defconfig                         |  3 ++-
 configs/mx6qpsabreauto_defconfig                       |  3 ++-
 configs/mx6qsabreauto_defconfig                        |  3 ++-
 configs/mx6qsabrelite_defconfig                        |  3 ++-
 configs/mx6qsabresd_defconfig                          |  3 ++-
 configs/mx6sabresd_spl_defconfig                       |  3 ++-
 configs/mx6slevk_defconfig                             |  3 ++-
 configs/mx6slevk_spinor_defconfig                      |  3 ++-
 configs/mx6slevk_spl_defconfig                         |  3 ++-
 configs/mx6sxsabreauto_defconfig                       |  3 ++-
 configs/mx6sxsabresd_defconfig                         |  3 ++-
 configs/mx6sxsabresd_spl_defconfig                     |  3 ++-
 configs/net2big_v2_defconfig                           |  3 ++-
 configs/netspace_lite_v2_defconfig                     |  3 ++-
 configs/netspace_max_v2_defconfig                      |  3 ++-
 configs/netspace_mini_v2_defconfig                     |  3 ++-
 configs/netspace_v2_defconfig                          |  3 ++-
 configs/nitrogen6dl2g_defconfig                        |  3 ++-
 configs/nitrogen6dl_defconfig                          |  3 ++-
 configs/nitrogen6q2g_defconfig                         |  3 ++-
 configs/nitrogen6q_defconfig                           |  3 ++-
 configs/nitrogen6s1g_defconfig                         |  3 ++-
 configs/nitrogen6s_defconfig                           |  3 ++-
 configs/nyan-big_defconfig                             |  3 ++-
 configs/omapl138_lcdk_defconfig                        |  3 ++-
 configs/ot1200_defconfig                               |  3 ++-
 configs/ot1200_spl_defconfig                           |  3 ++-
 configs/p2371-0000_defconfig                           |  3 ++-
 configs/p2371-2180_defconfig                           |  3 ++-
 configs/p2571_defconfig                                |  3 ++-
 configs/pcm051_rev1_defconfig                          |  3 ++-
 configs/pcm051_rev3_defconfig                          |  3 ++-
 configs/peach-pi_defconfig                             |  3 ++-
 configs/peach-pit_defconfig                            |  3 ++-
 configs/porter_defconfig                               |  3 ++-
 configs/portl2_defconfig                               |  3 ++-
 configs/pr1_defconfig                                  |  3 ++-
 configs/pxm2_defconfig                                 |  3 ++-
 configs/qemu-x86_defconfig                             |  3 ++-
 configs/rastaban_defconfig                             |  3 ++-
 configs/riotboard_defconfig                            |  3 ++-
 configs/rock2_defconfig                                |  2 ++
 configs/rut_defconfig                                  |  3 ++-
 configs/sama5d2_xplained_mmc_defconfig                 |  3 ++-
 configs/sama5d2_xplained_spiflash_defconfig            |  3 ++-
 configs/sama5d3xek_mmc_defconfig                       |  3 ++-
 configs/sama5d3xek_nandflash_defconfig                 |  3 ++-
 configs/sama5d3xek_spiflash_defconfig                  |  3 ++-
 configs/sama5d4_xplained_mmc_defconfig                 |  3 ++-
 configs/sama5d4_xplained_nandflash_defconfig           |  3 ++-
 configs/sama5d4_xplained_spiflash_defconfig            |  3 ++-
 configs/sama5d4ek_mmc_defconfig                        |  3 ++-
 configs/sama5d4ek_nandflash_defconfig                  |  3 ++-
 configs/sama5d4ek_spiflash_defconfig                   |  3 ++-
 configs/sh7752evb_defconfig                            |  3 ++-
 configs/sh7753evb_defconfig                            |  3 ++-
 configs/sh7757lcr_defconfig                            |  3 ++-
 configs/silk_defconfig                                 |  3 ++-
 configs/smdk5250_defconfig                             |  3 ++-
 configs/smdk5420_defconfig                             |  3 ++-
 configs/snow_defconfig                                 |  3 ++-
 configs/socfpga_arria5_defconfig                       |  3 ++-
 configs/socfpga_cyclone5_defconfig                     |  3 ++-
 configs/socfpga_de0_nano_soc_defconfig                 |  3 +++
 configs/socfpga_mcvevk_defconfig                       |  2 ++
 configs/socfpga_sockit_defconfig                       |  3 ++-
 configs/socfpga_socrates_defconfig                     |  3 ++-
 configs/socfpga_sr1500_defconfig                       |  3 ++-
 configs/spring_defconfig                               |  3 ++-
 configs/stout_defconfig                                |  3 ++-
 configs/taurus_defconfig                               |  3 ++-
 configs/tec-ng_defconfig                               |  3 ++-
 configs/theadorable_debug_defconfig                    |  3 ++-
 configs/theadorable_defconfig                          |  3 ++-
 configs/thuban_defconfig                               |  3 ++-
 configs/tqma6q_mba6_mmc_defconfig                      |  3 ++-
 configs/tqma6q_mba6_spi_defconfig                      |  3 ++-
 configs/tqma6s_mba6_mmc_defconfig                      |  3 ++-
 configs/tqma6s_mba6_spi_defconfig                      |  3 ++-
 configs/trimslice_defconfig                            |  3 ++-
 configs/tseries_spi_defconfig                          |  3 ++-
 configs/venice2_defconfig                              |  3 ++-
 configs/vf610twr_defconfig                             |  3 ++-
 configs/vf610twr_nand_defconfig                        |  3 ++-
 configs/vinco_defconfig                                |  3 ++-
 configs/zynq_microzed_defconfig                        |  3 ++-
 configs/zynq_zc702_defconfig                           |  3 ++-
 configs/zynq_zc706_defconfig                           |  3 ++-
 configs/zynq_zc770_xm010_defconfig                     |  3 ++-
 configs/zynq_zc770_xm013_defconfig                     |  3 ++-
 configs/zynq_zed_defconfig                             |  3 ++-
 configs/zynq_zybo_defconfig                            |  3 ++-
 include/configs/MPC8536DS.h                            |  2 +-
 include/configs/P1010RDB.h                             |  3 ++-
 include/configs/P1022DS.h                              |  3 ++-
 include/configs/T102xQDS.h                             |  3 ++-
 include/configs/T102xRDB.h                             |  3 ++-
 include/configs/T104xRDB.h                             |  3 ++-
 include/configs/T208xQDS.h                             |  5 +++--
 include/configs/T208xRDB.h                             |  5 +++--
 include/configs/UCP1020.h                              |  4 ++--
 include/configs/am335x_evm.h                           |  3 ++-
 include/configs/am43xx_evm.h                           |  2 +-
 include/configs/at91sam9n12ek.h                        |  3 ++-
 include/configs/at91sam9x5ek.h                         |  3 ++-
 include/configs/bav335x.h                              |  3 ++-
 include/configs/bfin_adi_common.h                      |  2 +-
 include/configs/cgtqmx6eval.h                          |  4 ++--
 include/configs/chromebook_jerry.h                     |  3 ++-
 include/configs/clearfog.h                             |  3 ++-
 include/configs/cm_fx6.h                               |  3 ++-
 include/configs/cm_t43.h                               |  3 ++-
 include/configs/da850evm.h                             |  6 ++++--
 include/configs/db-88f6820-gp.h                        |  3 ++-
 include/configs/db-mv784mp-gp.h                        |  3 ++-
 include/configs/dra7xx_evm.h                           |  5 +++--
 include/configs/dreamplug.h                            |  2 +-
 include/configs/ds414.h                                |  3 ++-
 include/configs/exynos5-common.h                       |  2 +-
 include/configs/gw_ventana.h                           | 10 +++++-----
 include/configs/ls1021atwr.h                           |  1 -
 include/configs/ls1043a_common.h                       |  2 +-
 include/configs/ls2080aqds.h                           |  3 ++-
 include/configs/ls2080ardb.h                           |  3 ++-
 include/configs/lsxl.h                                 |  2 +-
 include/configs/ma5d4evk.h                             |  3 ++-
 include/configs/maxbcm.h                               |  3 ++-
 include/configs/mx6ul_14x14_evk.h                      |  3 ++-
 include/configs/mx7dsabresd.h                          |  3 ++-
 include/configs/omapl138_lcdk.h                        |  3 ++-
 include/configs/ot1200.h                               |  3 ++-
 include/configs/p1_p2_rdb_pc.h                         |  5 +++--
 include/configs/pcm051.h                               |  3 ++-
 include/configs/pcm052.h                               |  3 ++-
 include/configs/rk3036_common.h                        |  1 -
 include/configs/rk3288_common.h                        |  1 -
 include/configs/sama5d2_xplained.h                     |  3 ++-
 include/configs/sama5d3xek.h                           |  3 ++-
 include/configs/sama5d4_xplained.h                     |  3 ++-
 include/configs/sama5d4ek.h                            |  3 ++-
 include/configs/siemens-am33x-common.h                 |  3 ++-
 include/configs/socfpga_common.h                       |  3 ++-
 include/configs/taurus.h                               |  3 ++-
 include/configs/tegra-common-usb-gadget.h              |  2 +-
 include/configs/theadorable.h                          |  3 ++-
 include/configs/ti_armv7_keystone2.h                   |  3 ++-
 include/configs/tseries.h                              |  3 ++-
 include/configs/zynq-common.h                          |  3 ++-
 521 files changed, 1041 insertions(+), 532 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 2c58b9a..4aa4dd5 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -113,7 +113,7 @@ config X86
 	select DM_SERIAL
 	select DM_GPIO
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 
 endchoice
 
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b22a04f..c6487ac 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -120,7 +120,7 @@ config ARCH_MVEBU
 	select DM_ETH
 	select DM_SERIAL
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 	select SPL_DM
 	select SPL_DM_SEQ_ALIAS
 	select SPL_OF_CONTROL
@@ -220,8 +220,9 @@ config TARGET_STV0991
 	select DM
 	select DM_SERIAL
 	select DM_SPI
-	select DM_SPI_FLASH
-	select SPI_FLASH
+	select MTD
+	select MTD_M25P80
+	select MTD_SPI_NOR
 
 config TARGET_X600
 	bool "Support x600"
@@ -424,7 +425,7 @@ config ARCH_EXYNOS
 	bool "Samsung EXYNOS"
 	select CPU_V7
 	select DM
-	select DM_SPI_FLASH
+	select MTD
 	select DM_SERIAL
 	select DM_SPI
 	select DM_GPIO
@@ -514,7 +515,7 @@ config ARCH_SOCFPGA
 	select OF_CONTROL
 	select SPL_OF_CONTROL
 	select DM
-	select DM_SPI_FLASH
+	select MTD
 	select DM_SPI
 
 config TARGET_CM_T43
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index d3bddb7..a515a5c 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -32,7 +32,7 @@ config DM_SERIAL
 config DM_SPI
 	default y
 
-config DM_SPI_FLASH
+config MTD
 	default y
 
 config DM_I2C
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index ba6983f..2bc8747 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -12,7 +12,7 @@ config TEGRA_COMMON
 	select DM_PWM
 	select DM_SERIAL
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 	select OF_CONTROL
 	select VIDCONSOLE_AS_LCD if DM_VIDEO
 
diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c
index 66804d7..ef72d6b 100644
--- a/board/davinci/ea20/ea20.c
+++ b/board/davinci/ea20/ea20.c
@@ -160,7 +160,7 @@ const struct pinmux_config halten_pin[] = {
 };
 
 static const struct pinmux_resource pinmuxes[] = {
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 	PINMUX_ITEM(spi1_pins),
 #endif
 	PINMUX_ITEM(uart_pins),
diff --git a/configs/B4420QDS_NAND_defconfig b/configs/B4420QDS_NAND_defconfig
index 0e2b0a8..c343a26 100644
--- a/configs/B4420QDS_NAND_defconfig
+++ b/configs/B4420QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4420QDS_SPIFLASH_defconfig b/configs/B4420QDS_SPIFLASH_defconfig
index 9875191..a0486c0 100644
--- a/configs/B4420QDS_SPIFLASH_defconfig
+++ b/configs/B4420QDS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4420QDS_defconfig b/configs/B4420QDS_defconfig
index c2f903b..8490edf 100644
--- a/configs/B4420QDS_defconfig
+++ b/configs/B4420QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4860QDS_NAND_defconfig b/configs/B4860QDS_NAND_defconfig
index 5533cb3..108af5d 100644
--- a/configs/B4860QDS_NAND_defconfig
+++ b/configs/B4860QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4860QDS_SECURE_BOOT_defconfig b/configs/B4860QDS_SECURE_BOOT_defconfig
index 051dccb..5ae9de8 100644
--- a/configs/B4860QDS_SECURE_BOOT_defconfig
+++ b/configs/B4860QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4860QDS_SPIFLASH_defconfig b/configs/B4860QDS_SPIFLASH_defconfig
index e6807df..0bb8c60 100644
--- a/configs/B4860QDS_SPIFLASH_defconfig
+++ b/configs/B4860QDS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
index b7832db..963a942 100644
--- a/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/B4860QDS_defconfig b/configs/B4860QDS_defconfig
index e68c19f..04f0672 100644
--- a/configs/B4860QDS_defconfig
+++ b/configs/B4860QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9131RDB_NAND_SYSCLK100_defconfig b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
index a199806..98b2c75 100644
--- a/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
+++ b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
@@ -9,7 +9,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND,SYS_CLK_100"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/BSC9131RDB_NAND_defconfig b/configs/BSC9131RDB_NAND_defconfig
index 1f2d2b8..a146494 100644
--- a/configs/BSC9131RDB_NAND_defconfig
+++ b/configs/BSC9131RDB_NAND_defconfig
@@ -9,7 +9,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
index e9c3723..69718ad 100644
--- a/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
+++ b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH,SYS_CLK_100"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/BSC9131RDB_SPIFLASH_defconfig b/configs/BSC9131RDB_SPIFLASH_defconfig
index f46c0ca..6673920 100644
--- a/configs/BSC9131RDB_SPIFLASH_defconfig
+++ b/configs/BSC9131RDB_SPIFLASH_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
index b3829f5..d9726ab 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
index 88f2ade..69bcfd7 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_100"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
index 568470b..0cee1d6 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
index 58bf069..d512def 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_133"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
index 13e8325..d8653ca 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
index 92c4e28..09677c2 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
index 291c879..1f7955e 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
index bb49265..3f2097d 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
index 076a99e..bc8bffd 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
index 3e21ef4..b997cb0 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
index 5c4ba30..b1c287e 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
index 047f315..3d5f683 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
index 1aa92e5..4de2c88 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
index 66500e7..867a3c0 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
index 3531479..45c3442 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
index 7ceec10..ed738f7 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/C29XPCIE_NAND_defconfig b/configs/C29XPCIE_NAND_defconfig
index bea850f..8f927ee 100644
--- a/configs/C29XPCIE_NAND_defconfig
+++ b/configs/C29XPCIE_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
diff --git a/configs/C29XPCIE_NOR_SECBOOT_defconfig b/configs/C29XPCIE_NOR_SECBOOT_defconfig
index c6e5e08..291051d 100644
--- a/configs/C29XPCIE_NOR_SECBOOT_defconfig
+++ b/configs/C29XPCIE_NOR_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
diff --git a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
index 53889f1..5035b66 100644
--- a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
diff --git a/configs/C29XPCIE_SPIFLASH_defconfig b/configs/C29XPCIE_SPIFLASH_defconfig
index e236129..9e553c8 100644
--- a/configs/C29XPCIE_SPIFLASH_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
diff --git a/configs/C29XPCIE_defconfig b/configs/C29XPCIE_defconfig
index 214aff7..d421a5e 100644
--- a/configs/C29XPCIE_defconfig
+++ b/configs/C29XPCIE_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
diff --git a/configs/M52277EVB_defconfig b/configs/M52277EVB_defconfig
index 711a411..9683bb9 100644
--- a/configs/M52277EVB_defconfig
+++ b/configs/M52277EVB_defconfig
@@ -6,5 +6,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M52277EVB_stmicro_defconfig b/configs/M52277EVB_stmicro_defconfig
index 05d20d6..7ca2611 100644
--- a/configs/M52277EVB_stmicro_defconfig
+++ b/configs/M52277EVB_stmicro_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT"
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54418TWR_defconfig b/configs/M54418TWR_defconfig
index 62cebda..b019b63 100644
--- a/configs/M54418TWR_defconfig
+++ b/configs/M54418TWR_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54418TWR_nand_mii_defconfig b/configs/M54418TWR_nand_mii_defconfig
index de73e30..eedee6c 100644
--- a/configs/M54418TWR_nand_mii_defconfig
+++ b/configs/M54418TWR_nand_mii_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54418TWR_nand_rmii_defconfig b/configs/M54418TWR_nand_rmii_defconfig
index 139811c..c8000a8 100644
--- a/configs/M54418TWR_nand_rmii_defconfig
+++ b/configs/M54418TWR_nand_rmii_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54418TWR_nand_rmii_lowfreq_defconfig b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
index a3cf48b..184936b 100644
--- a/configs/M54418TWR_nand_rmii_lowfreq_defconfig
+++ b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54418TWR_serial_mii_defconfig b/configs/M54418TWR_serial_mii_defconfig
index ad29d52..fd827e3 100644
--- a/configs/M54418TWR_serial_mii_defconfig
+++ b/configs/M54418TWR_serial_mii_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54418TWR_serial_rmii_defconfig b/configs/M54418TWR_serial_rmii_defconfig
index 62cebda..b019b63 100644
--- a/configs/M54418TWR_serial_rmii_defconfig
+++ b/configs/M54418TWR_serial_rmii_defconfig
@@ -8,5 +8,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/M54451EVB_defconfig b/configs/M54451EVB_defconfig
index a9fe02f..62cf895 100644
--- a/configs/M54451EVB_defconfig
+++ b/configs/M54451EVB_defconfig
@@ -6,5 +6,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54451EVB_stmicro_defconfig b/configs/M54451EVB_stmicro_defconfig
index f10e86c..447a506 100644
--- a/configs/M54451EVB_stmicro_defconfig
+++ b/configs/M54451EVB_stmicro_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT,SYS_INPUT_CLKSRC=24000000"
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54455EVB_a66_defconfig b/configs/M54455EVB_a66_defconfig
index 3053514..f9d6f73 100644
--- a/configs/M54455EVB_a66_defconfig
+++ b/configs/M54455EVB_a66_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_INPUT_CLKSRC=66666666"
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54455EVB_defconfig b/configs/M54455EVB_defconfig
index 9f70f7e..b9275b0 100644
--- a/configs/M54455EVB_defconfig
+++ b/configs/M54455EVB_defconfig
@@ -6,5 +6,6 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54455EVB_i66_defconfig b/configs/M54455EVB_i66_defconfig
index 8421393..ddba2d5 100644
--- a/configs/M54455EVB_i66_defconfig
+++ b/configs/M54455EVB_i66_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=66666666"
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54455EVB_intel_defconfig b/configs/M54455EVB_intel_defconfig
index c630108..d3312c5 100644
--- a/configs/M54455EVB_intel_defconfig
+++ b/configs/M54455EVB_intel_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=33333333"
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/M54455EVB_stm33_defconfig b/configs/M54455EVB_stm33_defconfig
index 4e8aee4..c3a4bb0 100644
--- a/configs/M54455EVB_stm33_defconfig
+++ b/configs/M54455EVB_stm33_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_STMICRO_BOOT,CF_SBF,SYS_INPUT_CLKSRC=33333333"
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/MPC8536DS_36BIT_defconfig b/configs/MPC8536DS_36BIT_defconfig
index af1ea37..77ac30d 100644
--- a/configs/MPC8536DS_36BIT_defconfig
+++ b/configs/MPC8536DS_36BIT_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/MPC8536DS_SDCARD_defconfig b/configs/MPC8536DS_SDCARD_defconfig
index b91b4e4..1413b63 100644
--- a/configs/MPC8536DS_SDCARD_defconfig
+++ b/configs/MPC8536DS_SDCARD_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/MPC8536DS_SPIFLASH_defconfig b/configs/MPC8536DS_SPIFLASH_defconfig
index 9163118..2ab025c 100644
--- a/configs/MPC8536DS_SPIFLASH_defconfig
+++ b/configs/MPC8536DS_SPIFLASH_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/MPC8536DS_defconfig b/configs/MPC8536DS_defconfig
index ff5f90b..08e4785 100644
--- a/configs/MPC8536DS_defconfig
+++ b/configs/MPC8536DS_defconfig
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
index 70140f4..0ed30f8 100644
--- a/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_defconfig b/configs/P1010RDB-PA_36BIT_NAND_defconfig
index a0a8d06..90077ac 100644
--- a/configs/P1010RDB-PA_36BIT_NAND_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
index ef2c1ef..2f806e9 100644
--- a/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_defconfig b/configs/P1010RDB-PA_36BIT_NOR_defconfig
index 7df594d..2d93cf8 100644
--- a/configs/P1010RDB-PA_36BIT_NOR_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NOR_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_SDCARD_defconfig b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
index 6d6710f..7d33d4b 100644
--- a/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
index 775ed29..34b37f8 100644
--- a/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
index 60f736f..be401df 100644
--- a/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
index 406334a..aa42783 100644
--- a/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_NAND_defconfig b/configs/P1010RDB-PA_NAND_defconfig
index 1dd5cef..6e1fb61 100644
--- a/configs/P1010RDB-PA_NAND_defconfig
+++ b/configs/P1010RDB-PA_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
index d969d0e..1a0cece 100644
--- a/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_NOR_defconfig b/configs/P1010RDB-PA_NOR_defconfig
index fefbf64..8c0d26a 100644
--- a/configs/P1010RDB-PA_NOR_defconfig
+++ b/configs/P1010RDB-PA_NOR_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_SDCARD_defconfig b/configs/P1010RDB-PA_SDCARD_defconfig
index e5f29c0..0124b1f 100644
--- a/configs/P1010RDB-PA_SDCARD_defconfig
+++ b/configs/P1010RDB-PA_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
index 5540a61..b9892d7 100644
--- a/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_defconfig b/configs/P1010RDB-PA_SPIFLASH_defconfig
index d551d3f..d830316 100644
--- a/configs/P1010RDB-PA_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PA_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
index a8fbfaa..0237271 100644
--- a/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_defconfig b/configs/P1010RDB-PB_36BIT_NAND_defconfig
index 627d953..f140058 100644
--- a/configs/P1010RDB-PB_36BIT_NAND_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
index 2215969..5064415 100644
--- a/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_defconfig b/configs/P1010RDB-PB_36BIT_NOR_defconfig
index 980cf7c..ce9e65f 100644
--- a/configs/P1010RDB-PB_36BIT_NOR_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NOR_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_SDCARD_defconfig b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
index f98ccb3..4d30464 100644
--- a/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
index 2fd6c47..4d858c8 100644
--- a/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
index 33bff1f..e1e9d44 100644
--- a/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
index 2cfc763..90122ec 100644
--- a/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_NAND_defconfig b/configs/P1010RDB-PB_NAND_defconfig
index c9c6de9..56a853b 100644
--- a/configs/P1010RDB-PB_NAND_defconfig
+++ b/configs/P1010RDB-PB_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
index 29ae621..b6d1e0f 100644
--- a/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_NOR_defconfig b/configs/P1010RDB-PB_NOR_defconfig
index 5fa7e72..bb37b28 100644
--- a/configs/P1010RDB-PB_NOR_defconfig
+++ b/configs/P1010RDB-PB_NOR_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_SDCARD_defconfig b/configs/P1010RDB-PB_SDCARD_defconfig
index 4379db5..313e4a0 100644
--- a/configs/P1010RDB-PB_SDCARD_defconfig
+++ b/configs/P1010RDB-PB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
index 1b478e4..d966677 100644
--- a/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_defconfig b/configs/P1010RDB-PB_SPIFLASH_defconfig
index f92483f..53e112f 100644
--- a/configs/P1010RDB-PB_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_36BIT_NAND_defconfig b/configs/P1020RDB-PC_36BIT_NAND_defconfig
index 7817039..a4364f3 100644
--- a/configs/P1020RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P1020RDB-PC_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_36BIT_SDCARD_defconfig b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
index f2aae6e..ae24451 100644
--- a/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
index b54ab14..52a0ec1 100644
--- a/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_36BIT_defconfig b/configs/P1020RDB-PC_36BIT_defconfig
index aec845c..34d1615 100644
--- a/configs/P1020RDB-PC_36BIT_defconfig
+++ b/configs/P1020RDB-PC_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_NAND_defconfig b/configs/P1020RDB-PC_NAND_defconfig
index 6a2affe..399ca0c 100644
--- a/configs/P1020RDB-PC_NAND_defconfig
+++ b/configs/P1020RDB-PC_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_SDCARD_defconfig b/configs/P1020RDB-PC_SDCARD_defconfig
index 4ebb430..44764d6 100644
--- a/configs/P1020RDB-PC_SDCARD_defconfig
+++ b/configs/P1020RDB-PC_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_SPIFLASH_defconfig b/configs/P1020RDB-PC_SPIFLASH_defconfig
index 91aed54..a8e712e 100644
--- a/configs/P1020RDB-PC_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PC_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PC_defconfig b/configs/P1020RDB-PC_defconfig
index a6fb793..81ed66f 100644
--- a/configs/P1020RDB-PC_defconfig
+++ b/configs/P1020RDB-PC_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PD_NAND_defconfig b/configs/P1020RDB-PD_NAND_defconfig
index 3cfe779..468c6b2 100644
--- a/configs/P1020RDB-PD_NAND_defconfig
+++ b/configs/P1020RDB-PD_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PD_SDCARD_defconfig b/configs/P1020RDB-PD_SDCARD_defconfig
index 7d8f0db..f4614c9 100644
--- a/configs/P1020RDB-PD_SDCARD_defconfig
+++ b/configs/P1020RDB-PD_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PD_SPIFLASH_defconfig b/configs/P1020RDB-PD_SPIFLASH_defconfig
index 486ff91..634983a 100644
--- a/configs/P1020RDB-PD_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PD_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1020RDB-PD_defconfig b/configs/P1020RDB-PD_defconfig
index 69930fe..92714e9 100644
--- a/configs/P1020RDB-PD_defconfig
+++ b/configs/P1020RDB-PD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_36BIT_NAND_defconfig b/configs/P1021RDB-PC_36BIT_NAND_defconfig
index 1a9e1a8..df188f7 100644
--- a/configs/P1021RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P1021RDB-PC_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_36BIT_SDCARD_defconfig b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
index 4487d01..da4a512 100644
--- a/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
index f0cd301..d31f4b4 100644
--- a/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_36BIT_defconfig b/configs/P1021RDB-PC_36BIT_defconfig
index f2dcdeb..fc32688 100644
--- a/configs/P1021RDB-PC_36BIT_defconfig
+++ b/configs/P1021RDB-PC_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_NAND_defconfig b/configs/P1021RDB-PC_NAND_defconfig
index c14adaf..9725306 100644
--- a/configs/P1021RDB-PC_NAND_defconfig
+++ b/configs/P1021RDB-PC_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_SDCARD_defconfig b/configs/P1021RDB-PC_SDCARD_defconfig
index 21b154a..af6125a 100644
--- a/configs/P1021RDB-PC_SDCARD_defconfig
+++ b/configs/P1021RDB-PC_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_SPIFLASH_defconfig b/configs/P1021RDB-PC_SPIFLASH_defconfig
index 61f56e1..c658ea9 100644
--- a/configs/P1021RDB-PC_SPIFLASH_defconfig
+++ b/configs/P1021RDB-PC_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1021RDB-PC_defconfig b/configs/P1021RDB-PC_defconfig
index 2b4c7e7..a0b1e91 100644
--- a/configs/P1021RDB-PC_defconfig
+++ b/configs/P1021RDB-PC_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_36BIT_NAND_defconfig b/configs/P1022DS_36BIT_NAND_defconfig
index 2a83e6a..bc7b3ce 100644
--- a/configs/P1022DS_36BIT_NAND_defconfig
+++ b/configs/P1022DS_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_36BIT_SDCARD_defconfig b/configs/P1022DS_36BIT_SDCARD_defconfig
index 34b61f4..34cf86b 100644
--- a/configs/P1022DS_36BIT_SDCARD_defconfig
+++ b/configs/P1022DS_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_36BIT_SPIFLASH_defconfig b/configs/P1022DS_36BIT_SPIFLASH_defconfig
index c9b06fe..0178a96 100644
--- a/configs/P1022DS_36BIT_SPIFLASH_defconfig
+++ b/configs/P1022DS_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_36BIT_defconfig b/configs/P1022DS_36BIT_defconfig
index fe781aa..611d972 100644
--- a/configs/P1022DS_36BIT_defconfig
+++ b/configs/P1022DS_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_NAND_defconfig b/configs/P1022DS_NAND_defconfig
index 5f8c788..4d3d4c8 100644
--- a/configs/P1022DS_NAND_defconfig
+++ b/configs/P1022DS_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_SDCARD_defconfig b/configs/P1022DS_SDCARD_defconfig
index 3072c16..9264fe6 100644
--- a/configs/P1022DS_SDCARD_defconfig
+++ b/configs/P1022DS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_SPIFLASH_defconfig b/configs/P1022DS_SPIFLASH_defconfig
index e6eac27..1d1873c 100644
--- a/configs/P1022DS_SPIFLASH_defconfig
+++ b/configs/P1022DS_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1022DS_defconfig b/configs/P1022DS_defconfig
index dfe7696..0fdc8c0 100644
--- a/configs/P1022DS_defconfig
+++ b/configs/P1022DS_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1024RDB_36BIT_defconfig b/configs/P1024RDB_36BIT_defconfig
index 6c3e547..0f2cb71 100644
--- a/configs/P1024RDB_36BIT_defconfig
+++ b/configs/P1024RDB_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1024RDB_NAND_defconfig b/configs/P1024RDB_NAND_defconfig
index ee181de..77b3795 100644
--- a/configs/P1024RDB_NAND_defconfig
+++ b/configs/P1024RDB_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1024RDB_SDCARD_defconfig b/configs/P1024RDB_SDCARD_defconfig
index b874f55..efc2e3f 100644
--- a/configs/P1024RDB_SDCARD_defconfig
+++ b/configs/P1024RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1024RDB_SPIFLASH_defconfig b/configs/P1024RDB_SPIFLASH_defconfig
index 8e8c1af..4eee960 100644
--- a/configs/P1024RDB_SPIFLASH_defconfig
+++ b/configs/P1024RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1024RDB_defconfig b/configs/P1024RDB_defconfig
index d0e363c..acdf6c7 100644
--- a/configs/P1024RDB_defconfig
+++ b/configs/P1024RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1025RDB_36BIT_defconfig b/configs/P1025RDB_36BIT_defconfig
index aff4ae0..bb198d8 100644
--- a/configs/P1025RDB_36BIT_defconfig
+++ b/configs/P1025RDB_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1025RDB_NAND_defconfig b/configs/P1025RDB_NAND_defconfig
index 8b0fdd9..d577617 100644
--- a/configs/P1025RDB_NAND_defconfig
+++ b/configs/P1025RDB_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1025RDB_SDCARD_defconfig b/configs/P1025RDB_SDCARD_defconfig
index 7d39a34..989d019 100644
--- a/configs/P1025RDB_SDCARD_defconfig
+++ b/configs/P1025RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1025RDB_SPIFLASH_defconfig b/configs/P1025RDB_SPIFLASH_defconfig
index 945d51f..f5af87d 100644
--- a/configs/P1025RDB_SPIFLASH_defconfig
+++ b/configs/P1025RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P1025RDB_defconfig b/configs/P1025RDB_defconfig
index 176cd74..f38f629 100644
--- a/configs/P1025RDB_defconfig
+++ b/configs/P1025RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_36BIT_NAND_defconfig b/configs/P2020RDB-PC_36BIT_NAND_defconfig
index e6ebb61..dcb3dc2 100644
--- a/configs/P2020RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P2020RDB-PC_36BIT_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_36BIT_SDCARD_defconfig b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
index d4f00e6..8e0cae3 100644
--- a/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
index ac345f6..4487440 100644
--- a/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_36BIT_defconfig b/configs/P2020RDB-PC_36BIT_defconfig
index e8e56b6..e05802c 100644
--- a/configs/P2020RDB-PC_36BIT_defconfig
+++ b/configs/P2020RDB-PC_36BIT_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_NAND_defconfig b/configs/P2020RDB-PC_NAND_defconfig
index 641784b..61e09d4 100644
--- a/configs/P2020RDB-PC_NAND_defconfig
+++ b/configs/P2020RDB-PC_NAND_defconfig
@@ -8,7 +8,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_SDCARD_defconfig b/configs/P2020RDB-PC_SDCARD_defconfig
index 1484ac2..ad2df4d 100644
--- a/configs/P2020RDB-PC_SDCARD_defconfig
+++ b/configs/P2020RDB-PC_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_SPIFLASH_defconfig b/configs/P2020RDB-PC_SPIFLASH_defconfig
index 2226979..8b9cc6c 100644
--- a/configs/P2020RDB-PC_SPIFLASH_defconfig
+++ b/configs/P2020RDB-PC_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2020RDB-PC_defconfig b/configs/P2020RDB-PC_defconfig
index 09416fb..75a6523 100644
--- a/configs/P2020RDB-PC_defconfig
+++ b/configs/P2020RDB-PC_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_NAND_defconfig b/configs/P2041RDB_NAND_defconfig
index c9eb16a..57d500d 100644
--- a/configs/P2041RDB_NAND_defconfig
+++ b/configs/P2041RDB_NAND_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_SDCARD_defconfig b/configs/P2041RDB_SDCARD_defconfig
index 036fd70..aaf29ce 100644
--- a/configs/P2041RDB_SDCARD_defconfig
+++ b/configs/P2041RDB_SDCARD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_SECURE_BOOT_defconfig b/configs/P2041RDB_SECURE_BOOT_defconfig
index 2896693..cb76065 100644
--- a/configs/P2041RDB_SECURE_BOOT_defconfig
+++ b/configs/P2041RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_SPIFLASH_defconfig b/configs/P2041RDB_SPIFLASH_defconfig
index f488251..25e2315 100644
--- a/configs/P2041RDB_SPIFLASH_defconfig
+++ b/configs/P2041RDB_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
index 0afbd0c..8aba19b 100644
--- a/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P2041RDB_defconfig b/configs/P2041RDB_defconfig
index c234c71..4e4e469 100644
--- a/configs/P2041RDB_defconfig
+++ b/configs/P2041RDB_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_NAND_SECURE_BOOT_defconfig b/configs/P3041DS_NAND_SECURE_BOOT_defconfig
index da81767..c6b7cdc 100644
--- a/configs/P3041DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P3041DS_NAND_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_NAND_defconfig b/configs/P3041DS_NAND_defconfig
index db083a0..b8fc9e9 100644
--- a/configs/P3041DS_NAND_defconfig
+++ b/configs/P3041DS_NAND_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_SDCARD_defconfig b/configs/P3041DS_SDCARD_defconfig
index 43a7c59..6a2def9 100644
--- a/configs/P3041DS_SDCARD_defconfig
+++ b/configs/P3041DS_SDCARD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_SECURE_BOOT_defconfig b/configs/P3041DS_SECURE_BOOT_defconfig
index b9bdac0..e6f219b 100644
--- a/configs/P3041DS_SECURE_BOOT_defconfig
+++ b/configs/P3041DS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_SPIFLASH_defconfig b/configs/P3041DS_SPIFLASH_defconfig
index 8b861d3..6bef8d8 100644
--- a/configs/P3041DS_SPIFLASH_defconfig
+++ b/configs/P3041DS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_SRIO_PCIE_BOOT_defconfig b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
index c341b51..a81ffb2 100644
--- a/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P3041DS_defconfig b/configs/P3041DS_defconfig
index 3cc04a9..5ccbf7a 100644
--- a/configs/P3041DS_defconfig
+++ b/configs/P3041DS_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P4080DS_SDCARD_defconfig b/configs/P4080DS_SDCARD_defconfig
index 492910b..b5558a2 100644
--- a/configs/P4080DS_SDCARD_defconfig
+++ b/configs/P4080DS_SDCARD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P4080DS_SECURE_BOOT_defconfig b/configs/P4080DS_SECURE_BOOT_defconfig
index 760194c..2738947 100644
--- a/configs/P4080DS_SECURE_BOOT_defconfig
+++ b/configs/P4080DS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P4080DS_SPIFLASH_defconfig b/configs/P4080DS_SPIFLASH_defconfig
index ae2e13a..0addc13 100644
--- a/configs/P4080DS_SPIFLASH_defconfig
+++ b/configs/P4080DS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P4080DS_SRIO_PCIE_BOOT_defconfig b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
index baf548e..25f8894 100644
--- a/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P4080DS_defconfig b/configs/P4080DS_defconfig
index e2b96c3..fa3b249 100644
--- a/configs/P4080DS_defconfig
+++ b/configs/P4080DS_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_NAND_SECURE_BOOT_defconfig b/configs/P5020DS_NAND_SECURE_BOOT_defconfig
index cb57053..be0a423 100644
--- a/configs/P5020DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P5020DS_NAND_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_NAND_defconfig b/configs/P5020DS_NAND_defconfig
index a9ea36b..dfecf0b 100644
--- a/configs/P5020DS_NAND_defconfig
+++ b/configs/P5020DS_NAND_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_SDCARD_defconfig b/configs/P5020DS_SDCARD_defconfig
index fb7bda6..6eb7d1d 100644
--- a/configs/P5020DS_SDCARD_defconfig
+++ b/configs/P5020DS_SDCARD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_SECURE_BOOT_defconfig b/configs/P5020DS_SECURE_BOOT_defconfig
index 9d9ff67..f278908 100644
--- a/configs/P5020DS_SECURE_BOOT_defconfig
+++ b/configs/P5020DS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_SPIFLASH_defconfig b/configs/P5020DS_SPIFLASH_defconfig
index bc6c190..0a490aa 100644
--- a/configs/P5020DS_SPIFLASH_defconfig
+++ b/configs/P5020DS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_SRIO_PCIE_BOOT_defconfig b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
index a7d32bc..35ef6f7 100644
--- a/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5020DS_defconfig b/configs/P5020DS_defconfig
index 00731af..efe03dd 100644
--- a/configs/P5020DS_defconfig
+++ b/configs/P5020DS_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_NAND_SECURE_BOOT_defconfig b/configs/P5040DS_NAND_SECURE_BOOT_defconfig
index 229cd56..9be0e2f 100644
--- a/configs/P5040DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P5040DS_NAND_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_NAND_defconfig b/configs/P5040DS_NAND_defconfig
index eeff54d..a47d4fa 100644
--- a/configs/P5040DS_NAND_defconfig
+++ b/configs/P5040DS_NAND_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_SDCARD_defconfig b/configs/P5040DS_SDCARD_defconfig
index 6fafb44..a9e3468 100644
--- a/configs/P5040DS_SDCARD_defconfig
+++ b/configs/P5040DS_SDCARD_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_SECURE_BOOT_defconfig b/configs/P5040DS_SECURE_BOOT_defconfig
index 9e35593..5e9523d 100644
--- a/configs/P5040DS_SECURE_BOOT_defconfig
+++ b/configs/P5040DS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_SPIFLASH_defconfig b/configs/P5040DS_SPIFLASH_defconfig
index 28230ad..8473e7c 100644
--- a/configs/P5040DS_SPIFLASH_defconfig
+++ b/configs/P5040DS_SPIFLASH_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/P5040DS_defconfig b/configs/P5040DS_defconfig
index 388c1c0..2f55952 100644
--- a/configs/P5040DS_defconfig
+++ b/configs/P5040DS_defconfig
@@ -5,7 +5,8 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1023RDB_NAND_defconfig b/configs/T1023RDB_NAND_defconfig
index 28d7e1f..f5a1f1f 100644
--- a/configs/T1023RDB_NAND_defconfig
+++ b/configs/T1023RDB_NAND_defconfig
@@ -9,7 +9,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1023RDB_SDCARD_defconfig b/configs/T1023RDB_SDCARD_defconfig
index ce3bc30..1969c33 100644
--- a/configs/T1023RDB_SDCARD_defconfig
+++ b/configs/T1023RDB_SDCARD_defconfig
@@ -9,7 +9,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1023RDB_SECURE_BOOT_defconfig b/configs/T1023RDB_SECURE_BOOT_defconfig
index 0030f8d..b4665f2 100644
--- a/configs/T1023RDB_SECURE_BOOT_defconfig
+++ b/configs/T1023RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1023RDB_SPIFLASH_defconfig b/configs/T1023RDB_SPIFLASH_defconfig
index 7b9c518..a5f0afb 100644
--- a/configs/T1023RDB_SPIFLASH_defconfig
+++ b/configs/T1023RDB_SPIFLASH_defconfig
@@ -9,7 +9,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1023RDB_defconfig b/configs/T1023RDB_defconfig
index d3131cb..d9db1b1 100644
--- a/configs/T1023RDB_defconfig
+++ b/configs/T1023RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
index c4b2f1a..00672f7 100644
--- a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_DDR4_defconfig b/configs/T1024QDS_DDR4_defconfig
index 7a7cf65..489f817 100644
--- a/configs/T1024QDS_DDR4_defconfig
+++ b/configs/T1024QDS_DDR4_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_NAND_defconfig b/configs/T1024QDS_NAND_defconfig
index 308e009..cb842e8 100644
--- a/configs/T1024QDS_NAND_defconfig
+++ b/configs/T1024QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_SDCARD_defconfig b/configs/T1024QDS_SDCARD_defconfig
index c12abf4..37eca91 100644
--- a/configs/T1024QDS_SDCARD_defconfig
+++ b/configs/T1024QDS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_SECURE_BOOT_defconfig b/configs/T1024QDS_SECURE_BOOT_defconfig
index bd96807..20b3807 100644
--- a/configs/T1024QDS_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_SPIFLASH_defconfig b/configs/T1024QDS_SPIFLASH_defconfig
index 8874033..c1013f4 100644
--- a/configs/T1024QDS_SPIFLASH_defconfig
+++ b/configs/T1024QDS_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024QDS_defconfig b/configs/T1024QDS_defconfig
index 42b9552..abc12dc 100644
--- a/configs/T1024QDS_defconfig
+++ b/configs/T1024QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1024RDB_NAND_defconfig b/configs/T1024RDB_NAND_defconfig
index e2e9373..b6065fd 100644
--- a/configs/T1024RDB_NAND_defconfig
+++ b/configs/T1024RDB_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1024RDB_SDCARD_defconfig b/configs/T1024RDB_SDCARD_defconfig
index c68982c..3b3ef9b 100644
--- a/configs/T1024RDB_SDCARD_defconfig
+++ b/configs/T1024RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1024RDB_SECURE_BOOT_defconfig b/configs/T1024RDB_SECURE_BOOT_defconfig
index 9f29bbf..d5290dc 100644
--- a/configs/T1024RDB_SECURE_BOOT_defconfig
+++ b/configs/T1024RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1024RDB_SPIFLASH_defconfig b/configs/T1024RDB_SPIFLASH_defconfig
index 712eec4..5b2ee8e 100644
--- a/configs/T1024RDB_SPIFLASH_defconfig
+++ b/configs/T1024RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1024RDB_defconfig b/configs/T1024RDB_defconfig
index b1f5549..8ec8535 100644
--- a/configs/T1024RDB_defconfig
+++ b/configs/T1024RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040D4RDB_NAND_defconfig b/configs/T1040D4RDB_NAND_defconfig
index b2fe48a..abf98ae 100644
--- a/configs/T1040D4RDB_NAND_defconfig
+++ b/configs/T1040D4RDB_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040D4RDB_SDCARD_defconfig b/configs/T1040D4RDB_SDCARD_defconfig
index f93b541..dd47735 100644
--- a/configs/T1040D4RDB_SDCARD_defconfig
+++ b/configs/T1040D4RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040D4RDB_SECURE_BOOT_defconfig b/configs/T1040D4RDB_SECURE_BOOT_defconfig
index 1e1c5cc..8604192 100644
--- a/configs/T1040D4RDB_SECURE_BOOT_defconfig
+++ b/configs/T1040D4RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040D4RDB_SPIFLASH_defconfig b/configs/T1040D4RDB_SPIFLASH_defconfig
index ee68bf7..a1e682f 100644
--- a/configs/T1040D4RDB_SPIFLASH_defconfig
+++ b/configs/T1040D4RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040D4RDB_defconfig b/configs/T1040D4RDB_defconfig
index 744e37d..afe7a0c 100644
--- a/configs/T1040D4RDB_defconfig
+++ b/configs/T1040D4RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040QDS_DDR4_defconfig b/configs/T1040QDS_DDR4_defconfig
index 6a4332a..c93a65f 100644
--- a/configs/T1040QDS_DDR4_defconfig
+++ b/configs/T1040QDS_DDR4_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1040QDS_SECURE_BOOT_defconfig b/configs/T1040QDS_SECURE_BOOT_defconfig
index 46fed6d..423a141 100644
--- a/configs/T1040QDS_SECURE_BOOT_defconfig
+++ b/configs/T1040QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1040QDS_defconfig b/configs/T1040QDS_defconfig
index 5b1ddb6..bca4631 100644
--- a/configs/T1040QDS_defconfig
+++ b/configs/T1040QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T1040RDB_NAND_defconfig b/configs/T1040RDB_NAND_defconfig
index 7198bb2..92ec845 100644
--- a/configs/T1040RDB_NAND_defconfig
+++ b/configs/T1040RDB_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040RDB_SDCARD_defconfig b/configs/T1040RDB_SDCARD_defconfig
index a60420b..b8359f1 100644
--- a/configs/T1040RDB_SDCARD_defconfig
+++ b/configs/T1040RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040RDB_SECURE_BOOT_defconfig b/configs/T1040RDB_SECURE_BOOT_defconfig
index 7bc8872..c2f06ae 100644
--- a/configs/T1040RDB_SECURE_BOOT_defconfig
+++ b/configs/T1040RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT,T1040RDB"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040RDB_SPIFLASH_defconfig b/configs/T1040RDB_SPIFLASH_defconfig
index 3492c83..99d9f53 100644
--- a/configs/T1040RDB_SPIFLASH_defconfig
+++ b/configs/T1040RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1040RDB_defconfig b/configs/T1040RDB_defconfig
index 17cdce3..ef09e28 100644
--- a/configs/T1040RDB_defconfig
+++ b/configs/T1040RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042D4RDB_NAND_defconfig b/configs/T1042D4RDB_NAND_defconfig
index 99e6723..91edfaa 100644
--- a/configs/T1042D4RDB_NAND_defconfig
+++ b/configs/T1042D4RDB_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042D4RDB_SDCARD_defconfig b/configs/T1042D4RDB_SDCARD_defconfig
index 9101b9b..f4e9957 100644
--- a/configs/T1042D4RDB_SDCARD_defconfig
+++ b/configs/T1042D4RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042D4RDB_SECURE_BOOT_defconfig b/configs/T1042D4RDB_SECURE_BOOT_defconfig
index 9764c1d..d12e35c 100644
--- a/configs/T1042D4RDB_SECURE_BOOT_defconfig
+++ b/configs/T1042D4RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042D4RDB_SPIFLASH_defconfig b/configs/T1042D4RDB_SPIFLASH_defconfig
index 1d1799b..5644b7e 100644
--- a/configs/T1042D4RDB_SPIFLASH_defconfig
+++ b/configs/T1042D4RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042D4RDB_defconfig b/configs/T1042D4RDB_defconfig
index 56f9f4e..5e0c620 100644
--- a/configs/T1042D4RDB_defconfig
+++ b/configs/T1042D4RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,T104XD4RDB,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_PI_NAND_defconfig b/configs/T1042RDB_PI_NAND_defconfig
index f079ccb..195842e 100644
--- a/configs/T1042RDB_PI_NAND_defconfig
+++ b/configs/T1042RDB_PI_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_PI_SDCARD_defconfig b/configs/T1042RDB_PI_SDCARD_defconfig
index b78eb28..65c21c4 100644
--- a/configs/T1042RDB_PI_SDCARD_defconfig
+++ b/configs/T1042RDB_PI_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_PI_SPIFLASH_defconfig b/configs/T1042RDB_PI_SPIFLASH_defconfig
index 11df100..946cab2 100644
--- a/configs/T1042RDB_PI_SPIFLASH_defconfig
+++ b/configs/T1042RDB_PI_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_PI_defconfig b/configs/T1042RDB_PI_defconfig
index dd4a2cc..4df3280 100644
--- a/configs/T1042RDB_PI_defconfig
+++ b/configs/T1042RDB_PI_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_SECURE_BOOT_defconfig b/configs/T1042RDB_SECURE_BOOT_defconfig
index 65d51c7..ccfe987 100644
--- a/configs/T1042RDB_SECURE_BOOT_defconfig
+++ b/configs/T1042RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,SECURE_BOOT,T1042RDB"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T1042RDB_defconfig b/configs/T1042RDB_defconfig
index 421ebd6..0b3fea6 100644
--- a/configs/T1042RDB_defconfig
+++ b/configs/T1042RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080QDS_NAND_defconfig b/configs/T2080QDS_NAND_defconfig
index 55463a6..6217718 100644
--- a/configs/T2080QDS_NAND_defconfig
+++ b/configs/T2080QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080QDS_SDCARD_defconfig b/configs/T2080QDS_SDCARD_defconfig
index 4074a65..2bc2127 100644
--- a/configs/T2080QDS_SDCARD_defconfig
+++ b/configs/T2080QDS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig b/configs/T2080QDS_SECURE_BOOT_defconfig
index 7beaad7..ac8077d 100644
--- a/configs/T2080QDS_SECURE_BOOT_defconfig
+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080QDS_SPIFLASH_defconfig b/configs/T2080QDS_SPIFLASH_defconfig
index 7c7b131..8510f37 100644
--- a/configs/T2080QDS_SPIFLASH_defconfig
+++ b/configs/T2080QDS_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
index e30048a..e37bc35 100644
--- a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
index a2236e1..e0c8029 100644
--- a/configs/T2080QDS_defconfig
+++ b/configs/T2080QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
index 9753814..d735a05 100644
--- a/configs/T2080RDB_NAND_defconfig
+++ b/configs/T2080RDB_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
index 75d33c5..b1c1f04 100644
--- a/configs/T2080RDB_SDCARD_defconfig
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080RDB_SECURE_BOOT_defconfig b/configs/T2080RDB_SECURE_BOOT_defconfig
index 33f7d5f..c53d889 100644
--- a/configs/T2080RDB_SECURE_BOOT_defconfig
+++ b/configs/T2080RDB_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
index 07a5b06..1a71146 100644
--- a/configs/T2080RDB_SPIFLASH_defconfig
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
index c1549c1..558f6d3 100644
--- a/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
index ab5453c..1179909 100644
--- a/configs/T2080RDB_defconfig
+++ b/configs/T2080RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T2081QDS_NAND_defconfig b/configs/T2081QDS_NAND_defconfig
index 6275d27..244a295 100644
--- a/configs/T2081QDS_NAND_defconfig
+++ b/configs/T2081QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2081QDS_SDCARD_defconfig b/configs/T2081QDS_SDCARD_defconfig
index 9c805d0..9b784f6 100644
--- a/configs/T2081QDS_SDCARD_defconfig
+++ b/configs/T2081QDS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2081QDS_SPIFLASH_defconfig b/configs/T2081QDS_SPIFLASH_defconfig
index 2cef3ec..3092131 100644
--- a/configs/T2081QDS_SPIFLASH_defconfig
+++ b/configs/T2081QDS_SPIFLASH_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
index b8bb371..ad86efd 100644
--- a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T2081QDS_defconfig b/configs/T2081QDS_defconfig
index f8488b6..a67be2d 100644
--- a/configs/T2081QDS_defconfig
+++ b/configs/T2081QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/T4160QDS_NAND_defconfig b/configs/T4160QDS_NAND_defconfig
index 255ae58..3c318f9 100644
--- a/configs/T4160QDS_NAND_defconfig
+++ b/configs/T4160QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4160QDS_SDCARD_defconfig b/configs/T4160QDS_SDCARD_defconfig
index c74aecf..cac5965 100644
--- a/configs/T4160QDS_SDCARD_defconfig
+++ b/configs/T4160QDS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4160QDS_SECURE_BOOT_defconfig b/configs/T4160QDS_SECURE_BOOT_defconfig
index f430c34..333fd51 100644
--- a/configs/T4160QDS_SECURE_BOOT_defconfig
+++ b/configs/T4160QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4160QDS_defconfig b/configs/T4160QDS_defconfig
index 191370f..2fa2fe8 100644
--- a/configs/T4160QDS_defconfig
+++ b/configs/T4160QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4160RDB_defconfig b/configs/T4160RDB_defconfig
index 1ffecc3..63b1c6d 100644
--- a/configs/T4160RDB_defconfig
+++ b/configs/T4160RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240QDS_NAND_defconfig b/configs/T4240QDS_NAND_defconfig
index 8bd2174..4d138ec 100644
--- a/configs/T4240QDS_NAND_defconfig
+++ b/configs/T4240QDS_NAND_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240QDS_SDCARD_defconfig b/configs/T4240QDS_SDCARD_defconfig
index fa4f1dd..be19d3b 100644
--- a/configs/T4240QDS_SDCARD_defconfig
+++ b/configs/T4240QDS_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240QDS_SECURE_BOOT_defconfig b/configs/T4240QDS_SECURE_BOOT_defconfig
index 2737244..21efc1e 100644
--- a/configs/T4240QDS_SECURE_BOOT_defconfig
+++ b/configs/T4240QDS_SECURE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SECURE_BOOT"
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
index 10513aa..13b2b36 100644
--- a/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240QDS_defconfig b/configs/T4240QDS_defconfig
index a6525aa..c02e534 100644
--- a/configs/T4240QDS_defconfig
+++ b/configs/T4240QDS_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240RDB_SDCARD_defconfig b/configs/T4240RDB_SDCARD_defconfig
index a124477..073f049 100644
--- a/configs/T4240RDB_SDCARD_defconfig
+++ b/configs/T4240RDB_SDCARD_defconfig
@@ -7,7 +7,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/T4240RDB_defconfig b/configs/T4240RDB_defconfig
index fc622c9..3dcdf6b 100644
--- a/configs/T4240RDB_defconfig
+++ b/configs/T4240RDB_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/UCP1020_SPIFLASH_defconfig b/configs/UCP1020_SPIFLASH_defconfig
index 52750f4..6ce3d41 100644
--- a/configs/UCP1020_SPIFLASH_defconfig
+++ b/configs/UCP1020_SPIFLASH_defconfig
@@ -10,7 +10,8 @@ CONFIG_AUTOBOOT_KEYED=y
 CONFIG_AUTOBOOT_PROMPT="Autobooting in %d seconds, press \"<Esc>\" to stop\n"
 CONFIG_AUTOBOOT_STOP_STR="\x1b"
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/UCP1020_defconfig b/configs/UCP1020_defconfig
index 0633752..69a3391 100644
--- a/configs/UCP1020_defconfig
+++ b/configs/UCP1020_defconfig
@@ -10,7 +10,8 @@ CONFIG_AUTOBOOT_KEYED=y
 CONFIG_AUTOBOOT_PROMPT="Autobooting in %d seconds, press \"<Esc>\" to stop\n"
 CONFIG_AUTOBOOT_STOP_STR="\x1b"
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/alt_defconfig b/configs/alt_defconfig
index 4ea33ef..72ba038 100644
--- a/configs/alt_defconfig
+++ b/configs/alt_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_ALT=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_boneblack_defconfig b/configs/am335x_boneblack_defconfig
index 4ba2579..269c06c 100644
--- a/configs/am335x_boneblack_defconfig
+++ b/configs/am335x_boneblack_defconfig
@@ -14,7 +14,8 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_DFU_TFTP=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig
index 060aa1c..7d0ab0b 100644
--- a/configs/am335x_boneblack_vboot_defconfig
+++ b/configs/am335x_boneblack_vboot_defconfig
@@ -18,7 +18,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
index 836950c..5b1ac34 100644
--- a/configs/am335x_evm_defconfig
+++ b/configs/am335x_evm_defconfig
@@ -13,7 +13,8 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_nor_defconfig b/configs/am335x_evm_nor_defconfig
index f336dfd..fcf5bca 100644
--- a/configs/am335x_evm_nor_defconfig
+++ b/configs/am335x_evm_nor_defconfig
@@ -9,7 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NAND"
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_norboot_defconfig b/configs/am335x_evm_norboot_defconfig
index 707014b..e69754f 100644
--- a/configs/am335x_evm_norboot_defconfig
+++ b/configs/am335x_evm_norboot_defconfig
@@ -6,7 +6,8 @@ CONFIG_FIT=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_spiboot_defconfig b/configs/am335x_evm_spiboot_defconfig
index 665dad3..48c7724 100644
--- a/configs/am335x_evm_spiboot_defconfig
+++ b/configs/am335x_evm_spiboot_defconfig
@@ -9,7 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SPI_BOOT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig
index 17370bb..6b64ea8 100644
--- a/configs/am335x_evm_usbspl_defconfig
+++ b/configs/am335x_evm_usbspl_defconfig
@@ -9,7 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NAND,SPL_USBETH_SUPPORT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_gp_evm_defconfig b/configs/am335x_gp_evm_defconfig
index 7f12972..e2269d4 100644
--- a/configs/am335x_gp_evm_defconfig
+++ b/configs/am335x_gp_evm_defconfig
@@ -12,7 +12,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/am437x_gp_evm_defconfig b/configs/am437x_gp_evm_defconfig
index 1d79ba19..e68c752 100644
--- a/configs/am437x_gp_evm_defconfig
+++ b/configs/am437x_gp_evm_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am437x_sk_evm_defconfig b/configs/am437x_sk_evm_defconfig
index 149a028..08d006b 100644
--- a/configs/am437x_sk_evm_defconfig
+++ b/configs/am437x_sk_evm_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_AM43XX_EVM=y
 CONFIG_DM_SERIAL=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DM_GPIO=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am437x-sk-evm"
@@ -16,7 +16,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
index 8ef28f3..a8b84e4 100644
--- a/configs/am43xx_evm_defconfig
+++ b/configs/am43xx_evm_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/am43xx_evm_ethboot_defconfig b/configs/am43xx_evm_ethboot_defconfig
index 7143597..cd07549 100644
--- a/configs/am43xx_evm_ethboot_defconfig
+++ b/configs/am43xx_evm_ethboot_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND,SPL_ETH_SUPPORT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am43xx_evm_qspiboot_defconfig b/configs/am43xx_evm_qspiboot_defconfig
index a9a862b..27a9f9f 100644
--- a/configs/am43xx_evm_qspiboot_defconfig
+++ b/configs/am43xx_evm_qspiboot_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,QSPI,QSPI_BOOT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am43xx_evm_usbhost_boot_defconfig b/configs/am43xx_evm_usbhost_boot_defconfig
index 2c73dbe..ed2afe0 100644
--- a/configs/am43xx_evm_usbhost_boot_defconfig
+++ b/configs/am43xx_evm_usbhost_boot_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND,SPL_USB_HOST_SUPPORT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
index 1090287..824107c 100644
--- a/configs/am57xx_evm_defconfig
+++ b/configs/am57xx_evm_defconfig
@@ -15,6 +15,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/aristainetos2_defconfig b/configs/aristainetos2_defconfig
index 7e2c026..1fbadd7 100644
--- a/configs/aristainetos2_defconfig
+++ b/configs/aristainetos2_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/aristainetos2b_defconfig b/configs/aristainetos2b_defconfig
index 88670df..11bd14f 100644
--- a/configs/aristainetos2b_defconfig
+++ b/configs/aristainetos2b_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/aristainetos_defconfig b/configs/aristainetos_defconfig
index e808c21..3248a62 100644
--- a/configs/aristainetos_defconfig
+++ b/configs/aristainetos_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
index 6f45120..9322456 100644
--- a/configs/at91sam9n12ek_mmc_defconfig
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -7,6 +7,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
index df099b2..17ebed6 100644
--- a/configs/at91sam9n12ek_nandflash_defconfig
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
index 20cf592..323d7b7 100644
--- a/configs/at91sam9n12ek_spiflash_defconfig
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index b6154da..14a2a20 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index b782e25..5cc56ea 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index 66be263..0ce027b 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index 0eba857..4c7fa59 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
index 7ef4677..56ab790 100644
--- a/configs/atngw100_defconfig
+++ b/configs/atngw100_defconfig
@@ -10,5 +10,6 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/atngw100mkii_defconfig b/configs/atngw100mkii_defconfig
index b552421..fa6e3f8 100644
--- a/configs/atngw100mkii_defconfig
+++ b/configs/atngw100mkii_defconfig
@@ -9,5 +9,6 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_XIMG is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/axm_defconfig b/configs/axm_defconfig
index 65c13eb..bf68562 100644
--- a/configs/axm_defconfig
+++ b/configs/axm_defconfig
@@ -10,7 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index dfafb0b..27dce42 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -23,7 +23,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/beaver_defconfig b/configs/beaver_defconfig
index fcfbf65..3d5bf5d 100644
--- a/configs/beaver_defconfig
+++ b/configs/beaver_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra30 (Beaver) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/bf518f-ezbrd_defconfig b/configs/bf518f-ezbrd_defconfig
index a8eab8c..a211b44 100644
--- a/configs/bf518f-ezbrd_defconfig
+++ b/configs/bf518f-ezbrd_defconfig
@@ -3,7 +3,8 @@ CONFIG_TARGET_BF518F_EZBRD=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/bf525-ucr2_defconfig b/configs/bf525-ucr2_defconfig
index 15a8f1f..416ffc0 100644
--- a/configs/bf525-ucr2_defconfig
+++ b/configs/bf525-ucr2_defconfig
@@ -5,5 +5,6 @@ CONFIG_TARGET_BF525_UCR2=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
diff --git a/configs/bf526-ezbrd_defconfig b/configs/bf526-ezbrd_defconfig
index a5f4b73..cf608cd 100644
--- a/configs/bf526-ezbrd_defconfig
+++ b/configs/bf526-ezbrd_defconfig
@@ -3,5 +3,6 @@ CONFIG_TARGET_BF526_EZBRD=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/bf527-ad7160-eval_defconfig b/configs/bf527-ad7160-eval_defconfig
index 4751df4..7aaf740 100644
--- a/configs/bf527-ad7160-eval_defconfig
+++ b/configs/bf527-ad7160-eval_defconfig
@@ -5,6 +5,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/bf527-ezkit-v2_defconfig b/configs/bf527-ezkit-v2_defconfig
index 356ab64..ef8ae9e 100644
--- a/configs/bf527-ezkit-v2_defconfig
+++ b/configs/bf527-ezkit-v2_defconfig
@@ -3,6 +3,7 @@ CONFIG_TARGET_BF527_EZKIT=y
 CONFIG_SYS_EXTRA_OPTIONS="BF527_EZKIT_REV_2_1"
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf527-ezkit_defconfig b/configs/bf527-ezkit_defconfig
index c1b139c..478e21a 100644
--- a/configs/bf527-ezkit_defconfig
+++ b/configs/bf527-ezkit_defconfig
@@ -3,5 +3,6 @@ CONFIG_TARGET_BF527_EZKIT=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 # CONFIG_NET_TFTP_VARS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/bf527-sdp_defconfig b/configs/bf527-sdp_defconfig
index 383f62e..34ee175 100644
--- a/configs/bf527-sdp_defconfig
+++ b/configs/bf527-sdp_defconfig
@@ -5,7 +5,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/bf537-minotaur_defconfig b/configs/bf537-minotaur_defconfig
index bf3d79f..4ce5aed 100644
--- a/configs/bf537-minotaur_defconfig
+++ b/configs/bf537-minotaur_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_PROMPT="minotaur> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/bf537-pnav_defconfig b/configs/bf537-pnav_defconfig
index e737561..3df58d7 100644
--- a/configs/bf537-pnav_defconfig
+++ b/configs/bf537-pnav_defconfig
@@ -3,5 +3,6 @@ CONFIG_TARGET_BF537_PNAV=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/bf537-srv1_defconfig b/configs/bf537-srv1_defconfig
index ba80e63..580bc83 100644
--- a/configs/bf537-srv1_defconfig
+++ b/configs/bf537-srv1_defconfig
@@ -5,5 +5,6 @@ CONFIG_SYS_PROMPT="srv1> "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/bf537-stamp_defconfig b/configs/bf537-stamp_defconfig
index 34c774c..2e21cc5 100644
--- a/configs/bf537-stamp_defconfig
+++ b/configs/bf537-stamp_defconfig
@@ -3,7 +3,8 @@ CONFIG_TARGET_BF537_STAMP=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/bf548-ezkit_defconfig b/configs/bf548-ezkit_defconfig
index eca4c85..d0b96ff 100644
--- a/configs/bf548-ezkit_defconfig
+++ b/configs/bf548-ezkit_defconfig
@@ -2,7 +2,8 @@ CONFIG_BLACKFIN=y
 CONFIG_TARGET_BF548_EZKIT=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf561-acvilon_defconfig b/configs/bf561-acvilon_defconfig
index 4a25d2e..171de78 100644
--- a/configs/bf561-acvilon_defconfig
+++ b/configs/bf561-acvilon_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_PROMPT="Acvilon> "
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf609-ezkit_defconfig b/configs/bf609-ezkit_defconfig
index 642ca87..f050eff 100644
--- a/configs/bf609-ezkit_defconfig
+++ b/configs/bf609-ezkit_defconfig
@@ -2,7 +2,8 @@ CONFIG_BLACKFIN=y
 CONFIG_TARGET_BF609_EZKIT=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/bg0900_defconfig b/configs/bg0900_defconfig
index c11617a..60d2a53 100644
--- a/configs/bg0900_defconfig
+++ b/configs/bg0900_defconfig
@@ -4,7 +4,8 @@ CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/birdland_bav335a_defconfig b/configs/birdland_bav335a_defconfig
index 6d7c20d..db8a573 100644
--- a/configs/birdland_bav335a_defconfig
+++ b/configs/birdland_bav335a_defconfig
@@ -8,7 +8,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/birdland_bav335b_defconfig b/configs/birdland_bav335b_defconfig
index 910ddc7..9ea3a87 100644
--- a/configs/birdland_bav335b_defconfig
+++ b/configs/birdland_bav335b_defconfig
@@ -8,7 +8,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/blackstamp_defconfig b/configs/blackstamp_defconfig
index 944145a..0a2bd94 100644
--- a/configs/blackstamp_defconfig
+++ b/configs/blackstamp_defconfig
@@ -3,5 +3,6 @@ CONFIG_TARGET_BLACKSTAMP=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/blackvme_defconfig b/configs/blackvme_defconfig
index 41b5a23..e941e42 100644
--- a/configs/blackvme_defconfig
+++ b/configs/blackvme_defconfig
@@ -3,5 +3,6 @@ CONFIG_TARGET_BLACKVME=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/br4_defconfig b/configs/br4_defconfig
index effba78..ae39cbb 100644
--- a/configs/br4_defconfig
+++ b/configs/br4_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_PROMPT="br4>"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/cardhu_defconfig b/configs/cardhu_defconfig
index 808e0e2..229dcbe 100644
--- a/configs/cardhu_defconfig
+++ b/configs/cardhu_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra30 (Cardhu) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/cgtqmx6eval_defconfig b/configs/cgtqmx6eval_defconfig
index 8fc8e64..a59ab7f 100644
--- a/configs/cgtqmx6eval_defconfig
+++ b/configs/cgtqmx6eval_defconfig
@@ -9,3 +9,5 @@ CONFIG_SYS_PROMPT="CGT-QMX6-Quad U-Boot > "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_LIBFDT=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/chromebook_jerry_defconfig b/configs/chromebook_jerry_defconfig
index 4c72035..7930899 100644
--- a/configs/chromebook_jerry_defconfig
+++ b/configs/chromebook_jerry_defconfig
@@ -63,3 +63,5 @@ CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index 8a39740..6ddfb47 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -28,7 +28,8 @@ CONFIG_SYS_I2C_INTEL=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/chromebook_samus_defconfig b/configs/chromebook_samus_defconfig
index 448446d..f74d76a 100644
--- a/configs/chromebook_samus_defconfig
+++ b/configs/chromebook_samus_defconfig
@@ -27,7 +27,8 @@ CONFIG_INTEL_BROADWELL_GPIO=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
index 3b32e51..ccbf42d 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -22,7 +22,8 @@ CONFIG_SYSCON=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig
index 57d6a64..5d7b7fd 100644
--- a/configs/clearfog_defconfig
+++ b/configs/clearfog_defconfig
@@ -9,7 +9,8 @@ CONFIG_SPL=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index c37442d..65c926e 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -18,7 +18,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
diff --git a/configs/cm_t43_defconfig b/configs/cm_t43_defconfig
index 28a96fb..7f4b247 100644
--- a/configs/cm_t43_defconfig
+++ b/configs/cm_t43_defconfig
@@ -13,7 +13,8 @@ CONFIG_DM=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
 CONFIG_DM_SERIAL=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
index 24a927d..65c11f3 100644
--- a/configs/conga-qeval20-qa3-e3845_defconfig
+++ b/configs/conga-qeval20-qa3-e3845_defconfig
@@ -24,7 +24,8 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_WINBOND_W83627=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
index b46f4cc..eed6771 100644
--- a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
@@ -10,7 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD,DEVELOP"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_TPM=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_defconfig b/configs/controlcenterd_36BIT_SDCARD_defconfig
index 25eb520..0af8739 100644
--- a/configs/controlcenterd_36BIT_SDCARD_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_defconfig
@@ -10,7 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_TPM=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index a1c7df7..1d39b9e 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -12,7 +12,8 @@ CONFIG_CMD_BOOTSTAGE=y
 CONFIG_CMD_TPM=y
 CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/cougarcanyon2_defconfig b/configs/cougarcanyon2_defconfig
index 71028cf..d9992c2 100644
--- a/configs/cougarcanyon2_defconfig
+++ b/configs/cougarcanyon2_defconfig
@@ -10,7 +10,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index b4e1876..3209d44 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -21,7 +21,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/d2net_v2_defconfig b/configs/d2net_v2_defconfig
index b2d2aeb..42976f4 100644
--- a/configs/d2net_v2_defconfig
+++ b/configs/d2net_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="D2NET_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/da850_am18xxevm_defconfig b/configs/da850_am18xxevm_defconfig
index 870186c..84e5571 100644
--- a/configs/da850_am18xxevm_defconfig
+++ b/configs/da850_am18xxevm_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/da850evm_defconfig b/configs/da850evm_defconfig
index 6d7f984..feafcf3 100644
--- a/configs/da850evm_defconfig
+++ b/configs/da850evm_defconfig
@@ -7,7 +7,8 @@ CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/da850evm_direct_nor_defconfig b/configs/da850evm_direct_nor_defconfig
index 7aba5c4..7d68722 100644
--- a/configs/da850evm_direct_nor_defconfig
+++ b/configs/da850evm_direct_nor_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_DA850EVM=y
 CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT"
 CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/dalmore_defconfig b/configs/dalmore_defconfig
index 15bd9f1..727eb96 100644
--- a/configs/dalmore_defconfig
+++ b/configs/dalmore_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra114 (Dalmore) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
index 111f3a1..2c474c9 100644
--- a/configs/db-88f6820-gp_defconfig
+++ b/configs/db-88f6820-gp_defconfig
@@ -9,7 +9,8 @@ CONFIG_SPL=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
index 6dda2ae..5f9bc78 100644
--- a/configs/db-mv784mp-gp_defconfig
+++ b/configs/db-mv784mp-gp_defconfig
@@ -11,7 +11,8 @@ CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_NAND_PXA3XX=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/dra72_evm_defconfig b/configs/dra72_evm_defconfig
index 0a5f70b..4b9ced4 100644
--- a/configs/dra72_evm_defconfig
+++ b/configs/dra72_evm_defconfig
@@ -4,7 +4,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_DRA7XX_EVM=y
 CONFIG_DM_SERIAL=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DM_GPIO=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="dra72-evm"
@@ -16,7 +16,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/dra74_evm_defconfig b/configs/dra74_evm_defconfig
index 916016d..9c7773a 100644
--- a/configs/dra74_evm_defconfig
+++ b/configs/dra74_evm_defconfig
@@ -3,7 +3,7 @@ CONFIG_OMAP54XX=y
 CONFIG_TARGET_DRA7XX_EVM=y
 CONFIG_DM_SERIAL=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DM_GPIO=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="dra7-evm"
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index 7aaef1b..0c22f7f 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -8,7 +8,9 @@ CONFIG_SPL_STACK_R=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+# CONFIG_CMD_NFS is not set
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/dra7xx_evm_qspiboot_defconfig b/configs/dra7xx_evm_qspiboot_defconfig
index 0789cff..76d1de3 100644
--- a/configs/dra7xx_evm_qspiboot_defconfig
+++ b/configs/dra7xx_evm_qspiboot_defconfig
@@ -9,7 +9,9 @@ CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+# CONFIG_CMD_NFS is not set
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/dra7xx_evm_uart3_defconfig b/configs/dra7xx_evm_uart3_defconfig
index 768920b..2369095 100644
--- a/configs/dra7xx_evm_uart3_defconfig
+++ b/configs/dra7xx_evm_uart3_defconfig
@@ -10,7 +10,9 @@ CONFIG_SYS_EXTRA_OPTIONS="SPL_YMODEM_SUPPORT"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+# CONFIG_CMD_NFS is not set
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/draco_defconfig b/configs/draco_defconfig
index 967f2ff..902f645 100644
--- a/configs/draco_defconfig
+++ b/configs/draco_defconfig
@@ -9,7 +9,8 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b\x1b"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/dreamplug_defconfig b/configs/dreamplug_defconfig
index c6b3b53..8cea602 100644
--- a/configs/dreamplug_defconfig
+++ b/configs/dreamplug_defconfig
@@ -9,7 +9,8 @@ CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
index 4c3c1df..f43d358 100644
--- a/configs/ds414_defconfig
+++ b/configs/ds414_defconfig
@@ -8,7 +8,8 @@ CONFIG_SPL=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/e2220-1170_defconfig b/configs/e2220-1170_defconfig
index 1a7b07d..d490116 100644
--- a/configs/e2220-1170_defconfig
+++ b/configs/e2220-1170_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="Tegra210 (E2220-1170) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/ea20_defconfig b/configs/ea20_defconfig
index 6fe19c7..27ef793 100644
--- a/configs/ea20_defconfig
+++ b/configs/ea20_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_PROMPT="ea20 > "
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ethernut5_defconfig b/configs/ethernut5_defconfig
index 04d8611..b3d4f82 100644
--- a/configs/ethernut5_defconfig
+++ b/configs/ethernut5_defconfig
@@ -6,5 +6,6 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/firefly-rk3288_defconfig b/configs/firefly-rk3288_defconfig
index d27e4a5..1680149 100644
--- a/configs/firefly-rk3288_defconfig
+++ b/configs/firefly-rk3288_defconfig
@@ -55,3 +55,5 @@ CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index 832ac4d..98a6a72 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -17,7 +17,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/gose_defconfig b/configs/gose_defconfig
index 475bdd1..6158df2 100644
--- a/configs/gose_defconfig
+++ b/configs/gose_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_GOSE=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/gplugd_defconfig b/configs/gplugd_defconfig
index b7ef262..6406004 100644
--- a/configs/gplugd_defconfig
+++ b/configs/gplugd_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_GPLUGD=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/inetspace_v2_defconfig b/configs/inetspace_v2_defconfig
index 6e49081..a3d98e2 100644
--- a/configs/inetspace_v2_defconfig
+++ b/configs/inetspace_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="INETSPACE_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ip04_defconfig b/configs/ip04_defconfig
index e2aa906..00160eb 100644
--- a/configs/ip04_defconfig
+++ b/configs/ip04_defconfig
@@ -5,7 +5,8 @@ CONFIG_TARGET_IP04=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/jetson-tk1_defconfig b/configs/jetson-tk1_defconfig
index c07b278..f6ede45 100644
--- a/configs/jetson-tk1_defconfig
+++ b/configs/jetson-tk1_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra124 (Jetson TK1) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
index 0949468..1df0600 100644
--- a/configs/k2e_evm_defconfig
+++ b/configs/k2e_evm_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="K2E EVM # "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index b721a1c..026f38b 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -12,7 +12,8 @@ CONFIG_REMOTEPROC_TI_POWER=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
index 579c6b8..1e8767e 100644
--- a/configs/k2hk_evm_defconfig
+++ b/configs/k2hk_evm_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="K2HK EVM # "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2l_evm_defconfig b/configs/k2l_evm_defconfig
index af1dc2c..cca7df2 100644
--- a/configs/k2l_evm_defconfig
+++ b/configs/k2l_evm_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="K2L EVM # "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/km_kirkwood_128m16_defconfig b/configs/km_kirkwood_128m16_defconfig
index 349651d..1eab5fc 100644
--- a/configs/km_kirkwood_128m16_defconfig
+++ b/configs/km_kirkwood_128m16_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_128M16"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/km_kirkwood_defconfig b/configs/km_kirkwood_defconfig
index 9a0d85c..befd17f 100644
--- a/configs/km_kirkwood_defconfig
+++ b/configs/km_kirkwood_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/km_kirkwood_pci_defconfig b/configs/km_kirkwood_pci_defconfig
index d2c488e..3405c24 100644
--- a/configs/km_kirkwood_pci_defconfig
+++ b/configs/km_kirkwood_pci_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_PCI"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmcoge4_defconfig b/configs/kmcoge4_defconfig
index 49e1c9b..60a28c0 100644
--- a/configs/kmcoge4_defconfig
+++ b/configs/kmcoge4_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMCOGE4"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
diff --git a/configs/kmcoge5un_defconfig b/configs/kmcoge5un_defconfig
index b390e3e..fec962a 100644
--- a/configs/kmcoge5un_defconfig
+++ b/configs/kmcoge5un_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_COGE5UN"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmlion1_defconfig b/configs/kmlion1_defconfig
index 12d0131..55c4f1c 100644
--- a/configs/kmlion1_defconfig
+++ b/configs/kmlion1_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMLION1"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
diff --git a/configs/kmnusa_defconfig b/configs/kmnusa_defconfig
index 3a1aa69..295b2bb 100644
--- a/configs/kmnusa_defconfig
+++ b/configs/kmnusa_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_NUSA"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmsugp1_defconfig b/configs/kmsugp1_defconfig
index bc9aaec..e6e3cd0 100644
--- a/configs/kmsugp1_defconfig
+++ b/configs/kmsugp1_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_SUGP1"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmsuv31_defconfig b/configs/kmsuv31_defconfig
index 0a16c04..33e74ca 100644
--- a/configs/kmsuv31_defconfig
+++ b/configs/kmsuv31_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_SUV31"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/koelsch_defconfig b/configs/koelsch_defconfig
index 24ea181..eb9432c 100644
--- a/configs/koelsch_defconfig
+++ b/configs/koelsch_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_KOELSCH=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kylin-rk3036_defconfig b/configs/kylin-rk3036_defconfig
index 2cc9de4..2e18a40 100644
--- a/configs/kylin-rk3036_defconfig
+++ b/configs/kylin-rk3036_defconfig
@@ -22,3 +22,5 @@ CONFIG_RAM=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/lager_defconfig b/configs/lager_defconfig
index f042ff7..cf9511f 100644
--- a/configs/lager_defconfig
+++ b/configs/lager_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_LAGER=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/legoev3_defconfig b/configs/legoev3_defconfig
index d838baa..2a494a5 100644
--- a/configs/legoev3_defconfig
+++ b/configs/legoev3_defconfig
@@ -7,6 +7,7 @@ CONFIG_AUTOBOOT_STOP_STR="l"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig b/configs/ls1021aqds_sdcard_qspi_defconfig
index cd75af6..809178a 100644
--- a/configs/ls1021aqds_sdcard_qspi_defconfig
+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
@@ -7,7 +7,8 @@ CONFIG_DEFAULT_DEVICE_TREE="ls1021a-qds-duart"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/ls1021atwr_qspi_defconfig b/configs/ls1021atwr_qspi_defconfig
index c94581e..1a03726 100644
--- a/configs/ls1021atwr_qspi_defconfig
+++ b/configs/ls1021atwr_qspi_defconfig
@@ -9,7 +9,9 @@ CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
diff --git a/configs/ls1021atwr_sdcard_qspi_defconfig b/configs/ls1021atwr_sdcard_qspi_defconfig
index a44988a..9adc55b 100644
--- a/configs/ls1021atwr_sdcard_qspi_defconfig
+++ b/configs/ls1021atwr_sdcard_qspi_defconfig
@@ -8,7 +8,8 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
diff --git a/configs/ls1043aqds_defconfig b/configs/ls1043aqds_defconfig
index c1a6736..cde7708 100644
--- a/configs/ls1043aqds_defconfig
+++ b/configs/ls1043aqds_defconfig
@@ -8,5 +8,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
 CONFIG_SYS_NS16550=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/ls1043aqds_lpuart_defconfig b/configs/ls1043aqds_lpuart_defconfig
index 7468c1b..5e000bd 100644
--- a/configs/ls1043aqds_lpuart_defconfig
+++ b/configs/ls1043aqds_lpuart_defconfig
@@ -9,5 +9,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4,LPUART"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_FSL_LPUART=y
diff --git a/configs/ls1043aqds_nand_defconfig b/configs/ls1043aqds_nand_defconfig
index 4ba0cef..46990c6 100644
--- a/configs/ls1043aqds_nand_defconfig
+++ b/configs/ls1043aqds_nand_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ls1043aqds_nor_ddr3_defconfig b/configs/ls1043aqds_nor_ddr3_defconfig
index 0a79e98..b1eeee8 100644
--- a/configs/ls1043aqds_nor_ddr3_defconfig
+++ b/configs/ls1043aqds_nor_ddr3_defconfig
@@ -7,6 +7,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ls1043aqds_qspi_defconfig b/configs/ls1043aqds_qspi_defconfig
index 3864dd6..01c8045 100644
--- a/configs/ls1043aqds_qspi_defconfig
+++ b/configs/ls1043aqds_qspi_defconfig
@@ -8,5 +8,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043aqds_sdcard_ifc_defconfig b/configs/ls1043aqds_sdcard_ifc_defconfig
index 622d26e..9e8cac1 100644
--- a/configs/ls1043aqds_sdcard_ifc_defconfig
+++ b/configs/ls1043aqds_sdcard_ifc_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ls1043aqds_sdcard_qspi_defconfig b/configs/ls1043aqds_sdcard_qspi_defconfig
index 02597f2..b43e5d4 100644
--- a/configs/ls1043aqds_sdcard_qspi_defconfig
+++ b/configs/ls1043aqds_sdcard_qspi_defconfig
@@ -9,5 +9,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043ardb_SECURE_BOOT_defconfig b/configs/ls1043ardb_SECURE_BOOT_defconfig
index c25c3c1..094e6b1 100644
--- a/configs/ls1043ardb_SECURE_BOOT_defconfig
+++ b/configs/ls1043ardb_SECURE_BOOT_defconfig
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4, SECURE_BOOT"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
 CONFIG_SYS_NS16550=y
 CONFIG_RSA=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/ls1043ardb_defconfig b/configs/ls1043ardb_defconfig
index 97f224d..3945432 100644
--- a/configs/ls1043ardb_defconfig
+++ b/configs/ls1043ardb_defconfig
@@ -8,5 +8,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
 CONFIG_SYS_NS16550=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/ls1043ardb_nand_defconfig b/configs/ls1043ardb_nand_defconfig
index a273331..180f464 100644
--- a/configs/ls1043ardb_nand_defconfig
+++ b/configs/ls1043ardb_nand_defconfig
@@ -9,5 +9,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND_BOOT,SYS_FSL_DDR4"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
 CONFIG_SYS_NS16550=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/ls1043ardb_sdcard_defconfig b/configs/ls1043ardb_sdcard_defconfig
index 50f4955..b8731df 100644
--- a/configs/ls1043ardb_sdcard_defconfig
+++ b/configs/ls1043ardb_sdcard_defconfig
@@ -9,5 +9,6 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SYS_FSL_DDR4"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
 CONFIG_SYS_NS16550=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/ls2080aqds_defconfig b/configs/ls2080aqds_defconfig
index a16a6d5..7ced493 100644
--- a/configs/ls2080aqds_defconfig
+++ b/configs/ls2080aqds_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS2080AQDS=y
 # CONFIG_SYS_MALLOC_F is not set
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-qds"
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
diff --git a/configs/ls2080ardb_defconfig b/configs/ls2080ardb_defconfig
index f8f54e7..8b3e082 100644
--- a/configs/ls2080ardb_defconfig
+++ b/configs/ls2080ardb_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS2080ARDB=y
 # CONFIG_SYS_MALLOC_F is not set
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-rdb"
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
diff --git a/configs/ls2085aqds_defconfig b/configs/ls2085aqds_defconfig
index a5c8388..04ac068 100644
--- a/configs/ls2085aqds_defconfig
+++ b/configs/ls2085aqds_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS2080AQDS=y
 # CONFIG_SYS_MALLOC_F is not set
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-qds"
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
diff --git a/configs/ls2085ardb_defconfig b/configs/ls2085ardb_defconfig
index fe46dbc..058ceb5 100644
--- a/configs/ls2085ardb_defconfig
+++ b/configs/ls2085ardb_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS2080ARDB=y
 # CONFIG_SYS_MALLOC_F is not set
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-rdb"
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
diff --git a/configs/lschlv2_defconfig b/configs/lschlv2_defconfig
index f33cda6..847cae2 100644
--- a/configs/lschlv2_defconfig
+++ b/configs/lschlv2_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="LSCHLV2"
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/lsxhl_defconfig b/configs/lsxhl_defconfig
index 9f3fde5..175ec1a 100644
--- a/configs/lsxhl_defconfig
+++ b/configs/lsxhl_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="LSXHL"
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/m28evk_defconfig b/configs/m28evk_defconfig
index b587617..59d4164 100644
--- a/configs/m28evk_defconfig
+++ b/configs/m28evk_defconfig
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ma5d4evk_defconfig b/configs/ma5d4evk_defconfig
index 378dc30..847383b 100644
--- a/configs/ma5d4evk_defconfig
+++ b/configs/ma5d4evk_defconfig
@@ -9,4 +9,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/marsboard_defconfig b/configs/marsboard_defconfig
index 4bdbb6d..10199ba 100644
--- a/configs/marsboard_defconfig
+++ b/configs/marsboard_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
index 200c7a0..5fb993d 100644
--- a/configs/maxbcm_defconfig
+++ b/configs/maxbcm_defconfig
@@ -8,7 +8,8 @@ CONFIG_SPL=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
diff --git a/configs/mgcoge3un_defconfig b/configs/mgcoge3un_defconfig
index f1e8fd7..a36c922 100644
--- a/configs/mgcoge3un_defconfig
+++ b/configs/mgcoge3un_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_MGCOGE3UN"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index ea39e6a..ab83076 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -23,7 +23,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/mx28evk_auart_console_defconfig b/configs/mx28evk_auart_console_defconfig
index f4c934f..f56ec28 100644
--- a/configs/mx28evk_auart_console_defconfig
+++ b/configs/mx28evk_auart_console_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_M
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_defconfig b/configs/mx28evk_defconfig
index d0e413d..eee2651 100644
--- a/configs/mx28evk_defconfig
+++ b/configs/mx28evk_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_nand_defconfig b/configs/mx28evk_nand_defconfig
index 0f76bde..8fa0702 100644
--- a/configs/mx28evk_nand_defconfig
+++ b/configs/mx28evk_nand_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_NAND"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_spi_defconfig b/configs/mx28evk_spi_defconfig
index ad939ca..1768d90 100644
--- a/configs/mx28evk_spi_defconfig
+++ b/configs/mx28evk_spi_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_SPI_FLASH"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6dlsabreauto_defconfig b/configs/mx6dlsabreauto_defconfig
index 46b8a9f..b4a84bc 100644
--- a/configs/mx6dlsabreauto_defconfig
+++ b/configs/mx6dlsabreauto_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6dlsabresd_defconfig b/configs/mx6dlsabresd_defconfig
index 45a7ec3..e2181b0 100644
--- a/configs/mx6dlsabresd_defconfig
+++ b/configs/mx6dlsabresd_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6dlsabresd.cfg
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qpsabreauto_defconfig b/configs/mx6qpsabreauto_defconfig
index 0877c41..49427ed 100644
--- a/configs/mx6qpsabreauto_defconfig
+++ b/configs/mx6qpsabreauto_defconfig
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QSABREAUTO=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6qp.cfg,MX6Q"
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabreauto_defconfig b/configs/mx6qsabreauto_defconfig
index 36ebc89..16eda5d 100644
--- a/configs/mx6qsabreauto_defconfig
+++ b/configs/mx6qsabreauto_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index fc8323c..6681a32 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabresd_defconfig b/configs/mx6qsabresd_defconfig
index 224e6ed..ff022d7 100644
--- a/configs/mx6qsabresd_defconfig
+++ b/configs/mx6qsabresd_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6q_4x_mt41j128
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6sabresd_spl_defconfig b/configs/mx6sabresd_spl_defconfig
index 406777c..816ab97 100644
--- a/configs/mx6sabresd_spl_defconfig
+++ b/configs/mx6sabresd_spl_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6Q"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_defconfig b/configs/mx6slevk_defconfig
index 2d24622..6a1045d 100644
--- a/configs/mx6slevk_defconfig
+++ b/configs/mx6slevk_defconfig
@@ -7,7 +7,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_spinor_defconfig b/configs/mx6slevk_spinor_defconfig
index 65b5e9d..4aa4b14 100644
--- a/configs/mx6slevk_spinor_defconfig
+++ b/configs/mx6slevk_spinor_defconfig
@@ -7,7 +7,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_spl_defconfig b/configs/mx6slevk_spl_defconfig
index fee352c..6a903ae 100644
--- a/configs/mx6slevk_spl_defconfig
+++ b/configs/mx6slevk_spl_defconfig
@@ -5,7 +5,8 @@ CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6SL"
 CONFIG_CMD_GPIO=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6sxsabreauto_defconfig b/configs/mx6sxsabreauto_defconfig
index d9e35df..4dd2f8f 100644
--- a/configs/mx6sxsabreauto_defconfig
+++ b/configs/mx6sxsabreauto_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sxsabreauto/imximage.cfg
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/mx6sxsabresd_defconfig b/configs/mx6sxsabresd_defconfig
index f4e88f2..8c6085e 100644
--- a/configs/mx6sxsabresd_defconfig
+++ b/configs/mx6sxsabresd_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sxsabresd/imximage.cfg,M
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6sxsabresd_spl_defconfig b/configs/mx6sxsabresd_spl_defconfig
index 2713a4b..92d9a06 100644
--- a/configs/mx6sxsabresd_spl_defconfig
+++ b/configs/mx6sxsabresd_spl_defconfig
@@ -7,5 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6SX"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/net2big_v2_defconfig b/configs/net2big_v2_defconfig
index c0aee31..ed4860d 100644
--- a/configs/net2big_v2_defconfig
+++ b/configs/net2big_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NET2BIG_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_lite_v2_defconfig b/configs/netspace_lite_v2_defconfig
index eb26f88..351da4a 100644
--- a/configs/netspace_lite_v2_defconfig
+++ b/configs/netspace_lite_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_LITE_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_max_v2_defconfig b/configs/netspace_max_v2_defconfig
index e37523e..34abc94 100644
--- a/configs/netspace_max_v2_defconfig
+++ b/configs/netspace_max_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MAX_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_mini_v2_defconfig b/configs/netspace_mini_v2_defconfig
index e847123..0a16c0c 100644
--- a/configs/netspace_mini_v2_defconfig
+++ b/configs/netspace_mini_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MINI_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_v2_defconfig b/configs/netspace_v2_defconfig
index 01a6f7e..cc22465 100644
--- a/configs/netspace_v2_defconfig
+++ b/configs/netspace_v2_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_V2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
index 40da15c..c2dccda 100644
--- a/configs/nitrogen6dl2g_defconfig
+++ b/configs/nitrogen6dl2g_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
index 5f7c17a..2d76de1 100644
--- a/configs/nitrogen6dl_defconfig
+++ b/configs/nitrogen6dl_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,M
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index 8707d7e..f4503e2 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index fbe9b6f..aca3318 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
index 078fc20..7c65fe1 100644
--- a/configs/nitrogen6s1g_defconfig
+++ b/configs/nitrogen6s1g_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
index 707fb58..e7fbe42 100644
--- a/configs/nitrogen6s_defconfig
+++ b/configs/nitrogen6s_defconfig
@@ -5,6 +5,7 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nyan-big_defconfig b/configs/nyan-big_defconfig
index 604aacf..275e998 100644
--- a/configs/nyan-big_defconfig
+++ b/configs/nyan-big_defconfig
@@ -23,7 +23,8 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
diff --git a/configs/omapl138_lcdk_defconfig b/configs/omapl138_lcdk_defconfig
index 8b97508..41f9039 100644
--- a/configs/omapl138_lcdk_defconfig
+++ b/configs/omapl138_lcdk_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ot1200_defconfig b/configs/ot1200_defconfig
index 5e8671f..1b77d05 100644
--- a/configs/ot1200_defconfig
+++ b/configs/ot1200_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/bachmann/ot1200/mx6q_4x_mt41j128.cfg,
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/ot1200_spl_defconfig b/configs/ot1200_spl_defconfig
index 2d37d8b..3cb0ae5 100644
--- a/configs/ot1200_spl_defconfig
+++ b/configs/ot1200_spl_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/p2371-0000_defconfig b/configs/p2371-0000_defconfig
index 6282acf..eacb3f7 100644
--- a/configs/p2371-0000_defconfig
+++ b/configs/p2371-0000_defconfig
@@ -12,7 +12,8 @@ CONFIG_SYS_PROMPT="Tegra210 (P2371-0000) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/p2371-2180_defconfig b/configs/p2371-2180_defconfig
index 392c539..857fef2 100644
--- a/configs/p2371-2180_defconfig
+++ b/configs/p2371-2180_defconfig
@@ -12,7 +12,8 @@ CONFIG_SYS_PROMPT="Tegra210 (P2371-2180) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/p2571_defconfig b/configs/p2571_defconfig
index 04df7e9..67e186e 100644
--- a/configs/p2571_defconfig
+++ b/configs/p2571_defconfig
@@ -12,7 +12,8 @@ CONFIG_SYS_PROMPT="Tegra210 (P2571) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/pcm051_rev1_defconfig b/configs/pcm051_rev1_defconfig
index b74b372..809cce1 100644
--- a/configs/pcm051_rev1_defconfig
+++ b/configs/pcm051_rev1_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="REV1"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/pcm051_rev3_defconfig b/configs/pcm051_rev3_defconfig
index 18be2a0..654d657 100644
--- a/configs/pcm051_rev3_defconfig
+++ b/configs/pcm051_rev3_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="REV3"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
index 23b9762..aa6b29a 100644
--- a/configs/peach-pi_defconfig
+++ b/configs/peach-pi_defconfig
@@ -22,7 +22,8 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index adde56f..285e4ae 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -22,7 +22,8 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/porter_defconfig b/configs/porter_defconfig
index 5899f73..4b9a153 100644
--- a/configs/porter_defconfig
+++ b/configs/porter_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_PORTER=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/portl2_defconfig b/configs/portl2_defconfig
index 37c9ddb..e463766 100644
--- a/configs/portl2_defconfig
+++ b/configs/portl2_defconfig
@@ -4,7 +4,8 @@ CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_SYS_EXTRA_OPTIONS="KM_PORTL2"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/pr1_defconfig b/configs/pr1_defconfig
index c813502..2f92389 100644
--- a/configs/pr1_defconfig
+++ b/configs/pr1_defconfig
@@ -5,7 +5,8 @@ CONFIG_SYS_PROMPT="pr1>"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/pxm2_defconfig b/configs/pxm2_defconfig
index 5b32bb1..85cb63a 100644
--- a/configs/pxm2_defconfig
+++ b/configs/pxm2_defconfig
@@ -10,7 +10,8 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b\x1b"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index bb9c6cd..d22c859 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -16,7 +16,8 @@ CONFIG_CMD_CPU=y
 CONFIG_CMD_BOOTSTAGE=y
 CONFIG_OF_CONTROL=y
 CONFIG_CPU=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/rastaban_defconfig b/configs/rastaban_defconfig
index 6e7d0d2..6bba132 100644
--- a/configs/rastaban_defconfig
+++ b/configs/rastaban_defconfig
@@ -9,7 +9,8 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b\x1b"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig
index 35b96a3..aa711f2 100644
--- a/configs/riotboard_defconfig
+++ b/configs/riotboard_defconfig
@@ -6,7 +6,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/rock2_defconfig b/configs/rock2_defconfig
index 68e674d..73cadef 100644
--- a/configs/rock2_defconfig
+++ b/configs/rock2_defconfig
@@ -53,3 +53,5 @@ CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
diff --git a/configs/rut_defconfig b/configs/rut_defconfig
index 7a4011e..d6e4423 100644
--- a/configs/rut_defconfig
+++ b/configs/rut_defconfig
@@ -10,7 +10,8 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b\x1b"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index d6bc70e..e716f0e 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -9,5 +9,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_MMC"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_SF=y
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index eb2f1f0..7f339f2 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -9,5 +9,6 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_SF=y
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index 4a97da1..82aa782 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index 968cd66..0914ede 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index bc98e6b..622e71a 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index f1261ab..a6afa56 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 0e53b32..b871d9b 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index a1b2c53..d8fdcf9 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index bf81f9b..3ea5f85 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index c78266e..8443781 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index 7c10aab..5c578dc 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sh7752evb_defconfig b/configs/sh7752evb_defconfig
index 4c8883b..5754fe5 100644
--- a/configs/sh7752evb_defconfig
+++ b/configs/sh7752evb_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_SH7752EVB=y
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/sh7753evb_defconfig b/configs/sh7753evb_defconfig
index 9992cff..ae46a8f 100644
--- a/configs/sh7753evb_defconfig
+++ b/configs/sh7753evb_defconfig
@@ -16,7 +16,8 @@ CONFIG_TARGET_SH7753EVB=y
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/sh7757lcr_defconfig b/configs/sh7757lcr_defconfig
index 54d6436..51f9061 100644
--- a/configs/sh7757lcr_defconfig
+++ b/configs/sh7757lcr_defconfig
@@ -17,6 +17,7 @@ CONFIG_TARGET_SH7757LCR=y
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/silk_defconfig b/configs/silk_defconfig
index 67fca2a..d1db8ab 100644
--- a/configs/silk_defconfig
+++ b/configs/silk_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_SILK=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
index b3d16ab..8bbafa5 100644
--- a/configs/smdk5250_defconfig
+++ b/configs/smdk5250_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_SOUND=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
 CONFIG_DM_I2C_COMPAT=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/smdk5420_defconfig b/configs/smdk5420_defconfig
index a84d159..790790a 100644
--- a/configs/smdk5420_defconfig
+++ b/configs/smdk5420_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="SMDK5420 # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_DM_I2C_COMPAT=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 5dbd18a..09eb339 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -23,7 +23,8 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/socfpga_arria5_defconfig b/configs/socfpga_arria5_defconfig
index 7b60d95..32e787b 100644
--- a/configs/socfpga_arria5_defconfig
+++ b/configs/socfpga_arria5_defconfig
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
diff --git a/configs/socfpga_cyclone5_defconfig b/configs/socfpga_cyclone5_defconfig
index 6a487f4..3c5b7cc 100644
--- a/configs/socfpga_cyclone5_defconfig
+++ b/configs/socfpga_cyclone5_defconfig
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
diff --git a/configs/socfpga_de0_nano_soc_defconfig b/configs/socfpga_de0_nano_soc_defconfig
index cfcae5d..53a43f3 100644
--- a/configs/socfpga_de0_nano_soc_defconfig
+++ b/configs/socfpga_de0_nano_soc_defconfig
@@ -21,3 +21,6 @@ CONFIG_CADENCE_QSPI=y
 CONFIG_DESIGNWARE_SPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_MTD=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
diff --git a/configs/socfpga_mcvevk_defconfig b/configs/socfpga_mcvevk_defconfig
index b6f6a65..e602b3a 100644
--- a/configs/socfpga_mcvevk_defconfig
+++ b/configs/socfpga_mcvevk_defconfig
@@ -21,3 +21,5 @@ CONFIG_CADENCE_QSPI=y
 CONFIG_DESIGNWARE_SPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
diff --git a/configs/socfpga_sockit_defconfig b/configs/socfpga_sockit_defconfig
index f45c3ed..48947b1 100644
--- a/configs/socfpga_sockit_defconfig
+++ b/configs/socfpga_sockit_defconfig
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
diff --git a/configs/socfpga_socrates_defconfig b/configs/socfpga_socrates_defconfig
index e25d09b..336d30b 100644
--- a/configs/socfpga_socrates_defconfig
+++ b/configs/socfpga_socrates_defconfig
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DM_ETH=y
diff --git a/configs/socfpga_sr1500_defconfig b/configs/socfpga_sr1500_defconfig
index d499a14..b7fc8a1 100644
--- a/configs/socfpga_sr1500_defconfig
+++ b/configs/socfpga_sr1500_defconfig
@@ -14,7 +14,8 @@ CONFIG_FIT=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
diff --git a/configs/spring_defconfig b/configs/spring_defconfig
index 352bd1a..f6d7f05 100644
--- a/configs/spring_defconfig
+++ b/configs/spring_defconfig
@@ -23,7 +23,8 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
diff --git a/configs/stout_defconfig b/configs/stout_defconfig
index c5af189..c2ba137 100644
--- a/configs/stout_defconfig
+++ b/configs/stout_defconfig
@@ -17,7 +17,8 @@ CONFIG_TARGET_STOUT=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_SH_SDHI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
index 0af7f2d..bb56c38 100644
--- a/configs/taurus_defconfig
+++ b/configs/taurus_defconfig
@@ -11,7 +11,8 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SOURCE is not set
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tec-ng_defconfig b/configs/tec-ng_defconfig
index 389603c..4a27e12 100644
--- a/configs/tec-ng_defconfig
+++ b/configs/tec-ng_defconfig
@@ -14,7 +14,8 @@ CONFIG_SYS_PROMPT="Tegra30 (TEC-NG) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA20_SLINK=y
diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
index 62a6ee6..b6897f5 100644
--- a/configs/theadorable_debug_defconfig
+++ b/configs/theadorable_debug_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/theadorable_defconfig b/configs/theadorable_defconfig
index 4d5f3b0..291b90e 100644
--- a/configs/theadorable_defconfig
+++ b/configs/theadorable_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_SF=y
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/thuban_defconfig b/configs/thuban_defconfig
index 666cf5e..8820831 100644
--- a/configs/thuban_defconfig
+++ b/configs/thuban_defconfig
@@ -9,7 +9,8 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b\x1b"
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6q_mba6_mmc_defconfig b/configs/tqma6q_mba6_mmc_defconfig
index 6c52fff..f0175f0 100644
--- a/configs/tqma6q_mba6_mmc_defconfig
+++ b/configs/tqma6q_mba6_mmc_defconfig
@@ -7,6 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6q_mba6_spi_defconfig b/configs/tqma6q_mba6_spi_defconfig
index 85b239b..c5b6103 100644
--- a/configs/tqma6q_mba6_spi_defconfig
+++ b/configs/tqma6q_mba6_spi_defconfig
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6s_mba6_mmc_defconfig b/configs/tqma6s_mba6_mmc_defconfig
index 977f98a..70b7d5f 100644
--- a/configs/tqma6s_mba6_mmc_defconfig
+++ b/configs/tqma6s_mba6_mmc_defconfig
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6s_mba6_spi_defconfig b/configs/tqma6s_mba6_spi_defconfig
index c6dac61..bbe279c 100644
--- a/configs/tqma6s_mba6_spi_defconfig
+++ b/configs/tqma6s_mba6_spi_defconfig
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/trimslice_defconfig b/configs/trimslice_defconfig
index a0b3a3e..bfd0cf7 100644
--- a/configs/trimslice_defconfig
+++ b/configs/trimslice_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra20 (TrimSlice) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/tseries_spi_defconfig b/configs/tseries_spi_defconfig
index 4c6d544..1bfa9d6 100644
--- a/configs/tseries_spi_defconfig
+++ b/configs/tseries_spi_defconfig
@@ -25,7 +25,8 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_TIME=y
 CONFIG_NETCONSOLE=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_SYS_NS16550=y
diff --git a/configs/venice2_defconfig b/configs/venice2_defconfig
index 954c1de..1501622 100644
--- a/configs/venice2_defconfig
+++ b/configs/venice2_defconfig
@@ -13,7 +13,8 @@ CONFIG_SYS_PROMPT="Tegra124 (Venice2) # "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/vf610twr_defconfig b/configs/vf610twr_defconfig
index 7c83887..f5a3134 100644
--- a/configs/vf610twr_defconfig
+++ b/configs/vf610twr_defconfig
@@ -12,6 +12,7 @@ CONFIG_DM=y
 CONFIG_VYBRID_GPIO=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_FSL_LPUART=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/vf610twr_nand_defconfig b/configs/vf610twr_nand_defconfig
index 4591526..db172c0 100644
--- a/configs/vf610twr_nand_defconfig
+++ b/configs/vf610twr_nand_defconfig
@@ -12,6 +12,7 @@ CONFIG_DM=y
 CONFIG_VYBRID_GPIO=y
 CONFIG_NAND_VF610_NFC=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_FSL_LPUART=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/vinco_defconfig b/configs/vinco_defconfig
index 7cae79b..f279770 100644
--- a/configs/vinco_defconfig
+++ b/configs/vinco_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_PROMPT="vinco => "
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
diff --git a/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig
index 4c5152f..49232e1 100644
--- a/configs/zynq_microzed_defconfig
+++ b/configs/zynq_microzed_defconfig
@@ -14,9 +14,10 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
diff --git a/configs/zynq_zc702_defconfig b/configs/zynq_zc702_defconfig
index f01874f..cddb49b 100644
--- a/configs/zynq_zc702_defconfig
+++ b/configs/zynq_zc702_defconfig
@@ -13,7 +13,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/zynq_zc706_defconfig b/configs/zynq_zc706_defconfig
index 215f00d..9991081 100644
--- a/configs/zynq_zc706_defconfig
+++ b/configs/zynq_zc706_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/zynq_zc770_xm010_defconfig b/configs/zynq_zc770_xm010_defconfig
index cec722f..995b700 100644
--- a/configs/zynq_zc770_xm010_defconfig
+++ b/configs/zynq_zc770_xm010_defconfig
@@ -15,7 +15,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/zynq_zc770_xm013_defconfig b/configs/zynq_zc770_xm013_defconfig
index 9feaca8..7ffc7b8 100644
--- a/configs/zynq_zc770_xm013_defconfig
+++ b/configs/zynq_zc770_xm013_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig
index 4a2a2fc..a595075 100644
--- a/configs/zynq_zed_defconfig
+++ b/configs/zynq_zed_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/zynq_zybo_defconfig b/configs/zynq_zybo_defconfig
index 7c23fec..78eeb30 100644
--- a/configs/zynq_zybo_defconfig
+++ b/configs/zynq_zybo_defconfig
@@ -14,7 +14,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_DEBUG_UART=y
diff --git a/include/configs/MPC8536DS.h b/include/configs/MPC8536DS.h
index 9298c30..f9138c1 100644
--- a/include/configs/MPC8536DS.h
+++ b/include/configs/MPC8536DS.h
@@ -413,7 +413,7 @@
  */
 #define CONFIG_HARD_SPI
 
-#if defined(CONFIG_SPI_FLASH)
+#if defined(CONFIG_MTD_SPI_NOR)
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED	10000000
 #define CONFIG_SF_DEFAULT_MODE	0
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index 81af871..fe34d40 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -61,7 +61,8 @@
 #define CONFIG_SPL_ENV_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
 #define CONFIG_SPL_TARGET		"u-boot-with-spl.bin"
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index bc4c733..440ec14 100644
--- a/include/configs/P1022DS.h
+++ b/include/configs/P1022DS.h
@@ -50,7 +50,8 @@
 #define CONFIG_SPL_ENV_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
 #define CONFIG_SPL_TARGET		"u-boot-with-spl.bin"
diff --git a/include/configs/T102xQDS.h b/include/configs/T102xQDS.h
index f07b2d1..7031fba 100644
--- a/include/configs/T102xQDS.h
+++ b/include/configs/T102xQDS.h
@@ -80,7 +80,8 @@
 #ifdef CONFIG_SPIFLASH
 #define CONFIG_RESET_VECTOR_ADDRESS		0x200FFC
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE	(768 << 10)
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_DST		(0x00200000)
diff --git a/include/configs/T102xRDB.h b/include/configs/T102xRDB.h
index 1a22bee..96498a1 100644
--- a/include/configs/T102xRDB.h
+++ b/include/configs/T102xRDB.h
@@ -87,7 +87,8 @@
 #ifdef CONFIG_SPIFLASH
 #define CONFIG_RESET_VECTOR_ADDRESS		0x30000FFC
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE	(768 << 10)
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_DST		(0x30000000)
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index 84e195d..cc2dae1 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -73,7 +73,8 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg
 #ifdef CONFIG_SPIFLASH
 #define	CONFIG_RESET_VECTOR_ADDRESS		0x30000FFC
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE	(768 << 10)
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_DST		(0x30000000)
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index 5957fa8..82db256 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -90,7 +90,8 @@
 #ifdef CONFIG_SPIFLASH
 #define	CONFIG_RESET_VECTOR_ADDRESS		0x200FFC
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE	(768 << 10)
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_DST		(0x00200000)
@@ -540,7 +541,7 @@ unsigned long get_board_ddr_clk(void);
 /*
  * eSPI - Enhanced SPI
  */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #ifndef CONFIG_SPL_BUILD
 #endif
 
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index e0769d0..ee8fccd 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -79,7 +79,8 @@
 #ifdef CONFIG_SPIFLASH
 #define        CONFIG_RESET_VECTOR_ADDRESS             0x200FFC
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE       (768 << 10)
 #define CONFIG_SYS_SPI_FLASH_U_BOOT_DST                (0x00200000)
@@ -494,7 +495,7 @@ unsigned long get_board_ddr_clk(void);
 /*
  * eSPI - Enhanced SPI
  */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_SPI_FLASH_BAR
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED	 10000000
diff --git a/include/configs/UCP1020.h b/include/configs/UCP1020.h
index 139e629..7c565b6 100644
--- a/include/configs/UCP1020.h
+++ b/include/configs/UCP1020.h
@@ -45,7 +45,7 @@
 #define CONFIG_NETMASK		255.255.252.0
 #define CONFIG_ETHPRIME		"eTSEC3"
 
-#ifndef CONFIG_SPI_FLASH
+#ifndef CONFIG_MTD_SPI_NOR
 #endif
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 
@@ -86,7 +86,7 @@
 #define CONFIG_NETMASK		255.255.255.0
 #define CONFIG_ETHPRIME		"eTSEC1"
 
-#ifndef CONFIG_SPI_FLASH
+#ifndef CONFIG_MTD_SPI_NOR
 #endif
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 150c523..4462a58 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -416,7 +416,8 @@
 /* SPL related */
 #undef CONFIG_SPL_OS_BOOT		/* Not supported by existing map */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 
diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
index b982ed6..7386625 100644
--- a/include/configs/am43xx_evm.h
+++ b/include/configs/am43xx_evm.h
@@ -145,7 +145,7 @@
 #ifdef CONFIG_SPL_BUILD
 #undef CONFIG_DM_MMC
 #undef CONFIG_DM_SPI
-#undef CONFIG_DM_SPI_FLASH
+#undef CONFIG_MTD
 #undef CONFIG_TIMER
 #endif
 
diff --git a/include/configs/at91sam9n12ek.h b/include/configs/at91sam9n12ek.h
index 14a8436..b432c79 100644
--- a/include/configs/at91sam9n12ek.h
+++ b/include/configs/at91sam9n12ek.h
@@ -278,7 +278,8 @@
 
 #elif CONFIG_SYS_USE_SPIFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8400
 
diff --git a/include/configs/at91sam9x5ek.h b/include/configs/at91sam9x5ek.h
index cd91a7b..4bfb7c8 100644
--- a/include/configs/at91sam9x5ek.h
+++ b/include/configs/at91sam9x5ek.h
@@ -280,7 +280,8 @@
 
 #elif CONFIG_SYS_USE_SPIFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8400
 
diff --git a/include/configs/bav335x.h b/include/configs/bav335x.h
index a9df0b3..50060d5 100644
--- a/include/configs/bav335x.h
+++ b/include/configs/bav335x.h
@@ -548,7 +548,8 @@ DEFAULT_LINUX_BOOT_ENV \
 /* SPL related */
 #undef CONFIG_SPL_OS_BOOT		/* Not supported by existing map */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 
diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h
index 9c537e0..fb9d5bf 100644
--- a/include/configs/bfin_adi_common.h
+++ b/include/configs/bfin_adi_common.h
@@ -64,7 +64,7 @@
 # if defined(CONFIG_BFIN_SPI) || defined(CONFIG_SOFT_SPI)
 #  define CONFIG_CMD_SPI
 # endif
-# ifdef CONFIG_SPI_FLASH
+# ifdef CONFIG_MTD_SPI_NOR
 #  define CONFIG_CMD_SF
 # endif
 # if defined(CONFIG_SYS_I2C) || defined(CONFIG_SYS_I2C_SOFT)
diff --git a/include/configs/cgtqmx6eval.h b/include/configs/cgtqmx6eval.h
index 487c011..da81dc4 100644
--- a/include/configs/cgtqmx6eval.h
+++ b/include/configs/cgtqmx6eval.h
@@ -21,7 +21,8 @@
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	(64 * 1024)
 #define CONFIG_SPL_SPI_LOAD
 #include "imx6_spl.h"
@@ -42,7 +43,6 @@
 
 /* SPI NOR */
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
 #define CONFIG_SPI_FLASH_STMICRO
 #define CONFIG_SPI_FLASH_SST
 #define CONFIG_MXC_SPI
diff --git a/include/configs/chromebook_jerry.h b/include/configs/chromebook_jerry.h
index 67f45c0..a4d768d 100644
--- a/include/configs/chromebook_jerry.h
+++ b/include/configs/chromebook_jerry.h
@@ -16,7 +16,8 @@
 
 #define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPI_FLASH_GIGADEVICE
 
diff --git a/include/configs/clearfog.h b/include/configs/clearfog.h
index f0de827..b6ebd66 100644
--- a/include/configs/clearfog.h
+++ b/include/configs/clearfog.h
@@ -145,7 +145,8 @@
 #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/cm_fx6.h b/include/configs/cm_fx6.h
index b36ba14..af63d0b 100644
--- a/include/configs/cm_fx6.h
+++ b/include/configs/cm_fx6.h
@@ -233,7 +233,8 @@
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	0x80 /* offset 64 kb */
 #define CONFIG_SYS_MONITOR_LEN	(CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS / 2 * 1024)
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	(64 * 1024)
 #define CONFIG_SPL_SPI_LOAD
 
diff --git a/include/configs/cm_t43.h b/include/configs/cm_t43.h
index 1c1951c..854032b 100644
--- a/include/configs/cm_t43.h
+++ b/include/configs/cm_t43.h
@@ -167,7 +167,8 @@
 #define CONFIG_SYS_MONITOR_LEN		(512 * 1024)
 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	0x480
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_I2C_SUPPORT
 #define CONFIG_SPL_POWER_SUPPORT
diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h
index 24e55e8..e78b8d4 100644
--- a/include/configs/da850evm.h
+++ b/include/configs/da850evm.h
@@ -150,7 +150,8 @@
 
 #ifdef CONFIG_USE_SPIFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 #define CONFIG_SYS_SPI_U_BOOT_SIZE	0x40000
@@ -357,7 +358,8 @@
 						CONFIG_SYS_MALLOC_LEN)
 #define CONFIG_SYS_SPL_MALLOC_SIZE	CONFIG_SYS_MALLOC_LEN
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
diff --git a/include/configs/db-88f6820-gp.h b/include/configs/db-88f6820-gp.h
index ef14132..1255c8b 100644
--- a/include/configs/db-88f6820-gp.h
+++ b/include/configs/db-88f6820-gp.h
@@ -145,7 +145,8 @@
 #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/db-mv784mp-gp.h b/include/configs/db-mv784mp-gp.h
index c8b0344..5a88fed 100644
--- a/include/configs/db-mv784mp-gp.h
+++ b/include/configs/db-mv784mp-gp.h
@@ -135,7 +135,8 @@
 
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h
index 45bda4f..e124c45 100644
--- a/include/configs/dra7xx_evm.h
+++ b/include/configs/dra7xx_evm.h
@@ -167,7 +167,7 @@
 
 #ifdef CONFIG_SPL_BUILD
 #undef CONFIG_DM_SPI
-#undef CONFIG_DM_SPI_FLASH
+#undef CONFIG_MTD
 #endif
 
 /*
@@ -208,7 +208,8 @@
 #define CONFIG_SPL_DMA_SUPPORT
 #define CONFIG_TI_EDMA3
 #define CONFIG_SPL_SPI_LOAD
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x40000
 
 #define CONFIG_SUPPORT_EMMC_BOOT
diff --git a/include/configs/dreamplug.h b/include/configs/dreamplug.h
index 0b7d89b..a9e1219 100644
--- a/include/configs/dreamplug.h
+++ b/include/configs/dreamplug.h
@@ -51,7 +51,7 @@
 /*
  *  Environment variables configurations
  */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_ENV_IS_IN_SPI_FLASH	1
 #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64k */
 #else
diff --git a/include/configs/ds414.h b/include/configs/ds414.h
index e3c7087..334f61b 100644
--- a/include/configs/ds414.h
+++ b/include/configs/ds414.h
@@ -139,7 +139,8 @@
 
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/exynos5-common.h b/include/configs/exynos5-common.h
index 7d600bf..86ba4ba 100644
--- a/include/configs/exynos5-common.h
+++ b/include/configs/exynos5-common.h
@@ -128,7 +128,7 @@
 #define CONFIG_I2C_EDID
 
 /* SPI */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
index cf71f21..3d479db 100644
--- a/include/configs/gw_ventana.h
+++ b/include/configs/gw_ventana.h
@@ -62,7 +62,7 @@
 #define CONFIG_MXC_UART
 #define CONFIG_MXC_UART_BASE	       UART2_BASE
 
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 
 /* SPI */
 #define CONFIG_CMD_SF
@@ -94,7 +94,7 @@
   #define CONFIG_APBH_DMA_BURST8
 #endif
 
-#endif /* CONFIG_SPI_FLASH */
+#endif /* CONFIG_MTD_SPI_NOR */
 
 /* I2C Configs */
 #define CONFIG_CMD_I2C
@@ -249,7 +249,7 @@
 #define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define MTDIDS_DEFAULT    "nor0=nor"
 #define MTDPARTS_DEFAULT  \
 	"mtdparts=nor:512k(uboot),64k(env),2m(kernel),-(rootfs)"
@@ -259,7 +259,7 @@
 #endif
 
 /* Persistent Environment Config */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #else
 #define CONFIG_ENV_IS_IN_NAND
@@ -365,7 +365,7 @@
 			"fi; " \
 		"fi\0"
 
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 	#define CONFIG_EXTRA_ENV_SETTINGS \
 	CONFIG_EXTRA_ENV_SETTINGS_COMMON \
 	"image_os=ventana/openwrt-imx6-imx6q-gw5400-a-squashfs.bin\0" \
diff --git a/include/configs/ls1021atwr.h b/include/configs/ls1021atwr.h
index cee6281..e6f8f6b 100644
--- a/include/configs/ls1021atwr.h
+++ b/include/configs/ls1021atwr.h
@@ -321,7 +321,6 @@
 /* DM SPI */
 #if defined(CONFIG_FSL_DSPI) || defined(CONFIG_FSL_QSPI)
 #define CONFIG_CMD_SF
-#define CONFIG_DM_SPI_FLASH
 #endif
 
 /*
diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h
index ea25aad..74e5c81 100644
--- a/include/configs/ls1043a_common.h
+++ b/include/configs/ls1043a_common.h
@@ -195,7 +195,7 @@
 #define CONFIG_FSL_DSPI
 #ifdef CONFIG_FSL_DSPI
 #define CONFIG_CMD_SF
-#define CONFIG_DM_SPI_FLASH
+#define CONFIG_MTD
 #define CONFIG_SPI_FLASH_STMICRO	/* cs0 */
 #define CONFIG_SPI_FLASH_SST		/* cs1 */
 #define CONFIG_SPI_FLASH_EON		/* cs2 */
diff --git a/include/configs/ls2080aqds.h b/include/configs/ls2080aqds.h
index dab3820..6efda6f 100644
--- a/include/configs/ls2080aqds.h
+++ b/include/configs/ls2080aqds.h
@@ -284,7 +284,8 @@ unsigned long get_board_ddr_clk(void);
 /* SPI */
 #ifdef CONFIG_FSL_DSPI
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #endif
 
 /*
diff --git a/include/configs/ls2080ardb.h b/include/configs/ls2080ardb.h
index b2c0181..b53bb76 100644
--- a/include/configs/ls2080ardb.h
+++ b/include/configs/ls2080ardb.h
@@ -257,7 +257,8 @@ unsigned long get_board_sys_clk(void);
 /* SPI */
 #ifdef CONFIG_FSL_DSPI
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define CONFIG_SPI_FLASH_BAR
 #endif
 
diff --git a/include/configs/lsxl.h b/include/configs/lsxl.h
index 8fb0135..b9a66dd 100644
--- a/include/configs/lsxl.h
+++ b/include/configs/lsxl.h
@@ -88,7 +88,7 @@
 /*
  *  Environment variables configurations
  */
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_SYS_MAX_FLASH_BANKS	1
 #define CONFIG_SYS_MAX_FLASH_SECT	8
 #define CONFIG_ENV_IS_IN_SPI_FLASH	1
diff --git a/include/configs/ma5d4evk.h b/include/configs/ma5d4evk.h
index 7f8a59f..472d4fb 100644
--- a/include/configs/ma5d4evk.h
+++ b/include/configs/ma5d4evk.h
@@ -246,7 +246,8 @@
 #define CONFIG_SYS_MONITOR_LEN		(512 << 10)
 
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x10000
 
diff --git a/include/configs/maxbcm.h b/include/configs/maxbcm.h
index 43d7fd0..aa006e8 100644
--- a/include/configs/maxbcm.h
+++ b/include/configs/maxbcm.h
@@ -98,7 +98,8 @@
 
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
index 2fff34a..4707a9b 100644
--- a/include/configs/mx6ul_14x14_evk.h
+++ b/include/configs/mx6ul_14x14_evk.h
@@ -197,7 +197,8 @@
 #define CONFIG_FSL_QSPI
 #ifdef CONFIG_FSL_QSPI
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define CONFIG_SPI_FLASH_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
diff --git a/include/configs/mx7dsabresd.h b/include/configs/mx7dsabresd.h
index 2c981e0..d28cc97 100644
--- a/include/configs/mx7dsabresd.h
+++ b/include/configs/mx7dsabresd.h
@@ -287,7 +287,8 @@
 
 #ifdef CONFIG_FSL_QSPI
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define CONFIG_SPI_FLASH_MACRONIX
 #define CONFIG_SPI_FLASH_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h
index fc7bfce..2ad67c9 100644
--- a/include/configs/omapl138_lcdk.h
+++ b/include/configs/omapl138_lcdk.h
@@ -98,7 +98,8 @@
 
 #ifdef CONFIG_USE_SPIFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 #define CONFIG_SYS_SPI_U_BOOT_SIZE	0x30000
diff --git a/include/configs/ot1200.h b/include/configs/ot1200.h
index 879ad58..2165562 100644
--- a/include/configs/ot1200.h
+++ b/include/configs/ot1200.h
@@ -87,7 +87,8 @@
 #include "imx6_spl.h"
 #define CONFIG_SPL_SPI_SUPPORT
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     (64 * 1024)
 #define CONFIG_SPL_SPI_LOAD
 #endif
diff --git a/include/configs/p1_p2_rdb_pc.h b/include/configs/p1_p2_rdb_pc.h
index 799521e..4d428f6 100644
--- a/include/configs/p1_p2_rdb_pc.h
+++ b/include/configs/p1_p2_rdb_pc.h
@@ -217,7 +217,8 @@
 #define CONFIG_SPL_ENV_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_FLASH_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
 #define CONFIG_SPL_TARGET		"u-boot-with-spl.bin"
@@ -698,7 +699,7 @@
  */
 #define CONFIG_HARD_SPI
 
-#if defined(CONFIG_SPI_FLASH)
+#if defined(CONFIG_MTD_SPI_NOR)
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED	10000000
 #define CONFIG_SF_DEFAULT_MODE	0
diff --git a/include/configs/pcm051.h b/include/configs/pcm051.h
index 45c140d..3583152 100644
--- a/include/configs/pcm051.h
+++ b/include/configs/pcm051.h
@@ -130,7 +130,8 @@
 
 #ifdef CONFIG_SPI_BOOT
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 #define CONFIG_SYS_SPI_U_BOOT_SIZE	0x40000
diff --git a/include/configs/pcm052.h b/include/configs/pcm052.h
index 4e29cf3..0427059 100644
--- a/include/configs/pcm052.h
+++ b/include/configs/pcm052.h
@@ -98,7 +98,8 @@
 
 #ifdef CONFIG_FSL_QSPI
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define FSL_QSPI_FLASH_SIZE		(1 << 24)
 #define FSL_QSPI_FLASH_NUM		2
 #define CONFIG_SYS_FSL_QSPI_LE
diff --git a/include/configs/rk3036_common.h b/include/configs/rk3036_common.h
index 368d046..4dcf1a1 100644
--- a/include/configs/rk3036_common.h
+++ b/include/configs/rk3036_common.h
@@ -66,7 +66,6 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define SDRAM_BANK_SIZE			(512UL << 20UL)
 
-#define CONFIG_SPI_FLASH
 #define CONFIG_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h
index 5322685..25af39d 100644
--- a/include/configs/rk3288_common.h
+++ b/include/configs/rk3288_common.h
@@ -86,7 +86,6 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define SDRAM_BANK_SIZE			(2UL << 30)
 
-#define CONFIG_SPI_FLASH
 #define CONFIG_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
diff --git a/include/configs/sama5d2_xplained.h b/include/configs/sama5d2_xplained.h
index 272257e..aa29ed9 100644
--- a/include/configs/sama5d2_xplained.h
+++ b/include/configs/sama5d2_xplained.h
@@ -152,7 +152,8 @@
 
 #elif CONFIG_SYS_USE_SERIALFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 
diff --git a/include/configs/sama5d3xek.h b/include/configs/sama5d3xek.h
index bd5f4ee..02df0f2 100644
--- a/include/configs/sama5d3xek.h
+++ b/include/configs/sama5d3xek.h
@@ -206,7 +206,8 @@
 
 #elif CONFIG_SYS_USE_SERIALFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 
diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h
index 52b4584..486e4e0 100644
--- a/include/configs/sama5d4_xplained.h
+++ b/include/configs/sama5d4_xplained.h
@@ -167,7 +167,8 @@
 
 #elif CONFIG_SYS_USE_SERIALFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 
diff --git a/include/configs/sama5d4ek.h b/include/configs/sama5d4ek.h
index ce96a7c..98368a7 100644
--- a/include/configs/sama5d4ek.h
+++ b/include/configs/sama5d4ek.h
@@ -165,7 +165,8 @@
 
 #elif CONFIG_SYS_USE_SERIALFLASH
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x8000
 
diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h
index 3a8b90e..b455918 100644
--- a/include/configs/siemens-am33x-common.h
+++ b/include/configs/siemens-am33x-common.h
@@ -158,7 +158,8 @@
 #define CONFIG_SPL_WATCHDOG_SUPPORT
 
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index b002260..ad18fed 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -378,7 +378,8 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 
 /* SPL QSPI boot support */
 #ifdef CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x40000
 #endif
diff --git a/include/configs/taurus.h b/include/configs/taurus.h
index c1581d8..81b93a7 100644
--- a/include/configs/taurus.h
+++ b/include/configs/taurus.h
@@ -165,7 +165,8 @@
 /* SPL related */
 #undef CONFIG_SPL_OS_BOOT		/* Not supported by existing map */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 
diff --git a/include/configs/tegra-common-usb-gadget.h b/include/configs/tegra-common-usb-gadget.h
index f6e1d5c..30e6f9c 100644
--- a/include/configs/tegra-common-usb-gadget.h
+++ b/include/configs/tegra-common-usb-gadget.h
@@ -36,7 +36,7 @@
 #ifdef CONFIG_MMC
 #define CONFIG_DFU_MMC
 #endif
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 #define CONFIG_DFU_SF
 #endif
 #define CONFIG_DFU_RAM
diff --git a/include/configs/theadorable.h b/include/configs/theadorable.h
index 9f186ad..b7529e8 100644
--- a/include/configs/theadorable.h
+++ b/include/configs/theadorable.h
@@ -156,7 +156,8 @@
 
 /* SPL related SPI defines */
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPL_SPI_BUS		0
 #define CONFIG_SPL_SPI_CS		0
diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
index 6a3beac..c91bac6 100644
--- a/include/configs/ti_armv7_keystone2.h
+++ b/include/configs/ti_armv7_keystone2.h
@@ -52,7 +52,8 @@
 					CONFIG_SYS_SPL_MALLOC_SIZE + \
 					SPL_MALLOC_F_SIZE + \
 					CONFIG_SPL_STACK_SIZE - 4)
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	CONFIG_SPL_PAD_TO
diff --git a/include/configs/tseries.h b/include/configs/tseries.h
index 901dfd7..6de02bd 100644
--- a/include/configs/tseries.h
+++ b/include/configs/tseries.h
@@ -263,7 +263,8 @@ MMCARGS
 #define CONFIG_SF_DEFAULT_SPEED		24000000
 
 #define CONFIG_SPL_SPI_SUPPORT
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x20000
 #undef CONFIG_ENV_IS_NOWHERE
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index 77edbb8..3177297 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -341,7 +341,8 @@
 #ifdef CONFIG_ZYNQ_QSPI
 #define CONFIG_SPL_SPI_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
-#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_NOR_SUPPORT
+#define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SYS_SPI_U_BOOT_OFFS	0x100000
 #define CONFIG_SYS_SPI_ARGS_OFFS	0x200000
 #define CONFIG_SYS_SPI_ARGS_SIZE	0x80000
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 60/87] spi-nor: Use CONFIG_MTD_SPI_NOR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (57 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 59/87] config: Enable SPI-NOR framework Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 61/87] configs: Use CONFIG_SPI_NOR_BAR Jagan Teki
                   ` (26 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Replace legacy CONFIG_SPI_FLASH with CONFIG_MTD_SPI_NOR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 board/davinci/da8xxevm/da850evm.c | 2 +-
 common/splash_source.c            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index 356d3ce..7a2b8e0 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -234,7 +234,7 @@ const struct pinmux_resource pinmuxes[] = {
 	PINMUX_ITEM(emac_pins_mii),
 #endif
 #endif
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 	PINMUX_ITEM(spi1_pins_base),
 	PINMUX_ITEM(spi1_pins_scs0),
 #endif
diff --git a/common/splash_source.c b/common/splash_source.c
index 3393f73..505fa2a 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -19,7 +19,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_SPI_FLASH
+#ifdef CONFIG_MTD_SPI_NOR
 static spi_flash_t *sf;
 static int splash_sf_read_raw(u32 bmp_load_addr, int offset, size_t read_size)
 {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 61/87] configs: Use CONFIG_SPI_NOR_BAR
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (58 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 60/87] spi-nor: Use CONFIG_MTD_SPI_NOR Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 62/87] configs: spi-nor: Add new flash vendor configs Jagan Teki
                   ` (25 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

- CONFIG_SPI_FLASH_BAR
+ CONFIG_SPI_NOR_BAR

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/alt_defconfig               |  2 +-
 configs/am437x_sk_evm_defconfig     |  2 +-
 configs/am43xx_evm_defconfig        |  2 +-
 configs/am57xx_evm_defconfig        |  2 +-
 configs/bg0900_defconfig            |  2 +-
 configs/cm_t43_defconfig            |  2 +-
 configs/dra72_evm_defconfig         |  2 +-
 configs/dra74_evm_defconfig         |  2 +-
 configs/dra7xx_evm_defconfig        |  2 +-
 configs/ds414_defconfig             |  2 +-
 configs/gose_defconfig              |  2 +-
 configs/koelsch_defconfig           |  2 +-
 configs/lager_defconfig             |  2 +-
 configs/maxbcm_defconfig            |  2 +-
 configs/mx6sxsabreauto_defconfig    |  2 +-
 configs/mx6sxsabresd_defconfig      |  2 +-
 configs/porter_defconfig            |  2 +-
 configs/silk_defconfig              |  2 +-
 configs/stout_defconfig             |  2 +-
 configs/zynq_zc702_defconfig        |  2 +-
 configs/zynq_zc706_defconfig        |  2 +-
 configs/zynq_zc770_xm010_defconfig  |  2 +-
 configs/zynq_zc770_xm013_defconfig  |  2 +-
 configs/zynq_zed_defconfig          |  2 +-
 doc/SPI/README.ti_qspi_dra_test     |  2 +-
 drivers/spi/fsl_qspi.c              | 18 +++++++++---------
 include/configs/T102xQDS.h          |  2 +-
 include/configs/T102xRDB.h          |  2 +-
 include/configs/T104xRDB.h          |  2 +-
 include/configs/T208xQDS.h          |  2 +-
 include/configs/T208xRDB.h          |  2 +-
 include/configs/gw_ventana.h        |  2 +-
 include/configs/km/kmp204x-common.h |  2 +-
 include/configs/ls2080ardb.h        |  2 +-
 include/configs/mx6ul_14x14_evk.h   |  2 +-
 include/configs/mx7dsabresd.h       |  2 +-
 include/configs/socfpga_common.h    |  4 ++--
 include/linux/mtd/spi-nor.h         |  2 +-
 38 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/configs/alt_defconfig b/configs/alt_defconfig
index 72ba038..07428c7 100644
--- a/configs/alt_defconfig
+++ b/configs/alt_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_ALT=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am437x_sk_evm_defconfig b/configs/am437x_sk_evm_defconfig
index 08d006b..456d978 100644
--- a/configs/am437x_sk_evm_defconfig
+++ b/configs/am437x_sk_evm_defconfig
@@ -18,7 +18,7 @@ CONFIG_DM=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
index a8b84e4..eccb04a 100644
--- a/configs/am43xx_evm_defconfig
+++ b/configs/am43xx_evm_defconfig
@@ -8,7 +8,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
index 824107c..504a25a 100644
--- a/configs/am57xx_evm_defconfig
+++ b/configs/am57xx_evm_defconfig
@@ -17,5 +17,5 @@ CONFIG_DM=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/bg0900_defconfig b/configs/bg0900_defconfig
index 60d2a53..acc2b5e 100644
--- a/configs/bg0900_defconfig
+++ b/configs/bg0900_defconfig
@@ -6,6 +6,6 @@ CONFIG_SPL=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/cm_t43_defconfig b/configs/cm_t43_defconfig
index 7f4b247..ae79cdf 100644
--- a/configs/cm_t43_defconfig
+++ b/configs/cm_t43_defconfig
@@ -15,7 +15,7 @@ CONFIG_OF_LIBFDT=y
 CONFIG_DM_SERIAL=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/dra72_evm_defconfig b/configs/dra72_evm_defconfig
index 4b9ced4..24dd7fb 100644
--- a/configs/dra72_evm_defconfig
+++ b/configs/dra72_evm_defconfig
@@ -18,7 +18,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/dra74_evm_defconfig b/configs/dra74_evm_defconfig
index 9c7773a..743a2aa 100644
--- a/configs/dra74_evm_defconfig
+++ b/configs/dra74_evm_defconfig
@@ -17,7 +17,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index 0c22f7f..e82c264 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -11,7 +11,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
index f43d358..a4ccc52 100644
--- a/configs/ds414_defconfig
+++ b/configs/ds414_defconfig
@@ -10,7 +10,7 @@ CONFIG_SPL=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
diff --git a/configs/gose_defconfig b/configs/gose_defconfig
index 6158df2..f1457ca 100644
--- a/configs/gose_defconfig
+++ b/configs/gose_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_GOSE=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/koelsch_defconfig b/configs/koelsch_defconfig
index eb9432c..d9b6590 100644
--- a/configs/koelsch_defconfig
+++ b/configs/koelsch_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_KOELSCH=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/lager_defconfig b/configs/lager_defconfig
index cf9511f..922c11e 100644
--- a/configs/lager_defconfig
+++ b/configs/lager_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_LAGER=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
index 5fb993d..03ab40e 100644
--- a/configs/maxbcm_defconfig
+++ b/configs/maxbcm_defconfig
@@ -10,7 +10,7 @@ CONFIG_SPL=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/mx6sxsabreauto_defconfig b/configs/mx6sxsabreauto_defconfig
index 4dd2f8f..3616c82 100644
--- a/configs/mx6sxsabreauto_defconfig
+++ b/configs/mx6sxsabreauto_defconfig
@@ -8,5 +8,5 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
diff --git a/configs/mx6sxsabresd_defconfig b/configs/mx6sxsabresd_defconfig
index 8c6085e..f3437c9 100644
--- a/configs/mx6sxsabresd_defconfig
+++ b/configs/mx6sxsabresd_defconfig
@@ -8,5 +8,5 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/porter_defconfig b/configs/porter_defconfig
index 4b9a153..99ba1d5 100644
--- a/configs/porter_defconfig
+++ b/configs/porter_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_PORTER=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/silk_defconfig b/configs/silk_defconfig
index d1db8ab..d7ddcb8 100644
--- a/configs/silk_defconfig
+++ b/configs/silk_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_SILK=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/stout_defconfig b/configs/stout_defconfig
index c2ba137..60896de 100644
--- a/configs/stout_defconfig
+++ b/configs/stout_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_STOUT=y
 CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/zynq_zc702_defconfig b/configs/zynq_zc702_defconfig
index cddb49b..f1d169f 100644
--- a/configs/zynq_zc702_defconfig
+++ b/configs/zynq_zc702_defconfig
@@ -15,7 +15,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/zynq_zc706_defconfig b/configs/zynq_zc706_defconfig
index 9991081..d250cc8 100644
--- a/configs/zynq_zc706_defconfig
+++ b/configs/zynq_zc706_defconfig
@@ -16,7 +16,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/zynq_zc770_xm010_defconfig b/configs/zynq_zc770_xm010_defconfig
index 995b700..b17e9b8 100644
--- a/configs/zynq_zc770_xm010_defconfig
+++ b/configs/zynq_zc770_xm010_defconfig
@@ -17,7 +17,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
diff --git a/configs/zynq_zc770_xm013_defconfig b/configs/zynq_zc770_xm013_defconfig
index 7ffc7b8..1e57040 100644
--- a/configs/zynq_zc770_xm013_defconfig
+++ b/configs/zynq_zc770_xm013_defconfig
@@ -16,6 +16,6 @@ CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig
index a595075..4783c20 100644
--- a/configs/zynq_zed_defconfig
+++ b/configs/zynq_zed_defconfig
@@ -16,7 +16,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/doc/SPI/README.ti_qspi_dra_test b/doc/SPI/README.ti_qspi_dra_test
index fe37857..bff1be1 100644
--- a/doc/SPI/README.ti_qspi_dra_test
+++ b/doc/SPI/README.ti_qspi_dra_test
@@ -22,7 +22,7 @@ Commands to erase/write u-boot/mlo to flash device
 --------------------------------------------------
 U-Boot# sf probe 0
 SF: Detected S25FL256S_64K with page size 256 Bytes, erase size 64 KiB, total 32 MiB, mapped at 5c000000
-SF: Warning - Only lower 16MiB accessible, Full access #define CONFIG_SPI_FLASH_BAR
+SF: Warning - Only lower 16MiB accessible, Full access #define CONFIG_SPI_NOR_BAR
 U-Boot# sf erase 0 0x10000
 SF: 65536 bytes @ 0x0 Erased: OK
 U-Boot# sf erase 0x20000 0x10000
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index cb8d929..1c4cb72 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -38,7 +38,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define SEQID_PP		6
 #define SEQID_RDID		7
 #define SEQID_BE_4K		8
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 #define SEQID_BRRD		9
 #define SEQID_BRWR		10
 #define SEQID_RDEAR		11
@@ -178,7 +178,7 @@ static void qspi_set_lut(struct fsl_qspi_priv *priv)
 
 	/* Fast Read */
 	lut_base = SEQID_FAST_READ * 4;
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	qspi_write32(priv->flags, &regs->lut[lut_base],
 		     OPRND0(QSPI_CMD_FAST_READ) | PAD0(LUT_PAD1) |
 		     INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
@@ -214,7 +214,7 @@ static void qspi_set_lut(struct fsl_qspi_priv *priv)
 
 	/* Erase a sector */
 	lut_base = SEQID_SE * 4;
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	qspi_write32(priv->flags, &regs->lut[lut_base], OPRND0(QSPI_CMD_SE) |
 		     PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
 		     PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
@@ -245,7 +245,7 @@ static void qspi_set_lut(struct fsl_qspi_priv *priv)
 
 	/* Page Program */
 	lut_base = SEQID_PP * 4;
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	qspi_write32(priv->flags, &regs->lut[lut_base], OPRND0(QSPI_CMD_PP) |
 		     PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
 		     PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
@@ -291,7 +291,7 @@ static void qspi_set_lut(struct fsl_qspi_priv *priv)
 		     PAD0(LUT_PAD1) | INSTR0(LUT_CMD) | OPRND1(ADDR24BIT) |
 		     PAD1(LUT_PAD1) | INSTR1(LUT_ADDR));
 
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	/*
 	 * BRRD BRWR RDEAR WREAR are all supported, because it is hard to
 	 * dynamically check whether to set BRRD BRWR or RDEAR WREAR during
@@ -430,7 +430,7 @@ static void qspi_init_ahb_read(struct fsl_qspi_priv *priv)
 }
 #endif
 
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 /* Bank register read/write, EAR register read/write */
 static void qspi_op_rdbank(struct fsl_qspi_priv *priv, u8 *rxbuf, u32 len)
 {
@@ -601,7 +601,7 @@ static void qspi_op_write(struct fsl_qspi_priv *priv, u8 *txbuf, u32 len)
 
 	/* Default is page programming */
 	seqid = SEQID_PP;
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	if (priv->cur_seqid == QSPI_CMD_BRWR)
 		seqid = SEQID_BRWR;
 	else if (priv->cur_seqid == QSPI_CMD_WREAR)
@@ -735,7 +735,7 @@ int qspi_xfer(struct fsl_qspi_priv *priv, unsigned int bitlen,
 			wr_sfaddr = swab32(txbuf) & OFFSET_BITS_MASK;
 		} else if ((priv->cur_seqid == QSPI_CMD_BRWR) ||
 			 (priv->cur_seqid == QSPI_CMD_WREAR)) {
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 			wr_sfaddr = 0;
 #endif
 		}
@@ -752,7 +752,7 @@ int qspi_xfer(struct fsl_qspi_priv *priv, unsigned int bitlen,
 			qspi_op_rdid(priv, din, bytes);
 		else if (priv->cur_seqid == QSPI_CMD_RDSR)
 			qspi_op_rdsr(priv, din, bytes);
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 		else if ((priv->cur_seqid == QSPI_CMD_BRRD) ||
 			 (priv->cur_seqid == QSPI_CMD_RDEAR)) {
 			priv->sf_addr = 0;
diff --git a/include/configs/T102xQDS.h b/include/configs/T102xQDS.h
index 7031fba..6e9da7e 100644
--- a/include/configs/T102xQDS.h
+++ b/include/configs/T102xQDS.h
@@ -575,7 +575,7 @@ unsigned long get_board_ddr_clk(void);
 #ifndef CONFIG_SPL_BUILD
 #endif
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_SPEED	 10000000
 #define CONFIG_SF_DEFAULT_MODE	  0
 
diff --git a/include/configs/T102xRDB.h b/include/configs/T102xRDB.h
index 96498a1..6f47844 100644
--- a/include/configs/T102xRDB.h
+++ b/include/configs/T102xRDB.h
@@ -565,7 +565,7 @@ unsigned long get_board_ddr_clk(void);
 #elif defined(CONFIG_T1023RDB)
 #endif
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_SPEED	10000000
 #define CONFIG_SF_DEFAULT_MODE	0
 
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index cc2dae1..e3ad2e7 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -529,7 +529,7 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg
 /*
  * eSPI - Enhanced SPI
  */
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED         10000000
 #define CONFIG_SF_DEFAULT_MODE          0
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index 82db256..59011c2 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -546,7 +546,7 @@ unsigned long get_board_ddr_clk(void);
 #endif
 
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_SPEED	 10000000
 #define CONFIG_SF_DEFAULT_MODE	  0
 #endif
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index ee8fccd..66319c7 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -496,7 +496,7 @@ unsigned long get_board_ddr_clk(void);
  * eSPI - Enhanced SPI
  */
 #ifdef CONFIG_MTD_SPI_NOR
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED	 10000000
 #define CONFIG_SF_DEFAULT_MODE	  0
diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
index 3d479db..6d62f38 100644
--- a/include/configs/gw_ventana.h
+++ b/include/configs/gw_ventana.h
@@ -68,7 +68,7 @@
 #define CONFIG_CMD_SF
 #ifdef CONFIG_CMD_SF
   #define CONFIG_MXC_SPI
-  #define CONFIG_SPI_FLASH_BAR
+  #define CONFIG_SPI_NOR_BAR
   #define CONFIG_SF_DEFAULT_BUS              0
   #define CONFIG_SF_DEFAULT_CS               0
 					     /* GPIO 3-19 (21248) */
diff --git a/include/configs/km/kmp204x-common.h b/include/configs/km/kmp204x-common.h
index d981951..5501238 100644
--- a/include/configs/km/kmp204x-common.h
+++ b/include/configs/km/kmp204x-common.h
@@ -287,7 +287,7 @@ int get_scl(void);
 /*
  * eSPI - Enhanced SPI
  */
-#define CONFIG_SPI_FLASH_BAR	/* 4 byte-addressing */
+#define CONFIG_SPI_NOR_BAR	/* 4 byte-addressing */
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED         20000000
 #define CONFIG_SF_DEFAULT_MODE          0
diff --git a/include/configs/ls2080ardb.h b/include/configs/ls2080ardb.h
index b53bb76..65cc273 100644
--- a/include/configs/ls2080ardb.h
+++ b/include/configs/ls2080ardb.h
@@ -259,7 +259,7 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_CMD_SF
 #define CONFIG_MTD_SPI_NOR
 #define CONFIG_MTD_M25P80
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #endif
 
 /*
diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
index 4707a9b..683af6d 100644
--- a/include/configs/mx6ul_14x14_evk.h
+++ b/include/configs/mx6ul_14x14_evk.h
@@ -199,7 +199,7 @@
 #define CONFIG_CMD_SF
 #define CONFIG_MTD_SPI_NOR
 #define CONFIG_MTD_M25P80
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
 #define CONFIG_SF_DEFAULT_SPEED	40000000
diff --git a/include/configs/mx7dsabresd.h b/include/configs/mx7dsabresd.h
index d28cc97..c824d28 100644
--- a/include/configs/mx7dsabresd.h
+++ b/include/configs/mx7dsabresd.h
@@ -290,7 +290,7 @@
 #define CONFIG_MTD_SPI_NOR
 #define CONFIG_MTD_M25P80
 #define CONFIG_SPI_FLASH_MACRONIX
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
 #define CONFIG_SF_DEFAULT_SPEED		40000000
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index ad18fed..7b1dcc6 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -93,7 +93,7 @@
 #define CONFIG_CMD_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED		30000000
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 /*
  * The base address is configurable in QSys, each board must specify the
  * base address based on it's particular FPGA configuration. Please note
@@ -218,7 +218,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 #endif
 #define CONFIG_CQSPI_DECODER		0
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_SPI_NOR_BAR
 
 /*
  * Designware SPI support
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index 4f2e8bc..8b46b93 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -205,7 +205,7 @@ struct spi_nor {
 	u8			read_opcode;
 	u8			read_dummy;
 	u8			program_opcode;
-#ifdef CONFIG_SPI_FLASH_BAR
+#ifdef CONFIG_SPI_NOR_BAR
 	u8			bar_read_opcode;
 	u8			bar_program_opcode;
 	u8			bank_curr;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 62/87] configs: spi-nor: Add new flash vendor configs
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (59 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 61/87] configs: Use CONFIG_SPI_NOR_BAR Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 63/87] mtd: spi-nor: Add CONFIG_SPI_NOR_MISC Jagan Teki
                   ` (24 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

- CONFIG_SPI_FLASH_MACRONIX
+ CONFIG_SPI_NOR_MACRONIX
- CONFIG_SPI_FLASH_STMICRO
+ CONFIG_SPI_NOR_STMICRO
- CONFIG_SPI_FLASH_SPANSION
+ CONFIG_SPI_NOR_SPANSION
- CONFIG_SPI_FLASH_SST
+ CONFIG_SPI_NOR_SST
- CONFIG_SPI_FLASH_WINBOND
+ CONFIG_SPI_NOR_WINBOND

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/B4420QDS_NAND_defconfig                    |  2 +-
 configs/B4420QDS_SPIFLASH_defconfig                |  2 +-
 configs/B4420QDS_defconfig                         |  2 +-
 configs/B4860QDS_NAND_defconfig                    |  2 +-
 configs/B4860QDS_SECURE_BOOT_defconfig             |  2 +-
 configs/B4860QDS_SPIFLASH_defconfig                |  2 +-
 configs/B4860QDS_SRIO_PCIE_BOOT_defconfig          |  2 +-
 configs/B4860QDS_defconfig                         |  2 +-
 configs/BSC9131RDB_NAND_SYSCLK100_defconfig        |  2 +-
 configs/BSC9131RDB_NAND_defconfig                  |  2 +-
 configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig    |  2 +-
 configs/BSC9131RDB_SPIFLASH_defconfig              |  2 +-
 configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig |  2 +-
 configs/BSC9132QDS_NAND_DDRCLK100_defconfig        |  2 +-
 configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig |  2 +-
 configs/BSC9132QDS_NAND_DDRCLK133_defconfig        |  2 +-
 configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig  |  2 +-
 configs/BSC9132QDS_NOR_DDRCLK100_defconfig         |  2 +-
 configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig  |  2 +-
 configs/BSC9132QDS_NOR_DDRCLK133_defconfig         |  2 +-
 .../BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig   |  2 +-
 configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig      |  2 +-
 .../BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig   |  2 +-
 configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig      |  2 +-
 .../BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig |  2 +-
 configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig    |  2 +-
 .../BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig |  2 +-
 configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig    |  2 +-
 configs/C29XPCIE_NAND_defconfig                    |  2 +-
 configs/C29XPCIE_NOR_SECBOOT_defconfig             |  2 +-
 configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig        |  2 +-
 configs/C29XPCIE_SPIFLASH_defconfig                |  2 +-
 configs/C29XPCIE_defconfig                         |  2 +-
 configs/M52277EVB_defconfig                        |  2 +-
 configs/M52277EVB_stmicro_defconfig                |  2 +-
 configs/M54451EVB_defconfig                        |  2 +-
 configs/M54451EVB_stmicro_defconfig                |  2 +-
 configs/M54455EVB_a66_defconfig                    |  2 +-
 configs/M54455EVB_defconfig                        |  2 +-
 configs/M54455EVB_i66_defconfig                    |  2 +-
 configs/M54455EVB_intel_defconfig                  |  2 +-
 configs/M54455EVB_stm33_defconfig                  |  2 +-
 configs/MPC8536DS_36BIT_defconfig                  |  2 +-
 configs/MPC8536DS_SDCARD_defconfig                 |  2 +-
 configs/MPC8536DS_SPIFLASH_defconfig               |  2 +-
 configs/MPC8536DS_defconfig                        |  2 +-
 configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig   |  2 +-
 configs/P1010RDB-PA_36BIT_NAND_defconfig           |  2 +-
 configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig    |  2 +-
 configs/P1010RDB-PA_36BIT_NOR_defconfig            |  2 +-
 configs/P1010RDB-PA_36BIT_SDCARD_defconfig         |  2 +-
 .../P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig   |  2 +-
 configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig       |  2 +-
 configs/P1010RDB-PA_NAND_SECBOOT_defconfig         |  2 +-
 configs/P1010RDB-PA_NAND_defconfig                 |  2 +-
 configs/P1010RDB-PA_NOR_SECBOOT_defconfig          |  2 +-
 configs/P1010RDB-PA_NOR_defconfig                  |  2 +-
 configs/P1010RDB-PA_SDCARD_defconfig               |  2 +-
 configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig     |  2 +-
 configs/P1010RDB-PA_SPIFLASH_defconfig             |  2 +-
 configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig   |  2 +-
 configs/P1010RDB-PB_36BIT_NAND_defconfig           |  2 +-
 configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig    |  2 +-
 configs/P1010RDB-PB_36BIT_NOR_defconfig            |  2 +-
 configs/P1010RDB-PB_36BIT_SDCARD_defconfig         |  2 +-
 .../P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig   |  2 +-
 configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig       |  2 +-
 configs/P1010RDB-PB_NAND_SECBOOT_defconfig         |  2 +-
 configs/P1010RDB-PB_NAND_defconfig                 |  2 +-
 configs/P1010RDB-PB_NOR_SECBOOT_defconfig          |  2 +-
 configs/P1010RDB-PB_NOR_defconfig                  |  2 +-
 configs/P1010RDB-PB_SDCARD_defconfig               |  2 +-
 configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig     |  2 +-
 configs/P1010RDB-PB_SPIFLASH_defconfig             |  2 +-
 configs/P1020RDB-PC_36BIT_NAND_defconfig           |  2 +-
 configs/P1020RDB-PC_36BIT_SDCARD_defconfig         |  2 +-
 configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig       |  2 +-
 configs/P1020RDB-PC_36BIT_defconfig                |  2 +-
 configs/P1020RDB-PC_NAND_defconfig                 |  2 +-
 configs/P1020RDB-PC_SDCARD_defconfig               |  2 +-
 configs/P1020RDB-PC_SPIFLASH_defconfig             |  2 +-
 configs/P1020RDB-PC_defconfig                      |  2 +-
 configs/P1020RDB-PD_NAND_defconfig                 |  2 +-
 configs/P1020RDB-PD_SDCARD_defconfig               |  2 +-
 configs/P1020RDB-PD_SPIFLASH_defconfig             |  2 +-
 configs/P1020RDB-PD_defconfig                      |  2 +-
 configs/P1021RDB-PC_36BIT_NAND_defconfig           |  2 +-
 configs/P1021RDB-PC_36BIT_SDCARD_defconfig         |  2 +-
 configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig       |  2 +-
 configs/P1021RDB-PC_36BIT_defconfig                |  2 +-
 configs/P1021RDB-PC_NAND_defconfig                 |  2 +-
 configs/P1021RDB-PC_SDCARD_defconfig               |  2 +-
 configs/P1021RDB-PC_SPIFLASH_defconfig             |  2 +-
 configs/P1021RDB-PC_defconfig                      |  2 +-
 configs/P1022DS_36BIT_NAND_defconfig               |  2 +-
 configs/P1022DS_36BIT_SDCARD_defconfig             |  2 +-
 configs/P1022DS_36BIT_SPIFLASH_defconfig           |  2 +-
 configs/P1022DS_36BIT_defconfig                    |  2 +-
 configs/P1022DS_NAND_defconfig                     |  2 +-
 configs/P1022DS_SDCARD_defconfig                   |  2 +-
 configs/P1022DS_SPIFLASH_defconfig                 |  2 +-
 configs/P1022DS_defconfig                          |  2 +-
 configs/P1024RDB_36BIT_defconfig                   |  2 +-
 configs/P1024RDB_NAND_defconfig                    |  2 +-
 configs/P1024RDB_SDCARD_defconfig                  |  2 +-
 configs/P1024RDB_SPIFLASH_defconfig                |  2 +-
 configs/P1024RDB_defconfig                         |  2 +-
 configs/P1025RDB_36BIT_defconfig                   |  2 +-
 configs/P1025RDB_NAND_defconfig                    |  2 +-
 configs/P1025RDB_SDCARD_defconfig                  |  2 +-
 configs/P1025RDB_SPIFLASH_defconfig                |  2 +-
 configs/P1025RDB_defconfig                         |  2 +-
 configs/P2020RDB-PC_36BIT_NAND_defconfig           |  2 +-
 configs/P2020RDB-PC_36BIT_SDCARD_defconfig         |  2 +-
 configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig       |  2 +-
 configs/P2020RDB-PC_36BIT_defconfig                |  2 +-
 configs/P2020RDB-PC_NAND_defconfig                 |  2 +-
 configs/P2020RDB-PC_SDCARD_defconfig               |  2 +-
 configs/P2020RDB-PC_SPIFLASH_defconfig             |  2 +-
 configs/P2020RDB-PC_defconfig                      |  2 +-
 configs/P2041RDB_NAND_defconfig                    |  2 +-
 configs/P2041RDB_SDCARD_defconfig                  |  2 +-
 configs/P2041RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/P2041RDB_SPIFLASH_defconfig                |  2 +-
 configs/P2041RDB_SRIO_PCIE_BOOT_defconfig          |  2 +-
 configs/P2041RDB_defconfig                         |  2 +-
 configs/P3041DS_NAND_SECURE_BOOT_defconfig         |  2 +-
 configs/P3041DS_NAND_defconfig                     |  2 +-
 configs/P3041DS_SDCARD_defconfig                   |  2 +-
 configs/P3041DS_SECURE_BOOT_defconfig              |  2 +-
 configs/P3041DS_SPIFLASH_defconfig                 |  2 +-
 configs/P3041DS_SRIO_PCIE_BOOT_defconfig           |  2 +-
 configs/P3041DS_defconfig                          |  2 +-
 configs/P4080DS_SDCARD_defconfig                   |  2 +-
 configs/P4080DS_SECURE_BOOT_defconfig              |  2 +-
 configs/P4080DS_SPIFLASH_defconfig                 |  2 +-
 configs/P4080DS_SRIO_PCIE_BOOT_defconfig           |  2 +-
 configs/P4080DS_defconfig                          |  2 +-
 configs/P5020DS_NAND_SECURE_BOOT_defconfig         |  2 +-
 configs/P5020DS_NAND_defconfig                     |  2 +-
 configs/P5020DS_SDCARD_defconfig                   |  2 +-
 configs/P5020DS_SECURE_BOOT_defconfig              |  2 +-
 configs/P5020DS_SPIFLASH_defconfig                 |  2 +-
 configs/P5020DS_SRIO_PCIE_BOOT_defconfig           |  2 +-
 configs/P5020DS_defconfig                          |  2 +-
 configs/P5040DS_NAND_SECURE_BOOT_defconfig         |  2 +-
 configs/P5040DS_NAND_defconfig                     |  2 +-
 configs/P5040DS_SDCARD_defconfig                   |  2 +-
 configs/P5040DS_SECURE_BOOT_defconfig              |  2 +-
 configs/P5040DS_SPIFLASH_defconfig                 |  2 +-
 configs/P5040DS_defconfig                          |  2 +-
 configs/T1023RDB_NAND_defconfig                    |  2 +-
 configs/T1023RDB_SDCARD_defconfig                  |  2 +-
 configs/T1023RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/T1023RDB_SPIFLASH_defconfig                |  2 +-
 configs/T1023RDB_defconfig                         |  2 +-
 configs/T1024QDS_DDR4_SECURE_BOOT_defconfig        |  4 ++--
 configs/T1024QDS_DDR4_defconfig                    |  4 ++--
 configs/T1024QDS_NAND_defconfig                    |  4 ++--
 configs/T1024QDS_SDCARD_defconfig                  |  4 ++--
 configs/T1024QDS_SECURE_BOOT_defconfig             |  4 ++--
 configs/T1024QDS_SPIFLASH_defconfig                |  4 ++--
 configs/T1024QDS_defconfig                         |  4 ++--
 configs/T1024RDB_NAND_defconfig                    |  2 +-
 configs/T1024RDB_SDCARD_defconfig                  |  2 +-
 configs/T1024RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/T1024RDB_SPIFLASH_defconfig                |  2 +-
 configs/T1024RDB_defconfig                         |  2 +-
 configs/T1040D4RDB_NAND_defconfig                  |  2 +-
 configs/T1040D4RDB_SDCARD_defconfig                |  2 +-
 configs/T1040D4RDB_SECURE_BOOT_defconfig           |  2 +-
 configs/T1040D4RDB_SPIFLASH_defconfig              |  2 +-
 configs/T1040D4RDB_defconfig                       |  2 +-
 configs/T1040QDS_DDR4_defconfig                    |  4 ++--
 configs/T1040QDS_SECURE_BOOT_defconfig             |  4 ++--
 configs/T1040QDS_defconfig                         |  4 ++--
 configs/T1040RDB_NAND_defconfig                    |  2 +-
 configs/T1040RDB_SDCARD_defconfig                  |  2 +-
 configs/T1040RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/T1040RDB_SPIFLASH_defconfig                |  2 +-
 configs/T1040RDB_defconfig                         |  2 +-
 configs/T1042D4RDB_NAND_defconfig                  |  2 +-
 configs/T1042D4RDB_SDCARD_defconfig                |  2 +-
 configs/T1042D4RDB_SECURE_BOOT_defconfig           |  2 +-
 configs/T1042D4RDB_SPIFLASH_defconfig              |  2 +-
 configs/T1042D4RDB_defconfig                       |  2 +-
 configs/T1042RDB_PI_NAND_defconfig                 |  2 +-
 configs/T1042RDB_PI_SDCARD_defconfig               |  2 +-
 configs/T1042RDB_PI_SPIFLASH_defconfig             |  2 +-
 configs/T1042RDB_PI_defconfig                      |  2 +-
 configs/T1042RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/T1042RDB_defconfig                         |  2 +-
 configs/T2080QDS_NAND_defconfig                    |  4 ++--
 configs/T2080QDS_SDCARD_defconfig                  |  4 ++--
 configs/T2080QDS_SECURE_BOOT_defconfig             |  4 ++--
 configs/T2080QDS_SPIFLASH_defconfig                |  4 ++--
 configs/T2080QDS_SRIO_PCIE_BOOT_defconfig          |  4 ++--
 configs/T2080QDS_defconfig                         |  4 ++--
 configs/T2080RDB_NAND_defconfig                    |  2 +-
 configs/T2080RDB_SDCARD_defconfig                  |  2 +-
 configs/T2080RDB_SECURE_BOOT_defconfig             |  2 +-
 configs/T2080RDB_SPIFLASH_defconfig                |  2 +-
 configs/T2080RDB_SRIO_PCIE_BOOT_defconfig          |  2 +-
 configs/T2080RDB_defconfig                         |  2 +-
 configs/T2081QDS_NAND_defconfig                    |  4 ++--
 configs/T2081QDS_SDCARD_defconfig                  |  4 ++--
 configs/T2081QDS_SPIFLASH_defconfig                |  4 ++--
 configs/T2081QDS_SRIO_PCIE_BOOT_defconfig          |  4 ++--
 configs/T2081QDS_defconfig                         |  4 ++--
 configs/T4160QDS_NAND_defconfig                    |  2 +-
 configs/T4160QDS_SDCARD_defconfig                  |  2 +-
 configs/T4160QDS_SECURE_BOOT_defconfig             |  2 +-
 configs/T4160QDS_defconfig                         |  2 +-
 configs/T4160RDB_defconfig                         |  2 +-
 configs/T4240QDS_NAND_defconfig                    |  2 +-
 configs/T4240QDS_SDCARD_defconfig                  |  2 +-
 configs/T4240QDS_SECURE_BOOT_defconfig             |  2 +-
 configs/T4240QDS_SRIO_PCIE_BOOT_defconfig          |  2 +-
 configs/T4240QDS_defconfig                         |  2 +-
 configs/T4240RDB_SDCARD_defconfig                  |  2 +-
 configs/T4240RDB_defconfig                         |  2 +-
 configs/UCP1020_SPIFLASH_defconfig                 |  6 +++---
 configs/UCP1020_defconfig                          |  6 +++---
 configs/alt_defconfig                              |  2 +-
 configs/am335x_boneblack_defconfig                 |  2 +-
 configs/am335x_boneblack_vboot_defconfig           |  2 +-
 configs/am335x_evm_defconfig                       |  2 +-
 configs/am335x_evm_nor_defconfig                   |  2 +-
 configs/am335x_evm_norboot_defconfig               |  2 +-
 configs/am335x_evm_spiboot_defconfig               |  2 +-
 configs/am335x_evm_usbspl_defconfig                |  2 +-
 configs/am335x_gp_evm_defconfig                    |  2 +-
 configs/am437x_gp_evm_defconfig                    |  2 +-
 configs/am437x_sk_evm_defconfig                    |  2 +-
 configs/am43xx_evm_defconfig                       |  2 +-
 configs/am43xx_evm_ethboot_defconfig               |  2 +-
 configs/am43xx_evm_qspiboot_defconfig              |  2 +-
 configs/am43xx_evm_usbhost_boot_defconfig          |  2 +-
 configs/aristainetos2_defconfig                    |  2 +-
 configs/aristainetos2b_defconfig                   |  2 +-
 configs/aristainetos_defconfig                     |  2 +-
 configs/axm_defconfig                              |  2 +-
 configs/bayleybay_defconfig                        |  4 ++--
 configs/beaver_defconfig                           |  2 +-
 configs/bf518f-ezbrd_defconfig                     |  4 ++--
 configs/bf526-ezbrd_defconfig                      |  2 +-
 configs/bf527-ad7160-eval_defconfig                |  2 +-
 configs/bf527-ezkit-v2_defconfig                   |  2 +-
 configs/bf527-ezkit_defconfig                      |  2 +-
 configs/bf527-sdp_defconfig                        | 10 ++++-----
 configs/bf537-minotaur_defconfig                   |  2 +-
 configs/bf537-pnav_defconfig                       |  2 +-
 configs/bf537-srv1_defconfig                       |  2 +-
 configs/bf537-stamp_defconfig                      | 10 ++++-----
 configs/bf548-ezkit_defconfig                      |  2 +-
 configs/bf609-ezkit_defconfig                      | 10 ++++-----
 configs/bg0900_defconfig                           |  2 +-
 configs/birdland_bav335a_defconfig                 |  2 +-
 configs/birdland_bav335b_defconfig                 |  2 +-
 configs/blackstamp_defconfig                       |  2 +-
 configs/blackvme_defconfig                         |  2 +-
 configs/br4_defconfig                              |  2 +-
 configs/cardhu_defconfig                           |  2 +-
 configs/chromebook_link_defconfig                  |  4 ++--
 configs/chromebook_samus_defconfig                 |  4 ++--
 configs/chromebox_panther_defconfig                |  4 ++--
 configs/cm_fx6_defconfig                           | 10 ++++-----
 configs/cm_t43_defconfig                           | 10 ++++-----
 configs/conga-qeval20-qa3-e3845_defconfig          |  6 +++---
 .../controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  |  2 +-
 configs/controlcenterd_36BIT_SDCARD_defconfig      |  2 +-
 configs/coreboot-x86_defconfig                     |  4 ++--
 configs/cougarcanyon2_defconfig                    |  2 +-
 configs/crownbay_defconfig                         |  6 +++---
 configs/d2net_v2_defconfig                         |  2 +-
 configs/da850_am18xxevm_defconfig                  |  4 ++--
 configs/da850evm_defconfig                         |  4 ++--
 configs/da850evm_direct_nor_defconfig              |  4 ++--
 configs/dalmore_defconfig                          |  2 +-
 configs/db-88f6820-gp_defconfig                    |  4 ++--
 configs/db-mv784mp-gp_defconfig                    |  4 ++--
 configs/dra72_evm_defconfig                        |  2 +-
 configs/dra74_evm_defconfig                        |  2 +-
 configs/dra7xx_evm_defconfig                       |  2 +-
 configs/dra7xx_evm_qspiboot_defconfig              |  2 +-
 configs/dra7xx_evm_uart3_defconfig                 |  2 +-
 configs/draco_defconfig                            |  2 +-
 configs/dreamplug_defconfig                        |  2 +-
 configs/ds414_defconfig                            |  2 +-
 configs/e2220-1170_defconfig                       |  2 +-
 configs/ea20_defconfig                             |  2 +-
 configs/galileo_defconfig                          |  4 ++--
 configs/gose_defconfig                             |  2 +-
 configs/gplugd_defconfig                           |  2 +-
 configs/inetspace_v2_defconfig                     |  2 +-
 configs/ip04_defconfig                             |  4 ++--
 configs/jetson-tk1_defconfig                       |  2 +-
 configs/k2e_evm_defconfig                          |  2 +-
 configs/k2g_evm_defconfig                          |  2 +-
 configs/k2hk_evm_defconfig                         |  2 +-
 configs/k2l_evm_defconfig                          |  2 +-
 configs/km_kirkwood_128m16_defconfig               |  2 +-
 configs/km_kirkwood_defconfig                      |  2 +-
 configs/km_kirkwood_pci_defconfig                  |  2 +-
 configs/kmcoge4_defconfig                          |  4 ++--
 configs/kmcoge5un_defconfig                        |  2 +-
 configs/kmlion1_defconfig                          |  4 ++--
 configs/kmnusa_defconfig                           |  2 +-
 configs/kmsugp1_defconfig                          |  2 +-
 configs/kmsuv31_defconfig                          |  2 +-
 configs/koelsch_defconfig                          |  2 +-
 configs/lager_defconfig                            |  2 +-
 configs/legoev3_defconfig                          |  2 +-
 configs/ls1021aqds_qspi_defconfig                  |  2 +-
 configs/ls1021aqds_sdcard_qspi_defconfig           |  2 +-
 configs/ls1021atwr_qspi_defconfig                  |  2 +-
 configs/ls1021atwr_sdcard_qspi_defconfig           |  2 +-
 configs/lschlv2_defconfig                          |  2 +-
 configs/lsxhl_defconfig                            |  2 +-
 configs/m28evk_defconfig                           |  2 +-
 configs/marsboard_defconfig                        |  2 +-
 configs/maxbcm_defconfig                           |  6 +++---
 configs/mgcoge3un_defconfig                        |  2 +-
 configs/minnowmax_defconfig                        |  6 +++---
 configs/mx28evk_auart_console_defconfig            |  2 +-
 configs/mx28evk_defconfig                          |  2 +-
 configs/mx28evk_nand_defconfig                     |  2 +-
 configs/mx28evk_spi_defconfig                      |  2 +-
 configs/mx6dlsabreauto_defconfig                   |  2 +-
 configs/mx6dlsabresd_defconfig                     |  2 +-
 configs/mx6qpsabreauto_defconfig                   |  2 +-
 configs/mx6qsabreauto_defconfig                    |  2 +-
 configs/mx6qsabrelite_defconfig                    |  2 +-
 configs/mx6qsabresd_defconfig                      |  2 +-
 configs/mx6sabresd_spl_defconfig                   |  2 +-
 configs/mx6slevk_defconfig                         |  2 +-
 configs/mx6slevk_spinor_defconfig                  |  2 +-
 configs/mx6slevk_spl_defconfig                     |  2 +-
 configs/mx6sxsabreauto_defconfig                   |  2 +-
 configs/net2big_v2_defconfig                       |  2 +-
 configs/netspace_lite_v2_defconfig                 |  2 +-
 configs/netspace_max_v2_defconfig                  |  2 +-
 configs/netspace_mini_v2_defconfig                 |  2 +-
 configs/netspace_v2_defconfig                      |  2 +-
 configs/nitrogen6dl2g_defconfig                    |  2 +-
 configs/nitrogen6dl_defconfig                      |  2 +-
 configs/nitrogen6q2g_defconfig                     |  2 +-
 configs/nitrogen6q_defconfig                       |  2 +-
 configs/nitrogen6s1g_defconfig                     |  2 +-
 configs/nitrogen6s_defconfig                       |  2 +-
 configs/nyan-big_defconfig                         |  2 +-
 configs/omapl138_lcdk_defconfig                    |  4 ++--
 configs/ot1200_defconfig                           |  8 ++++----
 configs/ot1200_spl_defconfig                       |  8 ++++----
 configs/p2371-0000_defconfig                       |  2 +-
 configs/p2371-2180_defconfig                       |  2 +-
 configs/p2571_defconfig                            |  2 +-
 configs/pcm051_rev1_defconfig                      |  2 +-
 configs/pcm051_rev3_defconfig                      |  2 +-
 configs/peach-pi_defconfig                         |  2 +-
 configs/peach-pit_defconfig                        |  2 +-
 configs/porter_defconfig                           |  2 +-
 configs/portl2_defconfig                           |  2 +-
 configs/pr1_defconfig                              |  2 +-
 configs/pxm2_defconfig                             |  2 +-
 configs/qemu-x86_defconfig                         |  4 ++--
 configs/rastaban_defconfig                         |  2 +-
 configs/riotboard_defconfig                        |  2 +-
 configs/rut_defconfig                              |  2 +-
 configs/sandbox_defconfig                          | 10 ++++-----
 configs/sh7752evb_defconfig                        |  4 ++--
 configs/sh7753evb_defconfig                        |  4 ++--
 configs/sh7757lcr_defconfig                        |  2 +-
 configs/silk_defconfig                             |  2 +-
 configs/smdk5250_defconfig                         |  2 +-
 configs/smdk5420_defconfig                         |  2 +-
 configs/snow_defconfig                             |  2 +-
 configs/socfpga_arria5_defconfig                   |  4 ++--
 configs/socfpga_cyclone5_defconfig                 |  4 ++--
 configs/socfpga_sockit_defconfig                   |  4 ++--
 configs/socfpga_socrates_defconfig                 |  4 ++--
 configs/socfpga_sr1500_defconfig                   |  2 +-
 configs/spring_defconfig                           |  2 +-
 configs/stout_defconfig                            |  2 +-
 configs/stv0991_defconfig                          |  4 ++--
 configs/taurus_defconfig                           |  2 +-
 configs/tec-ng_defconfig                           |  2 +-
 configs/theadorable_debug_defconfig                |  4 ++--
 configs/theadorable_defconfig                      |  4 ++--
 configs/thuban_defconfig                           |  2 +-
 configs/tqma6q_mba6_mmc_defconfig                  |  2 +-
 configs/tqma6q_mba6_spi_defconfig                  |  2 +-
 configs/tqma6s_mba6_mmc_defconfig                  |  2 +-
 configs/tqma6s_mba6_spi_defconfig                  |  2 +-
 configs/trimslice_defconfig                        |  2 +-
 configs/tseries_spi_defconfig                      |  2 +-
 configs/venice2_defconfig                          |  2 +-
 configs/zynq_microzed_defconfig                    |  6 +++---
 configs/zynq_zc702_defconfig                       |  6 +++---
 configs/zynq_zc706_defconfig                       |  6 +++---
 configs/zynq_zc770_xm010_defconfig                 |  8 ++++----
 configs/zynq_zed_defconfig                         |  6 +++---
 configs/zynq_zybo_defconfig                        |  2 +-
 drivers/mtd/spi-nor/Kconfig                        | 10 ++++-----
 drivers/mtd/spi-nor/spi-nor-ids.c                  | 12 +++++------
 drivers/mtd/spi-nor/spi-nor.c                      | 24 +++++++++++-----------
 include/configs/cgtqmx6eval.h                      |  4 ++--
 include/configs/clearfog.h                         |  2 +-
 include/configs/ls1043a_common.h                   |  4 ++--
 include/configs/ls1043aqds.h                       |  2 +-
 include/configs/mx6ul_14x14_evk.h                  |  2 +-
 include/configs/mx7dsabresd.h                      |  2 +-
 include/configs/vinco.h                            |  2 +-
 413 files changed, 535 insertions(+), 535 deletions(-)

diff --git a/configs/B4420QDS_NAND_defconfig b/configs/B4420QDS_NAND_defconfig
index c343a26..ae70771 100644
--- a/configs/B4420QDS_NAND_defconfig
+++ b/configs/B4420QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4420QDS_SPIFLASH_defconfig b/configs/B4420QDS_SPIFLASH_defconfig
index a0486c0..227a78f 100644
--- a/configs/B4420QDS_SPIFLASH_defconfig
+++ b/configs/B4420QDS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4420QDS_defconfig b/configs/B4420QDS_defconfig
index 8490edf..f63e6a2 100644
--- a/configs/B4420QDS_defconfig
+++ b/configs/B4420QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4420"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4860QDS_NAND_defconfig b/configs/B4860QDS_NAND_defconfig
index 108af5d..5619653 100644
--- a/configs/B4860QDS_NAND_defconfig
+++ b/configs/B4860QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4860QDS_SECURE_BOOT_defconfig b/configs/B4860QDS_SECURE_BOOT_defconfig
index 5ae9de8..d83b556 100644
--- a/configs/B4860QDS_SECURE_BOOT_defconfig
+++ b/configs/B4860QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4860QDS_SPIFLASH_defconfig b/configs/B4860QDS_SPIFLASH_defconfig
index 0bb8c60..9178465 100644
--- a/configs/B4860QDS_SPIFLASH_defconfig
+++ b/configs/B4860QDS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
index 963a942..aed2834 100644
--- a/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/B4860QDS_defconfig b/configs/B4860QDS_defconfig
index 04f0672..463509f 100644
--- a/configs/B4860QDS_defconfig
+++ b/configs/B4860QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9131RDB_NAND_SYSCLK100_defconfig b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
index 98b2c75..e6fca8b 100644
--- a/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
+++ b/configs/BSC9131RDB_NAND_SYSCLK100_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND,SYS_CLK_100"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/BSC9131RDB_NAND_defconfig b/configs/BSC9131RDB_NAND_defconfig
index a146494..2c629dc 100644
--- a/configs/BSC9131RDB_NAND_defconfig
+++ b/configs/BSC9131RDB_NAND_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,NAND"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
index 69718ad..0419fe7 100644
--- a/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
+++ b/configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH,SYS_CLK_100"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/BSC9131RDB_SPIFLASH_defconfig b/configs/BSC9131RDB_SPIFLASH_defconfig
index 6673920..b05a08e 100644
--- a/configs/BSC9131RDB_SPIFLASH_defconfig
+++ b/configs/BSC9131RDB_SPIFLASH_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9131RDB,SPIFLASH"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
index d9726ab..61c5b68 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOO
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK100_defconfig b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
index 69bcfd7..ba5a993 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK100_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_100"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
index 0cee1d6..c4fd576 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOO
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NAND_DDRCLK133_defconfig b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
index d512def..6ac6723 100644
--- a/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_NAND_DDRCLK133_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND,SYS_CLK_100_DDR_133"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
index d8653ca..ed49565 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK100_defconfig b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
index 09677c2..9f77c5d 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK100_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
index 1f7955e..28585f5 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_NOR_DDRCLK133_defconfig b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
index 3f2097d..225ca20 100644
--- a/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_NOR_DDRCLK133_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
index bc8bffd..a133197 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
index b997cb0..f70f3ca 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
index b1c287e..4f87f3e 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
index 3d5f683..d8b0f68 100644
--- a/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
index 4de2c88..5d531b2 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
index 867a3c0..acde19f 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
index 45c3442..6d72833 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
index ed738f7..aeb41dc 100644
--- a/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
+++ b/configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/C29XPCIE_NAND_defconfig b/configs/C29XPCIE_NAND_defconfig
index 8f927ee..61ac704 100644
--- a/configs/C29XPCIE_NAND_defconfig
+++ b/configs/C29XPCIE_NAND_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/C29XPCIE_NOR_SECBOOT_defconfig b/configs/C29XPCIE_NOR_SECBOOT_defconfig
index 291051d..9f816ff 100644
--- a/configs/C29XPCIE_NOR_SECBOOT_defconfig
+++ b/configs/C29XPCIE_NOR_SECBOOT_defconfig
@@ -11,7 +11,7 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
index 5035b66..e0dc4cc 100644
--- a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
@@ -11,7 +11,7 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/C29XPCIE_SPIFLASH_defconfig b/configs/C29XPCIE_SPIFLASH_defconfig
index 9e553c8..fb593cf 100644
--- a/configs/C29XPCIE_SPIFLASH_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/C29XPCIE_defconfig b/configs/C29XPCIE_defconfig
index d421a5e..d139716 100644
--- a/configs/C29XPCIE_defconfig
+++ b/configs/C29XPCIE_defconfig
@@ -9,7 +9,7 @@ CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/M52277EVB_defconfig b/configs/M52277EVB_defconfig
index 9683bb9..7727a19 100644
--- a/configs/M52277EVB_defconfig
+++ b/configs/M52277EVB_defconfig
@@ -8,4 +8,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M52277EVB_stmicro_defconfig b/configs/M52277EVB_stmicro_defconfig
index 7ca2611..51ac12b 100644
--- a/configs/M52277EVB_stmicro_defconfig
+++ b/configs/M52277EVB_stmicro_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT"
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54451EVB_defconfig b/configs/M54451EVB_defconfig
index 62cf895..6a7acfe 100644
--- a/configs/M54451EVB_defconfig
+++ b/configs/M54451EVB_defconfig
@@ -8,4 +8,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54451EVB_stmicro_defconfig b/configs/M54451EVB_stmicro_defconfig
index 447a506..0abe9da 100644
--- a/configs/M54451EVB_stmicro_defconfig
+++ b/configs/M54451EVB_stmicro_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT,SYS_INPUT_CLKSRC=24000000"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54455EVB_a66_defconfig b/configs/M54455EVB_a66_defconfig
index f9d6f73..e80d40b 100644
--- a/configs/M54455EVB_a66_defconfig
+++ b/configs/M54455EVB_a66_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_INPUT_CLKSRC=66666666"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54455EVB_defconfig b/configs/M54455EVB_defconfig
index b9275b0..49bf46b 100644
--- a/configs/M54455EVB_defconfig
+++ b/configs/M54455EVB_defconfig
@@ -8,4 +8,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54455EVB_i66_defconfig b/configs/M54455EVB_i66_defconfig
index ddba2d5..34ad0a0 100644
--- a/configs/M54455EVB_i66_defconfig
+++ b/configs/M54455EVB_i66_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=66666666"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54455EVB_intel_defconfig b/configs/M54455EVB_intel_defconfig
index d3312c5..95b9623 100644
--- a/configs/M54455EVB_intel_defconfig
+++ b/configs/M54455EVB_intel_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=33333333"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/M54455EVB_stm33_defconfig b/configs/M54455EVB_stm33_defconfig
index c3a4bb0..b896dcc 100644
--- a/configs/M54455EVB_stm33_defconfig
+++ b/configs/M54455EVB_stm33_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_EXTRA_OPTIONS="SYS_STMICRO_BOOT,CF_SBF,SYS_INPUT_CLKSRC=33333333"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/MPC8536DS_36BIT_defconfig b/configs/MPC8536DS_36BIT_defconfig
index 77ac30d..004c230 100644
--- a/configs/MPC8536DS_36BIT_defconfig
+++ b/configs/MPC8536DS_36BIT_defconfig
@@ -6,7 +6,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/MPC8536DS_SDCARD_defconfig b/configs/MPC8536DS_SDCARD_defconfig
index 1413b63..654fee8 100644
--- a/configs/MPC8536DS_SDCARD_defconfig
+++ b/configs/MPC8536DS_SDCARD_defconfig
@@ -6,7 +6,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/MPC8536DS_SPIFLASH_defconfig b/configs/MPC8536DS_SPIFLASH_defconfig
index 2ab025c..e9722ba 100644
--- a/configs/MPC8536DS_SPIFLASH_defconfig
+++ b/configs/MPC8536DS_SPIFLASH_defconfig
@@ -6,7 +6,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/MPC8536DS_defconfig b/configs/MPC8536DS_defconfig
index 08e4785..8f0af18 100644
--- a/configs/MPC8536DS_defconfig
+++ b/configs/MPC8536DS_defconfig
@@ -5,7 +5,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
index 0ed30f8..8e56422 100644
--- a/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_NAND_defconfig b/configs/P1010RDB-PA_36BIT_NAND_defconfig
index 90077ac..cd9eae2 100644
--- a/configs/P1010RDB-PA_36BIT_NAND_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
index 2f806e9..73c4278 100644
--- a/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_NOR_defconfig b/configs/P1010RDB-PA_36BIT_NOR_defconfig
index 2d93cf8..29a33d1 100644
--- a/configs/P1010RDB-PA_36BIT_NOR_defconfig
+++ b/configs/P1010RDB-PA_36BIT_NOR_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_SDCARD_defconfig b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
index 7d33d4b..7680579 100644
--- a/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
index 34b37f8..2ee381f 100644
--- a/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
index be401df..19749ac 100644
--- a/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_NAND_SECBOOT_defconfig b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
index aa42783..4f34202 100644
--- a/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_NAND_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_NAND_defconfig b/configs/P1010RDB-PA_NAND_defconfig
index 6e1fb61..f873084 100644
--- a/configs/P1010RDB-PA_NAND_defconfig
+++ b/configs/P1010RDB-PA_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_NOR_SECBOOT_defconfig b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
index 1a0cece..1d7736d 100644
--- a/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_NOR_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_NOR_defconfig b/configs/P1010RDB-PA_NOR_defconfig
index 8c0d26a..89db107 100644
--- a/configs/P1010RDB-PA_NOR_defconfig
+++ b/configs/P1010RDB-PA_NOR_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_SDCARD_defconfig b/configs/P1010RDB-PA_SDCARD_defconfig
index 0124b1f..c544fbb 100644
--- a/configs/P1010RDB-PA_SDCARD_defconfig
+++ b/configs/P1010RDB-PA_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
index b9892d7..6aeaf1e 100644
--- a/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PA_SPIFLASH_defconfig b/configs/P1010RDB-PA_SPIFLASH_defconfig
index d830316..eca7a0a 100644
--- a/configs/P1010RDB-PA_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PA_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
index 0237271..697ba8f 100644
--- a/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_NAND_defconfig b/configs/P1010RDB-PB_36BIT_NAND_defconfig
index f140058..d91c822 100644
--- a/configs/P1010RDB-PB_36BIT_NAND_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
index 5064415..388ad89 100644
--- a/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_NOR_defconfig b/configs/P1010RDB-PB_36BIT_NOR_defconfig
index ce9e65f..329b89e 100644
--- a/configs/P1010RDB-PB_36BIT_NOR_defconfig
+++ b/configs/P1010RDB-PB_36BIT_NOR_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_SDCARD_defconfig b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
index 4d30464..5bf1364 100644
--- a/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
index 4d858c8..cac8f57 100644
--- a/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
index e1e9d44..44dae5e 100644
--- a/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_NAND_SECBOOT_defconfig b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
index 90122ec..e815fa2 100644
--- a/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_NAND_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_NAND_defconfig b/configs/P1010RDB-PB_NAND_defconfig
index 56a853b..a243329 100644
--- a/configs/P1010RDB-PB_NAND_defconfig
+++ b/configs/P1010RDB-PB_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_NOR_SECBOOT_defconfig b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
index b6d1e0f..67ee846 100644
--- a/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_NOR_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_NOR_defconfig b/configs/P1010RDB-PB_NOR_defconfig
index bb37b28..90c5f56 100644
--- a/configs/P1010RDB-PB_NOR_defconfig
+++ b/configs/P1010RDB-PB_NOR_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_SDCARD_defconfig b/configs/P1010RDB-PB_SDCARD_defconfig
index 313e4a0..d5311dd 100644
--- a/configs/P1010RDB-PB_SDCARD_defconfig
+++ b/configs/P1010RDB-PB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
index d966677..59450c3 100644
--- a/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
+++ b/configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1010RDB-PB_SPIFLASH_defconfig b/configs/P1010RDB-PB_SPIFLASH_defconfig
index 53e112f..72dd6df 100644
--- a/configs/P1010RDB-PB_SPIFLASH_defconfig
+++ b/configs/P1010RDB-PB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_36BIT_NAND_defconfig b/configs/P1020RDB-PC_36BIT_NAND_defconfig
index a4364f3..91a1434 100644
--- a/configs/P1020RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P1020RDB-PC_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_36BIT_SDCARD_defconfig b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
index ae24451..60fa5d5 100644
--- a/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P1020RDB-PC_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
index 52a0ec1..e7f44d6 100644
--- a/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_36BIT_defconfig b/configs/P1020RDB-PC_36BIT_defconfig
index 34d1615..07d0c74 100644
--- a/configs/P1020RDB-PC_36BIT_defconfig
+++ b/configs/P1020RDB-PC_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_NAND_defconfig b/configs/P1020RDB-PC_NAND_defconfig
index 399ca0c..b4b6dd9 100644
--- a/configs/P1020RDB-PC_NAND_defconfig
+++ b/configs/P1020RDB-PC_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_SDCARD_defconfig b/configs/P1020RDB-PC_SDCARD_defconfig
index 44764d6..cd82a24 100644
--- a/configs/P1020RDB-PC_SDCARD_defconfig
+++ b/configs/P1020RDB-PC_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_SPIFLASH_defconfig b/configs/P1020RDB-PC_SPIFLASH_defconfig
index a8e712e..cc16f6b 100644
--- a/configs/P1020RDB-PC_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PC_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PC_defconfig b/configs/P1020RDB-PC_defconfig
index 81ed66f..af0e14e 100644
--- a/configs/P1020RDB-PC_defconfig
+++ b/configs/P1020RDB-PC_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PC"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PD_NAND_defconfig b/configs/P1020RDB-PD_NAND_defconfig
index 468c6b2..df1b38b 100644
--- a/configs/P1020RDB-PD_NAND_defconfig
+++ b/configs/P1020RDB-PD_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PD_SDCARD_defconfig b/configs/P1020RDB-PD_SDCARD_defconfig
index f4614c9..e7ac71c 100644
--- a/configs/P1020RDB-PD_SDCARD_defconfig
+++ b/configs/P1020RDB-PD_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PD_SPIFLASH_defconfig b/configs/P1020RDB-PD_SPIFLASH_defconfig
index 634983a..04c54e2 100644
--- a/configs/P1020RDB-PD_SPIFLASH_defconfig
+++ b/configs/P1020RDB-PD_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1020RDB-PD_defconfig b/configs/P1020RDB-PD_defconfig
index 92714e9..8291a20 100644
--- a/configs/P1020RDB-PD_defconfig
+++ b/configs/P1020RDB-PD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1020RDB_PD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_36BIT_NAND_defconfig b/configs/P1021RDB-PC_36BIT_NAND_defconfig
index df188f7..a70dd94 100644
--- a/configs/P1021RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P1021RDB-PC_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_36BIT_SDCARD_defconfig b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
index da4a512..a12d849 100644
--- a/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P1021RDB-PC_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
index d31f4b4..5ff80d5 100644
--- a/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_36BIT_defconfig b/configs/P1021RDB-PC_36BIT_defconfig
index fc32688..9fb6702 100644
--- a/configs/P1021RDB-PC_36BIT_defconfig
+++ b/configs/P1021RDB-PC_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_NAND_defconfig b/configs/P1021RDB-PC_NAND_defconfig
index 9725306..59d0e70 100644
--- a/configs/P1021RDB-PC_NAND_defconfig
+++ b/configs/P1021RDB-PC_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_SDCARD_defconfig b/configs/P1021RDB-PC_SDCARD_defconfig
index af6125a..a124499 100644
--- a/configs/P1021RDB-PC_SDCARD_defconfig
+++ b/configs/P1021RDB-PC_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_SPIFLASH_defconfig b/configs/P1021RDB-PC_SPIFLASH_defconfig
index c658ea9..1a3e071 100644
--- a/configs/P1021RDB-PC_SPIFLASH_defconfig
+++ b/configs/P1021RDB-PC_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1021RDB-PC_defconfig b/configs/P1021RDB-PC_defconfig
index a0b1e91..df22869 100644
--- a/configs/P1021RDB-PC_defconfig
+++ b/configs/P1021RDB-PC_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1021RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_36BIT_NAND_defconfig b/configs/P1022DS_36BIT_NAND_defconfig
index bc7b3ce..2957a90 100644
--- a/configs/P1022DS_36BIT_NAND_defconfig
+++ b/configs/P1022DS_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_36BIT_SDCARD_defconfig b/configs/P1022DS_36BIT_SDCARD_defconfig
index 34cf86b..58505c2 100644
--- a/configs/P1022DS_36BIT_SDCARD_defconfig
+++ b/configs/P1022DS_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_36BIT_SPIFLASH_defconfig b/configs/P1022DS_36BIT_SPIFLASH_defconfig
index 0178a96..5a359dd 100644
--- a/configs/P1022DS_36BIT_SPIFLASH_defconfig
+++ b/configs/P1022DS_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_36BIT_defconfig b/configs/P1022DS_36BIT_defconfig
index 611d972..e622ecb 100644
--- a/configs/P1022DS_36BIT_defconfig
+++ b/configs/P1022DS_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_NAND_defconfig b/configs/P1022DS_NAND_defconfig
index 4d3d4c8..67fe476 100644
--- a/configs/P1022DS_NAND_defconfig
+++ b/configs/P1022DS_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_SDCARD_defconfig b/configs/P1022DS_SDCARD_defconfig
index 9264fe6..8533fd8 100644
--- a/configs/P1022DS_SDCARD_defconfig
+++ b/configs/P1022DS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_SPIFLASH_defconfig b/configs/P1022DS_SPIFLASH_defconfig
index 1d1873c..71a0242 100644
--- a/configs/P1022DS_SPIFLASH_defconfig
+++ b/configs/P1022DS_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1022DS_defconfig b/configs/P1022DS_defconfig
index 0fdc8c0..f4be927 100644
--- a/configs/P1022DS_defconfig
+++ b/configs/P1022DS_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1024RDB_36BIT_defconfig b/configs/P1024RDB_36BIT_defconfig
index 0f2cb71..be0750e 100644
--- a/configs/P1024RDB_36BIT_defconfig
+++ b/configs/P1024RDB_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1024RDB_NAND_defconfig b/configs/P1024RDB_NAND_defconfig
index 77b3795..9f744f8 100644
--- a/configs/P1024RDB_NAND_defconfig
+++ b/configs/P1024RDB_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1024RDB_SDCARD_defconfig b/configs/P1024RDB_SDCARD_defconfig
index efc2e3f..1f758fb 100644
--- a/configs/P1024RDB_SDCARD_defconfig
+++ b/configs/P1024RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1024RDB_SPIFLASH_defconfig b/configs/P1024RDB_SPIFLASH_defconfig
index 4eee960..83ea94e 100644
--- a/configs/P1024RDB_SPIFLASH_defconfig
+++ b/configs/P1024RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1024RDB_defconfig b/configs/P1024RDB_defconfig
index acdf6c7..6284082 100644
--- a/configs/P1024RDB_defconfig
+++ b/configs/P1024RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1024RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1025RDB_36BIT_defconfig b/configs/P1025RDB_36BIT_defconfig
index bb198d8..4603bdc 100644
--- a/configs/P1025RDB_36BIT_defconfig
+++ b/configs/P1025RDB_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1025RDB_NAND_defconfig b/configs/P1025RDB_NAND_defconfig
index d577617..5113908 100644
--- a/configs/P1025RDB_NAND_defconfig
+++ b/configs/P1025RDB_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1025RDB_SDCARD_defconfig b/configs/P1025RDB_SDCARD_defconfig
index 989d019..1324226 100644
--- a/configs/P1025RDB_SDCARD_defconfig
+++ b/configs/P1025RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1025RDB_SPIFLASH_defconfig b/configs/P1025RDB_SPIFLASH_defconfig
index f5af87d..9bde8ab 100644
--- a/configs/P1025RDB_SPIFLASH_defconfig
+++ b/configs/P1025RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P1025RDB_defconfig b/configs/P1025RDB_defconfig
index f38f629..dcf9fae 100644
--- a/configs/P1025RDB_defconfig
+++ b/configs/P1025RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P1025RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_36BIT_NAND_defconfig b/configs/P2020RDB-PC_36BIT_NAND_defconfig
index dcb3dc2..b00fce5 100644
--- a/configs/P2020RDB-PC_36BIT_NAND_defconfig
+++ b/configs/P2020RDB-PC_36BIT_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_36BIT_SDCARD_defconfig b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
index 8e0cae3..422734a 100644
--- a/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
+++ b/configs/P2020RDB-PC_36BIT_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
index 4487440..72c47c1 100644
--- a/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
+++ b/configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_36BIT_defconfig b/configs/P2020RDB-PC_36BIT_defconfig
index e05802c..11a4236 100644
--- a/configs/P2020RDB-PC_36BIT_defconfig
+++ b/configs/P2020RDB-PC_36BIT_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_NAND_defconfig b/configs/P2020RDB-PC_NAND_defconfig
index 61e09d4..106b80c 100644
--- a/configs/P2020RDB-PC_NAND_defconfig
+++ b/configs/P2020RDB-PC_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_SDCARD_defconfig b/configs/P2020RDB-PC_SDCARD_defconfig
index ad2df4d..c0df198 100644
--- a/configs/P2020RDB-PC_SDCARD_defconfig
+++ b/configs/P2020RDB-PC_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_SPIFLASH_defconfig b/configs/P2020RDB-PC_SPIFLASH_defconfig
index 8b9cc6c..60778fd 100644
--- a/configs/P2020RDB-PC_SPIFLASH_defconfig
+++ b/configs/P2020RDB-PC_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2020RDB-PC_defconfig b/configs/P2020RDB-PC_defconfig
index 75a6523..a0532e1 100644
--- a/configs/P2020RDB-PC_defconfig
+++ b/configs/P2020RDB-PC_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="P2020RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_NAND_defconfig b/configs/P2041RDB_NAND_defconfig
index 57d500d..5b22866 100644
--- a/configs/P2041RDB_NAND_defconfig
+++ b/configs/P2041RDB_NAND_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_SDCARD_defconfig b/configs/P2041RDB_SDCARD_defconfig
index aaf29ce..ec6e2de 100644
--- a/configs/P2041RDB_SDCARD_defconfig
+++ b/configs/P2041RDB_SDCARD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_SECURE_BOOT_defconfig b/configs/P2041RDB_SECURE_BOOT_defconfig
index cb76065..8255e08 100644
--- a/configs/P2041RDB_SECURE_BOOT_defconfig
+++ b/configs/P2041RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_SPIFLASH_defconfig b/configs/P2041RDB_SPIFLASH_defconfig
index 25e2315..9b3b9e3 100644
--- a/configs/P2041RDB_SPIFLASH_defconfig
+++ b/configs/P2041RDB_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
index 8aba19b..bac4fe5 100644
--- a/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P2041RDB_defconfig b/configs/P2041RDB_defconfig
index 4e4e469..88d3526 100644
--- a/configs/P2041RDB_defconfig
+++ b/configs/P2041RDB_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_NAND_SECURE_BOOT_defconfig b/configs/P3041DS_NAND_SECURE_BOOT_defconfig
index c6b7cdc..9ba7d4c 100644
--- a/configs/P3041DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P3041DS_NAND_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_NAND_defconfig b/configs/P3041DS_NAND_defconfig
index b8fc9e9..4b09b1a 100644
--- a/configs/P3041DS_NAND_defconfig
+++ b/configs/P3041DS_NAND_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_SDCARD_defconfig b/configs/P3041DS_SDCARD_defconfig
index 6a2def9..7152013 100644
--- a/configs/P3041DS_SDCARD_defconfig
+++ b/configs/P3041DS_SDCARD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_SECURE_BOOT_defconfig b/configs/P3041DS_SECURE_BOOT_defconfig
index e6f219b..999cb9c 100644
--- a/configs/P3041DS_SECURE_BOOT_defconfig
+++ b/configs/P3041DS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_SPIFLASH_defconfig b/configs/P3041DS_SPIFLASH_defconfig
index 6bef8d8..91e9cd2 100644
--- a/configs/P3041DS_SPIFLASH_defconfig
+++ b/configs/P3041DS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_SRIO_PCIE_BOOT_defconfig b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
index a81ffb2..176bf61 100644
--- a/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P3041DS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P3041DS_defconfig b/configs/P3041DS_defconfig
index 5ccbf7a..7d7da46 100644
--- a/configs/P3041DS_defconfig
+++ b/configs/P3041DS_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P4080DS_SDCARD_defconfig b/configs/P4080DS_SDCARD_defconfig
index b5558a2..0a0cc51 100644
--- a/configs/P4080DS_SDCARD_defconfig
+++ b/configs/P4080DS_SDCARD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P4080DS_SECURE_BOOT_defconfig b/configs/P4080DS_SECURE_BOOT_defconfig
index 2738947..6a1404f 100644
--- a/configs/P4080DS_SECURE_BOOT_defconfig
+++ b/configs/P4080DS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P4080DS_SPIFLASH_defconfig b/configs/P4080DS_SPIFLASH_defconfig
index 0addc13..0ced11c 100644
--- a/configs/P4080DS_SPIFLASH_defconfig
+++ b/configs/P4080DS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P4080DS_SRIO_PCIE_BOOT_defconfig b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
index 25f8894..cb55262 100644
--- a/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P4080DS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P4080DS_defconfig b/configs/P4080DS_defconfig
index fa3b249..9c819b3 100644
--- a/configs/P4080DS_defconfig
+++ b/configs/P4080DS_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_NAND_SECURE_BOOT_defconfig b/configs/P5020DS_NAND_SECURE_BOOT_defconfig
index be0a423..7add530 100644
--- a/configs/P5020DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P5020DS_NAND_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_NAND_defconfig b/configs/P5020DS_NAND_defconfig
index dfecf0b..d70d5c8 100644
--- a/configs/P5020DS_NAND_defconfig
+++ b/configs/P5020DS_NAND_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_SDCARD_defconfig b/configs/P5020DS_SDCARD_defconfig
index 6eb7d1d..e17d1ff 100644
--- a/configs/P5020DS_SDCARD_defconfig
+++ b/configs/P5020DS_SDCARD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_SECURE_BOOT_defconfig b/configs/P5020DS_SECURE_BOOT_defconfig
index f278908..9648d50 100644
--- a/configs/P5020DS_SECURE_BOOT_defconfig
+++ b/configs/P5020DS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_SPIFLASH_defconfig b/configs/P5020DS_SPIFLASH_defconfig
index 0a490aa..894eba7 100644
--- a/configs/P5020DS_SPIFLASH_defconfig
+++ b/configs/P5020DS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_SRIO_PCIE_BOOT_defconfig b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
index 35ef6f7..8979b38 100644
--- a/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/P5020DS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5020DS_defconfig b/configs/P5020DS_defconfig
index efe03dd..aae3467 100644
--- a/configs/P5020DS_defconfig
+++ b/configs/P5020DS_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_NAND_SECURE_BOOT_defconfig b/configs/P5040DS_NAND_SECURE_BOOT_defconfig
index 9be0e2f..7409ff0 100644
--- a/configs/P5040DS_NAND_SECURE_BOOT_defconfig
+++ b/configs/P5040DS_NAND_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_NAND_defconfig b/configs/P5040DS_NAND_defconfig
index a47d4fa..a93d69d 100644
--- a/configs/P5040DS_NAND_defconfig
+++ b/configs/P5040DS_NAND_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_SDCARD_defconfig b/configs/P5040DS_SDCARD_defconfig
index a9e3468..46c57e5 100644
--- a/configs/P5040DS_SDCARD_defconfig
+++ b/configs/P5040DS_SDCARD_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_SECURE_BOOT_defconfig b/configs/P5040DS_SECURE_BOOT_defconfig
index 5e9523d..eec1ffa 100644
--- a/configs/P5040DS_SECURE_BOOT_defconfig
+++ b/configs/P5040DS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_SPIFLASH_defconfig b/configs/P5040DS_SPIFLASH_defconfig
index 8473e7c..461a7a9 100644
--- a/configs/P5040DS_SPIFLASH_defconfig
+++ b/configs/P5040DS_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/P5040DS_defconfig b/configs/P5040DS_defconfig
index 2f55952..cdfe9ec 100644
--- a/configs/P5040DS_defconfig
+++ b/configs/P5040DS_defconfig
@@ -7,7 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1023RDB_NAND_defconfig b/configs/T1023RDB_NAND_defconfig
index f5a1f1f..75fcd6b 100644
--- a/configs/T1023RDB_NAND_defconfig
+++ b/configs/T1023RDB_NAND_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1023RDB_SDCARD_defconfig b/configs/T1023RDB_SDCARD_defconfig
index 1969c33..febd360 100644
--- a/configs/T1023RDB_SDCARD_defconfig
+++ b/configs/T1023RDB_SDCARD_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1023RDB_SECURE_BOOT_defconfig b/configs/T1023RDB_SECURE_BOOT_defconfig
index b4665f2..9b2d74d 100644
--- a/configs/T1023RDB_SECURE_BOOT_defconfig
+++ b/configs/T1023RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1023RDB_SPIFLASH_defconfig b/configs/T1023RDB_SPIFLASH_defconfig
index a5f0afb..75b36f7 100644
--- a/configs/T1023RDB_SPIFLASH_defconfig
+++ b/configs/T1023RDB_SPIFLASH_defconfig
@@ -11,7 +11,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1023RDB_defconfig b/configs/T1023RDB_defconfig
index d9db1b1..8f29b22 100644
--- a/configs/T1023RDB_defconfig
+++ b/configs/T1023RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
index 00672f7..11f7f13 100644
--- a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_DDR4_defconfig b/configs/T1024QDS_DDR4_defconfig
index 489f817..32ea85f 100644
--- a/configs/T1024QDS_DDR4_defconfig
+++ b/configs/T1024QDS_DDR4_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/T1024QDS_NAND_defconfig b/configs/T1024QDS_NAND_defconfig
index cb842e8..b20f976 100644
--- a/configs/T1024QDS_NAND_defconfig
+++ b/configs/T1024QDS_NAND_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_SDCARD_defconfig b/configs/T1024QDS_SDCARD_defconfig
index 37eca91..37868aa 100644
--- a/configs/T1024QDS_SDCARD_defconfig
+++ b/configs/T1024QDS_SDCARD_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_SECURE_BOOT_defconfig b/configs/T1024QDS_SECURE_BOOT_defconfig
index 20b3807..f2073b4 100644
--- a/configs/T1024QDS_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_SECURE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_SPIFLASH_defconfig b/configs/T1024QDS_SPIFLASH_defconfig
index c1013f4..4529f98 100644
--- a/configs/T1024QDS_SPIFLASH_defconfig
+++ b/configs/T1024QDS_SPIFLASH_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_defconfig b/configs/T1024QDS_defconfig
index abc12dc..6cac3af 100644
--- a/configs/T1024QDS_defconfig
+++ b/configs/T1024QDS_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024RDB_NAND_defconfig b/configs/T1024RDB_NAND_defconfig
index b6065fd..afafe3c 100644
--- a/configs/T1024RDB_NAND_defconfig
+++ b/configs/T1024RDB_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024RDB_SDCARD_defconfig b/configs/T1024RDB_SDCARD_defconfig
index 3b3ef9b..04181a3 100644
--- a/configs/T1024RDB_SDCARD_defconfig
+++ b/configs/T1024RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024RDB_SECURE_BOOT_defconfig b/configs/T1024RDB_SECURE_BOOT_defconfig
index d5290dc..becbb8f 100644
--- a/configs/T1024RDB_SECURE_BOOT_defconfig
+++ b/configs/T1024RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024RDB_SPIFLASH_defconfig b/configs/T1024RDB_SPIFLASH_defconfig
index 5b2ee8e..d0e489d 100644
--- a/configs/T1024RDB_SPIFLASH_defconfig
+++ b/configs/T1024RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024RDB_defconfig b/configs/T1024RDB_defconfig
index 8ec8535..fa3475d 100644
--- a/configs/T1024RDB_defconfig
+++ b/configs/T1024RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040D4RDB_NAND_defconfig b/configs/T1040D4RDB_NAND_defconfig
index abf98ae..2726077 100644
--- a/configs/T1040D4RDB_NAND_defconfig
+++ b/configs/T1040D4RDB_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040D4RDB_SDCARD_defconfig b/configs/T1040D4RDB_SDCARD_defconfig
index dd47735..e8b83ac 100644
--- a/configs/T1040D4RDB_SDCARD_defconfig
+++ b/configs/T1040D4RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040D4RDB_SECURE_BOOT_defconfig b/configs/T1040D4RDB_SECURE_BOOT_defconfig
index 8604192..afa0c62 100644
--- a/configs/T1040D4RDB_SECURE_BOOT_defconfig
+++ b/configs/T1040D4RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BO
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040D4RDB_SPIFLASH_defconfig b/configs/T1040D4RDB_SPIFLASH_defconfig
index a1e682f..f52f8fd 100644
--- a/configs/T1040D4RDB_SPIFLASH_defconfig
+++ b/configs/T1040D4RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040D4RDB_defconfig b/configs/T1040D4RDB_defconfig
index afe7a0c..dcc6643 100644
--- a/configs/T1040D4RDB_defconfig
+++ b/configs/T1040D4RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040QDS_DDR4_defconfig b/configs/T1040QDS_DDR4_defconfig
index c93a65f..84c9925 100644
--- a/configs/T1040QDS_DDR4_defconfig
+++ b/configs/T1040QDS_DDR4_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040QDS_SECURE_BOOT_defconfig b/configs/T1040QDS_SECURE_BOOT_defconfig
index 423a141..5577f0b 100644
--- a/configs/T1040QDS_SECURE_BOOT_defconfig
+++ b/configs/T1040QDS_SECURE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040QDS_defconfig b/configs/T1040QDS_defconfig
index bca4631..90c1332 100644
--- a/configs/T1040QDS_defconfig
+++ b/configs/T1040QDS_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040RDB_NAND_defconfig b/configs/T1040RDB_NAND_defconfig
index 92ec845..7f2c3d0 100644
--- a/configs/T1040RDB_NAND_defconfig
+++ b/configs/T1040RDB_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040RDB_SDCARD_defconfig b/configs/T1040RDB_SDCARD_defconfig
index b8359f1..3f0b12a 100644
--- a/configs/T1040RDB_SDCARD_defconfig
+++ b/configs/T1040RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040RDB_SECURE_BOOT_defconfig b/configs/T1040RDB_SECURE_BOOT_defconfig
index c2f06ae..6649b02 100644
--- a/configs/T1040RDB_SECURE_BOOT_defconfig
+++ b/configs/T1040RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT,T1040RDB"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040RDB_SPIFLASH_defconfig b/configs/T1040RDB_SPIFLASH_defconfig
index 99d9f53..71eb436 100644
--- a/configs/T1040RDB_SPIFLASH_defconfig
+++ b/configs/T1040RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1040RDB_defconfig b/configs/T1040RDB_defconfig
index ef09e28..070a1de 100644
--- a/configs/T1040RDB_defconfig
+++ b/configs/T1040RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042D4RDB_NAND_defconfig b/configs/T1042D4RDB_NAND_defconfig
index 91edfaa..9295f2e 100644
--- a/configs/T1042D4RDB_NAND_defconfig
+++ b/configs/T1042D4RDB_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042D4RDB_SDCARD_defconfig b/configs/T1042D4RDB_SDCARD_defconfig
index f4e9957..7bf61d1 100644
--- a/configs/T1042D4RDB_SDCARD_defconfig
+++ b/configs/T1042D4RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042D4RDB_SECURE_BOOT_defconfig b/configs/T1042D4RDB_SECURE_BOOT_defconfig
index d12e35c..ff44044 100644
--- a/configs/T1042D4RDB_SECURE_BOOT_defconfig
+++ b/configs/T1042D4RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BO
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042D4RDB_SPIFLASH_defconfig b/configs/T1042D4RDB_SPIFLASH_defconfig
index 5644b7e..20eb251 100644
--- a/configs/T1042D4RDB_SPIFLASH_defconfig
+++ b/configs/T1042D4RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042D4RDB_defconfig b/configs/T1042D4RDB_defconfig
index 5e0c620..ef9fbd3 100644
--- a/configs/T1042D4RDB_defconfig
+++ b/configs/T1042D4RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,T104XD4RDB,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_PI_NAND_defconfig b/configs/T1042RDB_PI_NAND_defconfig
index 195842e..ad389ea 100644
--- a/configs/T1042RDB_PI_NAND_defconfig
+++ b/configs/T1042RDB_PI_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_PI_SDCARD_defconfig b/configs/T1042RDB_PI_SDCARD_defconfig
index 65c21c4..c5a642d 100644
--- a/configs/T1042RDB_PI_SDCARD_defconfig
+++ b/configs/T1042RDB_PI_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_PI_SPIFLASH_defconfig b/configs/T1042RDB_PI_SPIFLASH_defconfig
index 946cab2..27815d9 100644
--- a/configs/T1042RDB_PI_SPIFLASH_defconfig
+++ b/configs/T1042RDB_PI_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_PI_defconfig b/configs/T1042RDB_PI_defconfig
index 4df3280..aa3703c 100644
--- a/configs/T1042RDB_PI_defconfig
+++ b/configs/T1042RDB_PI_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_SECURE_BOOT_defconfig b/configs/T1042RDB_SECURE_BOOT_defconfig
index ccfe987..daf7309 100644
--- a/configs/T1042RDB_SECURE_BOOT_defconfig
+++ b/configs/T1042RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,SECURE_BOOT,T1042RDB"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1042RDB_defconfig b/configs/T1042RDB_defconfig
index 0b3fea6..f583830 100644
--- a/configs/T1042RDB_defconfig
+++ b/configs/T1042RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_NAND_defconfig b/configs/T2080QDS_NAND_defconfig
index 6217718..c527e7e 100644
--- a/configs/T2080QDS_NAND_defconfig
+++ b/configs/T2080QDS_NAND_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_SDCARD_defconfig b/configs/T2080QDS_SDCARD_defconfig
index 2bc2127..5f3192f 100644
--- a/configs/T2080QDS_SDCARD_defconfig
+++ b/configs/T2080QDS_SDCARD_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig b/configs/T2080QDS_SECURE_BOOT_defconfig
index ac8077d..1f1f1ad 100644
--- a/configs/T2080QDS_SECURE_BOOT_defconfig
+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_SPIFLASH_defconfig b/configs/T2080QDS_SPIFLASH_defconfig
index 8510f37..05494d2 100644
--- a/configs/T2080QDS_SPIFLASH_defconfig
+++ b/configs/T2080QDS_SPIFLASH_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
index e37bc35..1dd8aac 100644
--- a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
index e0c8029..1210137 100644
--- a/configs/T2080QDS_defconfig
+++ b/configs/T2080QDS_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
index d735a05..38c44a7 100644
--- a/configs/T2080RDB_NAND_defconfig
+++ b/configs/T2080RDB_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
index b1c1f04..ca7add2 100644
--- a/configs/T2080RDB_SDCARD_defconfig
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_SECURE_BOOT_defconfig b/configs/T2080RDB_SECURE_BOOT_defconfig
index c53d889..fe61bb6 100644
--- a/configs/T2080RDB_SECURE_BOOT_defconfig
+++ b/configs/T2080RDB_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
index 1a71146..2bc457f 100644
--- a/configs/T2080RDB_SPIFLASH_defconfig
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
index 558f6d3..ee04041 100644
--- a/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
index 1179909..892d6f6 100644
--- a/configs/T2080RDB_defconfig
+++ b/configs/T2080RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2081QDS_NAND_defconfig b/configs/T2081QDS_NAND_defconfig
index 244a295..b0c0ad8 100644
--- a/configs/T2081QDS_NAND_defconfig
+++ b/configs/T2081QDS_NAND_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2081QDS_SDCARD_defconfig b/configs/T2081QDS_SDCARD_defconfig
index 9b784f6..09a15e7 100644
--- a/configs/T2081QDS_SDCARD_defconfig
+++ b/configs/T2081QDS_SDCARD_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2081QDS_SPIFLASH_defconfig b/configs/T2081QDS_SPIFLASH_defconfig
index 3092131..921b879 100644
--- a/configs/T2081QDS_SPIFLASH_defconfig
+++ b/configs/T2081QDS_SPIFLASH_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
index ad86efd..792987e 100644
--- a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
@@ -11,8 +11,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T2081QDS_defconfig b/configs/T2081QDS_defconfig
index a67be2d..ccfb10c 100644
--- a/configs/T2081QDS_defconfig
+++ b/configs/T2081QDS_defconfig
@@ -9,8 +9,8 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4160QDS_NAND_defconfig b/configs/T4160QDS_NAND_defconfig
index 3c318f9..66a0e90 100644
--- a/configs/T4160QDS_NAND_defconfig
+++ b/configs/T4160QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4160QDS_SDCARD_defconfig b/configs/T4160QDS_SDCARD_defconfig
index cac5965..ed749e6 100644
--- a/configs/T4160QDS_SDCARD_defconfig
+++ b/configs/T4160QDS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4160QDS_SECURE_BOOT_defconfig b/configs/T4160QDS_SECURE_BOOT_defconfig
index 333fd51..39f29b5 100644
--- a/configs/T4160QDS_SECURE_BOOT_defconfig
+++ b/configs/T4160QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4160QDS_defconfig b/configs/T4160QDS_defconfig
index 2fa2fe8..d881f72 100644
--- a/configs/T4160QDS_defconfig
+++ b/configs/T4160QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4160RDB_defconfig b/configs/T4160RDB_defconfig
index 63b1c6d..899767d 100644
--- a/configs/T4160RDB_defconfig
+++ b/configs/T4160RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240QDS_NAND_defconfig b/configs/T4240QDS_NAND_defconfig
index 4d138ec..668ad9c 100644
--- a/configs/T4240QDS_NAND_defconfig
+++ b/configs/T4240QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240QDS_SDCARD_defconfig b/configs/T4240QDS_SDCARD_defconfig
index be19d3b..c1999f2 100644
--- a/configs/T4240QDS_SDCARD_defconfig
+++ b/configs/T4240QDS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240QDS_SECURE_BOOT_defconfig b/configs/T4240QDS_SECURE_BOOT_defconfig
index 21efc1e..acd6e0b 100644
--- a/configs/T4240QDS_SECURE_BOOT_defconfig
+++ b/configs/T4240QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
index 13b2b36..92372af 100644
--- a/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240QDS_defconfig b/configs/T4240QDS_defconfig
index c02e534..a6e13d7 100644
--- a/configs/T4240QDS_defconfig
+++ b/configs/T4240QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240RDB_SDCARD_defconfig b/configs/T4240RDB_SDCARD_defconfig
index 073f049..9f2bcc3 100644
--- a/configs/T4240RDB_SDCARD_defconfig
+++ b/configs/T4240RDB_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T4240RDB_defconfig b/configs/T4240RDB_defconfig
index 3dcdf6b..b90bd11 100644
--- a/configs/T4240RDB_defconfig
+++ b/configs/T4240RDB_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/UCP1020_SPIFLASH_defconfig b/configs/UCP1020_SPIFLASH_defconfig
index 6ce3d41..b3f810c 100644
--- a/configs/UCP1020_SPIFLASH_defconfig
+++ b/configs/UCP1020_SPIFLASH_defconfig
@@ -12,9 +12,9 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/UCP1020_defconfig b/configs/UCP1020_defconfig
index 69a3391..985c89f 100644
--- a/configs/UCP1020_defconfig
+++ b/configs/UCP1020_defconfig
@@ -12,9 +12,9 @@ CONFIG_AUTOBOOT_STOP_STR="\x1b"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/alt_defconfig b/configs/alt_defconfig
index 07428c7..9a1f2b6 100644
--- a/configs/alt_defconfig
+++ b/configs/alt_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_boneblack_defconfig b/configs/am335x_boneblack_defconfig
index 269c06c..5e9d066 100644
--- a/configs/am335x_boneblack_defconfig
+++ b/configs/am335x_boneblack_defconfig
@@ -16,6 +16,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DFU_TFTP=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig
index 7d0ab0b..33b4ae7 100644
--- a/configs/am335x_boneblack_vboot_defconfig
+++ b/configs/am335x_boneblack_vboot_defconfig
@@ -20,7 +20,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
diff --git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
index 5b1ac34..010fa4d 100644
--- a/configs/am335x_evm_defconfig
+++ b/configs/am335x_evm_defconfig
@@ -15,6 +15,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_nor_defconfig b/configs/am335x_evm_nor_defconfig
index fcf5bca..4390de3 100644
--- a/configs/am335x_evm_nor_defconfig
+++ b/configs/am335x_evm_nor_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_norboot_defconfig b/configs/am335x_evm_norboot_defconfig
index e69754f..d74f2d2 100644
--- a/configs/am335x_evm_norboot_defconfig
+++ b/configs/am335x_evm_norboot_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_spiboot_defconfig b/configs/am335x_evm_spiboot_defconfig
index 48c7724..09df315 100644
--- a/configs/am335x_evm_spiboot_defconfig
+++ b/configs/am335x_evm_spiboot_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig
index 6b64ea8..9f0978a 100644
--- a/configs/am335x_evm_usbspl_defconfig
+++ b/configs/am335x_evm_usbspl_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am335x_gp_evm_defconfig b/configs/am335x_gp_evm_defconfig
index e2269d4..33302d0 100644
--- a/configs/am335x_gp_evm_defconfig
+++ b/configs/am335x_gp_evm_defconfig
@@ -14,7 +14,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
diff --git a/configs/am437x_gp_evm_defconfig b/configs/am437x_gp_evm_defconfig
index e68c752..59d6e34 100644
--- a/configs/am437x_gp_evm_defconfig
+++ b/configs/am437x_gp_evm_defconfig
@@ -16,7 +16,7 @@ CONFIG_DM=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
diff --git a/configs/am437x_sk_evm_defconfig b/configs/am437x_sk_evm_defconfig
index 456d978..5f0cdcf 100644
--- a/configs/am437x_sk_evm_defconfig
+++ b/configs/am437x_sk_evm_defconfig
@@ -19,7 +19,7 @@ CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
index eccb04a..199df05 100644
--- a/configs/am43xx_evm_defconfig
+++ b/configs/am43xx_evm_defconfig
@@ -9,7 +9,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am43xx_evm_ethboot_defconfig b/configs/am43xx_evm_ethboot_defconfig
index cd07549..a559fd0 100644
--- a/configs/am43xx_evm_ethboot_defconfig
+++ b/configs/am43xx_evm_ethboot_defconfig
@@ -8,7 +8,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am43xx_evm_qspiboot_defconfig b/configs/am43xx_evm_qspiboot_defconfig
index 27a9f9f..b25ba57 100644
--- a/configs/am43xx_evm_qspiboot_defconfig
+++ b/configs/am43xx_evm_qspiboot_defconfig
@@ -7,7 +7,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/am43xx_evm_usbhost_boot_defconfig b/configs/am43xx_evm_usbhost_boot_defconfig
index ed2afe0..0af467f 100644
--- a/configs/am43xx_evm_usbhost_boot_defconfig
+++ b/configs/am43xx_evm_usbhost_boot_defconfig
@@ -8,7 +8,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/aristainetos2_defconfig b/configs/aristainetos2_defconfig
index 1fbadd7..443ef9f 100644
--- a/configs/aristainetos2_defconfig
+++ b/configs/aristainetos2_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/aristainetos2b_defconfig b/configs/aristainetos2b_defconfig
index 11bd14f..1d50ef2 100644
--- a/configs/aristainetos2b_defconfig
+++ b/configs/aristainetos2b_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/aristainetos_defconfig b/configs/aristainetos_defconfig
index 3248a62..353d995 100644
--- a/configs/aristainetos_defconfig
+++ b/configs/aristainetos_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/axm_defconfig b/configs/axm_defconfig
index bf68562..e4f5ada 100644
--- a/configs/axm_defconfig
+++ b/configs/axm_defconfig
@@ -12,6 +12,6 @@ CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index 27dce42..c862e0a 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -26,8 +26,8 @@ CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
diff --git a/configs/beaver_defconfig b/configs/beaver_defconfig
index 3d5bf5d..72244e7 100644
--- a/configs/beaver_defconfig
+++ b/configs/beaver_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA20_SLINK=y
diff --git a/configs/bf518f-ezbrd_defconfig b/configs/bf518f-ezbrd_defconfig
index a211b44..c6e942f 100644
--- a/configs/bf518f-ezbrd_defconfig
+++ b/configs/bf518f-ezbrd_defconfig
@@ -5,6 +5,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/bf526-ezbrd_defconfig b/configs/bf526-ezbrd_defconfig
index cf608cd..a7c1807 100644
--- a/configs/bf526-ezbrd_defconfig
+++ b/configs/bf526-ezbrd_defconfig
@@ -5,4 +5,4 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
diff --git a/configs/bf527-ad7160-eval_defconfig b/configs/bf527-ad7160-eval_defconfig
index 7aaf740..0cf8517 100644
--- a/configs/bf527-ad7160-eval_defconfig
+++ b/configs/bf527-ad7160-eval_defconfig
@@ -7,5 +7,5 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/bf527-ezkit-v2_defconfig b/configs/bf527-ezkit-v2_defconfig
index ef8ae9e..373d473 100644
--- a/configs/bf527-ezkit-v2_defconfig
+++ b/configs/bf527-ezkit-v2_defconfig
@@ -5,5 +5,5 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf527-ezkit_defconfig b/configs/bf527-ezkit_defconfig
index 478e21a..1bedcb8 100644
--- a/configs/bf527-ezkit_defconfig
+++ b/configs/bf527-ezkit_defconfig
@@ -5,4 +5,4 @@ CONFIG_NET_RANDOM_ETHADDR=y
 # CONFIG_NET_TFTP_VARS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf527-sdp_defconfig b/configs/bf527-sdp_defconfig
index 34ee175..d74f1df 100644
--- a/configs/bf527-sdp_defconfig
+++ b/configs/bf527-sdp_defconfig
@@ -9,9 +9,9 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/bf537-minotaur_defconfig b/configs/bf537-minotaur_defconfig
index 4ce5aed..ee3629b 100644
--- a/configs/bf537-minotaur_defconfig
+++ b/configs/bf537-minotaur_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_PROMPT="minotaur> "
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf537-pnav_defconfig b/configs/bf537-pnav_defconfig
index 3df58d7..0b23c59 100644
--- a/configs/bf537-pnav_defconfig
+++ b/configs/bf537-pnav_defconfig
@@ -5,4 +5,4 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf537-srv1_defconfig b/configs/bf537-srv1_defconfig
index 580bc83..8d78779 100644
--- a/configs/bf537-srv1_defconfig
+++ b/configs/bf537-srv1_defconfig
@@ -7,4 +7,4 @@ CONFIG_SYS_PROMPT="srv1> "
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf537-stamp_defconfig b/configs/bf537-stamp_defconfig
index 2e21cc5..c3161fa 100644
--- a/configs/bf537-stamp_defconfig
+++ b/configs/bf537-stamp_defconfig
@@ -7,8 +7,8 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
diff --git a/configs/bf548-ezkit_defconfig b/configs/bf548-ezkit_defconfig
index d0b96ff..e922cbd 100644
--- a/configs/bf548-ezkit_defconfig
+++ b/configs/bf548-ezkit_defconfig
@@ -4,6 +4,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf609-ezkit_defconfig b/configs/bf609-ezkit_defconfig
index f050eff..de8d28c 100644
--- a/configs/bf609-ezkit_defconfig
+++ b/configs/bf609-ezkit_defconfig
@@ -6,11 +6,11 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bg0900_defconfig b/configs/bg0900_defconfig
index acc2b5e..82afad7 100644
--- a/configs/bg0900_defconfig
+++ b/configs/bg0900_defconfig
@@ -7,5 +7,5 @@ CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/birdland_bav335a_defconfig b/configs/birdland_bav335a_defconfig
index db8a573..0944999 100644
--- a/configs/birdland_bav335a_defconfig
+++ b/configs/birdland_bav335a_defconfig
@@ -10,6 +10,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/birdland_bav335b_defconfig b/configs/birdland_bav335b_defconfig
index 9ea3a87..7f2a870 100644
--- a/configs/birdland_bav335b_defconfig
+++ b/configs/birdland_bav335b_defconfig
@@ -10,6 +10,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/blackstamp_defconfig b/configs/blackstamp_defconfig
index 0a2bd94..0079a6e 100644
--- a/configs/blackstamp_defconfig
+++ b/configs/blackstamp_defconfig
@@ -5,4 +5,4 @@ CONFIG_TARGET_BLACKSTAMP=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/blackvme_defconfig b/configs/blackvme_defconfig
index e941e42..f3df98d 100644
--- a/configs/blackvme_defconfig
+++ b/configs/blackvme_defconfig
@@ -5,4 +5,4 @@ CONFIG_TARGET_BLACKVME=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/br4_defconfig b/configs/br4_defconfig
index ae39cbb..92af6e0 100644
--- a/configs/br4_defconfig
+++ b/configs/br4_defconfig
@@ -7,6 +7,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/cardhu_defconfig b/configs/cardhu_defconfig
index 229dcbe..f3b4a58 100644
--- a/configs/cardhu_defconfig
+++ b/configs/cardhu_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA20_SLINK=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index 6ddfb47..05293ba 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -31,8 +31,8 @@ CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/chromebook_samus_defconfig b/configs/chromebook_samus_defconfig
index f74d76a..8da5932 100644
--- a/configs/chromebook_samus_defconfig
+++ b/configs/chromebook_samus_defconfig
@@ -30,8 +30,8 @@ CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_DEBUG_UART=y
diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
index ccbf42d..ebf78bc 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -25,8 +25,8 @@ CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index 65c926e..9fb9cff 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -23,11 +23,11 @@ CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
diff --git a/configs/cm_t43_defconfig b/configs/cm_t43_defconfig
index ae79cdf..d829ba4 100644
--- a/configs/cm_t43_defconfig
+++ b/configs/cm_t43_defconfig
@@ -16,11 +16,11 @@ CONFIG_DM_SERIAL=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_WINBOND=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_FLASH_ISSI=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_EON=y
diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
index 65c11f3..1d4251e 100644
--- a/configs/conga-qeval20-qa3-e3845_defconfig
+++ b/configs/conga-qeval20-qa3-e3845_defconfig
@@ -27,9 +27,9 @@ CONFIG_WINBOND_W83627=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
index eed6771..3b547e1 100644
--- a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
@@ -12,7 +12,7 @@ CONFIG_CMD_TPM=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_TPM_AUTH_SESSIONS=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_defconfig b/configs/controlcenterd_36BIT_SDCARD_defconfig
index 0af8739..2b376a7 100644
--- a/configs/controlcenterd_36BIT_SDCARD_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_defconfig
@@ -12,7 +12,7 @@ CONFIG_CMD_TPM=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_FSL_ESPI=y
 CONFIG_TPM_AUTH_SESSIONS=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index 1d39b9e..b8b0305 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -15,8 +15,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
diff --git a/configs/cougarcanyon2_defconfig b/configs/cougarcanyon2_defconfig
index d9992c2..e25cad7 100644
--- a/configs/cougarcanyon2_defconfig
+++ b/configs/cougarcanyon2_defconfig
@@ -12,7 +12,7 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index 3209d44..e347765 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -24,9 +24,9 @@ CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_PCH_GBE=y
diff --git a/configs/d2net_v2_defconfig b/configs/d2net_v2_defconfig
index 42976f4..6872885 100644
--- a/configs/d2net_v2_defconfig
+++ b/configs/d2net_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="D2NET_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/da850_am18xxevm_defconfig b/configs/da850_am18xxevm_defconfig
index 84e5571..5e83a0c 100644
--- a/configs/da850_am18xxevm_defconfig
+++ b/configs/da850_am18xxevm_defconfig
@@ -8,7 +8,7 @@ CONFIG_SYS_EXTRA_OPTIONS="DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/da850evm_defconfig b/configs/da850evm_defconfig
index feafcf3..df341ea 100644
--- a/configs/da850evm_defconfig
+++ b/configs/da850evm_defconfig
@@ -9,7 +9,7 @@ CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/da850evm_direct_nor_defconfig b/configs/da850evm_direct_nor_defconfig
index 7d68722..f813ae9 100644
--- a/configs/da850evm_direct_nor_defconfig
+++ b/configs/da850evm_direct_nor_defconfig
@@ -6,7 +6,7 @@ CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/dalmore_defconfig b/configs/dalmore_defconfig
index 727eb96..b61429b 100644
--- a/configs/dalmore_defconfig
+++ b/configs/dalmore_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
index 2c474c9..ddedec5 100644
--- a/configs/db-88f6820-gp_defconfig
+++ b/configs/db-88f6820-gp_defconfig
@@ -11,8 +11,8 @@ CONFIG_CMD_USB=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
index 5f9bc78..6b5fe0c 100644
--- a/configs/db-mv784mp-gp_defconfig
+++ b/configs/db-mv784mp-gp_defconfig
@@ -13,8 +13,8 @@ CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_NAND_PXA3XX=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/dra72_evm_defconfig b/configs/dra72_evm_defconfig
index 24dd7fb..2b4c285 100644
--- a/configs/dra72_evm_defconfig
+++ b/configs/dra72_evm_defconfig
@@ -19,7 +19,7 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
diff --git a/configs/dra74_evm_defconfig b/configs/dra74_evm_defconfig
index 743a2aa..fb7cb3f 100644
--- a/configs/dra74_evm_defconfig
+++ b/configs/dra74_evm_defconfig
@@ -18,7 +18,7 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index e82c264..6263f74 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -12,7 +12,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/dra7xx_evm_qspiboot_defconfig b/configs/dra7xx_evm_qspiboot_defconfig
index 76d1de3..08e154b 100644
--- a/configs/dra7xx_evm_qspiboot_defconfig
+++ b/configs/dra7xx_evm_qspiboot_defconfig
@@ -12,7 +12,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/dra7xx_evm_uart3_defconfig b/configs/dra7xx_evm_uart3_defconfig
index 2369095..203cb80 100644
--- a/configs/dra7xx_evm_uart3_defconfig
+++ b/configs/dra7xx_evm_uart3_defconfig
@@ -13,7 +13,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/draco_defconfig b/configs/draco_defconfig
index 902f645..a38b731 100644
--- a/configs/draco_defconfig
+++ b/configs/draco_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/dreamplug_defconfig b/configs/dreamplug_defconfig
index 8cea602..7cd8334 100644
--- a/configs/dreamplug_defconfig
+++ b/configs/dreamplug_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
index a4ccc52..eb8b241 100644
--- a/configs/ds414_defconfig
+++ b/configs/ds414_defconfig
@@ -11,7 +11,7 @@ CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/e2220-1170_defconfig b/configs/e2220-1170_defconfig
index d490116..dbd8896 100644
--- a/configs/e2220-1170_defconfig
+++ b/configs/e2220-1170_defconfig
@@ -13,7 +13,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
diff --git a/configs/ea20_defconfig b/configs/ea20_defconfig
index 27ef793..fe6183b 100644
--- a/configs/ea20_defconfig
+++ b/configs/ea20_defconfig
@@ -8,5 +8,5 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index 98a6a72..13fc5e7 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -20,8 +20,8 @@ CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_DM_PCI=y
diff --git a/configs/gose_defconfig b/configs/gose_defconfig
index f1457ca..fa15518 100644
--- a/configs/gose_defconfig
+++ b/configs/gose_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/gplugd_defconfig b/configs/gplugd_defconfig
index 6406004..816d99f 100644
--- a/configs/gplugd_defconfig
+++ b/configs/gplugd_defconfig
@@ -7,6 +7,6 @@ CONFIG_TARGET_GPLUGD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/inetspace_v2_defconfig b/configs/inetspace_v2_defconfig
index a3d98e2..1164959 100644
--- a/configs/inetspace_v2_defconfig
+++ b/configs/inetspace_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="INETSPACE_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ip04_defconfig b/configs/ip04_defconfig
index 00160eb..164fb51 100644
--- a/configs/ip04_defconfig
+++ b/configs/ip04_defconfig
@@ -7,6 +7,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
diff --git a/configs/jetson-tk1_defconfig b/configs/jetson-tk1_defconfig
index f6ede45..7b89893 100644
--- a/configs/jetson-tk1_defconfig
+++ b/configs/jetson-tk1_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
index 1df0600..8b694c0 100644
--- a/configs/k2e_evm_defconfig
+++ b/configs/k2e_evm_defconfig
@@ -13,6 +13,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index 026f38b..3e8de02 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -14,6 +14,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
index 1e8767e..b26a819 100644
--- a/configs/k2hk_evm_defconfig
+++ b/configs/k2hk_evm_defconfig
@@ -13,6 +13,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/k2l_evm_defconfig b/configs/k2l_evm_defconfig
index cca7df2..770b643 100644
--- a/configs/k2l_evm_defconfig
+++ b/configs/k2l_evm_defconfig
@@ -13,6 +13,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_ETH=y
diff --git a/configs/km_kirkwood_128m16_defconfig b/configs/km_kirkwood_128m16_defconfig
index 1eab5fc..8a6e72e 100644
--- a/configs/km_kirkwood_128m16_defconfig
+++ b/configs/km_kirkwood_128m16_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_128M16"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/km_kirkwood_defconfig b/configs/km_kirkwood_defconfig
index befd17f..d6b8b5f 100644
--- a/configs/km_kirkwood_defconfig
+++ b/configs/km_kirkwood_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/km_kirkwood_pci_defconfig b/configs/km_kirkwood_pci_defconfig
index 3405c24..023f6f1 100644
--- a/configs/km_kirkwood_pci_defconfig
+++ b/configs/km_kirkwood_pci_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_PCI"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmcoge4_defconfig b/configs/kmcoge4_defconfig
index 60a28c0..cd2d5e5 100644
--- a/configs/kmcoge4_defconfig
+++ b/configs/kmcoge4_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="KMCOGE4"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/kmcoge5un_defconfig b/configs/kmcoge5un_defconfig
index fec962a..033da21 100644
--- a/configs/kmcoge5un_defconfig
+++ b/configs/kmcoge5un_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_COGE5UN"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmlion1_defconfig b/configs/kmlion1_defconfig
index 55c4f1c..5b81e4b 100644
--- a/configs/kmlion1_defconfig
+++ b/configs/kmlion1_defconfig
@@ -10,8 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="KMLION1"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/kmnusa_defconfig b/configs/kmnusa_defconfig
index 295b2bb..191f90f 100644
--- a/configs/kmnusa_defconfig
+++ b/configs/kmnusa_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_NUSA"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmsugp1_defconfig b/configs/kmsugp1_defconfig
index e6e3cd0..3af0dc8 100644
--- a/configs/kmsugp1_defconfig
+++ b/configs/kmsugp1_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_SUGP1"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/kmsuv31_defconfig b/configs/kmsuv31_defconfig
index 33e74ca..ceaf47f 100644
--- a/configs/kmsuv31_defconfig
+++ b/configs/kmsuv31_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_SUV31"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/koelsch_defconfig b/configs/koelsch_defconfig
index d9b6590..0dfa9db 100644
--- a/configs/koelsch_defconfig
+++ b/configs/koelsch_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/lager_defconfig b/configs/lager_defconfig
index 922c11e..a8b05b8 100644
--- a/configs/lager_defconfig
+++ b/configs/lager_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/legoev3_defconfig b/configs/legoev3_defconfig
index 2a494a5..99adaac 100644
--- a/configs/legoev3_defconfig
+++ b/configs/legoev3_defconfig
@@ -9,5 +9,5 @@ CONFIG_AUTOBOOT_STOP_STR="l"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_M25P80=y
 CONFIG_MTD_SPI_NOR=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ls1021aqds_qspi_defconfig b/configs/ls1021aqds_qspi_defconfig
index ce4b677..590a994 100644
--- a/configs/ls1021aqds_qspi_defconfig
+++ b/configs/ls1021aqds_qspi_defconfig
@@ -13,7 +13,7 @@ CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_MTD_DATAFLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig b/configs/ls1021aqds_sdcard_qspi_defconfig
index 809178a..9a06631 100644
--- a/configs/ls1021aqds_sdcard_qspi_defconfig
+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ls1021atwr_qspi_defconfig b/configs/ls1021atwr_qspi_defconfig
index 1a03726..e02e6f0 100644
--- a/configs/ls1021atwr_qspi_defconfig
+++ b/configs/ls1021atwr_qspi_defconfig
@@ -13,7 +13,7 @@ CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/ls1021atwr_sdcard_qspi_defconfig b/configs/ls1021atwr_sdcard_qspi_defconfig
index 9adc55b..43635cc 100644
--- a/configs/ls1021atwr_sdcard_qspi_defconfig
+++ b/configs/ls1021atwr_sdcard_qspi_defconfig
@@ -11,7 +11,7 @@ CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/lschlv2_defconfig b/configs/lschlv2_defconfig
index 847cae2..da16e2f 100644
--- a/configs/lschlv2_defconfig
+++ b/configs/lschlv2_defconfig
@@ -8,6 +8,6 @@ CONFIG_SYS_EXTRA_OPTIONS="LSCHLV2"
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/lsxhl_defconfig b/configs/lsxhl_defconfig
index 175ec1a..9d4df95 100644
--- a/configs/lsxhl_defconfig
+++ b/configs/lsxhl_defconfig
@@ -8,6 +8,6 @@ CONFIG_SYS_EXTRA_OPTIONS="LSXHL"
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/m28evk_defconfig b/configs/m28evk_defconfig
index 59d4164..baf5741 100644
--- a/configs/m28evk_defconfig
+++ b/configs/m28evk_defconfig
@@ -7,5 +7,5 @@ CONFIG_FIT=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/marsboard_defconfig b/configs/marsboard_defconfig
index 10199ba..4152bd0 100644
--- a/configs/marsboard_defconfig
+++ b/configs/marsboard_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
index 03ab40e..3ecae2f 100644
--- a/configs/maxbcm_defconfig
+++ b/configs/maxbcm_defconfig
@@ -11,9 +11,9 @@ CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/mgcoge3un_defconfig b/configs/mgcoge3un_defconfig
index a36c922..53a1d4e 100644
--- a/configs/mgcoge3un_defconfig
+++ b/configs/mgcoge3un_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_MGCOGE3UN"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index ab83076..2c31e40 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -26,9 +26,9 @@ CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
diff --git a/configs/mx28evk_auart_console_defconfig b/configs/mx28evk_auart_console_defconfig
index f56ec28..dd17761 100644
--- a/configs/mx28evk_auart_console_defconfig
+++ b/configs/mx28evk_auart_console_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_M
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_defconfig b/configs/mx28evk_defconfig
index eee2651..927084f 100644
--- a/configs/mx28evk_defconfig
+++ b/configs/mx28evk_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_nand_defconfig b/configs/mx28evk_nand_defconfig
index 8fa0702..170c1e2 100644
--- a/configs/mx28evk_nand_defconfig
+++ b/configs/mx28evk_nand_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_NAND"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx28evk_spi_defconfig b/configs/mx28evk_spi_defconfig
index 1768d90..8e3cbe7 100644
--- a/configs/mx28evk_spi_defconfig
+++ b/configs/mx28evk_spi_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_SPI_FLASH"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6dlsabreauto_defconfig b/configs/mx6dlsabreauto_defconfig
index b4a84bc..a1aa5d0 100644
--- a/configs/mx6dlsabreauto_defconfig
+++ b/configs/mx6dlsabreauto_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6dlsabresd_defconfig b/configs/mx6dlsabresd_defconfig
index e2181b0..5ca263d 100644
--- a/configs/mx6dlsabresd_defconfig
+++ b/configs/mx6dlsabresd_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6dlsabresd.cfg
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qpsabreauto_defconfig b/configs/mx6qpsabreauto_defconfig
index 49427ed..1b18946 100644
--- a/configs/mx6qpsabreauto_defconfig
+++ b/configs/mx6qpsabreauto_defconfig
@@ -5,5 +5,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6qp.cfg,MX6
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabreauto_defconfig b/configs/mx6qsabreauto_defconfig
index 16eda5d..abadb98 100644
--- a/configs/mx6qsabreauto_defconfig
+++ b/configs/mx6qsabreauto_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index 6681a32..e1d5fec 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabresd_defconfig b/configs/mx6qsabresd_defconfig
index ff022d7..f40bb7c 100644
--- a/configs/mx6qsabresd_defconfig
+++ b/configs/mx6qsabresd_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6q_4x_mt41j128
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6sabresd_spl_defconfig b/configs/mx6sabresd_spl_defconfig
index 816ab97..04886d3 100644
--- a/configs/mx6sabresd_spl_defconfig
+++ b/configs/mx6sabresd_spl_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6Q"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_defconfig b/configs/mx6slevk_defconfig
index 6a1045d..b155915 100644
--- a/configs/mx6slevk_defconfig
+++ b/configs/mx6slevk_defconfig
@@ -9,6 +9,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_spinor_defconfig b/configs/mx6slevk_spinor_defconfig
index 4aa4b14..13efee5 100644
--- a/configs/mx6slevk_spinor_defconfig
+++ b/configs/mx6slevk_spinor_defconfig
@@ -9,6 +9,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6slevk_spl_defconfig b/configs/mx6slevk_spl_defconfig
index 6a903ae..eb79aea 100644
--- a/configs/mx6slevk_spl_defconfig
+++ b/configs/mx6slevk_spl_defconfig
@@ -7,6 +7,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6sxsabreauto_defconfig b/configs/mx6sxsabreauto_defconfig
index 3616c82..ff44bf8 100644
--- a/configs/mx6sxsabreauto_defconfig
+++ b/configs/mx6sxsabreauto_defconfig
@@ -9,4 +9,4 @@ CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/net2big_v2_defconfig b/configs/net2big_v2_defconfig
index ed4860d..5e4cb44 100644
--- a/configs/net2big_v2_defconfig
+++ b/configs/net2big_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="NET2BIG_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_lite_v2_defconfig b/configs/netspace_lite_v2_defconfig
index 351da4a..4ac6cd2 100644
--- a/configs/netspace_lite_v2_defconfig
+++ b/configs/netspace_lite_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_LITE_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_max_v2_defconfig b/configs/netspace_max_v2_defconfig
index 34abc94..5b55c57 100644
--- a/configs/netspace_max_v2_defconfig
+++ b/configs/netspace_max_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MAX_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_mini_v2_defconfig b/configs/netspace_mini_v2_defconfig
index 0a16c0c..582383c 100644
--- a/configs/netspace_mini_v2_defconfig
+++ b/configs/netspace_mini_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MINI_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/netspace_v2_defconfig b/configs/netspace_v2_defconfig
index cc22465..a988dcc 100644
--- a/configs/netspace_v2_defconfig
+++ b/configs/netspace_v2_defconfig
@@ -7,6 +7,6 @@ CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_V2"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
index c2dccda..4fc11f9 100644
--- a/configs/nitrogen6dl2g_defconfig
+++ b/configs/nitrogen6dl2g_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
index 2d76de1..10d2d55 100644
--- a/configs/nitrogen6dl_defconfig
+++ b/configs/nitrogen6dl_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,M
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index f4503e2..17b9268 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index aca3318..88b34d9 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
index 7c65fe1..85c002e 100644
--- a/configs/nitrogen6s1g_defconfig
+++ b/configs/nitrogen6s1g_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
index e7fbe42..438a7de 100644
--- a/configs/nitrogen6s_defconfig
+++ b/configs/nitrogen6s_defconfig
@@ -7,5 +7,5 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/nyan-big_defconfig b/configs/nyan-big_defconfig
index 275e998..1006cd9 100644
--- a/configs/nyan-big_defconfig
+++ b/configs/nyan-big_defconfig
@@ -25,7 +25,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_FIXED=y
diff --git a/configs/omapl138_lcdk_defconfig b/configs/omapl138_lcdk_defconfig
index 41f9039..0495a13 100644
--- a/configs/omapl138_lcdk_defconfig
+++ b/configs/omapl138_lcdk_defconfig
@@ -8,7 +8,7 @@ CONFIG_SYS_PROMPT="U-Boot > "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ot1200_defconfig b/configs/ot1200_defconfig
index 1b77d05..58f68f8 100644
--- a/configs/ot1200_defconfig
+++ b/configs/ot1200_defconfig
@@ -7,8 +7,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/bachmann/ot1200/mx6q_4x_mt41j128.cfg,
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ot1200_spl_defconfig b/configs/ot1200_spl_defconfig
index 3cb0ae5..5c72877 100644
--- a/configs/ot1200_spl_defconfig
+++ b/configs/ot1200_spl_defconfig
@@ -8,8 +8,8 @@ CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/p2371-0000_defconfig b/configs/p2371-0000_defconfig
index eacb3f7..6c8fe5c 100644
--- a/configs/p2371-0000_defconfig
+++ b/configs/p2371-0000_defconfig
@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
diff --git a/configs/p2371-2180_defconfig b/configs/p2371-2180_defconfig
index 857fef2..3f215ba 100644
--- a/configs/p2371-2180_defconfig
+++ b/configs/p2371-2180_defconfig
@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
diff --git a/configs/p2571_defconfig b/configs/p2571_defconfig
index 67e186e..829bac2 100644
--- a/configs/p2571_defconfig
+++ b/configs/p2571_defconfig
@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
diff --git a/configs/pcm051_rev1_defconfig b/configs/pcm051_rev1_defconfig
index 809cce1..ca88b0e 100644
--- a/configs/pcm051_rev1_defconfig
+++ b/configs/pcm051_rev1_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/pcm051_rev3_defconfig b/configs/pcm051_rev3_defconfig
index 654d657..91e4379 100644
--- a/configs/pcm051_rev3_defconfig
+++ b/configs/pcm051_rev3_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
index aa6b29a..7853f33 100644
--- a/configs/peach-pi_defconfig
+++ b/configs/peach-pi_defconfig
@@ -25,7 +25,7 @@ CONFIG_CROS_EC_SPI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_TPS65090=y
 CONFIG_DM_REGULATOR=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index 285e4ae..893680c 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -25,7 +25,7 @@ CONFIG_CROS_EC_SPI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_TPS65090=y
 CONFIG_DM_REGULATOR=y
diff --git a/configs/porter_defconfig b/configs/porter_defconfig
index 99ba1d5..9f2212c 100644
--- a/configs/porter_defconfig
+++ b/configs/porter_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/portl2_defconfig b/configs/portl2_defconfig
index e463766..5d67f31 100644
--- a/configs/portl2_defconfig
+++ b/configs/portl2_defconfig
@@ -6,6 +6,6 @@ CONFIG_SYS_EXTRA_OPTIONS="KM_PORTL2"
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/pr1_defconfig b/configs/pr1_defconfig
index 2f92389..efc1912 100644
--- a/configs/pr1_defconfig
+++ b/configs/pr1_defconfig
@@ -7,6 +7,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/pxm2_defconfig b/configs/pxm2_defconfig
index 85cb63a..d2ac0bb 100644
--- a/configs/pxm2_defconfig
+++ b/configs/pxm2_defconfig
@@ -12,6 +12,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index d22c859..c7ee19b 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -19,8 +19,8 @@ CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
diff --git a/configs/rastaban_defconfig b/configs/rastaban_defconfig
index 6bba132..23f994f 100644
--- a/configs/rastaban_defconfig
+++ b/configs/rastaban_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/riotboard_defconfig b/configs/riotboard_defconfig
index aa711f2..69ac58a 100644
--- a/configs/riotboard_defconfig
+++ b/configs/riotboard_defconfig
@@ -8,6 +8,6 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_NOR_SST=y
 CONFIG_DM_THERMAL=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/rut_defconfig b/configs/rut_defconfig
index d6e4423..e3b8de6 100644
--- a/configs/rut_defconfig
+++ b/configs/rut_defconfig
@@ -12,6 +12,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 6873d7a..adfb266 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -46,11 +46,11 @@ CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
diff --git a/configs/sh7752evb_defconfig b/configs/sh7752evb_defconfig
index 5754fe5..91df9e1 100644
--- a/configs/sh7752evb_defconfig
+++ b/configs/sh7752evb_defconfig
@@ -19,6 +19,6 @@ CONFIG_TARGET_SH7752EVB=y
 # CONFIG_CMD_MISC is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/sh7753evb_defconfig b/configs/sh7753evb_defconfig
index ae46a8f..9a9c5d5 100644
--- a/configs/sh7753evb_defconfig
+++ b/configs/sh7753evb_defconfig
@@ -18,6 +18,6 @@ CONFIG_TARGET_SH7753EVB=y
 # CONFIG_CMD_MISC is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/sh7757lcr_defconfig b/configs/sh7757lcr_defconfig
index 51f9061..8b54203 100644
--- a/configs/sh7757lcr_defconfig
+++ b/configs/sh7757lcr_defconfig
@@ -19,5 +19,5 @@ CONFIG_TARGET_SH7757LCR=y
 # CONFIG_CMD_MISC is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/configs/silk_defconfig b/configs/silk_defconfig
index d7ddcb8..bf82c03 100644
--- a/configs/silk_defconfig
+++ b/configs/silk_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
index 8bbafa5..a8ae3b6 100644
--- a/configs/smdk5250_defconfig
+++ b/configs/smdk5250_defconfig
@@ -17,7 +17,7 @@ CONFIG_DM_I2C_COMPAT=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
 CONFIG_DM_REGULATOR=y
diff --git a/configs/smdk5420_defconfig b/configs/smdk5420_defconfig
index 790790a..7c2e9fb 100644
--- a/configs/smdk5420_defconfig
+++ b/configs/smdk5420_defconfig
@@ -14,7 +14,7 @@ CONFIG_DM_I2C_COMPAT=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
 CONFIG_EXYNOS_SPI=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 09eb339..6cb2a58 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -26,7 +26,7 @@ CONFIG_CROS_EC_I2C=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
 CONFIG_PMIC_S5M8767=y
diff --git a/configs/socfpga_arria5_defconfig b/configs/socfpga_arria5_defconfig
index 32e787b..4b932fb 100644
--- a/configs/socfpga_arria5_defconfig
+++ b/configs/socfpga_arria5_defconfig
@@ -17,8 +17,8 @@ CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
diff --git a/configs/socfpga_cyclone5_defconfig b/configs/socfpga_cyclone5_defconfig
index 3c5b7cc..4dea413 100644
--- a/configs/socfpga_cyclone5_defconfig
+++ b/configs/socfpga_cyclone5_defconfig
@@ -17,8 +17,8 @@ CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
diff --git a/configs/socfpga_sockit_defconfig b/configs/socfpga_sockit_defconfig
index 48947b1..715428b 100644
--- a/configs/socfpga_sockit_defconfig
+++ b/configs/socfpga_sockit_defconfig
@@ -17,8 +17,8 @@ CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
diff --git a/configs/socfpga_socrates_defconfig b/configs/socfpga_socrates_defconfig
index 336d30b..97e6f7b 100644
--- a/configs/socfpga_socrates_defconfig
+++ b/configs/socfpga_socrates_defconfig
@@ -17,8 +17,8 @@ CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/socfpga_sr1500_defconfig b/configs/socfpga_sr1500_defconfig
index b7fc8a1..28099bf 100644
--- a/configs/socfpga_sr1500_defconfig
+++ b/configs/socfpga_sr1500_defconfig
@@ -16,7 +16,7 @@ CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
diff --git a/configs/spring_defconfig b/configs/spring_defconfig
index f6d7f05..bff5722 100644
--- a/configs/spring_defconfig
+++ b/configs/spring_defconfig
@@ -26,7 +26,7 @@ CONFIG_CROS_EC_I2C=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
 CONFIG_PMIC_S5M8767=y
diff --git a/configs/stout_defconfig b/configs/stout_defconfig
index 60896de..23d908e 100644
--- a/configs/stout_defconfig
+++ b/configs/stout_defconfig
@@ -20,5 +20,5 @@ CONFIG_SH_SDHI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/stv0991_defconfig b/configs/stv0991_defconfig
index cce8818..4aea344 100644
--- a/configs/stv0991_defconfig
+++ b/configs/stv0991_defconfig
@@ -11,8 +11,8 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_CADENCE_QSPI=y
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
index bb56c38..083ffce 100644
--- a/configs/taurus_defconfig
+++ b/configs/taurus_defconfig
@@ -13,6 +13,6 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tec-ng_defconfig b/configs/tec-ng_defconfig
index 4a27e12..f1d53f2 100644
--- a/configs/tec-ng_defconfig
+++ b/configs/tec-ng_defconfig
@@ -16,7 +16,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA20_SLINK=y
 CONFIG_USB=y
diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
index b6897f5..74fea4d 100644
--- a/configs/theadorable_debug_defconfig
+++ b/configs/theadorable_debug_defconfig
@@ -16,8 +16,8 @@ CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/theadorable_defconfig b/configs/theadorable_defconfig
index 291b90e..f7453d1 100644
--- a/configs/theadorable_defconfig
+++ b/configs/theadorable_defconfig
@@ -16,8 +16,8 @@ CONFIG_CMD_SF=y
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_MACRONIX=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
diff --git a/configs/thuban_defconfig b/configs/thuban_defconfig
index 8820831..a8ed889 100644
--- a/configs/thuban_defconfig
+++ b/configs/thuban_defconfig
@@ -11,6 +11,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6q_mba6_mmc_defconfig b/configs/tqma6q_mba6_mmc_defconfig
index f0175f0..70df6d0 100644
--- a/configs/tqma6q_mba6_mmc_defconfig
+++ b/configs/tqma6q_mba6_mmc_defconfig
@@ -9,5 +9,5 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6q_mba6_spi_defconfig b/configs/tqma6q_mba6_spi_defconfig
index c5b6103..4033ddd 100644
--- a/configs/tqma6q_mba6_spi_defconfig
+++ b/configs/tqma6q_mba6_spi_defconfig
@@ -10,5 +10,5 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6s_mba6_mmc_defconfig b/configs/tqma6s_mba6_mmc_defconfig
index 70b7d5f..a7c2d3f 100644
--- a/configs/tqma6s_mba6_mmc_defconfig
+++ b/configs/tqma6s_mba6_mmc_defconfig
@@ -10,5 +10,5 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/tqma6s_mba6_spi_defconfig b/configs/tqma6s_mba6_spi_defconfig
index bbe279c..38fde31 100644
--- a/configs/tqma6s_mba6_spi_defconfig
+++ b/configs/tqma6s_mba6_spi_defconfig
@@ -11,5 +11,5 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_CMD_GPIO=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/trimslice_defconfig b/configs/trimslice_defconfig
index bfd0cf7..73cd1c9 100644
--- a/configs/trimslice_defconfig
+++ b/configs/trimslice_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_PCI_TEGRA=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA20_SFLASH=y
diff --git a/configs/tseries_spi_defconfig b/configs/tseries_spi_defconfig
index 1bfa9d6..e2d5c5e 100644
--- a/configs/tseries_spi_defconfig
+++ b/configs/tseries_spi_defconfig
@@ -27,7 +27,7 @@ CONFIG_CMD_TIME=y
 CONFIG_NETCONSOLE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_NOR_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/venice2_defconfig b/configs/venice2_defconfig
index 1501622..54b20c7 100644
--- a/configs/venice2_defconfig
+++ b/configs/venice2_defconfig
@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
diff --git a/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig
index 49232e1..87958f2 100644
--- a/configs/zynq_microzed_defconfig
+++ b/configs/zynq_microzed_defconfig
@@ -14,9 +14,9 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
 CONFIG_MTD_M25P80=y
diff --git a/configs/zynq_zc702_defconfig b/configs/zynq_zc702_defconfig
index f1d169f..544ba83 100644
--- a/configs/zynq_zc702_defconfig
+++ b/configs/zynq_zc702_defconfig
@@ -16,9 +16,9 @@ CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_ZYNQ=y
diff --git a/configs/zynq_zc706_defconfig b/configs/zynq_zc706_defconfig
index d250cc8..1362990 100644
--- a/configs/zynq_zc706_defconfig
+++ b/configs/zynq_zc706_defconfig
@@ -17,8 +17,8 @@ CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
diff --git a/configs/zynq_zc770_xm010_defconfig b/configs/zynq_zc770_xm010_defconfig
index b17e9b8..e65e716 100644
--- a/configs/zynq_zc770_xm010_defconfig
+++ b/configs/zynq_zc770_xm010_defconfig
@@ -18,10 +18,10 @@ CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_SST=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_SST=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_SPI=y
 CONFIG_ZYNQ_QSPI=y
diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig
index 4783c20..09b2785 100644
--- a/configs/zynq_zed_defconfig
+++ b/configs/zynq_zed_defconfig
@@ -17,8 +17,8 @@ CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_NOR_SPANSION=y
+CONFIG_SPI_NOR_STMICRO=y
+CONFIG_SPI_NOR_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
diff --git a/configs/zynq_zybo_defconfig b/configs/zynq_zybo_defconfig
index 78eeb30..953da23 100644
--- a/configs/zynq_zybo_defconfig
+++ b/configs/zynq_zybo_defconfig
@@ -16,7 +16,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_ZYNQ_SDHCI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_NOR_SPANSION=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_ZYNQ=y
diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index cdef6aa..15e0746 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -73,27 +73,27 @@ config SPI_FLASH_GIGADEVICE
 	help
 	  Add support for various GigaDevice SPI flash chips (GD25xxx)
 
-config SPI_FLASH_MACRONIX
+config SPI_NOR_MACRONIX
 	bool "Macronix SPI flash support"
 	help
 	  Add support for various Macronix SPI flash chips (MX25Lxxx)
 
-config SPI_FLASH_SPANSION
+config SPI_NOR_SPANSION
 	bool "Spansion SPI flash support"
 	help
 	  Add support for various Spansion SPI flash chips (S25FLxxx)
 
-config SPI_FLASH_STMICRO
+config SPI_NOR_STMICRO
 	bool "STMicro SPI flash support"
 	help
 	  Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)
 
-config SPI_FLASH_SST
+config SPI_NOR_SST
 	bool "SST SPI flash support"
 	help
 	  Add support for various SST SPI flash chips (SST25xxx)
 
-config SPI_FLASH_WINBOND
+config SPI_NOR_WINBOND
 	bool "Winbond SPI flash support"
 	help
 	  Add support for various Winbond SPI flash chips (W25xxx)
diff --git a/drivers/mtd/spi-nor/spi-nor-ids.c b/drivers/mtd/spi-nor/spi-nor-ids.c
index 2599731..b523948 100644
--- a/drivers/mtd/spi-nor/spi-nor-ids.c
+++ b/drivers/mtd/spi-nor/spi-nor-ids.c
@@ -124,7 +124,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "is25lp064", INFO(0x9d6017, 0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
 	{ "is25lp128", INFO(0x9d6018, 0, 64 * 1024, 256, SNOR_READ_BASE, 0) },
 #endif
-#ifdef CONFIG_SPI_FLASH_MACRONIX	/* MACRONIX */
+#ifdef CONFIG_SPI_NOR_MACRONIX	/* MACRONIX */
 	/* Macronix */
 	{ "mx25l512e",   INFO(0xc22010, 0, 64 * 1024,   1, SNOR_READ_BASE, SECT_4K) },
 	{ "mx25l2005a",  INFO(0xc22012, 0, 64 * 1024,   4, SNOR_READ_BASE, SECT_4K) },
@@ -142,7 +142,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
 	{ "mx66l1g55g",  INFO(0xc2261b, 0, 64 * 1024, 2048, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
 #endif
-#ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
+#ifdef CONFIG_SPI_NOR_STMICRO		/* STMICRO */
 	/* Micron */
 	{ "n25q032",	 INFO(0x20ba16, 0, 64 * 1024,   64, SNOR_READ_FULL, SNOR_WRITE_QUAD) },
 	{ "n25q064",     INFO(0x20ba17, 0, 64 * 1024,  128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
@@ -159,7 +159,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "pm25lv010",   INFO(0,        0, 32 * 1024,    4, SNOR_READ_BASE, SECT_4K_PMC) },
 	{ "pm25lq032",   INFO(0x7f9d46, 0, 64 * 1024,   64, SNOR_READ_BASE, SECT_4K) },
 
-#ifdef CONFIG_SPI_FLASH_SPANSION	/* SPANSION */
+#ifdef CONFIG_SPI_NOR_SPANSION	/* SPANSION */
 	/* Spansion -- single (large) sector size only, at least
 	 * for the chips listed here (without boot sectors).
 	 */
@@ -188,7 +188,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "s25fl164k",  INFO(0x014017,      0,  64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
 	{ "s25fl204k",  INFO(0x014013,      0,  64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
 #endif
-#ifdef CONFIG_SPI_FLASH_SST		/* SST */
+#ifdef CONFIG_SPI_NOR_SST		/* SST */
 	/* SST -- large erase sizes are "overlays", "sectors" are 4K */
 	{ "sst25vf040b", INFO(0xbf258d, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
 	{ "sst25vf080b", INFO(0xbf258e, 0, 64 * 1024, 16, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
@@ -204,7 +204,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "sst25wf040",  INFO(0xbf2504, 0, 64 * 1024,  8, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
 	{ "sst25wf080",  INFO(0xbf2505, 0, 64 * 1024, 16, SNOR_READ_BASE, SECT_4K | SST_WRITE) },
 #endif
-#ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
+#ifdef CONFIG_SPI_NOR_STMICRO		/* STMICRO */
 	/* ST Microelectronics -- newer production may have feature updates */
 	{ "m25p05",  INFO(0x202010,  0,  32 * 1024,   2, SNOR_READ_BASE, 0) },
 	{ "m25p10",  INFO(0x202011,  0,  32 * 1024,   4, SNOR_READ_BASE, 0) },
@@ -241,7 +241,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "m25px64",    INFO(0x207117,  0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
 	{ "m25px80",    INFO(0x207114,  0, 64 * 1024, 16, SNOR_READ_BASE, 0) },
 #endif
-#ifdef CONFIG_SPI_FLASH_WINBOND		/* WINBOND */
+#ifdef CONFIG_SPI_NOR_WINBOND		/* WINBOND */
 	/* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */
 	{ "W25P80", INFO(0xef2014, 0, 64 * 1024, 16, SNOR_READ_BASE, 0) },
 	{ "W25P16", INFO(0xef2015, 0, 64 * 1024, 32, SNOR_READ_BASE, 0) },
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 130f7af..8cf95a5 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -74,7 +74,7 @@ static int write_sr(struct spi_nor *nor, u8 ws)
 	return nor->write_reg(nor, SNOR_OP_WRSR, nor->cmd_buf, 1);
 }
 
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+#if defined(CONFIG_SPI_NOR_SPANSION) || defined(CONFIG_SPI_NOR_WINBOND)
 static int read_cr(struct spi_nor *nor)
 {
 	u8 cr;
@@ -104,7 +104,7 @@ static int write_sr_cr(struct spi_nor *nor, u16 val)
 }
 #endif
 
-#ifdef CONFIG_SPI_FLASH_STMICRO
+#ifdef CONFIG_SPI_NOR_STMICRO
 static int read_evcr(struct spi_nor *nor)
 {
 	u8 evcr;
@@ -264,7 +264,7 @@ static void spi_nor_dual(struct spi_nor *nor, u32 *addr)
 }
 #endif
 
-#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
+#if defined(CONFIG_SPI_NOR_STMICRO) || defined(CONFIG_SPI_NOR_SST)
 static void stm_get_locked_range(struct spi_nor *nor, u8 sr, loff_t *ofs,
 				 uint64_t *len)
 {
@@ -676,7 +676,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 	return ret;
 }
 
-#ifdef CONFIG_SPI_FLASH_SST
+#ifdef CONFIG_SPI_NOR_SST
 static int sst_byte_write(struct spi_nor *nor, u32 offset,
 			  const void *buf, size_t *retlen)
 {
@@ -784,7 +784,7 @@ static int sst_write_bp(struct mtd_info *mtd, loff_t offset, size_t len,
 }
 #endif
 
-#ifdef CONFIG_SPI_FLASH_MACRONIX
+#ifdef CONFIG_SPI_NOR_MACRONIX
 static int macronix_quad_enable(struct spi_nor *nor)
 {
 	int ret, val;
@@ -815,7 +815,7 @@ static int macronix_quad_enable(struct spi_nor *nor)
 }
 #endif
 
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+#if defined(CONFIG_SPI_NOR_SPANSION) || defined(CONFIG_SPI_NOR_WINBOND)
 static int spansion_quad_enable(struct spi_nor *nor)
 {
 	int ret, val;
@@ -847,7 +847,7 @@ static int spansion_quad_enable(struct spi_nor *nor)
 }
 #endif
 
-#ifdef CONFIG_SPI_FLASH_STMICRO
+#ifdef CONFIG_SPI_NOR_STMICRO
 static int micron_quad_enable(struct spi_nor *nor)
 {
 	int ret, val;
@@ -877,16 +877,16 @@ static int micron_quad_enable(struct spi_nor *nor)
 static int set_quad_mode(struct spi_nor *nor, const struct spi_nor_info *info)
 {
 	switch (JEDEC_MFR(info)) {
-#ifdef CONFIG_SPI_FLASH_MACRONIX
+#ifdef CONFIG_SPI_NOR_MACRONIX
 	case SNOR_MFR_MACRONIX:
 		return macronix_quad_enable(nor);
 #endif
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
+#if defined(CONFIG_SPI_NOR_SPANSION) || defined(CONFIG_SPI_NOR_WINBOND)
 	case SNOR_MFR_SPANSION:
 	case SNOR_MFR_WINBOND:
 		return spansion_quad_enable(nor);
 #endif
-#ifdef CONFIG_SPI_FLASH_STMICRO
+#ifdef CONFIG_SPI_NOR_STMICRO
 	case SNOR_MFR_MICRON:
 		return micron_quad_enable(nor);
 #endif
@@ -985,7 +985,7 @@ int spi_nor_scan(struct spi_nor *nor)
 		nor->flags |= SNOR_F_SST_WRITE;
 
 	mtd->_write = spi_nor_write;
-#if defined(CONFIG_SPI_FLASH_SST)
+#if defined(CONFIG_SPI_NOR_SST)
 	if (nor->flags & SNOR_F_SST_WRITE) {
 		if (nor->mode & SNOR_WRITE_1_1_BYTE)
 			mtd->_write = sst_write_bp;
@@ -994,7 +994,7 @@ int spi_nor_scan(struct spi_nor *nor)
 	}
 #endif
 
-#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
+#if defined(CONFIG_SPI_NOR_STMICRO) || defined(CONFIG_SPI_NOR_SST)
 	/* NOR protection support for STmicro/Micron chips and similar */
 	if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||
 	    JEDEC_MFR(info) == SNOR_MFR_SST) {
diff --git a/include/configs/cgtqmx6eval.h b/include/configs/cgtqmx6eval.h
index da81dc4..a433abd 100644
--- a/include/configs/cgtqmx6eval.h
+++ b/include/configs/cgtqmx6eval.h
@@ -43,8 +43,8 @@
 
 /* SPI NOR */
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH_STMICRO
-#define CONFIG_SPI_FLASH_SST
+#define CONFIG_SPI_NOR_STMICRO
+#define CONFIG_SPI_NOR_SST
 #define CONFIG_MXC_SPI
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_SPEED		20000000
diff --git a/include/configs/clearfog.h b/include/configs/clearfog.h
index b6ebd66..10c24d7 100644
--- a/include/configs/clearfog.h
+++ b/include/configs/clearfog.h
@@ -52,7 +52,7 @@
 /* SPI NOR flash default params, used by sf commands */
 #define CONFIG_SF_DEFAULT_SPEED		1000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_3
-#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SPI_NOR_STMICRO
 
 /*
  * SDIO/MMC Card Configuration
diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h
index 74e5c81..515c3ff 100644
--- a/include/configs/ls1043a_common.h
+++ b/include/configs/ls1043a_common.h
@@ -196,8 +196,8 @@
 #ifdef CONFIG_FSL_DSPI
 #define CONFIG_CMD_SF
 #define CONFIG_MTD
-#define CONFIG_SPI_FLASH_STMICRO	/* cs0 */
-#define CONFIG_SPI_FLASH_SST		/* cs1 */
+#define CONFIG_SPI_NOR_STMICRO	/* cs0 */
+#define CONFIG_SPI_NOR_SST		/* cs1 */
 #define CONFIG_SPI_FLASH_EON		/* cs2 */
 #if !defined(CONFIG_QSPI_BOOT) && !defined(CONFIG_SD_BOOT_QSPI)
 #define CONFIG_SF_DEFAULT_BUS		1
diff --git a/include/configs/ls1043aqds.h b/include/configs/ls1043aqds.h
index 68e00c8..dd4bc29 100644
--- a/include/configs/ls1043aqds.h
+++ b/include/configs/ls1043aqds.h
@@ -373,7 +373,7 @@ unsigned long get_board_ddr_clk(void);
 #if defined(CONFIG_QSPI_BOOT) || defined(CONFIG_SD_BOOT_QSPI)
 #define CONFIG_FSL_QSPI
 #ifdef CONFIG_FSL_QSPI
-#define CONFIG_SPI_FLASH_SPANSION
+#define CONFIG_SPI_NOR_SPANSION
 #define FSL_QSPI_FLASH_SIZE		(1 << 24)
 #define FSL_QSPI_FLASH_NUM		2
 #endif
diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
index 683af6d..043e5bd 100644
--- a/include/configs/mx6ul_14x14_evk.h
+++ b/include/configs/mx6ul_14x14_evk.h
@@ -204,7 +204,7 @@
 #define CONFIG_SF_DEFAULT_CS		0
 #define CONFIG_SF_DEFAULT_SPEED	40000000
 #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
-#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SPI_NOR_STMICRO
 #define FSL_QSPI_FLASH_NUM		1
 #define FSL_QSPI_FLASH_SIZE		SZ_32M
 #endif
diff --git a/include/configs/mx7dsabresd.h b/include/configs/mx7dsabresd.h
index c824d28..59f0e89 100644
--- a/include/configs/mx7dsabresd.h
+++ b/include/configs/mx7dsabresd.h
@@ -289,7 +289,7 @@
 #define CONFIG_CMD_SF
 #define CONFIG_MTD_SPI_NOR
 #define CONFIG_MTD_M25P80
-#define CONFIG_SPI_FLASH_MACRONIX
+#define CONFIG_SPI_NOR_MACRONIX
 #define CONFIG_SPI_NOR_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
diff --git a/include/configs/vinco.h b/include/configs/vinco.h
index 92b1b4b..8560bc0 100644
--- a/include/configs/vinco.h
+++ b/include/configs/vinco.h
@@ -46,7 +46,7 @@
 #ifdef CONFIG_CMD_SF
 #define CONFIG_ATMEL_SPI
 #define CONFIG_ATMEL_SPI0
-#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SPI_NOR_STMICRO
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
 #define CONFIG_SF_DEFAULT_SPEED		50000000
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 63/87] mtd: spi-nor: Add CONFIG_SPI_NOR_MISC
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (60 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 62/87] configs: spi-nor: Add new flash vendor configs Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 64/87] configs: Use CONFIG_SPI_NOR_MISC Jagan Teki
                   ` (23 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

The flash chips vendors like
- Atmel
- EON
- ESMT
- Everspin
- Fujitsu
- GigaDevice
- Intel
- ISSI
- PMC
- non-JEDEC

have shared most of the spi-nor core code, so group
all of them into a common config CONFIG_SPI_NOR_MISC
this certainly reduced the individual chip configs.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/Kconfig       | 17 ++++-------------
 drivers/mtd/spi-nor/spi-nor-ids.c | 21 ++++++++++++++-------
 2 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 15e0746..f9c6ca9 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -58,20 +58,11 @@ config SPI_NOR_BAR
 	  Bank/Extended address registers are used to access the flash
 	  which has size > 16MiB in 3-byte addressing.
 
-config SPI_FLASH_ATMEL
-	bool "Atmel SPI flash support"
+config SPI_NOR_MISC
+	bool "Miscellaneous SPI NOR flash's support"
 	help
-	  Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx)
-
-config SPI_FLASH_EON
-	bool "EON SPI flash support"
-	help
-	  Add support for various EON SPI flash chips (EN25xxx)
-
-config SPI_FLASH_GIGADEVICE
-	bool "GigaDevice SPI flash support"
-	help
-	  Add support for various GigaDevice SPI flash chips (GD25xxx)
+	  Add support for various Atmel, EON, ESMT, Everspin, Fujitsu,
+	  GigaDevice, Intel, ISSI, PMC and non-JEDEC SPI NOR flash chips.
 
 config SPI_NOR_MACRONIX
 	bool "Macronix SPI flash support"
diff --git a/drivers/mtd/spi-nor/spi-nor-ids.c b/drivers/mtd/spi-nor/spi-nor-ids.c
index b523948..4c22140 100644
--- a/drivers/mtd/spi-nor/spi-nor-ids.c
+++ b/drivers/mtd/spi-nor/spi-nor-ids.c
@@ -41,6 +41,7 @@
 		.flash_read = _flash_read,					\
 		.flags = (_flags),
 
+#ifdef CONFIG_SPI_NOR_MISC
 #define CAT25_INFO(_sector_size, _n_sectors, _page_size, _addr_width, _flash_read, _flags)	\
 		.sector_size = (_sector_size),				\
 		.n_sectors = (_n_sectors),				\
@@ -48,6 +49,7 @@
 		.addr_width = (_addr_width),				\
 		.flash_read = _flash_read,					\
 		.flags = (_flags),
+#endif
 
 /* NOTE: double check command sets and memory organization when you add
  * more nor chips.  This current list focusses on newer chips, which
@@ -61,7 +63,7 @@
  * old entries may be missing 4K flag.
  */
 const struct spi_nor_info spi_nor_ids[] = {
-#ifdef CONFIG_SPI_FLASH_ATMEL		/* ATMEL */
+#ifdef CONFIG_SPI_NOR_MISC
 	/* Atmel -- some are (confusingly) marketed as "DataFlash" */
 	{ "at25fs010",  INFO(0x1f6601, 0, 32 * 1024,   4, SNOR_READ_BASE, SECT_4K) },
 	{ "at25fs040",  INFO(0x1f6604, 0, 64 * 1024,   8, SNOR_READ_BASE, SECT_4K) },
@@ -83,7 +85,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "at45db321d",	INFO(0x1f2700, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
 	{ "at45db641d",	INFO(0x1f2800, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
 #endif
-#ifdef CONFIG_SPI_FLASH_EON		/* EON */
+#ifdef CONFIG_SPI_NOR_MISC
 	/* EON -- en25xxx */
 	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SNOR_READ_BASE, SECT_4K) },
 	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, SNOR_READ_BASE, 0) },
@@ -95,6 +97,7 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "en25qh256",  INFO(0x1c7019, 0, 64 * 1024,  512, SNOR_READ_BASE, 0) },
 	{ "en25s64",	INFO(0x1c3817, 0, 64 * 1024,  128, SNOR_READ_BASE, SECT_4K) },
 #endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* ESMT */
 	{ "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SNOR_READ_BASE, SECT_4K) },
 
@@ -104,20 +107,21 @@ const struct spi_nor_info spi_nor_ids[] = {
 
 	/* Fujitsu */
 	{ "mb85rs1mt", INFO(0x047f27, 0, 128 * 1024, 1, SNOR_READ_BASE, SPI_NOR_NO_ERASE) },
-
-#ifdef CONFIG_SPI_FLASH_GIGADEVICE	/* GIGADEVICE */
+#endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* GigaDevice */
 	{ "gd25q32", INFO(0xc84016, 0, 64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
 	{ "gd25q64", INFO(0xc84017, 0, 64 * 1024, 128, SNOR_READ_BASE, SECT_4K) },
 	{ "gd25q128", INFO(0xc84018, 0, 64 * 1024, 256, SNOR_READ_BASE, SECT_4K) },
 	{ "gd25lq32", INFO(0xc86016, 0,	64 * 1024,  64, SNOR_READ_BASE, SECT_4K) },
 #endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* Intel/Numonyx -- xxxs33b */
 	{ "160s33b",  INFO(0x898911, 0, 64 * 1024,  32, SNOR_READ_BASE, 0) },
 	{ "320s33b",  INFO(0x898912, 0, 64 * 1024,  64, SNOR_READ_BASE, 0) },
 	{ "640s33b",  INFO(0x898913, 0, 64 * 1024, 128, SNOR_READ_BASE, 0) },
-
-#ifdef CONFIG_SPI_FLASH_ISSI		/* ISSI */
+#endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* ISSI */
 	{ "is25cd512", INFO(0x7f9d20, 0, 32 * 1024,   2, SNOR_READ_BASE, SECT_4K) },
 	{ "is25lp032", INFO(0x9d6016, 0, 64 * 1024,  64, SNOR_READ_BASE, 0) },
@@ -154,11 +158,12 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "n25q512ax3",  INFO(0x20ba20, 0, 64 * 1024, 1024, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K | USE_FSR) },
 	{ "n25q00",      INFO(0x20ba21, 0, 64 * 1024, 2048, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K | USE_FSR) },
 #endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* PMC */
 	{ "pm25lv512",   INFO(0,        0, 32 * 1024,    2, SNOR_READ_BASE, SECT_4K_PMC) },
 	{ "pm25lv010",   INFO(0,        0, 32 * 1024,    4, SNOR_READ_BASE, SECT_4K_PMC) },
 	{ "pm25lq032",   INFO(0x7f9d46, 0, 64 * 1024,   64, SNOR_READ_BASE, SECT_4K) },
-
+#endif
 #ifdef CONFIG_SPI_NOR_SPANSION	/* SPANSION */
 	/* Spansion -- single (large) sector size only, at least
 	 * for the chips listed here (without boot sectors).
@@ -266,11 +271,13 @@ const struct spi_nor_info spi_nor_ids[] = {
 	{ "w25q64dw", INFO(0xef6017, 0, 64 * 1024, 128, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
 	{ "w25q128fw", INFO(0xef6018, 0, 64 * 1024, 256, SNOR_READ_FULL, SNOR_WRITE_QUAD | SECT_4K) },
 #endif
+#ifdef CONFIG_SPI_NOR_MISC
 	/* Catalyst / On Semiconductor -- non-JEDEC */
 	{ "cat25c11", CAT25_INFO(  16, 8, 16, 1, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
 	{ "cat25c03", CAT25_INFO(  32, 8, 16, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
 	{ "cat25c09", CAT25_INFO( 128, 8, 32, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
 	{ "cat25c17", CAT25_INFO( 256, 8, 32, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
 	{ "cat25128", CAT25_INFO(2048, 8, 64, 2, SNOR_READ_BASE, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
+#endif
 	{ },
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 64/87] configs: Use CONFIG_SPI_NOR_MISC
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (61 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 63/87] mtd: spi-nor: Add CONFIG_SPI_NOR_MISC Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 65/87] powerpc/mpc85xx: Use spi.h instead of spi_flash.h Jagan Teki
                   ` (22 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

CONFIG_SPI_FLASH_ATMEL
CONFIG_SPI_FLASH_EON
CONFIG_SPI_FLASH_GIGADEVICE
CONFIG_SPI_FLASH_ISSI

All these configs are grouped in CONFIG_SPI_NOR_MISC

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/C29XPCIE_NAND_defconfig               | 2 +-
 configs/C29XPCIE_NOR_SECBOOT_defconfig        | 2 +-
 configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig   | 2 +-
 configs/C29XPCIE_SPIFLASH_defconfig           | 2 +-
 configs/C29XPCIE_defconfig                    | 2 +-
 configs/M54418TWR_defconfig                   | 2 +-
 configs/M54418TWR_nand_mii_defconfig          | 2 +-
 configs/M54418TWR_nand_rmii_defconfig         | 2 +-
 configs/M54418TWR_nand_rmii_lowfreq_defconfig | 2 +-
 configs/M54418TWR_serial_mii_defconfig        | 2 +-
 configs/M54418TWR_serial_rmii_defconfig       | 2 +-
 configs/T1024QDS_DDR4_SECURE_BOOT_defconfig   | 2 +-
 configs/T1024QDS_DDR4_defconfig               | 2 +-
 configs/T1024QDS_NAND_defconfig               | 2 +-
 configs/T1024QDS_SDCARD_defconfig             | 2 +-
 configs/T1024QDS_SECURE_BOOT_defconfig        | 2 +-
 configs/T1024QDS_SPIFLASH_defconfig           | 2 +-
 configs/T1024QDS_defconfig                    | 2 +-
 configs/T1040QDS_DDR4_defconfig               | 2 +-
 configs/T1040QDS_SECURE_BOOT_defconfig        | 2 +-
 configs/T1040QDS_defconfig                    | 2 +-
 configs/T2080QDS_NAND_defconfig               | 2 +-
 configs/T2080QDS_SDCARD_defconfig             | 2 +-
 configs/T2080QDS_SECURE_BOOT_defconfig        | 2 +-
 configs/T2080QDS_SPIFLASH_defconfig           | 2 +-
 configs/T2080QDS_SRIO_PCIE_BOOT_defconfig     | 2 +-
 configs/T2080QDS_defconfig                    | 2 +-
 configs/T2081QDS_NAND_defconfig               | 2 +-
 configs/T2081QDS_SDCARD_defconfig             | 2 +-
 configs/T2081QDS_SPIFLASH_defconfig           | 2 +-
 configs/T2081QDS_SRIO_PCIE_BOOT_defconfig     | 2 +-
 configs/T2081QDS_defconfig                    | 2 +-
 configs/at91sam9n12ek_mmc_defconfig           | 2 +-
 configs/at91sam9n12ek_nandflash_defconfig     | 2 +-
 configs/at91sam9n12ek_spiflash_defconfig      | 2 +-
 configs/at91sam9x5ek_dataflash_defconfig      | 2 +-
 configs/at91sam9x5ek_mmc_defconfig            | 2 +-
 configs/at91sam9x5ek_nandflash_defconfig      | 2 +-
 configs/at91sam9x5ek_spiflash_defconfig       | 2 +-
 configs/atngw100_defconfig                    | 2 +-
 configs/atngw100mkii_defconfig                | 2 +-
 configs/bayleybay_defconfig                   | 2 +-
 configs/bf525-ucr2_defconfig                  | 2 +-
 configs/bf527-sdp_defconfig                   | 3 +--
 configs/bf537-stamp_defconfig                 | 3 +--
 configs/bf561-acvilon_defconfig               | 2 +-
 configs/bf609-ezkit_defconfig                 | 3 +--
 configs/chromebook_link_defconfig             | 2 +-
 configs/chromebook_samus_defconfig            | 2 +-
 configs/chromebox_panther_defconfig           | 2 +-
 configs/cm_fx6_defconfig                      | 4 +---
 configs/cm_t43_defconfig                      | 5 +----
 configs/conga-qeval20-qa3-e3845_defconfig     | 2 +-
 configs/coreboot-x86_defconfig                | 2 +-
 configs/crownbay_defconfig                    | 2 +-
 configs/ethernut5_defconfig                   | 2 +-
 configs/galileo_defconfig                     | 2 +-
 configs/gplugd_defconfig                      | 2 +-
 configs/ls1021atwr_qspi_defconfig             | 2 +-
 configs/ls1021atwr_sdcard_qspi_defconfig      | 2 +-
 configs/minnowmax_defconfig                   | 2 +-
 configs/peach-pi_defconfig                    | 2 +-
 configs/peach-pit_defconfig                   | 2 +-
 configs/qemu-x86_defconfig                    | 2 +-
 configs/sama5d3xek_mmc_defconfig              | 2 +-
 configs/sama5d3xek_nandflash_defconfig        | 2 +-
 configs/sama5d3xek_spiflash_defconfig         | 2 +-
 configs/sama5d4_xplained_mmc_defconfig        | 2 +-
 configs/sama5d4_xplained_nandflash_defconfig  | 2 +-
 configs/sama5d4_xplained_spiflash_defconfig   | 2 +-
 configs/sama5d4ek_mmc_defconfig               | 2 +-
 configs/sama5d4ek_nandflash_defconfig         | 2 +-
 configs/sama5d4ek_spiflash_defconfig          | 2 +-
 configs/sandbox_defconfig                     | 4 +---
 configs/smdk5250_defconfig                    | 2 +-
 configs/smdk5420_defconfig                    | 2 +-
 configs/snow_defconfig                        | 2 +-
 configs/spring_defconfig                      | 2 +-
 examples/standalone/Makefile                  | 2 +-
 include/configs/chromebook_jerry.h            | 2 +-
 include/configs/ls1043a_common.h              | 2 +-
 include/configs/rk3036_common.h               | 2 +-
 include/configs/sama5d2_xplained.h            | 2 +-
 include/configs/zynq-common.h                 | 2 +-
 84 files changed, 84 insertions(+), 94 deletions(-)

diff --git a/configs/C29XPCIE_NAND_defconfig b/configs/C29XPCIE_NAND_defconfig
index 61ac704..c8d33f3 100644
--- a/configs/C29XPCIE_NAND_defconfig
+++ b/configs/C29XPCIE_NAND_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/C29XPCIE_NOR_SECBOOT_defconfig b/configs/C29XPCIE_NOR_SECBOOT_defconfig
index 9f816ff..0d49405 100644
--- a/configs/C29XPCIE_NOR_SECBOOT_defconfig
+++ b/configs/C29XPCIE_NOR_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
index e0dc4cc..eaaef7e 100644
--- a/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/C29XPCIE_SPIFLASH_defconfig b/configs/C29XPCIE_SPIFLASH_defconfig
index fb593cf..1186ac3 100644
--- a/configs/C29XPCIE_SPIFLASH_defconfig
+++ b/configs/C29XPCIE_SPIFLASH_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/C29XPCIE_defconfig b/configs/C29XPCIE_defconfig
index d139716..cf5a8f0 100644
--- a/configs/C29XPCIE_defconfig
+++ b/configs/C29XPCIE_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/M54418TWR_defconfig b/configs/M54418TWR_defconfig
index b019b63..da95871 100644
--- a/configs/M54418TWR_defconfig
+++ b/configs/M54418TWR_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/M54418TWR_nand_mii_defconfig b/configs/M54418TWR_nand_mii_defconfig
index eedee6c..14e36ce 100644
--- a/configs/M54418TWR_nand_mii_defconfig
+++ b/configs/M54418TWR_nand_mii_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/M54418TWR_nand_rmii_defconfig b/configs/M54418TWR_nand_rmii_defconfig
index c8000a8..528b706 100644
--- a/configs/M54418TWR_nand_rmii_defconfig
+++ b/configs/M54418TWR_nand_rmii_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/M54418TWR_nand_rmii_lowfreq_defconfig b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
index 184936b..2e9e945 100644
--- a/configs/M54418TWR_nand_rmii_lowfreq_defconfig
+++ b/configs/M54418TWR_nand_rmii_lowfreq_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/M54418TWR_serial_mii_defconfig b/configs/M54418TWR_serial_mii_defconfig
index fd827e3..83bf3fd 100644
--- a/configs/M54418TWR_serial_mii_defconfig
+++ b/configs/M54418TWR_serial_mii_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/M54418TWR_serial_rmii_defconfig b/configs/M54418TWR_serial_rmii_defconfig
index b019b63..da95871 100644
--- a/configs/M54418TWR_serial_rmii_defconfig
+++ b/configs/M54418TWR_serial_rmii_defconfig
@@ -10,4 +10,4 @@ CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
index 11f7f13..33574ea 100644
--- a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1024QDS_DDR4_defconfig b/configs/T1024QDS_DDR4_defconfig
index 32ea85f..93cd3e4 100644
--- a/configs/T1024QDS_DDR4_defconfig
+++ b/configs/T1024QDS_DDR4_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/T1024QDS_NAND_defconfig b/configs/T1024QDS_NAND_defconfig
index b20f976..44740a2 100644
--- a/configs/T1024QDS_NAND_defconfig
+++ b/configs/T1024QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1024QDS_SDCARD_defconfig b/configs/T1024QDS_SDCARD_defconfig
index 37868aa..4002e42 100644
--- a/configs/T1024QDS_SDCARD_defconfig
+++ b/configs/T1024QDS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1024QDS_SECURE_BOOT_defconfig b/configs/T1024QDS_SECURE_BOOT_defconfig
index f2073b4..6f3907e 100644
--- a/configs/T1024QDS_SECURE_BOOT_defconfig
+++ b/configs/T1024QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1024QDS_SPIFLASH_defconfig b/configs/T1024QDS_SPIFLASH_defconfig
index 4529f98..a4a77fa 100644
--- a/configs/T1024QDS_SPIFLASH_defconfig
+++ b/configs/T1024QDS_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1024QDS_defconfig b/configs/T1024QDS_defconfig
index 6cac3af..b4a9e71 100644
--- a/configs/T1024QDS_defconfig
+++ b/configs/T1024QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1040QDS_DDR4_defconfig b/configs/T1040QDS_DDR4_defconfig
index 84c9925..e127791 100644
--- a/configs/T1040QDS_DDR4_defconfig
+++ b/configs/T1040QDS_DDR4_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1040QDS_SECURE_BOOT_defconfig b/configs/T1040QDS_SECURE_BOOT_defconfig
index 5577f0b..70379be 100644
--- a/configs/T1040QDS_SECURE_BOOT_defconfig
+++ b/configs/T1040QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T1040QDS_defconfig b/configs/T1040QDS_defconfig
index 90c1332..ac4e5f0 100644
--- a/configs/T1040QDS_defconfig
+++ b/configs/T1040QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_NAND_defconfig b/configs/T2080QDS_NAND_defconfig
index c527e7e..3205b2f 100644
--- a/configs/T2080QDS_NAND_defconfig
+++ b/configs/T2080QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_SDCARD_defconfig b/configs/T2080QDS_SDCARD_defconfig
index 5f3192f..740b74a 100644
--- a/configs/T2080QDS_SDCARD_defconfig
+++ b/configs/T2080QDS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig b/configs/T2080QDS_SECURE_BOOT_defconfig
index 1f1f1ad..cc06e4c 100644
--- a/configs/T2080QDS_SECURE_BOOT_defconfig
+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_SPIFLASH_defconfig b/configs/T2080QDS_SPIFLASH_defconfig
index 05494d2..fb87a6e 100644
--- a/configs/T2080QDS_SPIFLASH_defconfig
+++ b/configs/T2080QDS_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
index 1dd8aac..486dcdf 100644
--- a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
index 1210137..f745b8c 100644
--- a/configs/T2080QDS_defconfig
+++ b/configs/T2080QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2081QDS_NAND_defconfig b/configs/T2081QDS_NAND_defconfig
index b0c0ad8..ac63b13 100644
--- a/configs/T2081QDS_NAND_defconfig
+++ b/configs/T2081QDS_NAND_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2081QDS_SDCARD_defconfig b/configs/T2081QDS_SDCARD_defconfig
index 09a15e7..81ed4ee 100644
--- a/configs/T2081QDS_SDCARD_defconfig
+++ b/configs/T2081QDS_SDCARD_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2081QDS_SPIFLASH_defconfig b/configs/T2081QDS_SPIFLASH_defconfig
index 921b879..b10642b 100644
--- a/configs/T2081QDS_SPIFLASH_defconfig
+++ b/configs/T2081QDS_SPIFLASH_defconfig
@@ -9,7 +9,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
index 792987e..44f5901 100644
--- a/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
@@ -10,7 +10,7 @@ CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF4000
 # CONFIG_CMD_FLASH is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/T2081QDS_defconfig b/configs/T2081QDS_defconfig
index ccfb10c..e4080e3 100644
--- a/configs/T2081QDS_defconfig
+++ b/configs/T2081QDS_defconfig
@@ -8,7 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2081"
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_NETDEVICES=y
diff --git a/configs/at91sam9n12ek_mmc_defconfig b/configs/at91sam9n12ek_mmc_defconfig
index 9322456..45cbe40 100644
--- a/configs/at91sam9n12ek_mmc_defconfig
+++ b/configs/at91sam9n12ek_mmc_defconfig
@@ -9,5 +9,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9n12ek_nandflash_defconfig b/configs/at91sam9n12ek_nandflash_defconfig
index 17ebed6..c4187a6 100644
--- a/configs/at91sam9n12ek_nandflash_defconfig
+++ b/configs/at91sam9n12ek_nandflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9n12ek_spiflash_defconfig b/configs/at91sam9n12ek_spiflash_defconfig
index 323d7b7..014eeac 100644
--- a/configs/at91sam9n12ek_spiflash_defconfig
+++ b/configs/at91sam9n12ek_spiflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_dataflash_defconfig b/configs/at91sam9x5ek_dataflash_defconfig
index 14a2a20..1668b53 100644
--- a/configs/at91sam9x5ek_dataflash_defconfig
+++ b/configs/at91sam9x5ek_dataflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index 5cc56ea..f3877c6 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_nandflash_defconfig b/configs/at91sam9x5ek_nandflash_defconfig
index 0ce027b..0e2d498 100644
--- a/configs/at91sam9x5ek_nandflash_defconfig
+++ b/configs/at91sam9x5ek_nandflash_defconfig
@@ -11,5 +11,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/at91sam9x5ek_spiflash_defconfig b/configs/at91sam9x5ek_spiflash_defconfig
index 4c7fa59..f18deea 100644
--- a/configs/at91sam9x5ek_spiflash_defconfig
+++ b/configs/at91sam9x5ek_spiflash_defconfig
@@ -11,5 +11,5 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
index 56ab790..668b49e 100644
--- a/configs/atngw100_defconfig
+++ b/configs/atngw100_defconfig
@@ -12,4 +12,4 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/atngw100mkii_defconfig b/configs/atngw100mkii_defconfig
index fa6e3f8..09904be 100644
--- a/configs/atngw100mkii_defconfig
+++ b/configs/atngw100mkii_defconfig
@@ -11,4 +11,4 @@ CONFIG_AUTOBOOT_STOP_STR=" "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index c862e0a..86a5d39 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -25,7 +25,7 @@ CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
diff --git a/configs/bf525-ucr2_defconfig b/configs/bf525-ucr2_defconfig
index 416ffc0..644002f 100644
--- a/configs/bf525-ucr2_defconfig
+++ b/configs/bf525-ucr2_defconfig
@@ -7,4 +7,4 @@ CONFIG_TARGET_BF525_UCR2=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/bf527-sdp_defconfig b/configs/bf527-sdp_defconfig
index d74f1df..6f8aa33 100644
--- a/configs/bf527-sdp_defconfig
+++ b/configs/bf527-sdp_defconfig
@@ -7,8 +7,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf537-stamp_defconfig b/configs/bf537-stamp_defconfig
index c3161fa..6e98854 100644
--- a/configs/bf537-stamp_defconfig
+++ b/configs/bf537-stamp_defconfig
@@ -5,8 +5,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/bf561-acvilon_defconfig b/configs/bf561-acvilon_defconfig
index 171de78..3207107 100644
--- a/configs/bf561-acvilon_defconfig
+++ b/configs/bf561-acvilon_defconfig
@@ -7,6 +7,6 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
 CONFIG_LIB_RAND=y
diff --git a/configs/bf609-ezkit_defconfig b/configs/bf609-ezkit_defconfig
index de8d28c..4f76941 100644
--- a/configs/bf609-ezkit_defconfig
+++ b/configs/bf609-ezkit_defconfig
@@ -4,8 +4,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index 05293ba..9808475 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -30,7 +30,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PCI=y
diff --git a/configs/chromebook_samus_defconfig b/configs/chromebook_samus_defconfig
index 8da5932..1927707 100644
--- a/configs/chromebook_samus_defconfig
+++ b/configs/chromebook_samus_defconfig
@@ -29,7 +29,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PCI=y
diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
index ebf78bc..d806daf 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -24,7 +24,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index 9fb9cff..57ac56f 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -20,9 +20,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/cm_t43_defconfig b/configs/cm_t43_defconfig
index d829ba4..f3b26a4 100644
--- a/configs/cm_t43_defconfig
+++ b/configs/cm_t43_defconfig
@@ -16,12 +16,9 @@ CONFIG_DM_SERIAL=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_BAR=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_MACRONIX=y
-CONFIG_SPI_FLASH_ISSI=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
-CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
index 1d4251e..9edfc5d 100644
--- a/configs/conga-qeval20-qa3-e3845_defconfig
+++ b/configs/conga-qeval20-qa3-e3845_defconfig
@@ -26,7 +26,7 @@ CONFIG_CPU=y
 CONFIG_WINBOND_W83627=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_WINBOND=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index b8b0305..ebc2cdb 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -14,7 +14,7 @@ CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index e347765..67b9ec4 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -23,7 +23,7 @@ CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SST=y
 CONFIG_SPI_NOR_WINBOND=y
diff --git a/configs/ethernut5_defconfig b/configs/ethernut5_defconfig
index b3d4f82..de50435 100644
--- a/configs/ethernut5_defconfig
+++ b/configs/ethernut5_defconfig
@@ -8,4 +8,4 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index 13fc5e7..c966b99 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -19,7 +19,7 @@ CONFIG_SYSCON=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
diff --git a/configs/gplugd_defconfig b/configs/gplugd_defconfig
index 816d99f..2ca5c99 100644
--- a/configs/gplugd_defconfig
+++ b/configs/gplugd_defconfig
@@ -6,7 +6,7 @@ CONFIG_TARGET_GPLUGD=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ls1021atwr_qspi_defconfig b/configs/ls1021atwr_qspi_defconfig
index e02e6f0..55a8860 100644
--- a/configs/ls1021atwr_qspi_defconfig
+++ b/configs/ls1021atwr_qspi_defconfig
@@ -12,7 +12,7 @@ CONFIG_DM=y
 CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/ls1021atwr_sdcard_qspi_defconfig b/configs/ls1021atwr_sdcard_qspi_defconfig
index 43635cc..c0e1d49 100644
--- a/configs/ls1021atwr_sdcard_qspi_defconfig
+++ b/configs/ls1021atwr_sdcard_qspi_defconfig
@@ -10,7 +10,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index 2c31e40..f2d5d3d 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -25,7 +25,7 @@ CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_STMICRO=y
 CONFIG_SPI_NOR_WINBOND=y
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
index 7853f33..de03c39 100644
--- a/configs/peach-pi_defconfig
+++ b/configs/peach-pi_defconfig
@@ -24,7 +24,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_TPS65090=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index 893680c..8fb6908 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -24,7 +24,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_TPS65090=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index c7ee19b..f3b856d 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -18,7 +18,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_CPU=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_ETH=y
diff --git a/configs/sama5d3xek_mmc_defconfig b/configs/sama5d3xek_mmc_defconfig
index 82aa782..8061d76 100644
--- a/configs/sama5d3xek_mmc_defconfig
+++ b/configs/sama5d3xek_mmc_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d3xek_nandflash_defconfig b/configs/sama5d3xek_nandflash_defconfig
index 0914ede..d071563 100644
--- a/configs/sama5d3xek_nandflash_defconfig
+++ b/configs/sama5d3xek_nandflash_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 622e71a..78fa99b 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -8,5 +8,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index a6afa56..d9661f4 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index b871d9b..3c3ef6f 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index d8fdcf9..02c9b65 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_mmc_defconfig b/configs/sama5d4ek_mmc_defconfig
index 3ea5f85..d8accb7 100644
--- a/configs/sama5d4ek_mmc_defconfig
+++ b/configs/sama5d4ek_mmc_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_nandflash_defconfig b/configs/sama5d4ek_nandflash_defconfig
index 8443781..e9fa96e 100644
--- a/configs/sama5d4ek_nandflash_defconfig
+++ b/configs/sama5d4ek_nandflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index 5c578dc..6cef420 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -10,5 +10,5 @@ CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
 # CONFIG_CMD_FPGA is not set
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_OF_LIBFDT=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index adfb266..cc457b3 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -43,9 +43,7 @@ CONFIG_DM_MMC=y
 CONFIG_SPI_NOR_SANDBOX=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_ATMEL=y
-CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_MACRONIX=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
index a8ae3b6..f649774 100644
--- a/configs/smdk5250_defconfig
+++ b/configs/smdk5250_defconfig
@@ -16,7 +16,7 @@ CONFIG_CMD_REGULATOR=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
diff --git a/configs/smdk5420_defconfig b/configs/smdk5420_defconfig
index 7c2e9fb..786197a 100644
--- a/configs/smdk5420_defconfig
+++ b/configs/smdk5420_defconfig
@@ -13,7 +13,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 6cb2a58..85121ce 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -25,7 +25,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
diff --git a/configs/spring_defconfig b/configs/spring_defconfig
index bff5722..bf7a6b3 100644
--- a/configs/spring_defconfig
+++ b/configs/spring_defconfig
@@ -25,7 +25,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
-CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_NOR_MISC=y
 CONFIG_SPI_NOR_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX77686=y
diff --git a/examples/standalone/Makefile b/examples/standalone/Makefile
index 5a6ae00..ef51f21 100644
--- a/examples/standalone/Makefile
+++ b/examples/standalone/Makefile
@@ -8,7 +8,7 @@
 extra-y        := hello_world
 extra-$(CONFIG_SMC91111)           += smc91111_eeprom
 extra-$(CONFIG_SMC911X)            += smc911x_eeprom
-extra-$(CONFIG_SPI_FLASH_ATMEL)    += atmel_df_pow2
+extra-$(CONFIG_SPI_NOR_MISC)    += atmel_df_pow2
 extra-$(CONFIG_MPC5xxx)            += interrupt
 extra-$(CONFIG_8xx)                += test_burst timer
 extra-$(CONFIG_MPC8260)            += mem_to_mem_idma2intr
diff --git a/include/configs/chromebook_jerry.h b/include/configs/chromebook_jerry.h
index a4d768d..a8243b1 100644
--- a/include/configs/chromebook_jerry.h
+++ b/include/configs/chromebook_jerry.h
@@ -19,7 +19,7 @@
 #define CONFIG_SPL_SPI_NOR_SUPPORT
 #define CONFIG_SPL_MTD_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
-#define CONFIG_SPI_FLASH_GIGADEVICE
+#define CONFIG_SPI_NOR_MISC
 
 #define CONFIG_CMD_SF_TEST
 #define CONFIG_CMD_TIME
diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h
index 515c3ff..b86845f 100644
--- a/include/configs/ls1043a_common.h
+++ b/include/configs/ls1043a_common.h
@@ -198,7 +198,7 @@
 #define CONFIG_MTD
 #define CONFIG_SPI_NOR_STMICRO	/* cs0 */
 #define CONFIG_SPI_NOR_SST		/* cs1 */
-#define CONFIG_SPI_FLASH_EON		/* cs2 */
+#define CONFIG_SPI_NOR_MISC		/* cs2 */
 #if !defined(CONFIG_QSPI_BOOT) && !defined(CONFIG_SD_BOOT_QSPI)
 #define CONFIG_SF_DEFAULT_BUS		1
 #define CONFIG_SF_DEFAULT_CS		0
diff --git a/include/configs/rk3036_common.h b/include/configs/rk3036_common.h
index 4dcf1a1..0107c91 100644
--- a/include/configs/rk3036_common.h
+++ b/include/configs/rk3036_common.h
@@ -69,7 +69,7 @@
 #define CONFIG_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
-#define CONFIG_SPI_FLASH_GIGADEVICE
+#define CONFIG_SPI_NOR_MISC
 #define CONFIG_SF_DEFAULT_SPEED 20000000
 
 #define CONFIG_CMD_I2C
diff --git a/include/configs/sama5d2_xplained.h b/include/configs/sama5d2_xplained.h
index aa29ed9..b4146f7 100644
--- a/include/configs/sama5d2_xplained.h
+++ b/include/configs/sama5d2_xplained.h
@@ -41,7 +41,7 @@
 #ifdef CONFIG_CMD_SF
 #define CONFIG_ATMEL_SPI
 #define CONFIG_ATMEL_SPI0
-#define CONFIG_SPI_FLASH_ATMEL
+#define CONFIG_SPI_NOR_MISC
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
 #define CONFIG_SF_DEFAULT_SPEED		30000000
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index 3177297..bee8844 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -62,7 +62,7 @@
 /* QSPI */
 #ifdef CONFIG_ZYNQ_QSPI
 # define CONFIG_SF_DEFAULT_SPEED	30000000
-# define CONFIG_SPI_FLASH_ISSI
+# define CONFIG_SPI_NOR_MISC
 # define CONFIG_CMD_SF
 #endif
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 65/87] powerpc/mpc85xx: Use spi.h instead of spi_flash.h
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (62 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 64/87] configs: Use CONFIG_SPI_NOR_MISC Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 66/87] sf: Drop entire spi-flash framework Jagan Teki
                   ` (21 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

For spi_set_speed this patch unnecessarily using
spi_flash.h instead of spi.h
"powerpc/mpc85xx: Add board support for ucp1020"
(sha1: 8b0044ff5942943eaa49935f49d5006b346a60f8)

So, fix this by using spi.h instead of spi_flash.h

Cc: York Sun <yorksun@freescale.com>
Cc: Oleksandr G Zhadan <oleks@arcturusnetworks.com>
Cc: Michael Durrant <mdurrant@arcturusnetworks.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 board/Arcturus/ucp1020/ucp1020.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/board/Arcturus/ucp1020/ucp1020.c b/board/Arcturus/ucp1020/ucp1020.c
index 0fc2bac..452d221 100644
--- a/board/Arcturus/ucp1020/ucp1020.c
+++ b/board/Arcturus/ucp1020/ucp1020.c
@@ -22,7 +22,7 @@
 #include <ioports.h>
 #include <netdev.h>
 #include <micrel.h>
-#include <spi_flash.h>
+#include <spi.h>
 #include <mmc.h>
 #include <linux/ctype.h>
 #include <asm/fsl_serdes.h>
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 66/87] sf: Drop entire spi-flash framework
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (63 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 65/87] powerpc/mpc85xx: Use spi.h instead of spi_flash.h Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 67/87] uclass: Drop UCLASS_SPI_FLASH Jagan Teki
                   ` (20 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

All set ready for SPI-NOR.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 MAINTAINERS                    |    1 -
 Makefile                       |    1 -
 cmd/sf.c                       |    4 +-
 common/env_sf.c                |    4 +-
 drivers/Makefile               |    1 -
 drivers/mtd/Kconfig            |    2 -
 drivers/mtd/spi-nor/spi-nor.c  |    2 +-
 drivers/mtd/spi/Kconfig        |  131 -----
 drivers/mtd/spi/Makefile       |   18 -
 drivers/mtd/spi/fsl_espi_spl.c |   90 ---
 drivers/mtd/spi/sandbox.c      |  703 ------------------------
 drivers/mtd/spi/sf-uclass.c    |  103 ----
 drivers/mtd/spi/sf.c           |   58 --
 drivers/mtd/spi/sf_dataflash.c |  701 -----------------------
 drivers/mtd/spi/sf_internal.h  |  243 --------
 drivers/mtd/spi/sf_mtd.c       |  104 ----
 drivers/mtd/spi/sf_params.c    |  146 -----
 drivers/mtd/spi/sf_probe.c     |  179 ------
 drivers/mtd/spi/spi_flash.c    | 1191 ----------------------------------------
 drivers/mtd/spi/spi_spl_load.c |   90 ---
 include/spi_flash.h            |  225 +-------
 21 files changed, 7 insertions(+), 3990 deletions(-)
 delete mode 100644 drivers/mtd/spi/Kconfig
 delete mode 100644 drivers/mtd/spi/Makefile
 delete mode 100644 drivers/mtd/spi/fsl_espi_spl.c
 delete mode 100644 drivers/mtd/spi/sandbox.c
 delete mode 100644 drivers/mtd/spi/sf-uclass.c
 delete mode 100644 drivers/mtd/spi/sf.c
 delete mode 100644 drivers/mtd/spi/sf_dataflash.c
 delete mode 100644 drivers/mtd/spi/sf_internal.h
 delete mode 100644 drivers/mtd/spi/sf_mtd.c
 delete mode 100644 drivers/mtd/spi/sf_params.c
 delete mode 100644 drivers/mtd/spi/sf_probe.c
 delete mode 100644 drivers/mtd/spi/spi_flash.c
 delete mode 100644 drivers/mtd/spi/spi_spl_load.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 32f97b2..3a9c205 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -392,7 +392,6 @@ SPI
 M:	Jagan Teki <jteki@openedev.com>
 S:	Maintained
 T:	git git://git.denx.de/u-boot-spi.git
-F:	drivers/mtd/spi/
 F:	drivers/spi/
 F:	include/spi*
 
diff --git a/Makefile b/Makefile
index 9830410..1a229b6 100644
--- a/Makefile
+++ b/Makefile
@@ -632,7 +632,6 @@ libs-y += drivers/mtd/
 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
 libs-y += drivers/mtd/onenand/
 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
-libs-y += drivers/mtd/spi/
 libs-y += drivers/mtd/spi-nor/
 libs-y += drivers/net/
 libs-y += drivers/net/phy/
diff --git a/cmd/sf.c b/cmd/sf.c
index 389244b..bf5a3ce 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -85,7 +85,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
 	unsigned int mode = CONFIG_SF_DEFAULT_MODE;
 	char *endp;
-#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
+#ifdef CONFIG_DM_MTD_SPI_NOR
 	struct udevice *new, *bus_dev;
 	int ret;
 #else
@@ -118,7 +118,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 			return -1;
 	}
 
-#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
+#ifdef CONFIG_DM_MTD_SPI_NOR
 	/* Remove the old device, otherwise probe will just be a nop */
 	ret = spi_find_bus_and_cs(bus, cs, &bus_dev, &new);
 	if (!ret) {
diff --git a/common/env_sf.c b/common/env_sf.c
index b927fe8..a3decbe 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -52,7 +52,7 @@ int saveenv(void)
 	char	*saved_buffer = NULL, flag = OBSOLETE_FLAG;
 	u32	saved_size, saved_offset, sector = 1;
 	int	ret;
-#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
+#ifdef CONFIG_DM_MTD_SPI_NOR
 	struct udevice *new;
 
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
@@ -242,7 +242,7 @@ int saveenv(void)
 	char	*saved_buffer = NULL;
 	int	ret = 1;
 	env_t	env_new;
-#if defined(CONFIG_DM_SPI_FLASH) || defined(CONFIG_DM_MTD_SPI_NOR)
+#ifdef CONFIG_DM_MTD_SPI_NOR
 	struct udevice *new;
 
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
diff --git a/drivers/Makefile b/drivers/Makefile
index 1d179b9..c3bc3c5 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -19,7 +19,6 @@ obj-$(CONFIG_ARMADA_XP) += ddr/marvell/axp/
 obj-$(CONFIG_ALTERA_SDRAM) += ddr/altera/
 obj-$(CONFIG_SPL_SERIAL_SUPPORT) += serial/
 obj-$(CONFIG_SPL_SPI_NOR_SUPPORT) += mtd/spi-nor/
-obj-$(CONFIG_SPL_SPI_FLASH_SUPPORT) += mtd/spi/
 obj-$(CONFIG_SPL_SPI_SUPPORT) += spi/
 obj-$(CONFIG_SPL_POWER_SUPPORT) += power/ power/pmic/
 obj-$(CONFIG_SPL_POWER_SUPPORT) += power/regulator/
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 2c8846b..99b821a 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -32,6 +32,4 @@ endmenu
 
 source "drivers/mtd/nand/Kconfig"
 
-source "drivers/mtd/spi/Kconfig"
-
 source "drivers/mtd/spi-nor/Kconfig"
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 8cf95a5..1ee1510 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1,5 +1,5 @@
 /*
- * SPI NOR Core - cloned most of the code from the spi_flash.c
+ * SPI NOR Core framework.
  *
  * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
  *
diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig
deleted file mode 100644
index 3f7433c..0000000
--- a/drivers/mtd/spi/Kconfig
+++ /dev/null
@@ -1,131 +0,0 @@
-menu "SPI Flash Support"
-
-config DM_SPI_FLASH
-	bool "Enable Driver Model for SPI flash"
-	depends on DM && DM_SPI
-	help
-	  Enable driver model for SPI flash. This SPI flash interface
-	  (spi_flash_probe(), spi_flash_write(), etc.) is then
-	  implemented by the SPI flash uclass. There is one standard
-	  SPI flash driver which knows how to probe most chips
-	  supported by U-Boot. The uclass interface is defined in
-	  include/spi_flash.h, but is currently fully compatible
-	  with the old interface to avoid confusion and duplication
-	  during the transition parent. SPI and SPI flash must be
-	  enabled together (it is not possible to use driver model
-	  for one and not the other).
-
-config SPI_FLASH_SANDBOX
-	bool "Support sandbox SPI flash device"
-	depends on SANDBOX && DM_SPI_FLASH
-	help
-	  Since sandbox cannot access real devices, an emulation mechanism is
-	  provided instead. Drivers can be connected up to the sandbox SPI
-	  bus (see CONFIG_SANDBOX_SPI) and SPI traffic will be routed to this
-	  device. Typically the contents of the emulated SPI flash device is
-	  stored in a file on the host filesystem.
-
-config SPI_FLASH
-	bool "Legacy SPI Flash Interface support"
-	help
-	  Enable the legacy SPI flash support. This will include basic
-	  standard support for things like probing, read / write, and
-	  erasing through cmd_sf interface.
-
-	  If unsure, say N
-
-config SPI_FLASH_BAR
-	bool "SPI flash Bank/Extended address register support"
-	depends on SPI_FLASH
-	help
-	  Enable the SPI flash Bank/Extended address register support.
-	  Bank/Extended address registers are used to access the flash
-	  which has size > 16MiB in 3-byte addressing.
-
-if SPI_FLASH
-
-config SPI_FLASH_ATMEL
-	bool "Atmel SPI flash support"
-	help
-	  Add support for various Atmel SPI flash chips (AT45xxx and AT25xxx)
-
-config SPI_FLASH_EON
-	bool "EON SPI flash support"
-	help
-	  Add support for various EON SPI flash chips (EN25xxx)
-
-config SPI_FLASH_GIGADEVICE
-	bool "GigaDevice SPI flash support"
-	help
-	  Add support for various GigaDevice SPI flash chips (GD25xxx)
-
-config SPI_FLASH_MACRONIX
-	bool "Macronix SPI flash support"
-	help
-	  Add support for various Macronix SPI flash chips (MX25Lxxx)
-
-config SPI_FLASH_SPANSION
-	bool "Spansion SPI flash support"
-	help
-	  Add support for various Spansion SPI flash chips (S25FLxxx)
-
-config SPI_FLASH_STMICRO
-	bool "STMicro SPI flash support"
-	help
-	  Add support for various STMicro SPI flash chips (M25Pxxx and N25Qxxx)
-
-config SPI_FLASH_SST
-	bool "SST SPI flash support"
-	help
-	  Add support for various SST SPI flash chips (SST25xxx)
-
-config SPI_FLASH_WINBOND
-	bool "Winbond SPI flash support"
-	help
-	  Add support for various Winbond SPI flash chips (W25xxx)
-
-endif
-
-config SPI_FLASH_USE_4K_SECTORS
-	bool "Use small 4096 B erase sectors"
-	depends on SPI_FLASH
-	default y
-	help
-	  Many flash memories support erasing small (4096 B) sectors. Depending
-	  on the usage this feature may provide performance gain in comparison
-	  to erasing whole blocks (32/64 KiB).
-	  Changing a small part of the flash's contents is usually faster with
-	  small sectors. On the other hand erasing should be faster when using
-	  64 KiB block instead of 16 ? 4 KiB sectors.
-
-	  Please note that some tools/drivers/filesystems may not work with
-	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
-
-config SPI_FLASH_DATAFLASH
-	bool "AT45xxx DataFlash support"
-	depends on SPI_FLASH && DM_SPI_FLASH
-	help
-	  Enable the access for SPI-flash-based AT45xxx DataFlash chips.
-	  DataFlash is a kind of SPI flash. Most AT45 chips have two buffers
-	  in each chip, which may be used for double buffered I/O; but this
-	  driver doesn't (yet) use these for any kind of i/o overlap or prefetching.
-
-	  Sometimes DataFlash is packaged in MMC-format cards, although the
-	  MMC stack can't (yet?) distinguish between MMC and DataFlash
-	  protocols during enumeration.
-
-	  If unsure, say N
-
-config SPI_FLASH_MTD
-	bool "SPI Flash MTD support"
-	depends on SPI_FLASH
-	help
-          Enable the MTD support for spi flash layer, this adapter is for
-	  translating mtd_read/mtd_write commands into spi_flash_read/write
-	  commands. It is not intended to use it within sf_cmd or the SPI
-	  flash subsystem. Such an adapter is needed for subsystems like
-	  UBI which can only operate on top of the MTD layer.
-
-	  If unsure, say N
-
-endmenu # menu "SPI Flash Support"
diff --git a/drivers/mtd/spi/Makefile b/drivers/mtd/spi/Makefile
deleted file mode 100644
index c665836..0000000
--- a/drivers/mtd/spi/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-obj-$(CONFIG_DM_SPI_FLASH) += sf-uclass.o
-
-ifdef CONFIG_SPL_BUILD
-obj-$(CONFIG_SPL_SPI_LOAD)	+= spi_spl_load.o
-obj-$(CONFIG_SPL_SPI_BOOT)	+= fsl_espi_spl.o
-endif
-
-obj-$(CONFIG_SPI_FLASH) += sf_probe.o spi_flash.o sf_params.o sf.o
-obj-$(CONFIG_SPI_FLASH_DATAFLASH) += sf_dataflash.o
-obj-$(CONFIG_SPI_FLASH_MTD) += sf_mtd.o
-obj-$(CONFIG_SPI_FLASH_SANDBOX) += sandbox.o
diff --git a/drivers/mtd/spi/fsl_espi_spl.c b/drivers/mtd/spi/fsl_espi_spl.c
deleted file mode 100644
index b915469..0000000
--- a/drivers/mtd/spi/fsl_espi_spl.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2013 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <spi_flash.h>
-#include <malloc.h>
-
-#define ESPI_BOOT_IMAGE_SIZE	0x48
-#define ESPI_BOOT_IMAGE_ADDR	0x50
-#define CONFIG_CFG_DATA_SECTOR	0
-
-void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst)
-{
-	struct spi_flash *flash;
-
-	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
-			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
-	if (flash == NULL) {
-		puts("\nspi_flash_probe failed");
-		hang();
-	}
-
-	spi_flash_read(flash, offs, size, vdst);
-}
-
-/*
- * The main entry for SPI booting. It's necessary that SDRAM is already
- * configured and available since this code loads the main U-Boot image
- * from SPI into SDRAM and starts it from there.
- */
-void spi_boot(void)
-{
-	void (*uboot)(void) __noreturn;
-	u32 offset, code_len, copy_len = 0;
-#ifndef CONFIG_FSL_CORENET
-	unsigned char *buf = NULL;
-#endif
-	struct spi_flash *flash;
-
-	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
-			CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
-	if (flash == NULL) {
-		puts("\nspi_flash_probe failed");
-		hang();
-	}
-
-#ifdef CONFIG_FSL_CORENET
-	offset = CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
-	code_len = CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE;
-#else
-	/*
-	* Load U-Boot image from SPI flash into RAM
-	*/
-	buf = malloc(flash->page_size);
-	if (buf == NULL) {
-		puts("\nmalloc failed");
-		hang();
-	}
-	memset(buf, 0, flash->page_size);
-
-	spi_flash_read(flash, CONFIG_CFG_DATA_SECTOR,
-		       flash->page_size, (void *)buf);
-	offset = *(u32 *)(buf + ESPI_BOOT_IMAGE_ADDR);
-	/* Skip spl code */
-	offset += CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
-	/* Get the code size from offset 0x48 */
-	code_len = *(u32 *)(buf + ESPI_BOOT_IMAGE_SIZE);
-	/* Skip spl code */
-	code_len = code_len - CONFIG_SPL_MAX_SIZE;
-#endif
-	/* copy code to DDR */
-	printf("Loading second stage boot loader ");
-	while (copy_len <= code_len) {
-		spi_flash_read(flash, offset + copy_len, 0x2000,
-			       (void *)(CONFIG_SYS_SPI_FLASH_U_BOOT_DST
-			       + copy_len));
-		copy_len = copy_len + 0x2000;
-		putc('.');
-	}
-
-	/*
-	* Jump to U-Boot image
-	*/
-	flush_cache(CONFIG_SYS_SPI_FLASH_U_BOOT_DST, code_len);
-	uboot = (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_START;
-	(*uboot)();
-}
diff --git a/drivers/mtd/spi/sandbox.c b/drivers/mtd/spi/sandbox.c
deleted file mode 100644
index 53470b9..0000000
--- a/drivers/mtd/spi/sandbox.c
+++ /dev/null
@@ -1,703 +0,0 @@
-/*
- * Simulate a SPI flash
- *
- * Copyright (c) 2011-2013 The Chromium OS Authors.
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * Licensed under the GPL-2 or later.
- */
-
-#include <common.h>
-#include <dm.h>
-#include <malloc.h>
-#include <spi.h>
-#include <os.h>
-
-#include <spi_flash.h>
-#include "sf_internal.h"
-
-#include <asm/getopt.h>
-#include <asm/spi.h>
-#include <asm/state.h>
-#include <dm/device-internal.h>
-#include <dm/lists.h>
-#include <dm/uclass-internal.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * The different states that our SPI flash transitions between.
- * We need to keep track of this across multiple xfer calls since
- * the SPI bus could possibly call down into us multiple times.
- */
-enum sandbox_sf_state {
-	SF_CMD,   /* default state -- we're awaiting a command */
-	SF_ID,    /* read the flash's (jedec) ID code */
-	SF_ADDR,  /* processing the offset in the flash to read/etc... */
-	SF_READ,  /* reading data from the flash */
-	SF_WRITE, /* writing data to the flash, i.e. page programming */
-	SF_ERASE, /* erase the flash */
-	SF_READ_STATUS, /* read the flash's status register */
-	SF_READ_STATUS1, /* read the flash's status register upper 8 bits*/
-	SF_WRITE_STATUS, /* write the flash's status register */
-};
-
-static const char *sandbox_sf_state_name(enum sandbox_sf_state state)
-{
-	static const char * const states[] = {
-		"CMD", "ID", "ADDR", "READ", "WRITE", "ERASE", "READ_STATUS",
-		"READ_STATUS1", "WRITE_STATUS",
-	};
-	return states[state];
-}
-
-/* Bits for the status register */
-#define STAT_WIP	(1 << 0)
-#define STAT_WEL	(1 << 1)
-
-/* Assume all SPI flashes have 3 byte addresses since they do atm */
-#define SF_ADDR_LEN	3
-
-#define IDCODE_LEN 3
-
-/* Used to quickly bulk erase backing store */
-static u8 sandbox_sf_0xff[0x1000];
-
-/* Internal state data for each SPI flash */
-struct sandbox_spi_flash {
-	unsigned int cs;	/* Chip select we are attached to */
-	/*
-	 * As we receive data over the SPI bus, our flash transitions
-	 * between states.  For example, we start off in the SF_CMD
-	 * state where the first byte tells us what operation to perform
-	 * (such as read or write the flash).  But the operation itself
-	 * can go through a few states such as first reading in the
-	 * offset in the flash to perform the requested operation.
-	 * Thus "state" stores the exact state that our machine is in
-	 * while "cmd" stores the overall command we're processing.
-	 */
-	enum sandbox_sf_state state;
-	uint cmd;
-	/* Erase size of current erase command */
-	uint erase_size;
-	/* Current position in the flash; used when reading/writing/etc... */
-	uint off;
-	/* How many address bytes we've consumed */
-	uint addr_bytes, pad_addr_bytes;
-	/* The current flash status (see STAT_XXX defines above) */
-	u16 status;
-	/* Data describing the flash we're emulating */
-	const struct spi_flash_params *data;
-	/* The file on disk to serv up data from */
-	int fd;
-};
-
-struct sandbox_spi_flash_plat_data {
-	const char *filename;
-	const char *device_name;
-	int bus;
-	int cs;
-};
-
-/**
- * This is a very strange probe function. If it has platform data (which may
- * have come from the device tree) then this function gets the filename and
- * device type from there. Failing that it looks@the command line
- * parameter.
- */
-static int sandbox_sf_probe(struct udevice *dev)
-{
-	/* spec = idcode:file */
-	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
-	const char *file;
-	size_t len, idname_len;
-	const struct spi_flash_params *data;
-	struct sandbox_spi_flash_plat_data *pdata = dev_get_platdata(dev);
-	struct sandbox_state *state = state_get_current();
-	struct udevice *bus = dev->parent;
-	const char *spec = NULL;
-	int ret = 0;
-	int cs = -1;
-	int i;
-
-	debug("%s: bus %d, looking for emul=%p: ", __func__, bus->seq, dev);
-	if (bus->seq >= 0 && bus->seq < CONFIG_SANDBOX_SPI_MAX_BUS) {
-		for (i = 0; i < CONFIG_SANDBOX_SPI_MAX_CS; i++) {
-			if (state->spi[bus->seq][i].emul == dev)
-				cs = i;
-		}
-	}
-	if (cs == -1) {
-		printf("Error: Unknown chip select for device '%s'\n",
-		       dev->name);
-		return -EINVAL;
-	}
-	debug("found at cs %d\n", cs);
-
-	if (!pdata->filename) {
-		struct sandbox_state *state = state_get_current();
-
-		assert(bus->seq != -1);
-		if (bus->seq < CONFIG_SANDBOX_SPI_MAX_BUS)
-			spec = state->spi[bus->seq][cs].spec;
-		if (!spec) {
-			debug("%s:  No spec found for bus %d, cs %d\n",
-			      __func__, bus->seq, cs);
-			ret = -ENOENT;
-			goto error;
-		}
-
-		file = strchr(spec, ':');
-		if (!file) {
-			printf("%s: unable to parse file\n", __func__);
-			ret = -EINVAL;
-			goto error;
-		}
-		idname_len = file - spec;
-		pdata->filename = file + 1;
-		pdata->device_name = spec;
-		++file;
-	} else {
-		spec = strchr(pdata->device_name, ',');
-		if (spec)
-			spec++;
-		else
-			spec = pdata->device_name;
-		idname_len = strlen(spec);
-	}
-	debug("%s: device='%s'\n", __func__, spec);
-
-	for (data = spi_flash_params_table; data->name; data++) {
-		len = strlen(data->name);
-		if (idname_len != len)
-			continue;
-		if (!strncasecmp(spec, data->name, len))
-			break;
-	}
-	if (!data->name) {
-		printf("%s: unknown flash '%*s'\n", __func__, (int)idname_len,
-		       spec);
-		ret = -EINVAL;
-		goto error;
-	}
-
-	if (sandbox_sf_0xff[0] == 0x00)
-		memset(sandbox_sf_0xff, 0xff, sizeof(sandbox_sf_0xff));
-
-	sbsf->fd = os_open(pdata->filename, 02);
-	if (sbsf->fd == -1) {
-		printf("%s: unable to open file '%s'\n", __func__,
-		       pdata->filename);
-		ret = -EIO;
-		goto error;
-	}
-
-	sbsf->data = data;
-	sbsf->cs = cs;
-
-	return 0;
-
- error:
-	debug("%s: Got error %d\n", __func__, ret);
-	return ret;
-}
-
-static int sandbox_sf_remove(struct udevice *dev)
-{
-	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
-
-	os_close(sbsf->fd);
-
-	return 0;
-}
-
-static void sandbox_sf_cs_activate(struct udevice *dev)
-{
-	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
-
-	debug("sandbox_sf: CS activated; state is fresh!\n");
-
-	/* CS is asserted, so reset state */
-	sbsf->off = 0;
-	sbsf->addr_bytes = 0;
-	sbsf->pad_addr_bytes = 0;
-	sbsf->state = SF_CMD;
-	sbsf->cmd = SF_CMD;
-}
-
-static void sandbox_sf_cs_deactivate(struct udevice *dev)
-{
-	debug("sandbox_sf: CS deactivated; cmd done processing!\n");
-}
-
-/*
- * There are times when the data lines are allowed to tristate.  What
- * is actually sensed on the line depends on the hardware.  It could
- * always be 0xFF/0x00 (if there are pull ups/downs), or things could
- * float and so we'd get garbage back.  This func encapsulates that
- * scenario so we can worry about the details here.
- */
-static void sandbox_spi_tristate(u8 *buf, uint len)
-{
-	/* XXX: make this into a user config option ? */
-	memset(buf, 0xff, len);
-}
-
-/* Figure out what command this stream is telling us to do */
-static int sandbox_sf_process_cmd(struct sandbox_spi_flash *sbsf, const u8 *rx,
-				  u8 *tx)
-{
-	enum sandbox_sf_state oldstate = sbsf->state;
-
-	/* We need to output a byte for the cmd byte we just ate */
-	if (tx)
-		sandbox_spi_tristate(tx, 1);
-
-	sbsf->cmd = rx[0];
-	switch (sbsf->cmd) {
-	case CMD_READ_ID:
-		sbsf->state = SF_ID;
-		sbsf->cmd = SF_ID;
-		break;
-	case CMD_READ_ARRAY_FAST:
-		sbsf->pad_addr_bytes = 1;
-	case CMD_READ_ARRAY_SLOW:
-	case CMD_PAGE_PROGRAM:
-		sbsf->state = SF_ADDR;
-		break;
-	case CMD_WRITE_DISABLE:
-		debug(" write disabled\n");
-		sbsf->status &= ~STAT_WEL;
-		break;
-	case CMD_READ_STATUS:
-		sbsf->state = SF_READ_STATUS;
-		break;
-	case CMD_READ_STATUS1:
-		sbsf->state = SF_READ_STATUS1;
-		break;
-	case CMD_WRITE_ENABLE:
-		debug(" write enabled\n");
-		sbsf->status |= STAT_WEL;
-		break;
-	case CMD_WRITE_STATUS:
-		sbsf->state = SF_WRITE_STATUS;
-		break;
-	default: {
-		int flags = sbsf->data->flags;
-
-		/* we only support erase here */
-		if (sbsf->cmd == CMD_ERASE_CHIP) {
-			sbsf->erase_size = sbsf->data->sector_size *
-				sbsf->data->nr_sectors;
-		} else if (sbsf->cmd == CMD_ERASE_4K && (flags & SECT_4K)) {
-			sbsf->erase_size = 4 << 10;
-		} else if (sbsf->cmd == CMD_ERASE_32K && (flags & SECT_32K)) {
-			sbsf->erase_size = 32 << 10;
-		} else if (sbsf->cmd == CMD_ERASE_64K &&
-			   !(flags & (SECT_4K | SECT_32K))) {
-			sbsf->erase_size = 64 << 10;
-		} else {
-			debug(" cmd unknown: %#x\n", sbsf->cmd);
-			return -EIO;
-		}
-		sbsf->state = SF_ADDR;
-		break;
-	}
-	}
-
-	if (oldstate != sbsf->state)
-		debug(" cmd: transition to %s state\n",
-		      sandbox_sf_state_name(sbsf->state));
-
-	return 0;
-}
-
-int sandbox_erase_part(struct sandbox_spi_flash *sbsf, int size)
-{
-	int todo;
-	int ret;
-
-	while (size > 0) {
-		todo = min(size, (int)sizeof(sandbox_sf_0xff));
-		ret = os_write(sbsf->fd, sandbox_sf_0xff, todo);
-		if (ret != todo)
-			return ret;
-		size -= todo;
-	}
-
-	return 0;
-}
-
-static int sandbox_sf_xfer(struct udevice *dev, unsigned int bitlen,
-			   const void *rxp, void *txp, unsigned long flags)
-{
-	struct sandbox_spi_flash *sbsf = dev_get_priv(dev);
-	const uint8_t *rx = rxp;
-	uint8_t *tx = txp;
-	uint cnt, pos = 0;
-	int bytes = bitlen / 8;
-	int ret;
-
-	debug("sandbox_sf: state:%x(%s) bytes:%u\n", sbsf->state,
-	      sandbox_sf_state_name(sbsf->state), bytes);
-
-	if ((flags & SPI_XFER_BEGIN))
-		sandbox_sf_cs_activate(dev);
-
-	if (sbsf->state == SF_CMD) {
-		/* Figure out the initial state */
-		ret = sandbox_sf_process_cmd(sbsf, rx, tx);
-		if (ret)
-			return ret;
-		++pos;
-	}
-
-	/* Process the remaining data */
-	while (pos < bytes) {
-		switch (sbsf->state) {
-		case SF_ID: {
-			u8 id;
-
-			debug(" id: off:%u tx:", sbsf->off);
-			if (sbsf->off < IDCODE_LEN) {
-				/* Extract correct byte from ID 0x00aabbcc */
-				id = sbsf->data->jedec >>
-					(8 * (IDCODE_LEN - 1 - sbsf->off));
-			} else {
-				id = 0;
-			}
-			debug("%d %02x\n", sbsf->off, id);
-			tx[pos++] = id;
-			++sbsf->off;
-			break;
-		}
-		case SF_ADDR:
-			debug(" addr: bytes:%u rx:%02x ", sbsf->addr_bytes,
-			      rx[pos]);
-
-			if (sbsf->addr_bytes++ < SF_ADDR_LEN)
-				sbsf->off = (sbsf->off << 8) | rx[pos];
-			debug("addr:%06x\n", sbsf->off);
-
-			if (tx)
-				sandbox_spi_tristate(&tx[pos], 1);
-			pos++;
-
-			/* See if we're done processing */
-			if (sbsf->addr_bytes <
-					SF_ADDR_LEN + sbsf->pad_addr_bytes)
-				break;
-
-			/* Next state! */
-			if (os_lseek(sbsf->fd, sbsf->off, OS_SEEK_SET) < 0) {
-				puts("sandbox_sf: os_lseek() failed");
-				return -EIO;
-			}
-			switch (sbsf->cmd) {
-			case CMD_READ_ARRAY_FAST:
-			case CMD_READ_ARRAY_SLOW:
-				sbsf->state = SF_READ;
-				break;
-			case CMD_PAGE_PROGRAM:
-				sbsf->state = SF_WRITE;
-				break;
-			default:
-				/* assume erase state ... */
-				sbsf->state = SF_ERASE;
-				goto case_sf_erase;
-			}
-			debug(" cmd: transition to %s state\n",
-			      sandbox_sf_state_name(sbsf->state));
-			break;
-		case SF_READ:
-			/*
-			 * XXX: need to handle exotic behavior:
-			 *      - reading past end of device
-			 */
-
-			cnt = bytes - pos;
-			debug(" tx: read(%u)\n", cnt);
-			assert(tx);
-			ret = os_read(sbsf->fd, tx + pos, cnt);
-			if (ret < 0) {
-				puts("sandbox_sf: os_read() failed\n");
-				return -EIO;
-			}
-			pos += ret;
-			break;
-		case SF_READ_STATUS:
-			debug(" read status: %#x\n", sbsf->status);
-			cnt = bytes - pos;
-			memset(tx + pos, sbsf->status, cnt);
-			pos += cnt;
-			break;
-		case SF_READ_STATUS1:
-			debug(" read status: %#x\n", sbsf->status);
-			cnt = bytes - pos;
-			memset(tx + pos, sbsf->status >> 8, cnt);
-			pos += cnt;
-			break;
-		case SF_WRITE_STATUS:
-			debug(" write status: %#x (ignored)\n", rx[pos]);
-			pos = bytes;
-			break;
-		case SF_WRITE:
-			/*
-			 * XXX: need to handle exotic behavior:
-			 *      - unaligned addresses
-			 *      - more than a page (256) worth of data
-			 *      - reading past end of device
-			 */
-			if (!(sbsf->status & STAT_WEL)) {
-				puts("sandbox_sf: write enable not set before write\n");
-				goto done;
-			}
-
-			cnt = bytes - pos;
-			debug(" rx: write(%u)\n", cnt);
-			if (tx)
-				sandbox_spi_tristate(&tx[pos], cnt);
-			ret = os_write(sbsf->fd, rx + pos, cnt);
-			if (ret < 0) {
-				puts("sandbox_spi: os_write() failed\n");
-				return -EIO;
-			}
-			pos += ret;
-			sbsf->status &= ~STAT_WEL;
-			break;
-		case SF_ERASE:
- case_sf_erase: {
-			if (!(sbsf->status & STAT_WEL)) {
-				puts("sandbox_sf: write enable not set before erase\n");
-				goto done;
-			}
-
-			/* verify address is aligned */
-			if (sbsf->off & (sbsf->erase_size - 1)) {
-				debug(" sector erase: cmd:%#x needs align:%#x, but we got %#x\n",
-				      sbsf->cmd, sbsf->erase_size,
-				      sbsf->off);
-				sbsf->status &= ~STAT_WEL;
-				goto done;
-			}
-
-			debug(" sector erase addr: %u, size: %u\n", sbsf->off,
-			      sbsf->erase_size);
-
-			cnt = bytes - pos;
-			if (tx)
-				sandbox_spi_tristate(&tx[pos], cnt);
-			pos += cnt;
-
-			/*
-			 * TODO(vapier at gentoo.org): latch WIP in status, and
-			 * delay before clearing it ?
-			 */
-			ret = sandbox_erase_part(sbsf, sbsf->erase_size);
-			sbsf->status &= ~STAT_WEL;
-			if (ret) {
-				debug("sandbox_sf: Erase failed\n");
-				goto done;
-			}
-			goto done;
-		}
-		default:
-			debug(" ??? no idea what to do ???\n");
-			goto done;
-		}
-	}
-
- done:
-	if (flags & SPI_XFER_END)
-		sandbox_sf_cs_deactivate(dev);
-	return pos == bytes ? 0 : -EIO;
-}
-
-int sandbox_sf_ofdata_to_platdata(struct udevice *dev)
-{
-	struct sandbox_spi_flash_plat_data *pdata = dev_get_platdata(dev);
-	const void *blob = gd->fdt_blob;
-	int node = dev->of_offset;
-
-	pdata->filename = fdt_getprop(blob, node, "sandbox,filename", NULL);
-	pdata->device_name = fdt_getprop(blob, node, "compatible", NULL);
-	if (!pdata->filename || !pdata->device_name) {
-		debug("%s: Missing properties, filename=%s, device_name=%s\n",
-		      __func__, pdata->filename, pdata->device_name);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static const struct dm_spi_emul_ops sandbox_sf_emul_ops = {
-	.xfer          = sandbox_sf_xfer,
-};
-
-#ifdef CONFIG_SPI_FLASH
-static int sandbox_cmdline_cb_spi_sf(struct sandbox_state *state,
-				     const char *arg)
-{
-	unsigned long bus, cs;
-	const char *spec = sandbox_spi_parse_spec(arg, &bus, &cs);
-
-	if (!spec)
-		return 1;
-
-	/*
-	 * It is safe to not make a copy of 'spec' because it comes from the
-	 * command line.
-	 *
-	 * TODO(sjg at chromium.org): It would be nice if we could parse the
-	 * spec here, but the problem is that no U-Boot init has been done
-	 * yet. Perhaps we can figure something out.
-	 */
-	state->spi[bus][cs].spec = spec;
-	debug("%s:  Setting up spec '%s' for bus %ld, cs %ld\n", __func__,
-	      spec, bus, cs);
-
-	return 0;
-}
-SANDBOX_CMDLINE_OPT(spi_sf, 1, "connect a SPI flash: <bus>:<cs>:<id>:<file>");
-
-int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
-			 struct udevice *bus, int of_offset, const char *spec)
-{
-	struct udevice *emul;
-	char name[20], *str;
-	struct driver *drv;
-	int ret;
-
-	/* now the emulator */
-	strncpy(name, spec, sizeof(name) - 6);
-	name[sizeof(name) - 6] = '\0';
-	strcat(name, "-emul");
-	str = strdup(name);
-	if (!str)
-		return -ENOMEM;
-	drv = lists_driver_lookup_name("sandbox_sf_emul");
-	if (!drv) {
-		puts("Cannot find sandbox_sf_emul driver\n");
-		return -ENOENT;
-	}
-	ret = device_bind(bus, drv, str, NULL, of_offset, &emul);
-	if (ret) {
-		printf("Cannot create emul device for spec '%s' (err=%d)\n",
-		       spec, ret);
-		return ret;
-	}
-	state->spi[busnum][cs].emul = emul;
-
-	return 0;
-}
-
-void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs)
-{
-	struct udevice *dev;
-
-	dev = state->spi[busnum][cs].emul;
-	device_remove(dev);
-	device_unbind(dev);
-	state->spi[busnum][cs].emul = NULL;
-}
-
-static int sandbox_sf_bind_bus_cs(struct sandbox_state *state, int busnum,
-				  int cs, const char *spec)
-{
-	struct udevice *bus, *slave;
-	int ret;
-
-	ret = uclass_find_device_by_seq(UCLASS_SPI, busnum, true, &bus);
-	if (ret) {
-		printf("Invalid bus %d for spec '%s' (err=%d)\n", busnum,
-		       spec, ret);
-		return ret;
-	}
-	ret = spi_find_chip_select(bus, cs, &slave);
-	if (!ret) {
-		printf("Chip select %d already exists for spec '%s'\n", cs,
-		       spec);
-		return -EEXIST;
-	}
-
-	ret = device_bind_driver(bus, "spi_flash_std", spec, &slave);
-	if (ret)
-		return ret;
-
-	return sandbox_sf_bind_emul(state, busnum, cs, bus, -1, spec);
-}
-
-int sandbox_spi_get_emul(struct sandbox_state *state,
-			 struct udevice *bus, struct udevice *slave,
-			 struct udevice **emulp)
-{
-	struct sandbox_spi_info *info;
-	int busnum = bus->seq;
-	int cs = spi_chip_select(slave);
-	int ret;
-
-	info = &state->spi[busnum][cs];
-	if (!info->emul) {
-		/* Use the same device tree node as the SPI flash device */
-		debug("%s: busnum=%u, cs=%u: binding SPI flash emulation: ",
-		      __func__, busnum, cs);
-		ret = sandbox_sf_bind_emul(state, busnum, cs, bus,
-					   slave->of_offset, slave->name);
-		if (ret) {
-			debug("failed (err=%d)\n", ret);
-			return ret;
-		}
-		debug("OK\n");
-	}
-	*emulp = info->emul;
-
-	return 0;
-}
-
-int dm_scan_other(bool pre_reloc_only)
-{
-	struct sandbox_state *state = state_get_current();
-	int busnum, cs;
-
-	if (pre_reloc_only)
-		return 0;
-	for (busnum = 0; busnum < CONFIG_SANDBOX_SPI_MAX_BUS; busnum++) {
-		for (cs = 0; cs < CONFIG_SANDBOX_SPI_MAX_CS; cs++) {
-			const char *spec = state->spi[busnum][cs].spec;
-			int ret;
-
-			if (spec) {
-				ret = sandbox_sf_bind_bus_cs(state, busnum,
-							     cs, spec);
-				if (ret) {
-					debug("%s: Bind failed for bus %d, cs %d\n",
-					      __func__, busnum, cs);
-					return ret;
-				}
-				debug("%s:  Setting up spec '%s' for bus %d, cs %d\n",
-				      __func__, spec, busnum, cs);
-			}
-		}
-	}
-
-	return 0;
-}
-#endif
-
-static const struct udevice_id sandbox_sf_ids[] = {
-	{ .compatible = "sandbox,spi-flash" },
-	{ }
-};
-
-U_BOOT_DRIVER(sandbox_sf_emul) = {
-	.name		= "sandbox_sf_emul",
-	.id		= UCLASS_SPI_EMUL,
-	.of_match	= sandbox_sf_ids,
-	.ofdata_to_platdata = sandbox_sf_ofdata_to_platdata,
-	.probe		= sandbox_sf_probe,
-	.remove		= sandbox_sf_remove,
-	.priv_auto_alloc_size = sizeof(struct sandbox_spi_flash),
-	.platdata_auto_alloc_size = sizeof(struct sandbox_spi_flash_plat_data),
-	.ops		= &sandbox_sf_emul_ops,
-};
diff --git a/drivers/mtd/spi/sf-uclass.c b/drivers/mtd/spi/sf-uclass.c
deleted file mode 100644
index 19de964..0000000
--- a/drivers/mtd/spi/sf-uclass.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2014 Google, Inc
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <dm.h>
-#include <spi.h>
-#include <spi_flash.h>
-#include <dm/device-internal.h>
-#include "sf_internal.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int spi_flash_read_dm(struct udevice *dev, u32 offset, size_t len, void *buf)
-{
-	return sf_get_ops(dev)->read(dev, offset, len, buf);
-}
-
-int spi_flash_write_dm(struct udevice *dev, u32 offset, size_t len,
-		       const void *buf)
-{
-	return sf_get_ops(dev)->write(dev, offset, len, buf);
-}
-
-int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len)
-{
-	return sf_get_ops(dev)->erase(dev, offset, len);
-}
-
-/*
- * TODO(sjg at chromium.org): This is an old-style function. We should remove
- * it when all SPI flash drivers use dm
- */
-struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
-				  unsigned int max_hz, unsigned int spi_mode)
-{
-	struct udevice *dev;
-
-	if (spi_flash_probe_bus_cs(bus, cs, max_hz, spi_mode, &dev))
-		return NULL;
-
-	return dev_get_uclass_priv(dev);
-}
-
-void spi_flash_free(struct spi_flash *flash)
-{
-	device_remove(flash->spi->dev);
-}
-
-int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
-			   unsigned int max_hz, unsigned int spi_mode,
-			   struct udevice **devp)
-{
-	struct spi_slave *slave;
-	struct udevice *bus;
-	char *str;
-	int ret;
-
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_USE_TINY_PRINTF)
-	str = "spi_flash";
-#else
-	char name[30];
-
-	snprintf(name, sizeof(name), "spi_flash@%d:%d", busnum, cs);
-	str = strdup(name);
-#endif
-	ret = spi_get_bus_and_cs(busnum, cs, max_hz, spi_mode,
-				  "spi_flash_std", str, &bus, &slave);
-	if (ret)
-		return ret;
-
-	*devp = slave->dev;
-	return 0;
-}
-
-static int spi_flash_post_bind(struct udevice *dev)
-{
-#if defined(CONFIG_NEEDS_MANUAL_RELOC)
-	struct dm_spi_flash_ops *ops = sf_get_ops(dev);
-	static int reloc_done;
-
-	if (!reloc_done) {
-		if (ops->read)
-			ops->read += gd->reloc_off;
-		if (ops->write)
-			ops->write += gd->reloc_off;
-		if (ops->erase)
-			ops->erase += gd->reloc_off;
-
-		reloc_done++;
-	}
-#endif
-	return 0;
-}
-
-UCLASS_DRIVER(spi_flash) = {
-	.id		= UCLASS_SPI_FLASH,
-	.name		= "spi_flash",
-	.post_bind	= spi_flash_post_bind,
-	.per_device_auto_alloc_size = sizeof(struct spi_flash),
-};
diff --git a/drivers/mtd/spi/sf.c b/drivers/mtd/spi/sf.c
deleted file mode 100644
index 664e860..0000000
--- a/drivers/mtd/spi/sf.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * SPI flash interface
- *
- * Copyright (C) 2008 Atmel Corporation
- * Copyright (C) 2010 Reinhard Meyer, EMK Elektronik
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <spi.h>
-
-static int spi_flash_read_write(struct spi_slave *spi,
-				const u8 *cmd, size_t cmd_len,
-				const u8 *data_out, u8 *data_in,
-				size_t data_len)
-{
-	unsigned long flags = SPI_XFER_BEGIN;
-	int ret;
-
-#ifdef CONFIG_SF_DUAL_FLASH
-	if (spi->flags & SPI_XFER_U_PAGE)
-		flags |= SPI_XFER_U_PAGE;
-#endif
-	if (data_len == 0)
-		flags |= SPI_XFER_END;
-
-	ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
-	if (ret) {
-		debug("SF: Failed to send command (%zu bytes): %d\n",
-		      cmd_len, ret);
-	} else if (data_len != 0) {
-		ret = spi_xfer(spi, data_len * 8, data_out, data_in,
-					SPI_XFER_END);
-		if (ret)
-			debug("SF: Failed to transfer %zu bytes of data: %d\n",
-			      data_len, ret);
-	}
-
-	return ret;
-}
-
-int spi_flash_cmd_read(struct spi_slave *spi, const u8 *cmd,
-		size_t cmd_len, void *data, size_t data_len)
-{
-	return spi_flash_read_write(spi, cmd, cmd_len, NULL, data, data_len);
-}
-
-int spi_flash_cmd(struct spi_slave *spi, u8 cmd, void *response, size_t len)
-{
-	return spi_flash_cmd_read(spi, &cmd, 1, response, len);
-}
-
-int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
-		const void *data, size_t data_len)
-{
-	return spi_flash_read_write(spi, cmd, cmd_len, data, NULL, data_len);
-}
diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
deleted file mode 100644
index 0f66b99..0000000
--- a/drivers/mtd/spi/sf_dataflash.c
+++ /dev/null
@@ -1,701 +0,0 @@
-/*
- *
- * Atmel DataFlash probing
- *
- * Copyright (C) 2004-2009, 2015 Freescale Semiconductor, Inc.
- * Haikun Wang (haikun.wang at freescale.com)
- *
- * SPDX-License-Identifier:	GPL-2.0+
-*/
-#include <common.h>
-#include <dm.h>
-#include <errno.h>
-#include <fdtdec.h>
-#include <spi.h>
-#include <spi_flash.h>
-#include <div64.h>
-#include <linux/err.h>
-#include <linux/math64.h>
-
-#include "sf_internal.h"
-
-/* reads can bypass the buffers */
-#define OP_READ_CONTINUOUS	0xE8
-#define OP_READ_PAGE		0xD2
-
-/* group B requests can run even while status reports "busy" */
-#define OP_READ_STATUS		0xD7	/* group B */
-
-/* move data between host and buffer */
-#define OP_READ_BUFFER1		0xD4	/* group B */
-#define OP_READ_BUFFER2		0xD6	/* group B */
-#define OP_WRITE_BUFFER1	0x84	/* group B */
-#define OP_WRITE_BUFFER2	0x87	/* group B */
-
-/* erasing flash */
-#define OP_ERASE_PAGE		0x81
-#define OP_ERASE_BLOCK		0x50
-
-/* move data between buffer and flash */
-#define OP_TRANSFER_BUF1	0x53
-#define OP_TRANSFER_BUF2	0x55
-#define OP_MREAD_BUFFER1	0xD4
-#define OP_MREAD_BUFFER2	0xD6
-#define OP_MWERASE_BUFFER1	0x83
-#define OP_MWERASE_BUFFER2	0x86
-#define OP_MWRITE_BUFFER1	0x88	/* sector must be pre-erased */
-#define OP_MWRITE_BUFFER2	0x89	/* sector must be pre-erased */
-
-/* write to buffer, then write-erase to flash */
-#define OP_PROGRAM_VIA_BUF1	0x82
-#define OP_PROGRAM_VIA_BUF2	0x85
-
-/* compare buffer to flash */
-#define OP_COMPARE_BUF1		0x60
-#define OP_COMPARE_BUF2		0x61
-
-/* read flash to buffer, then write-erase to flash */
-#define OP_REWRITE_VIA_BUF1	0x58
-#define OP_REWRITE_VIA_BUF2	0x59
-
-/*
- * newer chips report JEDEC manufacturer and device IDs; chip
- * serial number and OTP bits; and per-sector writeprotect.
- */
-#define OP_READ_ID		0x9F
-#define OP_READ_SECURITY	0x77
-#define OP_WRITE_SECURITY_REVC	0x9A
-#define OP_WRITE_SECURITY	0x9B	/* revision D */
-
-
-struct dataflash {
-	uint8_t			command[16];
-	unsigned short		page_offset;	/* offset in flash address */
-};
-
-/*
- * Return the status of the DataFlash device.
- */
-static inline int dataflash_status(struct spi_slave *spi)
-{
-	int ret;
-	u8 status;
-	/*
-	 * NOTE:  at45db321c over 25 MHz wants to write
-	 * a dummy byte after the opcode...
-	 */
-	ret = spi_flash_cmd(spi, OP_READ_STATUS, &status, 1);
-	return ret ? -EIO : status;
-}
-
-/*
- * Poll the DataFlash device until it is READY.
- * This usually takes 5-20 msec or so; more for sector erase.
- * ready: return > 0
- */
-static int dataflash_waitready(struct spi_slave *spi)
-{
-	int status;
-	int timeout = 2 * CONFIG_SYS_HZ;
-	int timebase;
-
-	timebase = get_timer(0);
-	do {
-		status = dataflash_status(spi);
-		if (status < 0)
-			status = 0;
-
-		if (status & (1 << 7))	/* RDY/nBSY */
-			return status;
-
-		mdelay(3);
-	} while (get_timer(timebase) < timeout);
-
-	return -ETIME;
-}
-
-/*
- * Erase pages of flash.
- */
-static int spi_dataflash_erase(struct udevice *dev, u32 offset, size_t len)
-{
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
-	unsigned		blocksize;
-	uint8_t			*command;
-	uint32_t		rem;
-	int			status;
-
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
-
-	blocksize = spi_flash->page_size << 3;
-
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
-
-	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
-
-	div_u64_rem(len, spi_flash->page_size, &rem);
-	if (rem)
-		return -EINVAL;
-	div_u64_rem(offset, spi_flash->page_size, &rem);
-	if (rem)
-		return -EINVAL;
-
-	status = spi_claim_bus(spi);
-	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
-		return status;
-	}
-
-	while (len > 0) {
-		unsigned int	pageaddr;
-		int		do_block;
-		/*
-		 * Calculate flash page address; use block erase (for speed) if
-		 * we're at a block boundary and need to erase the whole block.
-		 */
-		pageaddr = div_u64(offset, spi_flash->page_size);
-		do_block = (pageaddr & 0x7) == 0 && len >= blocksize;
-		pageaddr = pageaddr << dataflash->page_offset;
-
-		command[0] = do_block ? OP_ERASE_BLOCK : OP_ERASE_PAGE;
-		command[1] = (uint8_t)(pageaddr >> 16);
-		command[2] = (uint8_t)(pageaddr >> 8);
-		command[3] = 0;
-
-		debug("%s ERASE %s: (%x) %x %x %x [%d]\n",
-		      dev->name, do_block ? "block" : "page",
-		      command[0], command[1], command[2], command[3],
-		      pageaddr);
-
-		status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
-		if (status < 0) {
-			debug("%s: erase send command error!\n", dev->name);
-			return -EIO;
-		}
-
-		status = dataflash_waitready(spi);
-		if (status < 0) {
-			debug("%s: erase waitready error!\n", dev->name);
-			return status;
-		}
-
-		if (do_block) {
-			offset += blocksize;
-			len -= blocksize;
-		} else {
-			offset += spi_flash->page_size;
-			len -= spi_flash->page_size;
-		}
-	}
-
-	spi_release_bus(spi);
-
-	return 0;
-}
-
-/*
- * Read from the DataFlash device.
- *   offset : Start offset in flash device
- *   len    : Amount to read
- *   buf    : Buffer containing the data
- */
-static int spi_dataflash_read(struct udevice *dev, u32 offset, size_t len,
-			      void *buf)
-{
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
-	unsigned int		addr;
-	uint8_t			*command;
-	int			status;
-
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
-
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
-
-	debug("%s: erase addr=0x%x len 0x%x\n", dev->name, offset, len);
-	debug("READ: (%x) %x %x %x\n",
-	      command[0], command[1], command[2], command[3]);
-
-	/* Calculate flash page/byte address */
-	addr = (((unsigned)offset / spi_flash->page_size)
-	       << dataflash->page_offset)
-	       + ((unsigned)offset % spi_flash->page_size);
-
-	status = spi_claim_bus(spi);
-	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
-		return status;
-	}
-
-	/*
-	 * Continuous read, max clock = f(car) which may be less than
-	 * the peak rate available.  Some chips support commands with
-	 * fewer "don't care" bytes.  Both buffers stay unchanged.
-	 */
-	command[0] = OP_READ_CONTINUOUS;
-	command[1] = (uint8_t)(addr >> 16);
-	command[2] = (uint8_t)(addr >> 8);
-	command[3] = (uint8_t)(addr >> 0);
-
-	/* plus 4 "don't care" bytes, command len: 4 + 4 "don't care" bytes */
-	status = spi_flash_cmd_read(spi, command, 8, buf, len);
-
-	spi_release_bus(spi);
-
-	return status;
-}
-
-/*
- * Write to the DataFlash device.
- *   offset     : Start offset in flash device
- *   len    : Amount to write
- *   buf    : Buffer containing the data
- */
-int spi_dataflash_write(struct udevice *dev, u32 offset, size_t len,
-			const void *buf)
-{
-	struct dataflash	*dataflash;
-	struct spi_flash	*spi_flash;
-	struct spi_slave	*spi;
-	uint8_t			*command;
-	unsigned int		pageaddr, addr, to, writelen;
-	size_t			remaining = len;
-	u_char			*writebuf = (u_char *)buf;
-	int			status = -EINVAL;
-
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-	spi = spi_flash->spi;
-
-	memset(dataflash->command, 0 , sizeof(dataflash->command));
-	command = dataflash->command;
-
-	debug("%s: write 0x%x..0x%x\n", dev->name, offset, (offset + len));
-
-	pageaddr = ((unsigned)offset / spi_flash->page_size);
-	to = ((unsigned)offset % spi_flash->page_size);
-	if (to + len > spi_flash->page_size)
-		writelen = spi_flash->page_size - to;
-	else
-		writelen = len;
-
-	status = spi_claim_bus(spi);
-	if (status) {
-		debug("SPI DATAFLASH: unable to claim SPI bus\n");
-		return status;
-	}
-
-	while (remaining > 0) {
-		debug("write @ %d:%d len=%d\n", pageaddr, to, writelen);
-
-		/*
-		 * REVISIT:
-		 * (a) each page in a sector must be rewritten at least
-		 *     once every 10K sibling erase/program operations.
-		 * (b) for pages that are already erased, we could
-		 *     use WRITE+MWRITE not PROGRAM for ~30% speedup.
-		 * (c) WRITE to buffer could be done while waiting for
-		 *     a previous MWRITE/MWERASE to complete ...
-		 * (d) error handling here seems to be mostly missing.
-		 *
-		 * Two persistent bits per page, plus a per-sector counter,
-		 * could support (a) and (b) ... we might consider using
-		 * the second half of sector zero, which is just one block,
-		 * to track that state.  (On AT91, that sector should also
-		 * support boot-from-DataFlash.)
-		 */
-
-		addr = pageaddr << dataflash->page_offset;
-
-		/* (1) Maybe transfer partial page to Buffer1 */
-		if (writelen != spi_flash->page_size) {
-			command[0] = OP_TRANSFER_BUF1;
-			command[1] = (addr & 0x00FF0000) >> 16;
-			command[2] = (addr & 0x0000FF00) >> 8;
-			command[3] = 0;
-
-			debug("TRANSFER: (%x) %x %x %x\n",
-			      command[0], command[1], command[2], command[3]);
-
-			status = spi_flash_cmd_write(spi, command, 4, NULL, 0);
-			if (status < 0) {
-				debug("%s: write(<pagesize) command error!\n",
-				      dev->name);
-				return -EIO;
-			}
-
-			status = dataflash_waitready(spi);
-			if (status < 0) {
-				debug("%s: write(<pagesize) waitready error!\n",
-				      dev->name);
-				return status;
-			}
-		}
-
-		/* (2) Program full page via Buffer1 */
-		addr += to;
-		command[0] = OP_PROGRAM_VIA_BUF1;
-		command[1] = (addr & 0x00FF0000) >> 16;
-		command[2] = (addr & 0x0000FF00) >> 8;
-		command[3] = (addr & 0x000000FF);
-
-		debug("PROGRAM: (%x) %x %x %x\n",
-		      command[0], command[1], command[2], command[3]);
-
-		status = spi_flash_cmd_write(spi, command,
-					     4, writebuf, writelen);
-		if (status < 0) {
-			debug("%s: write send command error!\n", dev->name);
-			return -EIO;
-		}
-
-		status = dataflash_waitready(spi);
-		if (status < 0) {
-			debug("%s: write waitready error!\n", dev->name);
-			return status;
-		}
-
-#ifdef CONFIG_SPI_DATAFLASH_WRITE_VERIFY
-		/* (3) Compare to Buffer1 */
-		addr = pageaddr << dataflash->page_offset;
-		command[0] = OP_COMPARE_BUF1;
-		command[1] = (addr & 0x00FF0000) >> 16;
-		command[2] = (addr & 0x0000FF00) >> 8;
-		command[3] = 0;
-
-		debug("COMPARE: (%x) %x %x %x\n",
-		      command[0], command[1], command[2], command[3]);
-
-		status = spi_flash_cmd_write(spi, command,
-					     4, writebuf, writelen);
-		if (status < 0) {
-			debug("%s: write(compare) send command error!\n",
-			      dev->name);
-			return -EIO;
-		}
-
-		status = dataflash_waitready(spi);
-
-		/* Check result of the compare operation */
-		if (status & (1 << 6)) {
-			printf("SPI DataFlash: write compare page %u, err %d\n",
-			       pageaddr, status);
-			remaining = 0;
-			status = -EIO;
-			break;
-		} else {
-			status = 0;
-		}
-
-#endif	/* CONFIG_SPI_DATAFLASH_WRITE_VERIFY */
-		remaining = remaining - writelen;
-		pageaddr++;
-		to = 0;
-		writebuf += writelen;
-
-		if (remaining > spi_flash->page_size)
-			writelen = spi_flash->page_size;
-		else
-			writelen = remaining;
-	}
-
-	spi_release_bus(spi);
-
-	return 0;
-}
-
-static int add_dataflash(struct udevice *dev, char *name, int nr_pages,
-			     int pagesize, int pageoffset, char revision)
-{
-	struct spi_flash *spi_flash;
-	struct dataflash *dataflash;
-
-	dataflash = dev_get_priv(dev);
-	spi_flash = dev_get_uclass_priv(dev);
-
-	dataflash->page_offset = pageoffset;
-
-	spi_flash->name = name;
-	spi_flash->page_size = pagesize;
-	spi_flash->size = nr_pages * pagesize;
-	spi_flash->erasesize = pagesize;
-
-#ifndef CONFIG_SPL_BUILD
-	printf("SPI DataFlash: Detected %s with page size ", spi_flash->name);
-	print_size(spi_flash->page_size, ", erase size ");
-	print_size(spi_flash->erasesize, ", total ");
-	print_size(spi_flash->size, "");
-	printf(", revision %c", revision);
-	puts("\n");
-#endif
-
-	return 0;
-}
-
-struct flash_info {
-	char		*name;
-
-	/*
-	 * JEDEC id has a high byte of zero plus three data bytes:
-	 * the manufacturer id, then a two byte device id.
-	 */
-	uint32_t	jedec_id;
-
-	/* The size listed here is what works with OP_ERASE_PAGE. */
-	unsigned	nr_pages;
-	uint16_t	pagesize;
-	uint16_t	pageoffset;
-
-	uint16_t	flags;
-#define SUP_POW2PS	0x0002		/* supports 2^N byte pages */
-#define IS_POW2PS	0x0001		/* uses 2^N byte pages */
-};
-
-static struct flash_info dataflash_data[] = {
-	/*
-	 * NOTE:  chips with SUP_POW2PS (rev D and up) need two entries,
-	 * one with IS_POW2PS and the other without.  The entry with the
-	 * non-2^N byte page size can't name exact chip revisions without
-	 * losing backwards compatibility for cmdlinepart.
-	 *
-	 * Those two entries have different name spelling format in order to
-	 * show their difference obviously.
-	 * The upper case refer to the chip isn't in normal 2^N bytes page-size
-	 * mode.
-	 * The lower case refer to the chip is in normal 2^N bytes page-size
-	 * mode.
-	 *
-	 * These newer chips also support 128-byte security registers (with
-	 * 64 bytes one-time-programmable) and software write-protection.
-	 */
-	{ "AT45DB011B",  0x1f2200, 512, 264, 9, SUP_POW2PS},
-	{ "at45db011d",  0x1f2200, 512, 256, 8, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB021B",  0x1f2300, 1024, 264, 9, SUP_POW2PS},
-	{ "at45db021d",  0x1f2300, 1024, 256, 8, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB041x",  0x1f2400, 2048, 264, 9, SUP_POW2PS},
-	{ "at45db041d",  0x1f2400, 2048, 256, 8, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB081B",  0x1f2500, 4096, 264, 9, SUP_POW2PS},
-	{ "at45db081d",  0x1f2500, 4096, 256, 8, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB161x",  0x1f2600, 4096, 528, 10, SUP_POW2PS},
-	{ "at45db161d",  0x1f2600, 4096, 512, 9, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB321x",  0x1f2700, 8192, 528, 10, 0},		/* rev C */
-
-	{ "AT45DB321x",  0x1f2701, 8192, 528, 10, SUP_POW2PS},
-	{ "at45db321d",  0x1f2701, 8192, 512, 9, SUP_POW2PS | IS_POW2PS},
-
-	{ "AT45DB642x",  0x1f2800, 8192, 1056, 11, SUP_POW2PS},
-	{ "at45db642d",  0x1f2800, 8192, 1024, 10, SUP_POW2PS | IS_POW2PS},
-};
-
-static struct flash_info *jedec_probe(struct spi_slave *spi, u8 *id)
-{
-	int			tmp;
-	uint32_t		jedec;
-	struct flash_info	*info;
-	int status;
-
-	/*
-	 * JEDEC also defines an optional "extended device information"
-	 * string for after vendor-specific data, after the three bytes
-	 * we use here.  Supporting some chips might require using it.
-	 *
-	 * If the vendor ID isn't Atmel's (0x1f), assume this call failed.
-	 * That's not an error; only rev C and newer chips handle it, and
-	 * only Atmel sells these chips.
-	 */
-	if (id[0] != 0x1f)
-		return NULL;
-
-	jedec = id[0];
-	jedec = jedec << 8;
-	jedec |= id[1];
-	jedec = jedec << 8;
-	jedec |= id[2];
-
-	for (tmp = 0, info = dataflash_data;
-			tmp < ARRAY_SIZE(dataflash_data);
-			tmp++, info++) {
-		if (info->jedec_id == jedec) {
-			if (info->flags & SUP_POW2PS) {
-				status = dataflash_status(spi);
-				if (status < 0) {
-					debug("SPI DataFlash: status error %d\n",
-					      status);
-					return NULL;
-				}
-				if (status & 0x1) {
-					if (info->flags & IS_POW2PS)
-						return info;
-				} else {
-					if (!(info->flags & IS_POW2PS))
-						return info;
-				}
-			} else {
-				return info;
-			}
-		}
-	}
-
-	/*
-	 * Treat other chips as errors ... we won't know the right page
-	 * size (it might be binary) even when we can tell which density
-	 * class is involved (legacy chip id scheme).
-	 */
-	printf("SPI DataFlash: Unsupported flash IDs: ");
-	printf("manuf %02x, jedec %04x, ext_jedec %04x\n",
-	       id[0], jedec, id[3] << 8 | id[4]);
-	return NULL;
-}
-
-/*
- * Detect and initialize DataFlash device, using JEDEC IDs on newer chips
- * or else the ID code embedded in the status bits:
- *
- *   Device      Density         ID code          #Pages PageSize  Offset
- *   AT45DB011B  1Mbit   (128K)  xx0011xx (0x0c)    512    264      9
- *   AT45DB021B  2Mbit   (256K)  xx0101xx (0x14)   1024    264      9
- *   AT45DB041B  4Mbit   (512K)  xx0111xx (0x1c)   2048    264      9
- *   AT45DB081B  8Mbit   (1M)    xx1001xx (0x24)   4096    264      9
- *   AT45DB0161B 16Mbit  (2M)    xx1011xx (0x2c)   4096    528     10
- *   AT45DB0321B 32Mbit  (4M)    xx1101xx (0x34)   8192    528     10
- *   AT45DB0642  64Mbit  (8M)    xx111xxx (0x3c)   8192   1056     11
- *   AT45DB1282  128Mbit (16M)   xx0100xx (0x10)  16384   1056     11
- */
-static int spi_dataflash_probe(struct udevice *dev)
-{
-	struct spi_slave *spi = dev_get_parent_priv(dev);
-	struct spi_flash *spi_flash;
-	struct flash_info *info;
-	u8 idcode[5];
-	int ret, status = 0;
-
-	spi_flash = dev_get_uclass_priv(dev);
-	spi_flash->dev = dev;
-
-	ret = spi_claim_bus(spi);
-	if (ret)
-		return ret;
-
-	ret = spi_flash_cmd(spi, CMD_READ_ID, idcode, sizeof(idcode));
-	if (ret) {
-		printf("SPI DataFlash: Failed to get idcodes\n");
-		goto err_read_cmd;
-	}
-
-	/*
-	 * Try to detect dataflash by JEDEC ID.
-	 * If it succeeds we know we have either a C or D part.
-	 * D will support power of 2 pagesize option.
-	 * Both support the security register, though with different
-	 * write procedures.
-	 */
-	info = jedec_probe(spi, idcode);
-	if (info != NULL)
-		add_dataflash(dev, info->name, info->nr_pages,
-			      info->pagesize, info->pageoffset,
-			      (info->flags & SUP_POW2PS) ? 'd' : 'c');
-	else {
-		/*
-		* Older chips support only legacy commands, identifing
-		* capacity using bits in the status byte.
-		*/
-		status = dataflash_status(spi);
-		if (status <= 0 || status == 0xff) {
-			printf("SPI DataFlash: read status error %d\n", status);
-			if (status == 0 || status == 0xff)
-				status = -ENODEV;
-			goto err_read_cmd;
-		}
-		/*
-		* if there's a device there, assume it's dataflash.
-		* board setup should have set spi->max_speed_max to
-		* match f(car) for continuous reads, mode 0 or 3.
-		*/
-		switch (status & 0x3c) {
-		case 0x0c:	/* 0 0 1 1 x x */
-			status = add_dataflash(dev, "AT45DB011B",
-					       512, 264, 9, 0);
-			break;
-		case 0x14:	/* 0 1 0 1 x x */
-			status = add_dataflash(dev, "AT45DB021B",
-					       1024, 264, 9, 0);
-			break;
-		case 0x1c:	/* 0 1 1 1 x x */
-			status = add_dataflash(dev, "AT45DB041x",
-					       2048, 264, 9, 0);
-			break;
-		case 0x24:	/* 1 0 0 1 x x */
-			status = add_dataflash(dev, "AT45DB081B",
-					       4096, 264, 9, 0);
-			break;
-		case 0x2c:	/* 1 0 1 1 x x */
-			status = add_dataflash(dev, "AT45DB161x",
-					       4096, 528, 10, 0);
-			break;
-		case 0x34:	/* 1 1 0 1 x x */
-			status = add_dataflash(dev, "AT45DB321x",
-					       8192, 528, 10, 0);
-			break;
-		case 0x38:	/* 1 1 1 x x x */
-		case 0x3c:
-			status = add_dataflash(dev, "AT45DB642x",
-					       8192, 1056, 11, 0);
-			break;
-		/* obsolete AT45DB1282 not (yet?) supported */
-		default:
-			dev_info(&spi->dev, "unsupported device (%x)\n",
-				 status & 0x3c);
-			status = -ENODEV;
-			goto err_read_cmd;
-		}
-	}
-
-	/* Assign spi data */
-	spi_flash->spi = spi;
-	spi_flash->memory_map = spi->memory_map;
-	spi_flash->dual_flash = spi->option;
-
-	spi_release_bus(spi);
-
-	return 0;
-
-err_read_cmd:
-	spi_release_bus(spi);
-
-	return status;
-}
-
-static const struct dm_spi_flash_ops spi_dataflash_ops = {
-	.read = spi_dataflash_read,
-	.write = spi_dataflash_write,
-	.erase = spi_dataflash_erase,
-};
-
-static const struct udevice_id spi_dataflash_ids[] = {
-	{ .compatible = "atmel,at45", },
-	{ .compatible = "atmel,dataflash", },
-	{ }
-};
-
-U_BOOT_DRIVER(spi_dataflash) = {
-	.name		= "spi_dataflash",
-	.id		= UCLASS_SPI_FLASH,
-	.of_match	= spi_dataflash_ids,
-	.probe		= spi_dataflash_probe,
-	.priv_auto_alloc_size = sizeof(struct dataflash),
-	.ops		= &spi_dataflash_ops,
-};
diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h
deleted file mode 100644
index 007a5a0..0000000
--- a/drivers/mtd/spi/sf_internal.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * SPI flash internal definitions
- *
- * Copyright (C) 2008 Atmel Corporation
- * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#ifndef _SF_INTERNAL_H_
-#define _SF_INTERNAL_H_
-
-#include <linux/types.h>
-#include <linux/compiler.h>
-
-/* Dual SPI flash memories - see SPI_COMM_DUAL_... */
-enum spi_dual_flash {
-	SF_SINGLE_FLASH	= 0,
-	SF_DUAL_STACKED_FLASH	= BIT(0),
-	SF_DUAL_PARALLEL_FLASH	= BIT(1),
-};
-
-/* Enum list - Full read commands */
-enum spi_read_cmds {
-	ARRAY_SLOW		= BIT(0),
-	ARRAY_FAST		= BIT(1),
-	DUAL_OUTPUT_FAST	= BIT(2),
-	QUAD_OUTPUT_FAST	= BIT(3),
-	DUAL_IO_FAST		= BIT(4),
-	QUAD_IO_FAST		= BIT(5),
-};
-
-/* Normal - Extended - Full command set */
-#define RD_NORM		(ARRAY_SLOW | ARRAY_FAST)
-#define RD_EXTN		(RD_NORM | DUAL_OUTPUT_FAST | DUAL_IO_FAST)
-#define RD_FULL		(RD_EXTN | QUAD_OUTPUT_FAST | QUAD_IO_FAST)
-
-/* sf param flags */
-enum {
-#ifndef CONFIG_SPI_FLASH_USE_4K_SECTORS
-	SECT_4K		= 0,
-#else
-	SECT_4K		= BIT(0),
-#endif
-	SECT_32K	= BIT(1),
-	E_FSR		= BIT(2),
-	SST_WR		= BIT(3),
-	WR_QPP		= BIT(4),
-};
-
-enum spi_nor_option_flags {
-	SNOR_F_SST_WR		= BIT(0),
-	SNOR_F_USE_FSR		= BIT(1),
-};
-
-#define SPI_FLASH_3B_ADDR_LEN		3
-#define SPI_FLASH_CMD_LEN		(1 + SPI_FLASH_3B_ADDR_LEN)
-#define SPI_FLASH_16MB_BOUN		0x1000000
-
-/* CFI Manufacture ID's */
-#define SPI_FLASH_CFI_MFR_SPANSION	0x01
-#define SPI_FLASH_CFI_MFR_STMICRO	0x20
-#define SPI_FLASH_CFI_MFR_MACRONIX	0xc2
-#define SPI_FLASH_CFI_MFR_SST		0xbf
-#define SPI_FLASH_CFI_MFR_WINBOND	0xef
-#define SPI_FLASH_CFI_MFR_ATMEL		0x1f
-
-/* Erase commands */
-#define CMD_ERASE_4K			0x20
-#define CMD_ERASE_32K			0x52
-#define CMD_ERASE_CHIP			0xc7
-#define CMD_ERASE_64K			0xd8
-
-/* Write commands */
-#define CMD_WRITE_STATUS		0x01
-#define CMD_PAGE_PROGRAM		0x02
-#define CMD_WRITE_DISABLE		0x04
-#define CMD_WRITE_ENABLE		0x06
-#define CMD_QUAD_PAGE_PROGRAM		0x32
-#define CMD_WRITE_EVCR			0x61
-
-/* Read commands */
-#define CMD_READ_ARRAY_SLOW		0x03
-#define CMD_READ_ARRAY_FAST		0x0b
-#define CMD_READ_DUAL_OUTPUT_FAST	0x3b
-#define CMD_READ_DUAL_IO_FAST		0xbb
-#define CMD_READ_QUAD_OUTPUT_FAST	0x6b
-#define CMD_READ_QUAD_IO_FAST		0xeb
-#define CMD_READ_ID			0x9f
-#define CMD_READ_STATUS			0x05
-#define CMD_READ_STATUS1		0x35
-#define CMD_READ_CONFIG			0x35
-#define CMD_FLAG_STATUS			0x70
-#define CMD_READ_EVCR			0x65
-
-/* Bank addr access commands */
-#ifdef CONFIG_SPI_FLASH_BAR
-# define CMD_BANKADDR_BRWR		0x17
-# define CMD_BANKADDR_BRRD		0x16
-# define CMD_EXTNADDR_WREAR		0xC5
-# define CMD_EXTNADDR_RDEAR		0xC8
-#endif
-
-/* Common status */
-#define STATUS_WIP			BIT(0)
-#define STATUS_QEB_WINSPAN		BIT(1)
-#define STATUS_QEB_MXIC			BIT(6)
-#define STATUS_PEC			BIT(7)
-#define STATUS_QEB_MICRON		BIT(7)
-#define SR_BP0				BIT(2)  /* Block protect 0 */
-#define SR_BP1				BIT(3)  /* Block protect 1 */
-#define SR_BP2				BIT(4)  /* Block protect 2 */
-
-/* Flash timeout values */
-#define SPI_FLASH_PROG_TIMEOUT		(2 * CONFIG_SYS_HZ)
-#define SPI_FLASH_PAGE_ERASE_TIMEOUT	(5 * CONFIG_SYS_HZ)
-#define SPI_FLASH_SECTOR_ERASE_TIMEOUT	(10 * CONFIG_SYS_HZ)
-
-/* SST specific */
-#ifdef CONFIG_SPI_FLASH_SST
-# define CMD_SST_BP		0x02    /* Byte Program */
-# define CMD_SST_AAI_WP		0xAD	/* Auto Address Incr Word Program */
-
-int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
-		const void *buf);
-int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
-		const void *buf);
-#endif
-
-/**
- * struct spi_flash_params - SPI/QSPI flash device params structure
- *
- * @name:		Device name ([MANUFLETTER][DEVTYPE][DENSITY][EXTRAINFO])
- * @jedec:		Device jedec ID (0x[1byte_manuf_id][2byte_dev_id])
- * @ext_jedec:		Device ext_jedec ID
- * @sector_size:	Isn't necessarily a sector size from vendor,
- *			the size listed here is what works with CMD_ERASE_64K
- * @nr_sectors:		No.of sectors on this device
- * @e_rd_cmd:		Enum list for read commands
- * @flags:		Important param, for flash specific behaviour
- */
-struct spi_flash_params {
-	const char *name;
-	u32 jedec;
-	u16 ext_jedec;
-	u32 sector_size;
-	u32 nr_sectors;
-	u8 e_rd_cmd;
-	u16 flags;
-};
-
-extern const struct spi_flash_params spi_flash_params_table[];
-
-/* Send a single-byte command to the device and read the response */
-int spi_flash_cmd(struct spi_slave *spi, u8 cmd, void *response, size_t len);
-
-/*
- * Send a multi-byte command to the device and read the response. Used
- * for flash array reads, etc.
- */
-int spi_flash_cmd_read(struct spi_slave *spi, const u8 *cmd,
-		size_t cmd_len, void *data, size_t data_len);
-
-/*
- * Send a multi-byte command to the device followed by (optional)
- * data. Used for programming the flash array, etc.
- */
-int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
-		const void *data, size_t data_len);
-
-
-/* Flash erase(sectors) operation, support all possible erase commands */
-int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len);
-
-/* Lock stmicro spi flash region */
-int stm_lock(struct spi_flash *flash, u32 ofs, size_t len);
-
-/* Unlock stmicro spi flash region */
-int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len);
-
-/* Check if a stmicro spi flash region is completely locked */
-int stm_is_locked(struct spi_flash *flash, u32 ofs, size_t len);
-
-/* Enable writing on the SPI flash */
-static inline int spi_flash_cmd_write_enable(struct spi_flash *flash)
-{
-	return spi_flash_cmd(flash->spi, CMD_WRITE_ENABLE, NULL, 0);
-}
-
-/* Disable writing on the SPI flash */
-static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
-{
-	return spi_flash_cmd(flash->spi, CMD_WRITE_DISABLE, NULL, 0);
-}
-
-/*
- * Used for spi_flash write operation
- * - SPI claim
- * - spi_flash_cmd_write_enable
- * - spi_flash_cmd_write
- * - spi_flash_cmd_wait_ready
- * - SPI release
- */
-int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd,
-		size_t cmd_len, const void *buf, size_t buf_len);
-
-/*
- * Flash write operation, support all possible write commands.
- * Write the requested data out breaking it up into multiple write
- * commands as needed per the write size.
- */
-int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
-		size_t len, const void *buf);
-
-/*
- * Same as spi_flash_cmd_read() except it also claims/releases the SPI
- * bus. Used as common part of the ->read() operation.
- */
-int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd,
-		size_t cmd_len, void *data, size_t data_len);
-
-/* Flash read operation, support all possible read commands */
-int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
-		size_t len, void *data);
-
-#ifdef CONFIG_SPI_FLASH_MTD
-int spi_flash_mtd_register(struct spi_flash *flash);
-void spi_flash_mtd_unregister(void);
-#endif
-
-/**
- * spi_flash_scan - scan the SPI FLASH
- * @flash:	the spi flash structure
- *
- * The drivers can use this fuction to scan the SPI FLASH.
- * In the scanning, it will try to get all the necessary information to
- * fill the spi_flash{}.
- *
- * Return: 0 for success, others for failure.
- */
-int spi_flash_scan(struct spi_flash *flash);
-
-#endif /* _SF_INTERNAL_H_ */
diff --git a/drivers/mtd/spi/sf_mtd.c b/drivers/mtd/spi/sf_mtd.c
deleted file mode 100644
index 9a8302d..0000000
--- a/drivers/mtd/spi/sf_mtd.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2012-2014 Daniel Schwierzeck, daniel.schwierzeck at gmail.com
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <asm/errno.h>
-#include <linux/mtd/mtd.h>
-#include <spi_flash.h>
-
-static struct mtd_info sf_mtd_info;
-static char sf_mtd_name[8];
-
-static int spi_flash_mtd_erase(struct mtd_info *mtd, struct erase_info *instr)
-{
-	struct spi_flash *flash = mtd->priv;
-	int err;
-
-	instr->state = MTD_ERASING;
-
-	err = spi_flash_erase(flash, instr->addr, instr->len);
-	if (err) {
-		instr->state = MTD_ERASE_FAILED;
-		instr->fail_addr = MTD_FAIL_ADDR_UNKNOWN;
-		return -EIO;
-	}
-
-	instr->state = MTD_ERASE_DONE;
-	mtd_erase_callback(instr);
-
-	return 0;
-}
-
-static int spi_flash_mtd_read(struct mtd_info *mtd, loff_t from, size_t len,
-	size_t *retlen, u_char *buf)
-{
-	struct spi_flash *flash = mtd->priv;
-	int err;
-
-	err = spi_flash_read(flash, from, len, buf);
-	if (!err)
-		*retlen = len;
-
-	return err;
-}
-
-static int spi_flash_mtd_write(struct mtd_info *mtd, loff_t to, size_t len,
-	size_t *retlen, const u_char *buf)
-{
-	struct spi_flash *flash = mtd->priv;
-	int err;
-
-	err = spi_flash_write(flash, to, len, buf);
-	if (!err)
-		*retlen = len;
-
-	return err;
-}
-
-static void spi_flash_mtd_sync(struct mtd_info *mtd)
-{
-}
-
-static int spi_flash_mtd_number(void)
-{
-#ifdef CONFIG_SYS_MAX_FLASH_BANKS
-	return CONFIG_SYS_MAX_FLASH_BANKS;
-#else
-	return 0;
-#endif
-}
-
-int spi_flash_mtd_register(struct spi_flash *flash)
-{
-	memset(&sf_mtd_info, 0, sizeof(sf_mtd_info));
-	sprintf(sf_mtd_name, "nor%d", spi_flash_mtd_number());
-
-	sf_mtd_info.name = sf_mtd_name;
-	sf_mtd_info.type = MTD_NORFLASH;
-	sf_mtd_info.flags = MTD_CAP_NORFLASH;
-	sf_mtd_info.writesize = 1;
-	sf_mtd_info.writebufsize = flash->page_size;
-
-	sf_mtd_info._erase = spi_flash_mtd_erase;
-	sf_mtd_info._read = spi_flash_mtd_read;
-	sf_mtd_info._write = spi_flash_mtd_write;
-	sf_mtd_info._sync = spi_flash_mtd_sync;
-
-	sf_mtd_info.size = flash->size;
-	sf_mtd_info.priv = flash;
-
-	/* Only uniform flash devices for now */
-	sf_mtd_info.numeraseregions = 0;
-	sf_mtd_info.erasesize = flash->erasesize;
-
-	return add_mtd_device(&sf_mtd_info);
-}
-
-void spi_flash_mtd_unregister(void)
-{
-	del_mtd_device(&sf_mtd_info);
-}
diff --git a/drivers/mtd/spi/sf_params.c b/drivers/mtd/spi/sf_params.c
deleted file mode 100644
index 4f37e33..0000000
--- a/drivers/mtd/spi/sf_params.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * SPI flash Params table
- *
- * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <spi.h>
-#include <spi_flash.h>
-
-#include "sf_internal.h"
-
-/* SPI/QSPI flash device params structure */
-const struct spi_flash_params spi_flash_params_table[] = {
-#ifdef CONFIG_SPI_FLASH_ATMEL		/* ATMEL */
-	{"AT45DB011D",	   0x1f2200, 0x0,	64 * 1024,     4, RD_NORM,		    SECT_4K},
-	{"AT45DB021D",	   0x1f2300, 0x0,	64 * 1024,     8, RD_NORM,		    SECT_4K},
-	{"AT45DB041D",	   0x1f2400, 0x0,	64 * 1024,     8, RD_NORM,		    SECT_4K},
-	{"AT45DB081D",	   0x1f2500, 0x0,	64 * 1024,    16, RD_NORM,		    SECT_4K},
-	{"AT45DB161D",	   0x1f2600, 0x0,	64 * 1024,    32, RD_NORM,		    SECT_4K},
-	{"AT45DB321D",	   0x1f2700, 0x0,	64 * 1024,    64, RD_NORM,		    SECT_4K},
-	{"AT45DB641D",	   0x1f2800, 0x0,	64 * 1024,   128, RD_NORM,		    SECT_4K},
-	{"AT25DF321",      0x1f4701, 0x0,	64 * 1024,    64, RD_NORM,		    SECT_4K},
-	{"AT26DF081A",     0x1f4501, 0x0,	64 * 1024,    16, RD_NORM,		    SECT_4K},
-#endif
-#ifdef CONFIG_SPI_FLASH_EON		/* EON */
-	{"EN25Q32B",	   0x1c3016, 0x0,	64 * 1024,    64, RD_NORM,			  0},
-	{"EN25Q64",	   0x1c3017, 0x0,	64 * 1024,   128, RD_NORM,		    SECT_4K},
-	{"EN25Q128B",	   0x1c3018, 0x0,       64 * 1024,   256, RD_NORM,			  0},
-	{"EN25S64",	   0x1c3817, 0x0,	64 * 1024,   128, RD_NORM,			  0},
-#endif
-#ifdef CONFIG_SPI_FLASH_GIGADEVICE	/* GIGADEVICE */
-	{"GD25Q64B",	   0xc84017, 0x0,	64 * 1024,   128, RD_NORM,		    SECT_4K},
-	{"GD25LQ32",	   0xc86016, 0x0,	64 * 1024,    64, RD_NORM,		    SECT_4K},
-#endif
-#ifdef CONFIG_SPI_FLASH_ISSI		/* ISSI */
-	{"IS25LP032",	   0x9d6016, 0x0,	64 * 1024,    64, RD_NORM,			  0},
-	{"IS25LP064",	   0x9d6017, 0x0,	64 * 1024,   128, RD_NORM,			  0},
-	{"IS25LP128",	   0x9d6018, 0x0,	64 * 1024,   256, RD_NORM,			  0},
-#endif
-#ifdef CONFIG_SPI_FLASH_MACRONIX	/* MACRONIX */
-	{"MX25L2006E",	   0xc22012, 0x0,	64 * 1024,     4, RD_NORM,			  0},
-	{"MX25L4005",	   0xc22013, 0x0,	64 * 1024,     8, RD_NORM,			  0},
-	{"MX25L8005",	   0xc22014, 0x0,	64 * 1024,    16, RD_NORM,			  0},
-	{"MX25L1605D",	   0xc22015, 0x0,	64 * 1024,    32, RD_NORM,			  0},
-	{"MX25L3205D",	   0xc22016, 0x0,	64 * 1024,    64, RD_NORM,			  0},
-	{"MX25L6405D",	   0xc22017, 0x0,	64 * 1024,   128, RD_NORM,			  0},
-	{"MX25L12805",	   0xc22018, 0x0,	64 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"MX25L25635F",	   0xc22019, 0x0,	64 * 1024,   512, RD_FULL,		     WR_QPP},
-	{"MX25L51235F",	   0xc2201a, 0x0,	64 * 1024,  1024, RD_FULL,		     WR_QPP},
-	{"MX25L12855E",	   0xc22618, 0x0,	64 * 1024,   256, RD_FULL,		     WR_QPP},
-#endif
-#ifdef CONFIG_SPI_FLASH_SPANSION	/* SPANSION */
-	{"S25FL008A",	   0x010213, 0x0,	64 * 1024,    16, RD_NORM,			  0},
-	{"S25FL016A",	   0x010214, 0x0,	64 * 1024,    32, RD_NORM,			  0},
-	{"S25FL032A",	   0x010215, 0x0,	64 * 1024,    64, RD_NORM,			  0},
-	{"S25FL064A",	   0x010216, 0x0,	64 * 1024,   128, RD_NORM,			  0},
-	{"S25FL116K",	   0x014015, 0x0,	64 * 1024,   128, RD_NORM,			  0},
-	{"S25FL164K",	   0x014017, 0x0140,	64 * 1024,   128, RD_NORM,			  0},
-	{"S25FL128P_256K", 0x012018, 0x0300,   256 * 1024,    64, RD_FULL,		     WR_QPP},
-	{"S25FL128P_64K",  0x012018, 0x0301,    64 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"S25FL032P",	   0x010215, 0x4d00,    64 * 1024,    64, RD_FULL,		     WR_QPP},
-	{"S25FL064P",	   0x010216, 0x4d00,    64 * 1024,   128, RD_FULL,		     WR_QPP},
-	{"S25FL128S_256K", 0x012018, 0x4d00,   256 * 1024,    64, RD_FULL,		     WR_QPP},
-	{"S25FL128S_64K",  0x012018, 0x4d01,    64 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"S25FL256S_256K", 0x010219, 0x4d00,   256 * 1024,   128, RD_FULL,		     WR_QPP},
-	{"S25FL256S_64K",  0x010219, 0x4d01,	64 * 1024,   512, RD_FULL,		     WR_QPP},
-	{"S25FL512S_256K", 0x010220, 0x4d00,   256 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"S25FL512S_64K",  0x010220, 0x4d01,    64 * 1024,  1024, RD_FULL,		     WR_QPP},
-	{"S25FL512S_512K", 0x010220, 0x4f00,   256 * 1024,   256, RD_FULL,		     WR_QPP},
-#endif
-#ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
-	{"M25P10",	   0x202011, 0x0,	32 * 1024,     4, RD_NORM,			  0},
-	{"M25P20",	   0x202012, 0x0,       64 * 1024,     4, RD_NORM,			  0},
-	{"M25P40",	   0x202013, 0x0,       64 * 1024,     8, RD_NORM,			  0},
-	{"M25P80",	   0x202014, 0x0,       64 * 1024,    16, RD_NORM,			  0},
-	{"M25P16",	   0x202015, 0x0,       64 * 1024,    32, RD_NORM,			  0},
-	{"M25PE16",	   0x208015, 0x1000,    64 * 1024,    32, RD_NORM,			  0},
-	{"M25PX16",	   0x207115, 0x1000,    64 * 1024,    32, RD_EXTN,			  0},
-	{"M25P32",	   0x202016, 0x0,       64 * 1024,    64, RD_NORM,			  0},
-	{"M25P64",	   0x202017, 0x0,       64 * 1024,   128, RD_NORM,			  0},
-	{"M25P128",	   0x202018, 0x0,      256 * 1024,    64, RD_NORM,			  0},
-	{"M25PX64",	   0x207117, 0x0,       64 * 1024,   128, RD_NORM,		    SECT_4K},
-	{"N25Q32",	   0x20ba16, 0x0,       64 * 1024,    64, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q32A",	   0x20bb16, 0x0,       64 * 1024,    64, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q64",	   0x20ba17, 0x0,       64 * 1024,   128, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q64A",	   0x20bb17, 0x0,       64 * 1024,   128, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q128",	   0x20ba18, 0x0,       64 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"N25Q128A",	   0x20bb18, 0x0,       64 * 1024,   256, RD_FULL,		     WR_QPP},
-	{"N25Q256",	   0x20ba19, 0x0,       64 * 1024,   512, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q256A",	   0x20bb19, 0x0,       64 * 1024,   512, RD_FULL,	   WR_QPP | SECT_4K},
-	{"N25Q512",	   0x20ba20, 0x0,       64 * 1024,  1024, RD_FULL, WR_QPP | E_FSR | SECT_4K},
-	{"N25Q512A",	   0x20bb20, 0x0,       64 * 1024,  1024, RD_FULL, WR_QPP | E_FSR | SECT_4K},
-	{"N25Q1024",	   0x20ba21, 0x0,       64 * 1024,  2048, RD_FULL, WR_QPP | E_FSR | SECT_4K},
-	{"N25Q1024A",	   0x20bb21, 0x0,       64 * 1024,  2048, RD_FULL, WR_QPP | E_FSR | SECT_4K},
-#endif
-#ifdef CONFIG_SPI_FLASH_SST		/* SST */
-	{"SST25VF040B",	   0xbf258d, 0x0,	64 * 1024,     8, RD_NORM,          SECT_4K | SST_WR},
-	{"SST25VF080B",	   0xbf258e, 0x0,	64 * 1024,    16, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25VF016B",	   0xbf2541, 0x0,	64 * 1024,    32, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25VF032B",	   0xbf254a, 0x0,	64 * 1024,    64, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25VF064C",	   0xbf254b, 0x0,	64 * 1024,   128, RD_NORM,		     SECT_4K},
-	{"SST25WF512",	   0xbf2501, 0x0,	64 * 1024,     1, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25WF010",	   0xbf2502, 0x0,	64 * 1024,     2, RD_NORM,          SECT_4K | SST_WR},
-	{"SST25WF020",	   0xbf2503, 0x0,	64 * 1024,     4, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25WF040",	   0xbf2504, 0x0,	64 * 1024,     8, RD_NORM,	    SECT_4K | SST_WR},
-	{"SST25WF040B",	   0x621613, 0x0,	64 * 1024,     8, RD_NORM,		     SECT_4K},
-	{"SST25WF080",	   0xbf2505, 0x0,	64 * 1024,    16, RD_NORM,	    SECT_4K | SST_WR},
-#endif
-#ifdef CONFIG_SPI_FLASH_WINBOND		/* WINBOND */
-	{"W25P80",	   0xef2014, 0x0,	64 * 1024,    16, RD_NORM,		           0},
-	{"W25P16",	   0xef2015, 0x0,	64 * 1024,    32, RD_NORM,		           0},
-	{"W25P32",	   0xef2016, 0x0,	64 * 1024,    64, RD_NORM,		           0},
-	{"W25X40",	   0xef3013, 0x0,	64 * 1024,     8, RD_NORM,		     SECT_4K},
-	{"W25X16",	   0xef3015, 0x0,	64 * 1024,    32, RD_NORM,		     SECT_4K},
-	{"W25X32",	   0xef3016, 0x0,	64 * 1024,    64, RD_NORM,		     SECT_4K},
-	{"W25X64",	   0xef3017, 0x0,	64 * 1024,   128, RD_NORM,		     SECT_4K},
-	{"W25Q80BL",	   0xef4014, 0x0,	64 * 1024,    16, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q16CL",	   0xef4015, 0x0,	64 * 1024,    32, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q32BV",	   0xef4016, 0x0,	64 * 1024,    64, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q64CV",	   0xef4017, 0x0,	64 * 1024,   128, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q128BV",	   0xef4018, 0x0,	64 * 1024,   256, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q256",	   0xef4019, 0x0,	64 * 1024,   512, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q80BW",	   0xef5014, 0x0,	64 * 1024,    16, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q16DW",	   0xef6015, 0x0,	64 * 1024,    32, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q32DW",	   0xef6016, 0x0,	64 * 1024,    64, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q64DW",	   0xef6017, 0x0,	64 * 1024,   128, RD_FULL,	    WR_QPP | SECT_4K},
-	{"W25Q128FW",	   0xef6018, 0x0,	64 * 1024,   256, RD_FULL,	    WR_QPP | SECT_4K},
-#endif
-	{},	/* Empty entry to terminate the list */
-	/*
-	 * Note:
-	 * Below paired flash devices has similar spi_flash params.
-	 * (S25FL129P_64K, S25FL128S_64K)
-	 * (W25Q80BL, W25Q80BV)
-	 * (W25Q16CL, W25Q16DV)
-	 * (W25Q32BV, W25Q32FV_SPI)
-	 * (W25Q64CV, W25Q64FV_SPI)
-	 * (W25Q128BV, W25Q128FV_SPI)
-	 * (W25Q32DW, W25Q32FV_QPI)
-	 * (W25Q64DW, W25Q64FV_QPI)
-	 * (W25Q128FW, W25Q128FV_QPI)
-	 */
-};
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
deleted file mode 100644
index 7b29637..0000000
--- a/drivers/mtd/spi/sf_probe.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * SPI flash probing
- *
- * Copyright (C) 2008 Atmel Corporation
- * Copyright (C) 2010 Reinhard Meyer, EMK Elektronik
- * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <dm.h>
-#include <errno.h>
-#include <malloc.h>
-#include <spi.h>
-#include <spi_flash.h>
-
-#include "sf_internal.h"
-
-/**
- * spi_flash_probe_slave() - Probe for a SPI flash device on a bus
- *
- * @flashp: Pointer to place to put flash info, which may be NULL if the
- * space should be allocated
- */
-static int spi_flash_probe_slave(struct spi_flash *flash)
-{
-	struct spi_slave *spi = flash->spi;
-	int ret;
-
-	/* Setup spi_slave */
-	if (!spi) {
-		printf("SF: Failed to set up slave\n");
-		return -ENODEV;
-	}
-
-	/* Claim spi bus */
-	ret = spi_claim_bus(spi);
-	if (ret) {
-		debug("SF: Failed to claim SPI bus: %d\n", ret);
-		return ret;
-	}
-
-	ret = spi_flash_scan(flash);
-	if (ret)
-		goto err_read_id;
-
-#ifdef CONFIG_SPI_FLASH_MTD
-	ret = spi_flash_mtd_register(flash);
-#endif
-
-err_read_id:
-	spi_release_bus(spi);
-	return ret;
-}
-
-#ifndef CONFIG_DM_SPI_FLASH
-static struct spi_flash *spi_flash_probe_tail(struct spi_slave *bus)
-{
-	struct spi_flash *flash;
-
-	/* Allocate space if needed (not used by sf-uclass */
-	flash = calloc(1, sizeof(*flash));
-	if (!flash) {
-		debug("SF: Failed to allocate spi_flash\n");
-		return NULL;
-	}
-
-	flash->spi = bus;
-	if (spi_flash_probe_slave(flash)) {
-		spi_free_slave(bus);
-		free(flash);
-		return NULL;
-	}
-
-	return flash;
-}
-
-struct spi_flash *spi_flash_probe(unsigned int busnum, unsigned int cs,
-		unsigned int max_hz, unsigned int spi_mode)
-{
-	struct spi_slave *bus;
-
-	bus = spi_setup_slave(busnum, cs, max_hz, spi_mode);
-	if (!bus)
-		return NULL;
-	return spi_flash_probe_tail(bus);
-}
-
-#ifdef CONFIG_OF_SPI_FLASH
-struct spi_flash *spi_flash_probe_fdt(const void *blob, int slave_node,
-				      int spi_node)
-{
-	struct spi_slave *bus;
-
-	bus = spi_setup_slave_fdt(blob, slave_node, spi_node);
-	if (!bus)
-		return NULL;
-	return spi_flash_probe_tail(bus);
-}
-#endif
-
-void spi_flash_free(struct spi_flash *flash)
-{
-#ifdef CONFIG_SPI_FLASH_MTD
-	spi_flash_mtd_unregister();
-#endif
-	spi_free_slave(flash->spi);
-	free(flash);
-}
-
-#else /* defined CONFIG_DM_SPI_FLASH */
-
-static int spi_flash_std_read(struct udevice *dev, u32 offset, size_t len,
-			      void *buf)
-{
-	struct spi_flash *flash = dev_get_uclass_priv(dev);
-
-	return spi_flash_cmd_read_ops(flash, offset, len, buf);
-}
-
-static int spi_flash_std_write(struct udevice *dev, u32 offset, size_t len,
-			const void *buf)
-{
-	struct spi_flash *flash = dev_get_uclass_priv(dev);
-
-#if defined(CONFIG_SPI_FLASH_SST)
-	if (flash->flags & SNOR_F_SST_WR) {
-		if (flash->spi->mode & SPI_TX_BYTE)
-			return sst_write_bp(flash, offset, len, buf);
-		else
-			return sst_write_wp(flash, offset, len, buf);
-	}
-#endif
-
-	return spi_flash_cmd_write_ops(flash, offset, len, buf);
-}
-
-static int spi_flash_std_erase(struct udevice *dev, u32 offset, size_t len)
-{
-	struct spi_flash *flash = dev_get_uclass_priv(dev);
-
-	return spi_flash_cmd_erase_ops(flash, offset, len);
-}
-
-static int spi_flash_std_probe(struct udevice *dev)
-{
-	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
-	struct spi_flash *flash;
-
-	flash = dev_get_uclass_priv(dev);
-	flash->dev = dev;
-	flash->spi = slave;
-	debug("%s: slave=%p, cs=%d\n", __func__, slave, plat->cs);
-	return spi_flash_probe_slave(flash);
-}
-
-static const struct dm_spi_flash_ops spi_flash_std_ops = {
-	.read = spi_flash_std_read,
-	.write = spi_flash_std_write,
-	.erase = spi_flash_std_erase,
-};
-
-static const struct udevice_id spi_flash_std_ids[] = {
-	{ .compatible = "spi-flash" },
-	{ }
-};
-
-U_BOOT_DRIVER(spi_flash_std) = {
-	.name		= "spi_flash_std",
-	.id		= UCLASS_SPI_FLASH,
-	.of_match	= spi_flash_std_ids,
-	.probe		= spi_flash_std_probe,
-	.priv_auto_alloc_size = sizeof(struct spi_flash),
-	.ops		= &spi_flash_std_ops,
-};
-
-#endif /* CONFIG_DM_SPI_FLASH */
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
deleted file mode 100644
index 4614c9c..0000000
--- a/drivers/mtd/spi/spi_flash.c
+++ /dev/null
@@ -1,1191 +0,0 @@
-/*
- * SPI Flash Core
- *
- * Copyright (C) 2015 Jagan Teki <jteki@openedev.com>
- * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
- * Copyright (C) 2010 Reinhard Meyer, EMK Elektronik
- * Copyright (C) 2008 Atmel Corporation
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <errno.h>
-#include <malloc.h>
-#include <mapmem.h>
-#include <spi.h>
-#include <spi_flash.h>
-#include <linux/log2.h>
-#include <dma.h>
-
-#include "sf_internal.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void spi_flash_addr(u32 addr, u8 *cmd)
-{
-	/* cmd[0] is actual command */
-	cmd[1] = addr >> 16;
-	cmd[2] = addr >> 8;
-	cmd[3] = addr >> 0;
-}
-
-static int read_sr(struct spi_flash *flash, u8 *rs)
-{
-	int ret;
-	u8 cmd;
-
-	cmd = CMD_READ_STATUS;
-	ret = spi_flash_read_common(flash, &cmd, 1, rs, 1);
-	if (ret < 0) {
-		debug("SF: fail to read status register\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static int read_fsr(struct spi_flash *flash, u8 *fsr)
-{
-	int ret;
-	const u8 cmd = CMD_FLAG_STATUS;
-
-	ret = spi_flash_read_common(flash, &cmd, 1, fsr, 1);
-	if (ret < 0) {
-		debug("SF: fail to read flag status register\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static int write_sr(struct spi_flash *flash, u8 ws)
-{
-	u8 cmd;
-	int ret;
-
-	cmd = CMD_WRITE_STATUS;
-	ret = spi_flash_write_common(flash, &cmd, 1, &ws, 1);
-	if (ret < 0) {
-		debug("SF: fail to write status register\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
-static int read_cr(struct spi_flash *flash, u8 *rc)
-{
-	int ret;
-	u8 cmd;
-
-	cmd = CMD_READ_CONFIG;
-	ret = spi_flash_read_common(flash, &cmd, 1, rc, 1);
-	if (ret < 0) {
-		debug("SF: fail to read config register\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static int write_cr(struct spi_flash *flash, u8 wc)
-{
-	u8 data[2];
-	u8 cmd;
-	int ret;
-
-	ret = read_sr(flash, &data[0]);
-	if (ret < 0)
-		return ret;
-
-	cmd = CMD_WRITE_STATUS;
-	data[1] = wc;
-	ret = spi_flash_write_common(flash, &cmd, 1, &data, 2);
-	if (ret) {
-		debug("SF: fail to write config register\n");
-		return ret;
-	}
-
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_SPI_FLASH_STMICRO
-static int read_evcr(struct spi_flash *flash, u8 *evcr)
-{
-	int ret;
-	const u8 cmd = CMD_READ_EVCR;
-
-	ret = spi_flash_read_common(flash, &cmd, 1, evcr, 1);
-	if (ret < 0) {
-		debug("SF: error reading EVCR\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static int write_evcr(struct spi_flash *flash, u8 evcr)
-{
-	u8 cmd;
-	int ret;
-
-	cmd = CMD_WRITE_EVCR;
-	ret = spi_flash_write_common(flash, &cmd, 1, &evcr, 1);
-	if (ret < 0) {
-		debug("SF: error while writing EVCR register\n");
-		return ret;
-	}
-
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_SPI_FLASH_BAR
-static int spi_flash_write_bar(struct spi_flash *flash, u32 offset)
-{
-	u8 cmd, bank_sel;
-	int ret;
-
-	bank_sel = offset / (SPI_FLASH_16MB_BOUN << flash->shift);
-	if (bank_sel == flash->bank_curr)
-		goto bar_end;
-
-	cmd = flash->bank_write_cmd;
-	ret = spi_flash_write_common(flash, &cmd, 1, &bank_sel, 1);
-	if (ret < 0) {
-		debug("SF: fail to write bank register\n");
-		return ret;
-	}
-
-bar_end:
-	flash->bank_curr = bank_sel;
-	return flash->bank_curr;
-}
-
-static int spi_flash_read_bar(struct spi_flash *flash, u8 idcode0)
-{
-	u8 curr_bank = 0;
-	int ret;
-
-	if (flash->size <= SPI_FLASH_16MB_BOUN)
-		goto bar_end;
-
-	switch (idcode0) {
-	case SPI_FLASH_CFI_MFR_SPANSION:
-		flash->bank_read_cmd = CMD_BANKADDR_BRRD;
-		flash->bank_write_cmd = CMD_BANKADDR_BRWR;
-		break;
-	default:
-		flash->bank_read_cmd = CMD_EXTNADDR_RDEAR;
-		flash->bank_write_cmd = CMD_EXTNADDR_WREAR;
-	}
-
-	ret = spi_flash_read_common(flash, &flash->bank_read_cmd, 1,
-				    &curr_bank, 1);
-	if (ret) {
-		debug("SF: fail to read bank addr register\n");
-		return ret;
-	}
-
-bar_end:
-	flash->bank_curr = curr_bank;
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_SF_DUAL_FLASH
-static void spi_flash_dual(struct spi_flash *flash, u32 *addr)
-{
-	struct spi_slave *spi = flash->spi;
-
-	switch (flash->dual_flash) {
-	case SF_DUAL_STACKED_FLASH:
-		if (*addr >= (flash->size >> 1)) {
-			*addr -= flash->size >> 1;
-			spi->flags |= SPI_XFER_U_PAGE;
-		} else {
-			spi->flags &= ~SPI_XFER_U_PAGE;
-		}
-		break;
-	case SF_DUAL_PARALLEL_FLASH:
-		*addr >>= flash->shift;
-		break;
-	default:
-		debug("SF: Unsupported dual_flash=%d\n", flash->dual_flash);
-		break;
-	}
-}
-#endif
-
-static int spi_flash_sr_ready(struct spi_flash *flash)
-{
-	u8 sr;
-	int ret;
-
-	ret = read_sr(flash, &sr);
-	if (ret < 0)
-		return ret;
-
-	return !(sr & STATUS_WIP);
-}
-
-static int spi_flash_fsr_ready(struct spi_flash *flash)
-{
-	u8 fsr;
-	int ret;
-
-	ret = read_fsr(flash, &fsr);
-	if (ret < 0)
-		return ret;
-
-	return fsr & STATUS_PEC;
-}
-
-static int spi_flash_ready(struct spi_flash *flash)
-{
-	int sr, fsr;
-
-	sr = spi_flash_sr_ready(flash);
-	if (sr < 0)
-		return sr;
-
-	fsr = 1;
-	if (flash->flags & SNOR_F_USE_FSR) {
-		fsr = spi_flash_fsr_ready(flash);
-		if (fsr < 0)
-			return fsr;
-	}
-
-	return sr && fsr;
-}
-
-static int spi_flash_cmd_wait_ready(struct spi_flash *flash,
-					unsigned long timeout)
-{
-	int timebase, ret;
-
-	timebase = get_timer(0);
-
-	while (get_timer(timebase) < timeout) {
-		ret = spi_flash_ready(flash);
-		if (ret < 0)
-			return ret;
-		if (ret)
-			return 0;
-	}
-
-	printf("SF: Timeout!\n");
-
-	return -ETIMEDOUT;
-}
-
-int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd,
-		size_t cmd_len, const void *buf, size_t buf_len)
-{
-	struct spi_slave *spi = flash->spi;
-	unsigned long timeout = SPI_FLASH_PROG_TIMEOUT;
-	int ret;
-
-	if (buf == NULL)
-		timeout = SPI_FLASH_PAGE_ERASE_TIMEOUT;
-
-	ret = spi_claim_bus(spi);
-	if (ret) {
-		debug("SF: unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = spi_flash_cmd_write_enable(flash);
-	if (ret < 0) {
-		debug("SF: enabling write failed\n");
-		return ret;
-	}
-
-	ret = spi_flash_cmd_write(spi, cmd, cmd_len, buf, buf_len);
-	if (ret < 0) {
-		debug("SF: write cmd failed\n");
-		return ret;
-	}
-
-	ret = spi_flash_cmd_wait_ready(flash, timeout);
-	if (ret < 0) {
-		debug("SF: write %s timed out\n",
-		      timeout == SPI_FLASH_PROG_TIMEOUT ?
-			"program" : "page erase");
-		return ret;
-	}
-
-	spi_release_bus(spi);
-
-	return ret;
-}
-
-int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
-{
-	u32 erase_size, erase_addr;
-	u8 cmd[SPI_FLASH_CMD_LEN];
-	int ret = -1;
-
-	erase_size = flash->erasesize;
-	if (offset % erase_size || len % erase_size) {
-		debug("SF: Erase offset/length not multiple of erase size\n");
-		return -1;
-	}
-
-	if (flash->flash_is_locked) {
-		if (flash->flash_is_locked(flash, offset, len) > 0) {
-			printf("offset 0x%x is protected and cannot be erased\n",
-			       offset);
-			return -EINVAL;
-		}
-	}
-
-	cmd[0] = flash->erase_cmd;
-	while (len) {
-		erase_addr = offset;
-
-#ifdef CONFIG_SF_DUAL_FLASH
-		if (flash->dual_flash > SF_SINGLE_FLASH)
-			spi_flash_dual(flash, &erase_addr);
-#endif
-#ifdef CONFIG_SPI_FLASH_BAR
-		ret = spi_flash_write_bar(flash, erase_addr);
-		if (ret < 0)
-			return ret;
-#endif
-		spi_flash_addr(erase_addr, cmd);
-
-		debug("SF: erase %2x %2x %2x %2x (%x)\n", cmd[0], cmd[1],
-		      cmd[2], cmd[3], erase_addr);
-
-		ret = spi_flash_write_common(flash, cmd, sizeof(cmd), NULL, 0);
-		if (ret < 0) {
-			debug("SF: erase failed\n");
-			break;
-		}
-
-		offset += erase_size;
-		len -= erase_size;
-	}
-
-	return ret;
-}
-
-int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
-		size_t len, const void *buf)
-{
-	struct spi_slave *spi = flash->spi;
-	unsigned long byte_addr, page_size;
-	u32 write_addr;
-	size_t chunk_len, actual;
-	u8 cmd[SPI_FLASH_CMD_LEN];
-	int ret = -1;
-
-	page_size = flash->page_size;
-
-	if (flash->flash_is_locked) {
-		if (flash->flash_is_locked(flash, offset, len) > 0) {
-			printf("offset 0x%x is protected and cannot be written\n",
-			       offset);
-			return -EINVAL;
-		}
-	}
-
-	cmd[0] = flash->write_cmd;
-	for (actual = 0; actual < len; actual += chunk_len) {
-		write_addr = offset;
-
-#ifdef CONFIG_SF_DUAL_FLASH
-		if (flash->dual_flash > SF_SINGLE_FLASH)
-			spi_flash_dual(flash, &write_addr);
-#endif
-#ifdef CONFIG_SPI_FLASH_BAR
-		ret = spi_flash_write_bar(flash, write_addr);
-		if (ret < 0)
-			return ret;
-#endif
-		byte_addr = offset % page_size;
-		chunk_len = min(len - actual, (size_t)(page_size - byte_addr));
-
-		if (spi->max_write_size)
-			chunk_len = min(chunk_len,
-					(size_t)spi->max_write_size);
-
-		spi_flash_addr(write_addr, cmd);
-
-		debug("SF: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %zu\n",
-		      buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_write_common(flash, cmd, sizeof(cmd),
-					buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: write failed\n");
-			break;
-		}
-
-		offset += chunk_len;
-	}
-
-	return ret;
-}
-
-int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd,
-		size_t cmd_len, void *data, size_t data_len)
-{
-	struct spi_slave *spi = flash->spi;
-	int ret;
-
-	ret = spi_claim_bus(spi);
-	if (ret) {
-		debug("SF: unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = spi_flash_cmd_read(spi, cmd, cmd_len, data, data_len);
-	if (ret < 0) {
-		debug("SF: read cmd failed\n");
-		return ret;
-	}
-
-	spi_release_bus(spi);
-
-	return ret;
-}
-
-/*
- * TODO: remove the weak after all the other spi_flash_copy_mmap
- * implementations removed from drivers
- */
-void __weak spi_flash_copy_mmap(void *data, void *offset, size_t len)
-{
-#ifdef CONFIG_DMA
-	if (!dma_memcpy(data, offset, len))
-		return;
-#endif
-	memcpy(data, offset, len);
-}
-
-int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
-		size_t len, void *data)
-{
-	struct spi_slave *spi = flash->spi;
-	u8 *cmd, cmdsz;
-	u32 remain_len, read_len, read_addr;
-	int bank_sel = 0;
-	int ret = -1;
-
-	/* Handle memory-mapped SPI */
-	if (flash->memory_map) {
-		ret = spi_claim_bus(spi);
-		if (ret) {
-			debug("SF: unable to claim SPI bus\n");
-			return ret;
-		}
-		spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP);
-		spi_flash_copy_mmap(data, flash->memory_map + offset, len);
-		spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
-		spi_release_bus(spi);
-		return 0;
-	}
-
-	cmdsz = SPI_FLASH_CMD_LEN + flash->dummy_byte;
-	cmd = calloc(1, cmdsz);
-	if (!cmd) {
-		debug("SF: Failed to allocate cmd\n");
-		return -ENOMEM;
-	}
-
-	cmd[0] = flash->read_cmd;
-	while (len) {
-		read_addr = offset;
-
-#ifdef CONFIG_SF_DUAL_FLASH
-		if (flash->dual_flash > SF_SINGLE_FLASH)
-			spi_flash_dual(flash, &read_addr);
-#endif
-#ifdef CONFIG_SPI_FLASH_BAR
-		ret = spi_flash_write_bar(flash, read_addr);
-		if (ret < 0)
-			return ret;
-		bank_sel = flash->bank_curr;
-#endif
-		remain_len = ((SPI_FLASH_16MB_BOUN << flash->shift) *
-				(bank_sel + 1)) - offset;
-		if (len < remain_len)
-			read_len = len;
-		else
-			read_len = remain_len;
-
-		spi_flash_addr(read_addr, cmd);
-
-		ret = spi_flash_read_common(flash, cmd, cmdsz, data, read_len);
-		if (ret < 0) {
-			debug("SF: read failed\n");
-			break;
-		}
-
-		offset += read_len;
-		len -= read_len;
-		data += read_len;
-	}
-
-	free(cmd);
-	return ret;
-}
-
-#ifdef CONFIG_SPI_FLASH_SST
-static int sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf)
-{
-	struct spi_slave *spi = flash->spi;
-	int ret;
-	u8 cmd[4] = {
-		CMD_SST_BP,
-		offset >> 16,
-		offset >> 8,
-		offset,
-	};
-
-	debug("BP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
-	      spi_w8r8(spi, CMD_READ_STATUS), buf, cmd[0], offset);
-
-	ret = spi_flash_cmd_write_enable(flash);
-	if (ret)
-		return ret;
-
-	ret = spi_flash_cmd_write(spi, cmd, sizeof(cmd), buf, 1);
-	if (ret)
-		return ret;
-
-	return spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-}
-
-int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
-		const void *buf)
-{
-	struct spi_slave *spi = flash->spi;
-	size_t actual, cmd_len;
-	int ret;
-	u8 cmd[4];
-
-	ret = spi_claim_bus(spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	/* If the data is not word aligned, write out leading single byte */
-	actual = offset % 2;
-	if (actual) {
-		ret = sst_byte_write(flash, offset, buf);
-		if (ret)
-			goto done;
-	}
-	offset += actual;
-
-	ret = spi_flash_cmd_write_enable(flash);
-	if (ret)
-		goto done;
-
-	cmd_len = 4;
-	cmd[0] = CMD_SST_AAI_WP;
-	cmd[1] = offset >> 16;
-	cmd[2] = offset >> 8;
-	cmd[3] = offset;
-
-	for (; actual < len - 1; actual += 2) {
-		debug("WP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
-		      spi_w8r8(spi, CMD_READ_STATUS), buf + actual,
-		      cmd[0], offset);
-
-		ret = spi_flash_cmd_write(spi, cmd, cmd_len,
-					buf + actual, 2);
-		if (ret) {
-			debug("SF: sst word program failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			break;
-
-		cmd_len = 1;
-		offset += 2;
-	}
-
-	if (!ret)
-		ret = spi_flash_cmd_write_disable(flash);
-
-	/* If there is a single trailing byte, write it out */
-	if (!ret && actual != len)
-		ret = sst_byte_write(flash, offset, buf + actual);
-
- done:
-	debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
-	      ret ? "failure" : "success", len, offset - actual);
-
-	spi_release_bus(spi);
-	return ret;
-}
-
-int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
-		const void *buf)
-{
-	struct spi_slave *spi = flash->spi;
-	size_t actual;
-	int ret;
-
-	ret = spi_claim_bus(spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	for (actual = 0; actual < len; actual++) {
-		ret = sst_byte_write(flash, offset, buf + actual);
-		if (ret) {
-			debug("SF: sst byte program failed\n");
-			break;
-		}
-		offset++;
-	}
-
-	if (!ret)
-		ret = spi_flash_cmd_write_disable(flash);
-
-	debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
-	      ret ? "failure" : "success", len, offset - actual);
-
-	spi_release_bus(spi);
-	return ret;
-}
-#endif
-
-#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
-static void stm_get_locked_range(struct spi_flash *flash, u8 sr, loff_t *ofs,
-				 u64 *len)
-{
-	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
-	int shift = ffs(mask) - 1;
-	int pow;
-
-	if (!(sr & mask)) {
-		/* No protection */
-		*ofs = 0;
-		*len = 0;
-	} else {
-		pow = ((sr & mask) ^ mask) >> shift;
-		*len = flash->size >> pow;
-		*ofs = flash->size - *len;
-	}
-}
-
-/*
- * Return 1 if the entire region is locked, 0 otherwise
- */
-static int stm_is_locked_sr(struct spi_flash *flash, loff_t ofs, u64 len,
-			    u8 sr)
-{
-	loff_t lock_offs;
-	u64 lock_len;
-
-	stm_get_locked_range(flash, sr, &lock_offs, &lock_len);
-
-	return (ofs + len <= lock_offs + lock_len) && (ofs >= lock_offs);
-}
-
-/*
- * Check if a region of the flash is (completely) locked. See stm_lock() for
- * more info.
- *
- * Returns 1 if entire region is locked, 0 if any portion is unlocked, and
- * negative on errors.
- */
-int stm_is_locked(struct spi_flash *flash, u32 ofs, size_t len)
-{
-	int status;
-	u8 sr;
-
-	status = read_sr(flash, &sr);
-	if (status < 0)
-		return status;
-
-	return stm_is_locked_sr(flash, ofs, len, sr);
-}
-
-/*
- * Lock a region of the flash. Compatible with ST Micro and similar flash.
- * Supports only the block protection bits BP{0,1,2} in the status register
- * (SR). Does not support these features found in newer SR bitfields:
- *   - TB: top/bottom protect - only handle TB=0 (top protect)
- *   - SEC: sector/block protect - only handle SEC=0 (block protect)
- *   - CMP: complement protect - only support CMP=0 (range is not complemented)
- *
- * Sample table portion for 8MB flash (Winbond w25q64fw):
- *
- *   SEC  |  TB   |  BP2  |  BP1  |  BP0  |  Prot Length  | Protected Portion
- *  --------------------------------------------------------------------------
- *    X   |   X   |   0   |   0   |   0   |  NONE         | NONE
- *    0   |   0   |   0   |   0   |   1   |  128 KB       | Upper 1/64
- *    0   |   0   |   0   |   1   |   0   |  256 KB       | Upper 1/32
- *    0   |   0   |   0   |   1   |   1   |  512 KB       | Upper 1/16
- *    0   |   0   |   1   |   0   |   0   |  1 MB         | Upper 1/8
- *    0   |   0   |   1   |   0   |   1   |  2 MB         | Upper 1/4
- *    0   |   0   |   1   |   1   |   0   |  4 MB         | Upper 1/2
- *    X   |   X   |   1   |   1   |   1   |  8 MB         | ALL
- *
- * Returns negative on errors, 0 on success.
- */
-int stm_lock(struct spi_flash *flash, u32 ofs, size_t len)
-{
-	u8 status_old, status_new;
-	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
-	u8 shift = ffs(mask) - 1, pow, val;
-	int ret;
-
-	ret = read_sr(flash, &status_old);
-	if (ret < 0)
-		return ret;
-
-	/* SPI NOR always locks to the end */
-	if (ofs + len != flash->size) {
-		/* Does combined region extend to end? */
-		if (!stm_is_locked_sr(flash, ofs + len, flash->size - ofs - len,
-				      status_old))
-			return -EINVAL;
-		len = flash->size - ofs;
-	}
-
-	/*
-	 * Need smallest pow such that:
-	 *
-	 *   1 / (2^pow) <= (len / size)
-	 *
-	 * so (assuming power-of-2 size) we do:
-	 *
-	 *   pow = ceil(log2(size / len)) = log2(size) - floor(log2(len))
-	 */
-	pow = ilog2(flash->size) - ilog2(len);
-	val = mask - (pow << shift);
-	if (val & ~mask)
-		return -EINVAL;
-
-	/* Don't "lock" with no region! */
-	if (!(val & mask))
-		return -EINVAL;
-
-	status_new = (status_old & ~mask) | val;
-
-	/* Only modify protection if it will not unlock other areas */
-	if ((status_new & mask) <= (status_old & mask))
-		return -EINVAL;
-
-	write_sr(flash, status_new);
-
-	return 0;
-}
-
-/*
- * Unlock a region of the flash. See stm_lock() for more info
- *
- * Returns negative on errors, 0 on success.
- */
-int stm_unlock(struct spi_flash *flash, u32 ofs, size_t len)
-{
-	uint8_t status_old, status_new;
-	u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
-	u8 shift = ffs(mask) - 1, pow, val;
-	int ret;
-
-	ret = read_sr(flash, &status_old);
-	if (ret < 0)
-		return ret;
-
-	/* Cannot unlock; would unlock larger region than requested */
-	if (stm_is_locked_sr(flash, ofs - flash->erasesize, flash->erasesize,
-			     status_old))
-		return -EINVAL;
-	/*
-	 * Need largest pow such that:
-	 *
-	 *   1 / (2^pow) >= (len / size)
-	 *
-	 * so (assuming power-of-2 size) we do:
-	 *
-	 *   pow = floor(log2(size / len)) = log2(size) - ceil(log2(len))
-	 */
-	pow = ilog2(flash->size) - order_base_2(flash->size - (ofs + len));
-	if (ofs + len == flash->size) {
-		val = 0; /* fully unlocked */
-	} else {
-		val = mask - (pow << shift);
-		/* Some power-of-two sizes are not supported */
-		if (val & ~mask)
-			return -EINVAL;
-	}
-
-	status_new = (status_old & ~mask) | val;
-
-	/* Only modify protection if it will not lock other areas */
-	if ((status_new & mask) >= (status_old & mask))
-		return -EINVAL;
-
-	write_sr(flash, status_new);
-
-	return 0;
-}
-#endif
-
-
-#ifdef CONFIG_SPI_FLASH_MACRONIX
-static int macronix_quad_enable(struct spi_flash *flash)
-{
-	u8 qeb_status;
-	int ret;
-
-	ret = read_sr(flash, &qeb_status);
-	if (ret < 0)
-		return ret;
-
-	if (qeb_status & STATUS_QEB_MXIC)
-		return 0;
-
-	ret = write_sr(flash, qeb_status | STATUS_QEB_MXIC);
-	if (ret < 0)
-		return ret;
-
-	/* read SR and check it */
-	ret = read_sr(flash, &qeb_status);
-	if (!(ret >= 0 && (qeb_status & STATUS_QEB_MXIC))) {
-		printf("SF: Macronix SR Quad bit not clear\n");
-		return -EINVAL;
-	}
-
-	return ret;
-}
-#endif
-
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
-static int spansion_quad_enable(struct spi_flash *flash)
-{
-	u8 qeb_status;
-	int ret;
-
-	ret = read_cr(flash, &qeb_status);
-	if (ret < 0)
-		return ret;
-
-	if (qeb_status & STATUS_QEB_WINSPAN)
-		return 0;
-
-	ret = write_cr(flash, qeb_status | STATUS_QEB_WINSPAN);
-	if (ret < 0)
-		return ret;
-
-	/* read CR and check it */
-	ret = read_cr(flash, &qeb_status);
-	if (!(ret >= 0 && (qeb_status & STATUS_QEB_WINSPAN))) {
-		printf("SF: Spansion CR Quad bit not clear\n");
-		return -EINVAL;
-	}
-
-	return ret;
-}
-#endif
-
-#ifdef CONFIG_SPI_FLASH_STMICRO
-static int micron_quad_enable(struct spi_flash *flash)
-{
-	u8 qeb_status;
-	int ret;
-
-	ret = read_evcr(flash, &qeb_status);
-	if (ret < 0)
-		return ret;
-
-	if (!(qeb_status & STATUS_QEB_MICRON))
-		return 0;
-
-	ret = write_evcr(flash, qeb_status & ~STATUS_QEB_MICRON);
-	if (ret < 0)
-		return ret;
-
-	/* read EVCR and check it */
-	ret = read_evcr(flash, &qeb_status);
-	if (!(ret >= 0 && !(qeb_status & STATUS_QEB_MICRON))) {
-		printf("SF: Micron EVCR Quad bit not clear\n");
-		return -EINVAL;
-	}
-
-	return ret;
-}
-#endif
-
-static int set_quad_mode(struct spi_flash *flash, u8 idcode0)
-{
-	switch (idcode0) {
-#ifdef CONFIG_SPI_FLASH_MACRONIX
-	case SPI_FLASH_CFI_MFR_MACRONIX:
-		return macronix_quad_enable(flash);
-#endif
-#if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND)
-	case SPI_FLASH_CFI_MFR_SPANSION:
-	case SPI_FLASH_CFI_MFR_WINBOND:
-		return spansion_quad_enable(flash);
-#endif
-#ifdef CONFIG_SPI_FLASH_STMICRO
-	case SPI_FLASH_CFI_MFR_STMICRO:
-		return micron_quad_enable(flash);
-#endif
-	default:
-		printf("SF: Need set QEB func for %02x flash\n", idcode0);
-		return -1;
-	}
-}
-
-#if CONFIG_IS_ENABLED(OF_CONTROL)
-int spi_flash_decode_fdt(const void *blob, struct spi_flash *flash)
-{
-#ifdef CONFIG_DM_SPI_FLASH
-	fdt_addr_t addr;
-	fdt_size_t size;
-	int node = flash->dev->of_offset;
-
-	addr = fdtdec_get_addr_size(blob, node, "memory-map", &size);
-	if (addr == FDT_ADDR_T_NONE) {
-		debug("%s: Cannot decode address\n", __func__);
-		return 0;
-	}
-
-	if (flash->size != size) {
-		debug("%s: Memory map must cover entire device\n", __func__);
-		return -1;
-	}
-	flash->memory_map = map_sysmem(addr, size);
-#endif
-
-	return 0;
-}
-#endif /* CONFIG_IS_ENABLED(OF_CONTROL) */
-
-int spi_flash_scan(struct spi_flash *flash)
-{
-	struct spi_slave *spi = flash->spi;
-	const struct spi_flash_params *params;
-	u16 jedec, ext_jedec;
-	u8 cmd, idcode[5];
-	int ret;
-	static u8 spi_read_cmds_array[] = {
-		CMD_READ_ARRAY_SLOW,
-		CMD_READ_ARRAY_FAST,
-		CMD_READ_DUAL_OUTPUT_FAST,
-		CMD_READ_QUAD_OUTPUT_FAST,
-		CMD_READ_DUAL_IO_FAST,
-		CMD_READ_QUAD_IO_FAST };
-
-	/* Read the ID codes */
-	ret = spi_flash_cmd(spi, CMD_READ_ID, idcode, sizeof(idcode));
-	if (ret) {
-		printf("SF: Failed to get idcodes\n");
-		return ret;
-	}
-
-#ifdef DEBUG
-	printf("SF: Got idcodes\n");
-	print_buffer(0, idcode, 1, sizeof(idcode), 0);
-#endif
-
-	jedec = idcode[1] << 8 | idcode[2];
-	ext_jedec = idcode[3] << 8 | idcode[4];
-
-	/* Validate params from spi_flash_params table */
-	params = spi_flash_params_table;
-	for (; params->name != NULL; params++) {
-		if ((params->jedec >> 16) == idcode[0]) {
-			if ((params->jedec & 0xFFFF) == jedec) {
-				if (params->ext_jedec == 0)
-					break;
-				else if (params->ext_jedec == ext_jedec)
-					break;
-			}
-		}
-	}
-
-	if (!params->name) {
-		printf("SF: Unsupported flash IDs: ");
-		printf("manuf %02x, jedec %04x, ext_jedec %04x\n",
-		       idcode[0], jedec, ext_jedec);
-		return -EPROTONOSUPPORT;
-	}
-
-	/* Flash powers up read-only, so clear BP# bits */
-	if (idcode[0] == SPI_FLASH_CFI_MFR_ATMEL ||
-	    idcode[0] == SPI_FLASH_CFI_MFR_MACRONIX ||
-	    idcode[0] == SPI_FLASH_CFI_MFR_SST)
-		write_sr(flash, 0);
-
-	/* Assign spi data */
-	flash->name = params->name;
-	flash->memory_map = spi->memory_map;
-	flash->dual_flash = spi->option;
-
-	/* Assign spi flash flags */
-	if (params->flags & SST_WR)
-		flash->flags |= SNOR_F_SST_WR;
-
-	/* Assign spi_flash ops */
-#ifndef CONFIG_DM_SPI_FLASH
-	flash->write = spi_flash_cmd_write_ops;
-#if defined(CONFIG_SPI_FLASH_SST)
-	if (flash->flags & SNOR_F_SST_WR) {
-		if (spi->mode & SPI_TX_BYTE)
-			flash->write = sst_write_bp;
-		else
-			flash->write = sst_write_wp;
-	}
-#endif
-	flash->erase = spi_flash_cmd_erase_ops;
-	flash->read = spi_flash_cmd_read_ops;
-#endif
-
-	/* lock hooks are flash specific - assign them based on idcode0 */
-	switch (idcode[0]) {
-#if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST)
-	case SPI_FLASH_CFI_MFR_STMICRO:
-	case SPI_FLASH_CFI_MFR_SST:
-		flash->flash_lock = stm_lock;
-		flash->flash_unlock = stm_unlock;
-		flash->flash_is_locked = stm_is_locked;
-#endif
-		break;
-	default:
-		debug("SF: Lock ops not supported for %02x flash\n", idcode[0]);
-	}
-
-	/* Compute the flash size */
-	flash->shift = (flash->dual_flash & SF_DUAL_PARALLEL_FLASH) ? 1 : 0;
-	/*
-	 * The Spansion S25FL032P and S25FL064P have 256b pages, yet use the
-	 * 0x4d00 Extended JEDEC code. The rest of the Spansion flashes with
-	 * the 0x4d00 Extended JEDEC code have 512b pages. All of the others
-	 * have 256b pages.
-	 */
-	if (ext_jedec == 0x4d00) {
-		if ((jedec == 0x0215) || (jedec == 0x216))
-			flash->page_size = 256;
-		else
-			flash->page_size = 512;
-	} else {
-		flash->page_size = 256;
-	}
-	flash->page_size <<= flash->shift;
-	flash->sector_size = params->sector_size << flash->shift;
-	flash->size = flash->sector_size * params->nr_sectors << flash->shift;
-#ifdef CONFIG_SF_DUAL_FLASH
-	if (flash->dual_flash & SF_DUAL_STACKED_FLASH)
-		flash->size <<= 1;
-#endif
-
-	/* Compute erase sector and command */
-	if (params->flags & SECT_4K) {
-		flash->erase_cmd = CMD_ERASE_4K;
-		flash->erasesize = 4096 << flash->shift;
-	} else if (params->flags & SECT_32K) {
-		flash->erase_cmd = CMD_ERASE_32K;
-		flash->erasesize = 32768 << flash->shift;
-	} else {
-		flash->erase_cmd = CMD_ERASE_64K;
-		flash->erasesize = flash->sector_size;
-	}
-
-	/* Look for the fastest read cmd */
-	cmd = fls(params->e_rd_cmd & spi->mode_rx);
-	if (cmd) {
-		cmd = spi_read_cmds_array[cmd - 1];
-		flash->read_cmd = cmd;
-	} else {
-		/* Go for default supported read cmd */
-		flash->read_cmd = CMD_READ_ARRAY_FAST;
-	}
-
-	/* Not require to look for fastest only two write cmds yet */
-	if (params->flags & WR_QPP && spi->mode & SPI_TX_QUAD)
-		flash->write_cmd = CMD_QUAD_PAGE_PROGRAM;
-	else
-		/* Go for default supported write cmd */
-		flash->write_cmd = CMD_PAGE_PROGRAM;
-
-	/* Set the quad enable bit - only for quad commands */
-	if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) ||
-	    (flash->read_cmd == CMD_READ_QUAD_IO_FAST) ||
-	    (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) {
-		ret = set_quad_mode(flash, idcode[0]);
-		if (ret) {
-			debug("SF: Fail to set QEB for %02x\n", idcode[0]);
-			return -EINVAL;
-		}
-	}
-
-	/* Read dummy_byte: dummy byte is determined based on the
-	 * dummy cycles of a particular command.
-	 * Fast commands - dummy_byte = dummy_cycles/8
-	 * I/O commands- dummy_byte = (dummy_cycles * no.of lines)/8
-	 * For I/O commands except cmd[0] everything goes on no.of lines
-	 * based on particular command but incase of fast commands except
-	 * data all go on single line irrespective of command.
-	 */
-	switch (flash->read_cmd) {
-	case CMD_READ_QUAD_IO_FAST:
-		flash->dummy_byte = 2;
-		break;
-	case CMD_READ_ARRAY_SLOW:
-		flash->dummy_byte = 0;
-		break;
-	default:
-		flash->dummy_byte = 1;
-	}
-
-#ifdef CONFIG_SPI_FLASH_STMICRO
-	if (params->flags & E_FSR)
-		flash->flags |= SNOR_F_USE_FSR;
-#endif
-
-	/* Configure the BAR - discover bank cmds and read current bank */
-#ifdef CONFIG_SPI_FLASH_BAR
-	ret = spi_flash_read_bar(flash, idcode[0]);
-	if (ret < 0)
-		return ret;
-#endif
-
-#if CONFIG_IS_ENABLED(OF_CONTROL)
-	ret = spi_flash_decode_fdt(gd->fdt_blob, flash);
-	if (ret) {
-		debug("SF: FDT decode error\n");
-		return -EINVAL;
-	}
-#endif
-
-#ifndef CONFIG_SPL_BUILD
-	printf("SF: Detected %s with page size ", flash->name);
-	print_size(flash->page_size, ", erase size ");
-	print_size(flash->erasesize, ", total ");
-	print_size(flash->size, "");
-	if (flash->memory_map)
-		printf(", mapped at %p", flash->memory_map);
-	puts("\n");
-#endif
-
-#ifndef CONFIG_SPI_FLASH_BAR
-	if (((flash->dual_flash == SF_SINGLE_FLASH) &&
-	     (flash->size > SPI_FLASH_16MB_BOUN)) ||
-	     ((flash->dual_flash > SF_SINGLE_FLASH) &&
-	     (flash->size > SPI_FLASH_16MB_BOUN << 1))) {
-		puts("SF: Warning - Only lower 16MiB accessible,");
-		puts(" Full access #define CONFIG_SPI_FLASH_BAR\n");
-	}
-#endif
-
-	return ret;
-}
diff --git a/drivers/mtd/spi/spi_spl_load.c b/drivers/mtd/spi/spi_spl_load.c
deleted file mode 100644
index ca56fe9..0000000
--- a/drivers/mtd/spi/spi_spl_load.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 OMICRON electronics GmbH
- *
- * based on drivers/mtd/nand/nand_spl_load.c
- *
- * Copyright (C) 2011
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <common.h>
-#include <spi.h>
-#include <spi_flash.h>
-#include <errno.h>
-#include <spl.h>
-
-#ifdef CONFIG_SPL_OS_BOOT
-/*
- * Load the kernel, check for a valid header we can parse, and if found load
- * the kernel and then device tree.
- */
-static int spi_load_image_os(struct spi_flash *flash,
-			     struct image_header *header)
-{
-	/* Read for a header, parse or error out. */
-	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, 0x40,
-		       (void *)header);
-
-	if (image_get_magic(header) != IH_MAGIC)
-		return -1;
-
-	spl_parse_image_header(header);
-
-	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS,
-		       spl_image.size, (void *)spl_image.load_addr);
-
-	/* Read device tree. */
-	spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS,
-		       CONFIG_SYS_SPI_ARGS_SIZE,
-		       (void *)CONFIG_SYS_SPL_ARGS_ADDR);
-
-	return 0;
-}
-#endif
-
-/*
- * The main entry for SPI booting. It's necessary that SDRAM is already
- * configured and available since this code loads the main U-Boot image
- * from SPI into SDRAM and starts it from there.
- */
-int spl_spi_load_image(void)
-{
-	int err = 0;
-	struct spi_flash *flash;
-	struct image_header *header;
-
-	/*
-	 * Load U-Boot image from SPI flash into RAM
-	 */
-
-	flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
-				CONFIG_SF_DEFAULT_CS,
-				CONFIG_SF_DEFAULT_SPEED,
-				CONFIG_SF_DEFAULT_MODE);
-	if (!flash) {
-		puts("SPI probe failed.\n");
-		return -ENODEV;
-	}
-
-	/* use CONFIG_SYS_TEXT_BASE as temporary storage area */
-	header = (struct image_header *)(CONFIG_SYS_TEXT_BASE);
-
-#ifdef CONFIG_SPL_OS_BOOT
-	if (spl_start_uboot() || spi_load_image_os(flash, header))
-#endif
-	{
-		/* Load u-boot, mkimage header is 64 bytes. */
-		err = spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, 0x40,
-				     (void *)header);
-		if (err)
-			return err;
-
-		spl_parse_image_header(header);
-		err = spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS,
-			       spl_image.size, (void *)spl_image.load_addr);
-	}
-
-	return err;
-}
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 712ad61..e98605a 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -1,8 +1,9 @@
 /*
  * Common SPI flash Interface
  *
- * Copyright (C) 2008 Atmel Corporation
+ * Copyright (C) 2016 Jagan Teki <jteki@openedev.com>
  * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
+ * Copyright (C) 2008 Atmel Corporation
  *
  * SPDX-License-Identifier:	GPL-2.0
  */
@@ -27,90 +28,6 @@
 # define CONFIG_SF_DEFAULT_BUS		0
 #endif
 
-struct spi_slave;
-
-/**
- * struct spi_flash - SPI flash structure
- *
- * @spi:		SPI slave
- * @dev:		SPI flash device
- * @name:		Name of SPI flash
- * @dual_flash:		Indicates dual flash memories - dual stacked, parallel
- * @shift:		Flash shift useful in dual parallel
- * @flags:		Indication of spi flash flags
- * @size:		Total flash size
- * @page_size:		Write (page) size
- * @sector_size:	Sector size
- * @erasesize:		Erase size
- * @bank_read_cmd:	Bank read cmd
- * @bank_write_cmd:	Bank write cmd
- * @bank_curr:		Current flash bank
- * @erase_cmd:		Erase cmd 4K, 32K, 64K
- * @read_cmd:		Read cmd - Array Fast, Extn read and quad read.
- * @write_cmd:		Write cmd - page and quad program.
- * @dummy_byte:		Dummy cycles for read operation.
- * @memory_map:		Address of read-only SPI flash access
- * @flash_lock:		lock a region of the SPI Flash
- * @flash_unlock:	unlock a region of the SPI Flash
- * @flash_is_locked:	check if a region of the SPI Flash is completely locked
- * @read:		Flash read ops: Read len bytes at offset into buf
- *			Supported cmds: Fast Array Read
- * @write:		Flash write ops: Write len bytes from buf into offset
- *			Supported cmds: Page Program
- * @erase:		Flash erase ops: Erase len bytes from offset
- *			Supported cmds: Sector erase 4K, 32K, 64K
- * return 0 - Success, 1 - Failure
- */
-struct spi_flash {
-	struct spi_slave *spi;
-#ifdef CONFIG_DM_SPI_FLASH
-	struct udevice *dev;
-#endif
-	const char *name;
-	u8 dual_flash;
-	u8 shift;
-	u16 flags;
-
-	uint64_t size;
-	u32 page_size;
-	u32 sector_size;
-	u32 erasesize;
-#ifdef CONFIG_SPI_FLASH_BAR
-	u8 bank_read_cmd;
-	u8 bank_write_cmd;
-	u8 bank_curr;
-#endif
-	u8 erase_cmd;
-	u8 read_cmd;
-	u8 write_cmd;
-	u8 dummy_byte;
-
-	void *memory_map;
-
-	int (*flash_lock)(struct spi_flash *flash, u32 ofs, size_t len);
-	int (*flash_unlock)(struct spi_flash *flash, u32 ofs, size_t len);
-	int (*flash_is_locked)(struct spi_flash *flash, u32 ofs, size_t len);
-#ifndef CONFIG_DM_SPI_FLASH
-	/*
-	 * These are not strictly needed for driver model, but keep them here
-	 * while the transition is in progress.
-	 *
-	 * Normally each driver would provide its own operations, but for
-	 * SPI flash most chips use the same algorithms. One approach is
-	 * to create a 'common' SPI flash device which knows how to talk
-	 * to most devices, and then allow other drivers to be used instead
-	 * if required, perhaps with a way of scanning through the list to
-	 * find the driver that matches the device.
-	 */
-	int (*read)(struct spi_flash *flash, u32 offset, size_t len, void *buf);
-	int (*write)(struct spi_flash *flash, u32 offset, size_t len,
-			const void *buf);
-	int (*erase)(struct spi_flash *flash, u32 offset, size_t len);
-#endif
-};
-
-#ifdef CONFIG_MTD_SPI_NOR
-
 typedef struct mtd_info spi_flash_t;
 
 static inline int spi_flash_read(spi_flash_t *info, u32 offset,
@@ -178,144 +95,6 @@ void spi_flash_free(spi_flash_t *flash);
 
 #endif /* CONFIG_DM_MTD_SPI_NOR */
 
-#else
-
-typedef struct spi_flash spi_flash_t;
-
-static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len,
-					bool prot)
-{
-	if (!flash->flash_lock || !flash->flash_unlock)
-		return -EOPNOTSUPP;
-
-	if (prot)
-		return flash->flash_lock(flash, ofs, len);
-	else
-		return flash->flash_unlock(flash, ofs, len);
-}
-
-#endif /* CONFIG_MTD_SPI_NOR */
-
-struct dm_spi_flash_ops {
-	int (*read)(struct udevice *dev, u32 offset, size_t len, void *buf);
-	int (*write)(struct udevice *dev, u32 offset, size_t len,
-		     const void *buf);
-	int (*erase)(struct udevice *dev, u32 offset, size_t len);
-};
-
-/* Access the serial operations for a device */
-#define sf_get_ops(dev) ((struct dm_spi_flash_ops *)(dev)->driver->ops)
-
-#ifdef CONFIG_DM_SPI_FLASH
-/**
- * spi_flash_read_dm() - Read data from SPI flash
- *
- * @dev:	SPI flash device
- * @offset:	Offset into device in bytes to read from
- * @len:	Number of bytes to read
- * @buf:	Buffer to put the data that is read
- * @return 0 if OK, -ve on error
- */
-int spi_flash_read_dm(struct udevice *dev, u32 offset, size_t len, void *buf);
-
-/**
- * spi_flash_write_dm() - Write data to SPI flash
- *
- * @dev:	SPI flash device
- * @offset:	Offset into device in bytes to write to
- * @len:	Number of bytes to write
- * @buf:	Buffer containing bytes to write
- * @return 0 if OK, -ve on error
- */
-int spi_flash_write_dm(struct udevice *dev, u32 offset, size_t len,
-		       const void *buf);
-
-/**
- * spi_flash_erase_dm() - Erase blocks of the SPI flash
- *
- * Note that @len must be a muiltiple of the flash sector size.
- *
- * @dev:	SPI flash device
- * @offset:	Offset into device in bytes to start erasing
- * @len:	Number of bytes to erase
- * @return 0 if OK, -ve on error
- */
-int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len);
-
-int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
-			   unsigned int max_hz, unsigned int spi_mode,
-			   struct udevice **devp);
-
-/* Compatibility function - this is the old U-Boot API */
-struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
-				  unsigned int max_hz, unsigned int spi_mode);
-
-/* Compatibility function - this is the old U-Boot API */
-void spi_flash_free(struct spi_flash *flash);
-
-static inline int spi_flash_read(struct spi_flash *flash, u32 offset,
-				 size_t len, void *buf)
-{
-	return spi_flash_read_dm(flash->dev, offset, len, buf);
-}
-
-static inline int spi_flash_write(struct spi_flash *flash, u32 offset,
-				  size_t len, const void *buf)
-{
-	return spi_flash_write_dm(flash->dev, offset, len, buf);
-}
-
-static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
-				  size_t len)
-{
-	return spi_flash_erase_dm(flash->dev, offset, len);
-}
-
-struct sandbox_state;
-
-int sandbox_sf_bind_emul(struct sandbox_state *state, int busnum, int cs,
-			 struct udevice *bus, int of_offset, const char *spec);
-
-void sandbox_sf_unbind_emul(struct sandbox_state *state, int busnum, int cs);
-
-#elif !defined(CONFIG_MTD_SPI_NOR)
-
-struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
-		unsigned int max_hz, unsigned int spi_mode);
-
-/**
- * Set up a new SPI flash from an fdt node
- *
- * @param blob		Device tree blob
- * @param slave_node	Pointer to this SPI slave node in the device tree
- * @param spi_node	Cached pointer to the SPI interface this node belongs
- *			to
- * @return 0 if ok, -1 on error
- */
-struct spi_flash *spi_flash_probe_fdt(const void *blob, int slave_node,
-				      int spi_node);
-
-void spi_flash_free(struct spi_flash *flash);
-
-static inline int spi_flash_read(struct spi_flash *flash, u32 offset,
-		size_t len, void *buf)
-{
-	return flash->read(flash, offset, len, buf);
-}
-
-static inline int spi_flash_write(struct spi_flash *flash, u32 offset,
-		size_t len, const void *buf)
-{
-	return flash->write(flash, offset, len, buf);
-}
-
-static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
-		size_t len)
-{
-	return flash->erase(flash, offset, len);
-}
-#endif
-
 void spi_boot(void) __noreturn;
 void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 67/87] uclass: Drop UCLASS_SPI_FLASH
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (64 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 66/87] sf: Drop entire spi-flash framework Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 68/87] spi: Drop mode_rx Jagan Teki
                   ` (19 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Drop using UCLASS_SPI_FLASH, spi-nor flash is part
of MTD uclass now.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 include/dm/uclass-id.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 37c4176..747fcc8 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -66,7 +66,6 @@ enum uclass_id {
 	UCLASS_RTC,		/* Real time clock device */
 	UCLASS_SERIAL,		/* Serial UART */
 	UCLASS_SPI,		/* SPI bus */
-	UCLASS_SPI_FLASH,	/* SPI flash */
 	UCLASS_SPI_GENERIC,	/* Generic SPI flash target */
 	UCLASS_SYSCON,		/* System configuration device */
 	UCLASS_THERMAL,		/* Thermal sensor */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 68/87] spi: Drop mode_rx
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (65 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 67/87] uclass: Drop UCLASS_SPI_FLASH Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 69/87] spi: Drop SPI_RX_FAST Jagan Teki
                   ` (18 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

mp2580 will take care of tx and rx mode's so there is
no need to differentiate these into spi layer level
hence replaced all mode_rx macros with mode.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 19 +++++--------------
 drivers/spi/ich.c            |  6 ++----
 drivers/spi/spi-uclass.c     | 11 ++++-------
 drivers/spi/ti_qspi.c        |  6 +++---
 include/spi.h                | 14 ++++----------
 5 files changed, 18 insertions(+), 38 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 429d710..bf9fe02 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -187,26 +187,17 @@ static int m25p80_spi_nor(struct spi_nor *nor)
 		return ret;
 	}
 
-	switch (spi->mode_rx) {
-	case SPI_RX_SLOW:
+	if (spi->mode & SPI_RX_SLOW)
 		nor->read_mode = SNOR_READ;
-		break;
-	case SPI_RX_DUAL:
+	else if (spi->mode & SPI_RX_DUAL)
 		nor->read_mode = SNOR_READ_1_1_2;
-		break;
-	case SPI_RX_QUAD:
+	else if (spi->mode & SPI_RX_QUAD)
 		nor->read_mode = SNOR_READ_1_1_4;
-		break;
-	}
 
-	switch (spi->mode) {
-	case SPI_TX_BYTE:
+	if (spi->mode & SPI_TX_BYTE)
 		nor->mode = SNOR_WRITE_1_1_BYTE;
-		break;
-	case SPI_TX_QUAD:
+	else if (spi->mode & SPI_TX_QUAD)
 		nor->mode = SNOR_WRITE_1_1_4;
-		break;
-	}
 
 	nor->memory_map = spi->memory_map;
 	nor->max_write_size = spi->max_write_size;
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index 00b2fed..a89f859 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -649,10 +649,8 @@ static int ich_spi_child_pre_probe(struct udevice *dev)
 	 * ICH 7 SPI controller only supports array read command
 	 * and byte program command for SST flash
 	 */
-	if (plat->ich_version == ICHV_7) {
-		slave->mode_rx = SPI_RX_SLOW;
-		slave->mode = SPI_TX_BYTE;
-	}
+	if (plat->ich_version == ICHV_7)
+		slave->mode = SPI_TX_BYTE | SPI_RX_SLOW;
 
 	return 0;
 }
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 7ef2496..0e52ac8 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -181,7 +181,6 @@ static int spi_child_pre_probe(struct udevice *dev)
 
 	slave->max_hz = plat->max_hz;
 	slave->mode = plat->mode;
-	slave->mode_rx = plat->mode_rx;
 	slave->wordlen = SPI_DEFAULT_WORDLEN;
 
 	return 0;
@@ -394,7 +393,7 @@ void spi_free_slave(struct spi_slave *slave)
 int spi_slave_ofdata_to_platdata(const void *blob, int node,
 				 struct dm_spi_slave_platdata *plat)
 {
-	int mode = 0, mode_rx = 0;
+	int mode = 0;
 	int value;
 
 	plat->cs = fdtdec_get_int(blob, node, "reg", -1);
@@ -426,24 +425,22 @@ int spi_slave_ofdata_to_platdata(const void *blob, int node,
 		break;
 	}
 
-	plat->mode = mode;
-
 	value = fdtdec_get_uint(blob, node, "spi-rx-bus-width", 1);
 	switch (value) {
 	case 1:
 		break;
 	case 2:
-		mode_rx |= SPI_RX_DUAL;
+		mode |= SPI_RX_DUAL;
 		break;
 	case 4:
-		mode_rx |= SPI_RX_QUAD;
+		mode |= SPI_RX_QUAD;
 		break;
 	default:
 		error("spi-rx-bus-width %d not supported\n", value);
 		break;
 	}
 
-	plat->mode_rx = mode_rx;
+	plat->mode = mode;
 
 	return 0;
 }
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index e69ec0d..de687d1 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -338,7 +338,7 @@ static void ti_spi_setup_spi_register(struct ti_qspi_priv *priv)
 			QSPI_SETUP0_NUM_D_BYTES_8_BITS |
 			QSPI_SETUP0_READ_QUAD | QSPI_CMD_WRITE |
 			QSPI_NUM_DUMMY_BITS);
-	slave->mode_rx = SPI_RX_QUAD;
+	slave->mode |= SPI_RX_QUAD;
 #else
 	memval |= QSPI_CMD_READ | QSPI_SETUP0_NUM_A_BYTES |
 			QSPI_SETUP0_NUM_D_BYTES_NO_BITS |
@@ -422,7 +422,7 @@ static void __ti_qspi_setup_memorymap(struct ti_qspi_priv *priv,
 				      bool enable)
 {
 	u32 memval;
-	u32 mode = slave->mode_rx & (SPI_RX_QUAD | SPI_RX_DUAL);
+	u32 mode = slave->mode & (SPI_RX_QUAD | SPI_RX_DUAL);
 
 	if (!enable) {
 		writel(0, &priv->base->setup0);
@@ -436,7 +436,7 @@ static void __ti_qspi_setup_memorymap(struct ti_qspi_priv *priv,
 		memval |= QSPI_CMD_READ_QUAD;
 		memval |= QSPI_SETUP0_NUM_D_BYTES_8_BITS;
 		memval |= QSPI_SETUP0_READ_QUAD;
-		slave->mode_rx = SPI_RX_QUAD;
+		slave->mode |= SPI_RX_QUAD;
 		break;
 	case SPI_RX_DUAL:
 		memval |= QSPI_CMD_READ_DUAL;
diff --git a/include/spi.h b/include/spi.h
index dd0b11b..61fefa4 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -26,12 +26,10 @@
 #define SPI_TX_BYTE	BIT(8)			/* transmit with 1 wire byte */
 #define SPI_TX_DUAL	BIT(9)			/* transmit with 2 wires */
 #define SPI_TX_QUAD	BIT(10)			/* transmit with 4 wires */
-
-/* SPI mode_rx flags */
-#define SPI_RX_SLOW	BIT(0)			/* receive with 1 wire slow */
-#define SPI_RX_FAST	BIT(1)			/* receive with 1 wire fast */
-#define SPI_RX_DUAL	BIT(2)			/* receive with 2 wires */
-#define SPI_RX_QUAD	BIT(3)			/* receive with 4 wires */
+#define SPI_RX_SLOW	BIT(11)			/* receive with 1 wire slow */
+#define SPI_RX_FAST	BIT(12)			/* receive with 1 wire fast */
+#define SPI_RX_DUAL	BIT(13)			/* receive with 2 wires */
+#define SPI_RX_QUAD	BIT(14)			/* receive with 4 wires */
 
 /* SPI bus connection options - see enum spi_dual_flash */
 #define SPI_CONN_DUAL_SHARED		(1 << 0)
@@ -61,13 +59,11 @@ struct dm_spi_bus {
  * @cs:		Chip select number (0..n-1)
  * @max_hz:	Maximum bus speed that this slave can tolerate
  * @mode:	SPI mode to use for this device (see SPI mode flags)
- * @mode_rx:	SPI RX mode to use for this slave (see SPI mode_rx flags)
  */
 struct dm_spi_slave_platdata {
 	unsigned int cs;
 	uint max_hz;
 	uint mode;
-	u8 mode_rx;
 };
 
 #endif /* CONFIG_DM_SPI */
@@ -94,7 +90,6 @@ struct dm_spi_slave_platdata {
  *			bus (bus->seq) so does not need to be stored
  * @cs:			ID of the chip select connected to the slave.
  * @mode:		SPI mode to use for this slave (see SPI mode flags)
- * @mode_rx:		SPI RX mode to use for this slave (see SPI mode_rx flags)
  * @wordlen:		Size of SPI word in number of bits
  * @max_write_size:	If non-zero, the maximum number of bytes which can
  *			be written at once, excluding command bytes.
@@ -112,7 +107,6 @@ struct spi_slave {
 	unsigned int cs;
 #endif
 	uint mode;
-	u8 mode_rx;
 	unsigned int wordlen;
 	unsigned int max_write_size;
 	void *memory_map;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 69/87] spi: Drop SPI_RX_FAST
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (66 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 68/87] spi: Drop mode_rx Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 70/87] MAINTAINERS: Add myself as SPI NOR maintainer Jagan Teki
                   ` (17 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

SPI_RX_FAST at spi layer used for spi-nor core to find
the fastest read mode, but this handling is taking care
at m25p80 hence removed the same at spi layer level.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 include/spi.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/include/spi.h b/include/spi.h
index 61fefa4..9af2fbb 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -27,9 +27,8 @@
 #define SPI_TX_DUAL	BIT(9)			/* transmit with 2 wires */
 #define SPI_TX_QUAD	BIT(10)			/* transmit with 4 wires */
 #define SPI_RX_SLOW	BIT(11)			/* receive with 1 wire slow */
-#define SPI_RX_FAST	BIT(12)			/* receive with 1 wire fast */
-#define SPI_RX_DUAL	BIT(13)			/* receive with 2 wires */
-#define SPI_RX_QUAD	BIT(14)			/* receive with 4 wires */
+#define SPI_RX_DUAL	BIT(12)			/* receive with 2 wires */
+#define SPI_RX_QUAD	BIT(13)			/* receive with 4 wires */
 
 /* SPI bus connection options - see enum spi_dual_flash */
 #define SPI_CONN_DUAL_SHARED		(1 << 0)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 70/87] MAINTAINERS: Add myself as SPI NOR maintainer
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (67 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 69/87] spi: Drop SPI_RX_FAST Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 71/87] configs: CONFIG_MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
                   ` (16 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 MAINTAINERS | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 3a9c205..c46d54d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -393,7 +393,15 @@ M:	Jagan Teki <jteki@openedev.com>
 S:	Maintained
 T:	git git://git.denx.de/u-boot-spi.git
 F:	drivers/spi/
-F:	include/spi*
+F:	include/spi.h
+
+SPI NOR
+M:	Jagan Teki <jteki@openedev.com>
+S:	Maintained
+T:	git git://git.denx.de/u-boot-spi.git
+F:	drivers/mtd/spi-nor/
+F:	include/spi_flash.h
+F:	include/linux/mtd/spi-nor.h
 
 TQ GROUP
 #M:	Martin Krause <martin.krause@tq-systems.de>
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 71/87] configs: CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (68 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 70/87] MAINTAINERS: Add myself as SPI NOR maintainer Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 72/87] dts: spi-nor: Use jedec, spi-nor compatible string Jagan Teki
                   ` (15 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

- CONFIG_SPI_FLASH_USE_4K_SECTORS
+ CONFIG_MTD_SPI_NOR_USE_4K_SECTORS

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/socfpga_arria5_defconfig   | 2 +-
 configs/socfpga_cyclone5_defconfig | 2 +-
 configs/socfpga_sockit_defconfig   | 2 +-
 configs/socfpga_sr1500_defconfig   | 2 +-
 configs/tseries_spi_defconfig      | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/configs/socfpga_arria5_defconfig b/configs/socfpga_arria5_defconfig
index 4b932fb..813495e 100644
--- a/configs/socfpga_arria5_defconfig
+++ b/configs/socfpga_arria5_defconfig
@@ -19,7 +19,7 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
-# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/socfpga_cyclone5_defconfig b/configs/socfpga_cyclone5_defconfig
index 4dea413..0b69490 100644
--- a/configs/socfpga_cyclone5_defconfig
+++ b/configs/socfpga_cyclone5_defconfig
@@ -19,7 +19,7 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
-# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/socfpga_sockit_defconfig b/configs/socfpga_sockit_defconfig
index 715428b..e76f478 100644
--- a/configs/socfpga_sockit_defconfig
+++ b/configs/socfpga_sockit_defconfig
@@ -19,7 +19,7 @@ CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_SPI_NOR_STMICRO=y
-# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/socfpga_sr1500_defconfig b/configs/socfpga_sr1500_defconfig
index 28099bf..f530876 100644
--- a/configs/socfpga_sr1500_defconfig
+++ b/configs/socfpga_sr1500_defconfig
@@ -17,7 +17,7 @@ CONFIG_DM_MMC=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_STMICRO=y
-# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/tseries_spi_defconfig b/configs/tseries_spi_defconfig
index e2d5c5e..5f06b90 100644
--- a/configs/tseries_spi_defconfig
+++ b/configs/tseries_spi_defconfig
@@ -28,7 +28,7 @@ CONFIG_NETCONSOLE=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_STMICRO=y
-# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
 CONFIG_USB=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 72/87] dts: spi-nor: Use jedec, spi-nor compatible string
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (69 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 71/87] configs: CONFIG_MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 73/87] dts: spi-nor: Use spi-nor as node name Jagan Teki
                   ` (14 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use spi-nor flash driver compatible string as 'jedec,spi-nor'
instead of spi-flash

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/arm/dts/am437x-sk-evm.dts           | 2 +-
 arch/arm/dts/dra7-evm.dts                | 2 +-
 arch/arm/dts/dra72-evm.dts               | 2 +-
 arch/arm/dts/exynos5250-snow.dts         | 2 +-
 arch/arm/dts/exynos5250-spring.dts       | 2 +-
 arch/arm/dts/exynos5420-peach-pit.dts    | 2 +-
 arch/arm/dts/fsl-ls1043a-qds.dtsi        | 8 ++++----
 arch/arm/dts/fsl-ls1043a-rdb.dts         | 2 +-
 arch/arm/dts/fsl-ls2080a-qds.dts         | 6 +++---
 arch/arm/dts/fsl-ls2080a-rdb.dts         | 2 +-
 arch/arm/dts/ls1021a-qds.dtsi            | 2 +-
 arch/arm/dts/ls1021a-twr.dtsi            | 4 ++--
 arch/arm/dts/rk3288-veyron.dtsi          | 2 +-
 arch/arm/dts/socfpga_cyclone5_sockit.dts | 2 +-
 arch/arm/dts/socfpga_cyclone5_sr1500.dts | 2 +-
 arch/arm/dts/stv0991.dts                 | 2 +-
 arch/arm/dts/zynq-zc770-xm010.dts        | 2 +-
 arch/x86/dts/bayleybay.dts               | 2 +-
 arch/x86/dts/broadwell_som-6896.dts      | 2 +-
 arch/x86/dts/chromebook_link.dts         | 2 +-
 arch/x86/dts/chromebox_panther.dts       | 2 +-
 arch/x86/dts/cougarcanyon2.dts           | 2 +-
 arch/x86/dts/crownbay.dts                | 2 +-
 arch/x86/dts/galileo.dts                 | 2 +-
 arch/x86/dts/minnowmax.dts               | 2 +-
 25 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/arch/arm/dts/am437x-sk-evm.dts b/arch/arm/dts/am437x-sk-evm.dts
index 260edb9..8879a66 100644
--- a/arch/arm/dts/am437x-sk-evm.dts
+++ b/arch/arm/dts/am437x-sk-evm.dts
@@ -568,7 +568,7 @@
 
 	spi-max-frequency = <48000000>;
 	m25p80 at 0 {
-		compatible = "mx66l51235l","spi-flash";
+		compatible = "mx66l51235l","jedec,spi-nor";
 		spi-max-frequency = <48000000>;
 		reg = <0>;
 		spi-cpol;
diff --git a/arch/arm/dts/dra7-evm.dts b/arch/arm/dts/dra7-evm.dts
index 242fd53..225e4f7 100644
--- a/arch/arm/dts/dra7-evm.dts
+++ b/arch/arm/dts/dra7-evm.dts
@@ -488,7 +488,7 @@
 
 	spi-max-frequency = <48000000>;
 	m25p80 at 0 {
-		compatible = "s25fl256s1","spi-flash";
+		compatible = "s25fl256s1","jedec,spi-nor";
 		spi-max-frequency = <48000000>;
 		reg = <0>;
 		spi-tx-bus-width = <1>;
diff --git a/arch/arm/dts/dra72-evm.dts b/arch/arm/dts/dra72-evm.dts
index fc2d167..0f91d50 100644
--- a/arch/arm/dts/dra72-evm.dts
+++ b/arch/arm/dts/dra72-evm.dts
@@ -605,7 +605,7 @@
 
 	spi-max-frequency = <48000000>;
 	m25p80 at 0 {
-		compatible = "s25fl256s1","spi-flash";
+		compatible = "s25fl256s1","jedec,spi-nor";
 		spi-max-frequency = <48000000>;
 		reg = <0>;
 		spi-tx-bus-width = <1>;
diff --git a/arch/arm/dts/exynos5250-snow.dts b/arch/arm/dts/exynos5250-snow.dts
index bda5499..e6c200c 100644
--- a/arch/arm/dts/exynos5250-snow.dts
+++ b/arch/arm/dts/exynos5250-snow.dts
@@ -218,7 +218,7 @@
 	spi at 12d30000 {
 		spi-max-frequency = <50000000>;
 		firmware_storage_spi: flash at 0 {
-			compatible = "spi-flash";
+			compatible = "jedec,spi-nor";
 			reg = <0>;
 		};
 	};
diff --git a/arch/arm/dts/exynos5250-spring.dts b/arch/arm/dts/exynos5250-spring.dts
index 81b3d29..acb64dc 100644
--- a/arch/arm/dts/exynos5250-spring.dts
+++ b/arch/arm/dts/exynos5250-spring.dts
@@ -98,7 +98,7 @@
 	spi at 12d30000 {
 		spi-max-frequency = <50000000>;
 		firmware_storage_spi: flash at 0 {
-			compatible = "spi-flash";
+			compatible = "jedec,spi-nor";
 			reg = <0>;
 		};
 	};
diff --git a/arch/arm/dts/exynos5420-peach-pit.dts b/arch/arm/dts/exynos5420-peach-pit.dts
index 16d52f4..f217468 100644
--- a/arch/arm/dts/exynos5420-peach-pit.dts
+++ b/arch/arm/dts/exynos5420-peach-pit.dts
@@ -206,7 +206,7 @@
 	spi at 12d30000 { /* spi1 */
 		spi-max-frequency = <50000000>;
 		firmware_storage_spi: flash at 0 {
-			compatible = "spi-flash";
+			compatible = "jedec,spi-nor";
 			reg = <0>;
 
 			/*
diff --git a/arch/arm/dts/fsl-ls1043a-qds.dtsi b/arch/arm/dts/fsl-ls1043a-qds.dtsi
index 66efe67..59f3669 100644
--- a/arch/arm/dts/fsl-ls1043a-qds.dtsi
+++ b/arch/arm/dts/fsl-ls1043a-qds.dtsi
@@ -27,7 +27,7 @@
 	dflash0: n25q128a {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		reg = <0>;
 		spi-max-frequency = <1000000>; /* input clock */
 	};
@@ -35,7 +35,7 @@
 	dflash1: sst25wf040b {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3500000>;
 		reg = <1>;
 	};
@@ -43,7 +43,7 @@
 	dflash2: en25s64 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3500000>;
 		reg = <2>;
 	};
@@ -56,7 +56,7 @@
 	qflash0: s25fl128s at 0 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <20000000>;
 		reg = <0>;
 	};
diff --git a/arch/arm/dts/fsl-ls1043a-rdb.dts b/arch/arm/dts/fsl-ls1043a-rdb.dts
index 16c5c89..c09dcba 100644
--- a/arch/arm/dts/fsl-ls1043a-rdb.dts
+++ b/arch/arm/dts/fsl-ls1043a-rdb.dts
@@ -29,7 +29,7 @@
 	dspiflash: n25q12a {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		reg = <0>;
 		spi-max-frequency = <1000000>; /* input clock */
 	};
diff --git a/arch/arm/dts/fsl-ls2080a-qds.dts b/arch/arm/dts/fsl-ls2080a-qds.dts
index 547ec27..de5b75e 100644
--- a/arch/arm/dts/fsl-ls2080a-qds.dts
+++ b/arch/arm/dts/fsl-ls2080a-qds.dts
@@ -26,7 +26,7 @@
 	dflash0: n25q128a {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3000000>;
 		spi-cpol;
 		spi-cpha;
@@ -35,7 +35,7 @@
 	dflash1: sst25wf040b {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3000000>;
 		spi-cpol;
 		spi-cpha;
@@ -44,7 +44,7 @@
 	dflash2: en25s64 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3000000>;
 		spi-cpol;
 		spi-cpha;
diff --git a/arch/arm/dts/fsl-ls2080a-rdb.dts b/arch/arm/dts/fsl-ls2080a-rdb.dts
index 1a1813b..f6892c8 100644
--- a/arch/arm/dts/fsl-ls2080a-rdb.dts
+++ b/arch/arm/dts/fsl-ls2080a-rdb.dts
@@ -26,7 +26,7 @@
 	dflash0: n25q512a {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <3000000>;
 		spi-cpol;
 		spi-cpha;
diff --git a/arch/arm/dts/ls1021a-qds.dtsi b/arch/arm/dts/ls1021a-qds.dtsi
index ca9e835..5a5f820 100644
--- a/arch/arm/dts/ls1021a-qds.dtsi
+++ b/arch/arm/dts/ls1021a-qds.dtsi
@@ -44,7 +44,7 @@
 	qflash0: s25fl128s at 0 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <20000000>;
 		reg = <0>;
 	};
diff --git a/arch/arm/dts/ls1021a-twr.dtsi b/arch/arm/dts/ls1021a-twr.dtsi
index d1be9ae..032f3ba 100644
--- a/arch/arm/dts/ls1021a-twr.dtsi
+++ b/arch/arm/dts/ls1021a-twr.dtsi
@@ -31,7 +31,7 @@
 	qflash0: n25q128a13 at 0 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <20000000>;
 		reg = <0>;
 	};
@@ -44,7 +44,7 @@
 	dspiflash: at26df081a at 0 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "spi-flash";
+		compatible = "jedec,spi-nor";
 		spi-max-frequency = <16000000>;
 		spi-cpol;
 		spi-cpha;
diff --git a/arch/arm/dts/rk3288-veyron.dtsi b/arch/arm/dts/rk3288-veyron.dtsi
index 421d212..c20d74f 100644
--- a/arch/arm/dts/rk3288-veyron.dtsi
+++ b/arch/arm/dts/rk3288-veyron.dtsi
@@ -320,7 +320,7 @@
 
 	spi_flash: spiflash at 0 {
 		u-boot,dm-pre-reloc;
-		compatible = "spidev", "spi-flash";
+		compatible = "spidev", "jedec,spi-nor";
 		spi-max-frequency = <20000000>; /* Reduce for Dediprog em100 pro */
 		reg = <0>;
 	};
diff --git a/arch/arm/dts/socfpga_cyclone5_sockit.dts b/arch/arm/dts/socfpga_cyclone5_sockit.dts
index e45c2ab..5919f85 100644
--- a/arch/arm/dts/socfpga_cyclone5_sockit.dts
+++ b/arch/arm/dts/socfpga_cyclone5_sockit.dts
@@ -78,7 +78,7 @@
 		u-boot,dm-pre-reloc;
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "n25q00", "spi-flash";
+		compatible = "n25q00", "jedec,spi-nor";
 		reg = <0>;      /* chip select */
 		spi-max-frequency = <50000000>;
 		m25p,fast-read;
diff --git a/arch/arm/dts/socfpga_cyclone5_sr1500.dts b/arch/arm/dts/socfpga_cyclone5_sr1500.dts
index 32c6aad..4c39ee6 100644
--- a/arch/arm/dts/socfpga_cyclone5_sr1500.dts
+++ b/arch/arm/dts/socfpga_cyclone5_sr1500.dts
@@ -86,7 +86,7 @@
 		u-boot,dm-pre-reloc;
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "n25q00", "spi-flash";
+		compatible = "n25q00", "jedec,spi-nor";
 		reg = <0>;      /* chip select */
 		spi-max-frequency = <100000000>;
 		m25p,fast-read;
diff --git a/arch/arm/dts/stv0991.dts b/arch/arm/dts/stv0991.dts
index fa3fd64..1d485e9 100644
--- a/arch/arm/dts/stv0991.dts
+++ b/arch/arm/dts/stv0991.dts
@@ -38,7 +38,7 @@
 			flash0: n25q32 at 0 {
 				#address-cells = <1>;
 				#size-cells = <1>;
-				compatible = "spi-flash";
+				compatible = "jedec,spi-nor";
 				reg = <0>;		/* chip select */
 				spi-max-frequency = <50000000>;
 				m25p,fast-read;
diff --git a/arch/arm/dts/zynq-zc770-xm010.dts b/arch/arm/dts/zynq-zc770-xm010.dts
index b6982c0..0ca620b 100644
--- a/arch/arm/dts/zynq-zc770-xm010.dts
+++ b/arch/arm/dts/zynq-zc770-xm010.dts
@@ -47,7 +47,7 @@
 		#address-cells = <1>;
 		#size-cells = <1>;
 		partition at test {
-			label = "spi-flash";
+			label = "jedec,spi-nor";
 			reg = <0x0 0x100000>;
 		};
 	};
diff --git a/arch/x86/dts/bayleybay.dts b/arch/x86/dts/bayleybay.dts
index 4ea9262..1d6f0fc 100644
--- a/arch/x86/dts/bayleybay.dts
+++ b/arch/x86/dts/bayleybay.dts
@@ -153,7 +153,7 @@
 					#size-cells = <1>;
 					reg = <0>;
 					compatible = "winbond,w25q64dw",
-						"spi-flash";
+						"jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 					rw-mrc-cache {
 						label = "rw-mrc-cache";
diff --git a/arch/x86/dts/broadwell_som-6896.dts b/arch/x86/dts/broadwell_som-6896.dts
index 4bb0a34..2487091 100644
--- a/arch/x86/dts/broadwell_som-6896.dts
+++ b/arch/x86/dts/broadwell_som-6896.dts
@@ -40,7 +40,7 @@
 				compatible = "intel,ich9-spi";
 				spi-flash at 0 {
 					reg = <0>;
-					compatible = "winbond,w25q128", "spi-flash";
+					compatible = "winbond,w25q128", "jedec,spi-nor";
 					memory-map = <0xff000000 0x01000000>;
 				};
 			};
diff --git a/arch/x86/dts/chromebook_link.dts b/arch/x86/dts/chromebook_link.dts
index fb1b31d..040f917 100644
--- a/arch/x86/dts/chromebook_link.dts
+++ b/arch/x86/dts/chromebook_link.dts
@@ -395,7 +395,7 @@
 					#address-cells = <1>;
 					reg = <0>;
 					compatible = "winbond,w25q64",
-							"spi-flash";
+							"jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 					rw-mrc-cache {
 						label = "rw-mrc-cache";
diff --git a/arch/x86/dts/chromebox_panther.dts b/arch/x86/dts/chromebox_panther.dts
index 480b366..6fb3fc1 100644
--- a/arch/x86/dts/chromebox_panther.dts
+++ b/arch/x86/dts/chromebox_panther.dts
@@ -46,7 +46,7 @@
 					#address-cells = <1>;
 					reg = <0>;
 					compatible = "winbond,w25q64",
-						"spi-flash";
+						"jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 					rw-mrc-cache {
 						label = "rw-mrc-cache";
diff --git a/arch/x86/dts/cougarcanyon2.dts b/arch/x86/dts/cougarcanyon2.dts
index d415566..80a6e14 100644
--- a/arch/x86/dts/cougarcanyon2.dts
+++ b/arch/x86/dts/cougarcanyon2.dts
@@ -73,7 +73,7 @@
 				compatible = "intel,ich9-spi";
 				spi-flash at 0 {
 					reg = <0>;
-					compatible = "winbond,w25q64bv", "spi-flash";
+					compatible = "winbond,w25q64bv", "jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 				};
 			};
diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
index 337513b..5a7dfe8 100644
--- a/arch/x86/dts/crownbay.dts
+++ b/arch/x86/dts/crownbay.dts
@@ -222,7 +222,7 @@
 				spi-flash at 0 {
 					reg = <0>;
 					compatible = "sst,25vf016b",
-						"spi-flash";
+						"jedec,spi-nor";
 					memory-map = <0xffe00000 0x00200000>;
 				};
 			};
diff --git a/arch/x86/dts/galileo.dts b/arch/x86/dts/galileo.dts
index 21c3641..8d8b9fe 100644
--- a/arch/x86/dts/galileo.dts
+++ b/arch/x86/dts/galileo.dts
@@ -126,7 +126,7 @@
 					#address-cells = <1>;
 					reg = <0>;
 					compatible = "winbond,w25q64",
-						"spi-flash";
+						"jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 					rw-mrc-cache {
 						label = "rw-mrc-cache";
diff --git a/arch/x86/dts/minnowmax.dts b/arch/x86/dts/minnowmax.dts
index 60bd05a..acffaa7 100644
--- a/arch/x86/dts/minnowmax.dts
+++ b/arch/x86/dts/minnowmax.dts
@@ -186,7 +186,7 @@
 					#size-cells = <1>;
 					reg = <0>;
 					compatible = "stmicro,n25q064a",
-						"spi-flash";
+						"jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
 					rw-mrc-cache {
 						label = "rw-mrc-cache";
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 73/87] dts: spi-nor: Use spi-nor as node name
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (70 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 72/87] dts: spi-nor: Use jedec, spi-nor compatible string Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 74/87] mtd: spi-nor: Add erase ops Jagan Teki
                   ` (13 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use spi-nor flash driver node name as 'spi-nor'
instead of spi-flash

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 arch/arm/dts/armada-388-clearfog.dts      | 2 +-
 arch/arm/dts/armada-388-gp.dts            | 2 +-
 arch/arm/dts/armada-xp-gp.dts             | 2 +-
 arch/arm/dts/armada-xp-maxbcm.dts         | 2 +-
 arch/arm/dts/armada-xp-synology-ds414.dts | 2 +-
 arch/arm/dts/armada-xp-theadorable.dts    | 2 +-
 arch/arm/dts/tegra30-beaver.dts           | 2 +-
 arch/x86/dts/bayleybay.dts                | 2 +-
 arch/x86/dts/broadwell_som-6896.dts       | 2 +-
 arch/x86/dts/chromebook_link.dts          | 2 +-
 arch/x86/dts/chromebox_panther.dts        | 2 +-
 arch/x86/dts/cougarcanyon2.dts            | 2 +-
 arch/x86/dts/crownbay.dts                 | 2 +-
 arch/x86/dts/galileo.dts                  | 2 +-
 arch/x86/dts/minnowmax.dts                | 2 +-
 15 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/arch/arm/dts/armada-388-clearfog.dts b/arch/arm/dts/armada-388-clearfog.dts
index b2dfd56..196ff0e 100644
--- a/arch/arm/dts/armada-388-clearfog.dts
+++ b/arch/arm/dts/armada-388-clearfog.dts
@@ -342,7 +342,7 @@
 				pinctrl-names = "default";
 				status = "okay";
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
 					compatible = "w25q32", "jedec,spi-nor";
diff --git a/arch/arm/dts/armada-388-gp.dts b/arch/arm/dts/armada-388-gp.dts
index 7bc878f..c9ff1e0 100644
--- a/arch/arm/dts/armada-388-gp.dts
+++ b/arch/arm/dts/armada-388-gp.dts
@@ -73,7 +73,7 @@
 				status = "okay";
 				u-boot,dm-pre-reloc;
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					u-boot,dm-pre-reloc;
 					#address-cells = <1>;
 					#size-cells = <1>;
diff --git a/arch/arm/dts/armada-xp-gp.dts b/arch/arm/dts/armada-xp-gp.dts
index 27799d1..77b6c86 100644
--- a/arch/arm/dts/armada-xp-gp.dts
+++ b/arch/arm/dts/armada-xp-gp.dts
@@ -230,7 +230,7 @@
 				status = "okay";
 				u-boot,dm-pre-reloc;
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					u-boot,dm-pre-reloc;
 					#address-cells = <1>;
 					#size-cells = <1>;
diff --git a/arch/arm/dts/armada-xp-maxbcm.dts b/arch/arm/dts/armada-xp-maxbcm.dts
index d7d7f65..371346d 100644
--- a/arch/arm/dts/armada-xp-maxbcm.dts
+++ b/arch/arm/dts/armada-xp-maxbcm.dts
@@ -228,7 +228,7 @@
 			spi0: spi at 10600 {
 				status = "okay";
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#address-cells = <1>;
 					#size-cells = <1>;
 					compatible = "n25q128a13", "jedec,spi-nor";
diff --git a/arch/arm/dts/armada-xp-synology-ds414.dts b/arch/arm/dts/armada-xp-synology-ds414.dts
index 0a60ddf..1273bf4 100644
--- a/arch/arm/dts/armada-xp-synology-ds414.dts
+++ b/arch/arm/dts/armada-xp-synology-ds414.dts
@@ -84,7 +84,7 @@
 				status = "okay";
 				u-boot,dm-pre-reloc;
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					u-boot,dm-pre-reloc;
 					#address-cells = <1>;
 					#size-cells = <1>;
diff --git a/arch/arm/dts/armada-xp-theadorable.dts b/arch/arm/dts/armada-xp-theadorable.dts
index cf1be2a..1ab1a7c 100644
--- a/arch/arm/dts/armada-xp-theadorable.dts
+++ b/arch/arm/dts/armada-xp-theadorable.dts
@@ -129,7 +129,7 @@
 				status = "okay";
 				u-boot,dm-pre-reloc;
 
-				spi-flash at 0 {
+				spi-nor at 0 {
 					u-boot,dm-pre-reloc;
 					#address-cells = <1>;
 					#size-cells = <1>;
diff --git a/arch/arm/dts/tegra30-beaver.dts b/arch/arm/dts/tegra30-beaver.dts
index ae83636..17af221 100644
--- a/arch/arm/dts/tegra30-beaver.dts
+++ b/arch/arm/dts/tegra30-beaver.dts
@@ -187,7 +187,7 @@
 	spi at 7000da00 {
 		status = "okay";
 		spi-max-frequency = <25000000>;
-		spi-flash at 1 {
+		spi-nor at 1 {
 			compatible = "winbond,w25q32";
 			reg = <1>;
 			spi-max-frequency = <20000000>;
diff --git a/arch/x86/dts/bayleybay.dts b/arch/x86/dts/bayleybay.dts
index 1d6f0fc..6e1fb19 100644
--- a/arch/x86/dts/bayleybay.dts
+++ b/arch/x86/dts/bayleybay.dts
@@ -148,7 +148,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#address-cells = <1>;
 					#size-cells = <1>;
 					reg = <0>;
diff --git a/arch/x86/dts/broadwell_som-6896.dts b/arch/x86/dts/broadwell_som-6896.dts
index 2487091..426f491 100644
--- a/arch/x86/dts/broadwell_som-6896.dts
+++ b/arch/x86/dts/broadwell_som-6896.dts
@@ -38,7 +38,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					reg = <0>;
 					compatible = "winbond,w25q128", "jedec,spi-nor";
 					memory-map = <0xff000000 0x01000000>;
diff --git a/arch/x86/dts/chromebook_link.dts b/arch/x86/dts/chromebook_link.dts
index 040f917..abb3e58 100644
--- a/arch/x86/dts/chromebook_link.dts
+++ b/arch/x86/dts/chromebook_link.dts
@@ -390,7 +390,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#size-cells = <1>;
 					#address-cells = <1>;
 					reg = <0>;
diff --git a/arch/x86/dts/chromebox_panther.dts b/arch/x86/dts/chromebox_panther.dts
index 6fb3fc1..3711594 100644
--- a/arch/x86/dts/chromebox_panther.dts
+++ b/arch/x86/dts/chromebox_panther.dts
@@ -41,7 +41,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#size-cells = <1>;
 					#address-cells = <1>;
 					reg = <0>;
diff --git a/arch/x86/dts/cougarcanyon2.dts b/arch/x86/dts/cougarcanyon2.dts
index 80a6e14..8007387 100644
--- a/arch/x86/dts/cougarcanyon2.dts
+++ b/arch/x86/dts/cougarcanyon2.dts
@@ -71,7 +71,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					reg = <0>;
 					compatible = "winbond,w25q64bv", "jedec,spi-nor";
 					memory-map = <0xff800000 0x00800000>;
diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
index 5a7dfe8..c7c659f 100644
--- a/arch/x86/dts/crownbay.dts
+++ b/arch/x86/dts/crownbay.dts
@@ -219,7 +219,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich7-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					reg = <0>;
 					compatible = "sst,25vf016b",
 						"jedec,spi-nor";
diff --git a/arch/x86/dts/galileo.dts b/arch/x86/dts/galileo.dts
index 8d8b9fe..11ceddd 100644
--- a/arch/x86/dts/galileo.dts
+++ b/arch/x86/dts/galileo.dts
@@ -121,7 +121,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich7-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#size-cells = <1>;
 					#address-cells = <1>;
 					reg = <0>;
diff --git a/arch/x86/dts/minnowmax.dts b/arch/x86/dts/minnowmax.dts
index acffaa7..046276f 100644
--- a/arch/x86/dts/minnowmax.dts
+++ b/arch/x86/dts/minnowmax.dts
@@ -181,7 +181,7 @@
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "intel,ich9-spi";
-				spi-flash at 0 {
+				spi-nor at 0 {
 					#address-cells = <1>;
 					#size-cells = <1>;
 					reg = <0>;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 74/87] mtd: spi-nor: Add erase ops
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (71 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 73/87] dts: spi-nor: Use spi-nor as node name Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 75/87] mtd: spi-nor: Not required to memset dummy byte Jagan Teki
                   ` (12 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Added spi_nor erase ops for m25p80.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c  | 27 +++++++++++++++++++++++++++
 drivers/mtd/spi-nor/spi-nor.c |  2 +-
 include/linux/mtd/spi-nor.h   |  4 +++-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index bf9fe02..cf27ba0 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -166,6 +166,32 @@ static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	return ret;
 }
 
+static int m25p80_erase(struct spi_nor *nor, const u8 *cmd, size_t cmd_len)
+{
+	struct m25p *flash = nor->priv;
+	struct spi_slave *spi = flash->spi;
+	int ret;
+
+	ret = spi_claim_bus(spi);
+	if (ret < 0) {
+		debug("m25p80: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	if (nor->flags & SNOR_F_U_PAGE)
+		spi->flags |= SPI_XFER_U_PAGE;
+
+	ret = spi_write_then_read(spi, cmd, cmd_len, NULL, NULL, 0);
+	if (ret < 0) {
+		debug("m25p80: error %d writing %x\n", ret, *cmd);
+		return ret;
+	}
+
+	spi_release_bus(spi);
+
+	return ret;
+}
+
 static int m25p80_spi_nor(struct spi_nor *nor)
 {
 	struct mtd_info *mtd = nor->mtd;
@@ -176,6 +202,7 @@ static int m25p80_spi_nor(struct spi_nor *nor)
 	/* install hooks */
 	nor->read_mmap = m25p80_read_mmap;
 	nor->read = m25p80_read;
+	nor->erase = m25p80_erase;
 	nor->write = m25p80_write;
 	nor->read_reg = m25p80_read_reg;
 	nor->write_reg = m25p80_write_reg;
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 1ee1510..befee67 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -526,7 +526,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 
 		write_enable(nor);
 
-		ret = nor->write(nor, cmd, sizeof(cmd), NULL, 0);
+		ret = nor->erase(nor, cmd, sizeof(cmd));
 		if (ret < 0)
 			goto erase_err;
 
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index 8b46b93..4749ff4 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -191,7 +191,8 @@ extern const struct spi_nor_info spi_nor_ids[];
  * @read_mmap:		[DRIVER-SPECIFIC] read data from the mmapped SPI NOR
  * @read:		[DRIVER-SPECIFIC] read data from the SPI NOR
  * @write:		[DRIVER-SPECIFIC] write data to the SPI NOR
- * @flash_lock:	[FLASH-SPECIFIC] lock a region of the SPI NOR
+ * @erase:		[DRIVER-SPECIFIC] erase a sector of the SPI NOR
+ * @flash_lock:		[FLASH-SPECIFIC] unlock a region of the SPI NOR
  * @flash_unlock:	[FLASH-SPECIFIC] unlock a region of the SPI NOR
  * @flash_is_locked:	[FLASH-SPECIFIC] check if a region of the SPI NOR is
  * @memory_map:	address of read-only SPI NOR access
@@ -227,6 +228,7 @@ struct spi_nor {
 			void *data, size_t data_len);
 	int (*write)(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 			const void *data, size_t data_len);
+	int (*erase)(struct spi_nor *nor, const u8 *cmd, size_t cmd_len);
 
 	int (*flash_lock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
 	int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 75/87] mtd: spi-nor: Not required to memset dummy byte
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (72 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 74/87] mtd: spi-nor: Add erase ops Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 76/87] mtd: spi-nor: Move opcode handling in m25p80 Jagan Teki
                   ` (11 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Dummy byte(s) are need to send followed by address opcode
for read operation, and that dummy byte(s) not required
to malloc as well memset.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index befee67..97f5eaa 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -617,7 +617,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 {
 	struct spi_nor *nor = mtd->priv;
 	u32 remain_len, read_len, read_addr;
-	u8 *cmd, cmdsz;
+	u8 cmd[SNOR_MAX_CMD_SIZE], cmdsz;
 	int bank_sel = 0;
 	int ret = -1;
 
@@ -633,12 +633,6 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 	}
 
 	cmdsz = SNOR_MAX_CMD_SIZE + nor->read_dummy;
-	cmd = calloc(1, cmdsz);
-	if (!cmd) {
-		debug("spi-nor: Failed to allocate cmd\n");
-		return -ENOMEM;
-	}
-
 	cmd[0] = nor->read_opcode;
 	while (len) {
 		read_addr = from;
@@ -672,7 +666,6 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 		*retlen += read_len;
 	}
 
-	free(cmd);
 	return ret;
 }
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 76/87] mtd: spi-nor: Move opcode handling in m25p80
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (73 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 75/87] mtd: spi-nor: Not required to memset dummy byte Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 77/87] mtd: spi-nor: Rename spi_nor_addr to m25p_addr2cmd Jagan Teki
                   ` (10 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

It's required to handling opcode in spi drivers
interface layer, m25p80 from spi-nor, becuase some
spi-nor controller drivers like fsl_qspi have separate
opcode's to handling the same operations.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c  | 53 ++++++++++++++++++++++++++++--------
 drivers/mtd/spi-nor/spi-nor.c | 62 +++++++------------------------------------
 include/linux/mtd/spi-nor.h   | 10 +++----
 3 files changed, 56 insertions(+), 69 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index cf27ba0..560e5b2 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -17,14 +17,24 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/spi-nor.h>
 
+#define MAX_CMD_SIZE		6
 struct m25p {
 	struct spi_slave	*spi;
 	struct spi_nor		spi_nor;
 #ifndef CONFIG_DM_MTD_SPI_NOR
 	struct mtd_info		mtd;
 #endif
+	u8			command[MAX_CMD_SIZE];
 };
 
+static void spi_nor_addr(u32 addr, u8 *cmd)
+{
+	/* cmd[0] is actual command */
+	cmd[1] = addr >> 16;
+	cmd[2] = addr >> 8;
+	cmd[3] = addr >> 0;
+}
+
 static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 {
 	struct m25p *flash = nor->priv;
@@ -112,8 +122,8 @@ static int m25p80_read_mmap(struct spi_nor *nor, void *data,
 	return ret;
 }
 
-static int m25p80_read(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
-				void *data, size_t data_len)
+static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
+		       u_char *buf)
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
@@ -125,12 +135,16 @@ static int m25p80_read(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 		return ret;
 	}
 
+	flash->command[0] = nor->read_opcode;
+	spi_nor_addr(from, flash->command);
+
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, cmd, cmd_len, NULL, data, data_len);
+	ret = spi_write_then_read(spi, flash->command, 4 + nor->read_dummy,
+				  NULL, buf, len);
 	if (ret < 0) {
-		debug("m25p80: error %d reading %x\n", ret, *cmd);
+		debug("m25p80: error %d reading %x\n", ret, flash->command[0]);
 		return ret;
 	}
 
@@ -139,11 +153,12 @@ static int m25p80_read(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	return ret;
 }
 
-static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
-				const void *data, size_t data_len)
+static int m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
+			const u_char *buf)
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
+	int cmd_sz = 4;
 	int ret;
 
 	ret = spi_claim_bus(spi);
@@ -152,12 +167,22 @@ static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 		return ret;
 	}
 
+	if (nor->program_opcode == SNOR_OP_AAI_WP)
+		cmd_sz = 1;
+
+	flash->command[0] = nor->program_opcode;
+	spi_nor_addr(to, flash->command);
+
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, cmd, cmd_len, data, NULL, data_len);
+	debug("m25p80: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %zu\n",
+	       buf, flash->command[0], flash->command[1], flash->command[2],
+	       flash->command[3], len);
+
+	ret = spi_write_then_read(spi, flash->command, cmd_sz, buf, NULL, len);
 	if (ret < 0) {
-		debug("m25p80: error %d writing %x\n", ret, *cmd);
+		debug("m25p80: error %d writing %x\n", ret, flash->command[0]);
 		return ret;
 	}
 
@@ -166,7 +191,7 @@ static int m25p80_write(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
 	return ret;
 }
 
-static int m25p80_erase(struct spi_nor *nor, const u8 *cmd, size_t cmd_len)
+static int m25p80_erase(struct spi_nor *nor, loff_t offset)
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
@@ -178,12 +203,18 @@ static int m25p80_erase(struct spi_nor *nor, const u8 *cmd, size_t cmd_len)
 		return ret;
 	}
 
+	flash->command[0] = nor->erase_opcode;
+	spi_nor_addr(offset, flash->command);
+
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, cmd, cmd_len, NULL, NULL, 0);
+	debug("m25p80: erase %2x %2x %2x %2x (%llx)\n", flash->command[0],
+	       flash->command[1], flash->command[2], flash->command[3], offset);
+
+	ret = spi_write_then_read(spi, flash->command, 4, NULL, NULL, 0);
 	if (ret < 0) {
-		debug("m25p80: error %d writing %x\n", ret, *cmd);
+		debug("m25p80: error %d writing %x\n", ret, flash->command[0]);
 		return ret;
 	}
 
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 97f5eaa..cb9ab21 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -32,14 +32,6 @@ static inline int write_disable(struct spi_nor *nor)
 	return nor->write_reg(nor, SNOR_OP_WRDI, NULL, 0);
 }
 
-static void spi_nor_addr(u32 addr, u8 *cmd)
-{
-	/* cmd[0] is actual command */
-	cmd[1] = addr >> 16;
-	cmd[2] = addr >> 8;
-	cmd[3] = addr >> 0;
-}
-
 static int read_sr(struct spi_nor *nor)
 {
 	u8 sr;
@@ -487,7 +479,6 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
 	struct spi_nor *nor = mtd->priv;
 	u32 addr, len, erase_addr;
-	u8 cmd[SNOR_MAX_CMD_SIZE];
 	uint32_t rem;
 	int ret = -1;
 
@@ -506,7 +497,6 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 		}
 	}
 
-	cmd[0] = nor->erase_opcode;
 	while (len) {
 		erase_addr = addr;
 
@@ -519,14 +509,9 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
 		if (ret < 0)
 			return ret;
 #endif
-		spi_nor_addr(erase_addr, cmd);
-
-		debug("spi-nor: erase %2x %2x %2x %2x (%x)\n", cmd[0], cmd[1],
-		      cmd[2], cmd[3], erase_addr);
-
 		write_enable(nor);
 
-		ret = nor->erase(nor, cmd, sizeof(cmd));
+		ret = nor->erase(nor, erase_addr);
 		if (ret < 0)
 			goto erase_err;
 
@@ -556,7 +541,6 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 	struct spi_nor *nor = mtd->priv;
 	u32 byte_addr, page_size, write_addr;
 	size_t chunk_len, actual;
-	u8 cmd[SNOR_MAX_CMD_SIZE];
 	int ret = -1;
 
 	if (mtd->_is_locked) {
@@ -569,7 +553,6 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 
 	page_size = nor->page_size;
 
-	cmd[0] = nor->program_opcode;
 	for (actual = 0; actual < len; actual += chunk_len) {
 		write_addr = offset;
 
@@ -589,15 +572,9 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 			chunk_len = min(chunk_len,
 					(size_t)nor->max_write_size);
 
-		spi_nor_addr(write_addr, cmd);
-
-		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %zu\n",
-		      buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
 		write_enable(nor);
 
-		ret = nor->write(nor, cmd, sizeof(cmd),
-				 buf + actual, chunk_len);
+		ret = nor->write(nor, write_addr, chunk_len, buf + actual);
 		if (ret < 0)
 			break;
 
@@ -617,7 +594,6 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 {
 	struct spi_nor *nor = mtd->priv;
 	u32 remain_len, read_len, read_addr;
-	u8 cmd[SNOR_MAX_CMD_SIZE], cmdsz;
 	int bank_sel = 0;
 	int ret = -1;
 
@@ -632,8 +608,6 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 		return ret;
 	}
 
-	cmdsz = SNOR_MAX_CMD_SIZE + nor->read_dummy;
-	cmd[0] = nor->read_opcode;
 	while (len) {
 		read_addr = from;
 
@@ -654,9 +628,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 		else
 			read_len = remain_len;
 
-		spi_nor_addr(read_addr, cmd);
-
-		ret = nor->read(nor, cmd, cmdsz, buf, read_len);
+		ret = nor->read(nor, read_addr, read_len, buf);
 		if (ret < 0)
 			break;
 
@@ -674,21 +646,14 @@ static int sst_byte_write(struct spi_nor *nor, u32 offset,
 			  const void *buf, size_t *retlen)
 {
 	int ret;
-	u8 cmd[4] = {
-		SNOR_OP_BP,
-		offset >> 16,
-		offset >> 8,
-		offset,
-	};
-
-	debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06x }\n",
-	      buf, cmd[0], offset);
 
 	ret = write_enable(nor);
 	if (ret)
 		return ret;
 
-	ret = nor->write(nor, cmd, sizeof(cmd), buf, 1);
+	nor->program_opcode = SNOR_OP_BP;
+
+	ret = nor->write(nor, offset, 1, buf);
 	if (ret)
 		return ret;
 
@@ -701,9 +666,8 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 			size_t *retlen, const u_char *buf)
 {
 	struct spi_nor *nor = mtd->priv;
-	size_t actual, cmd_len;
+	size_t actual;
 	int ret;
-	u8 cmd[4];
 
 	/* If the data is not word aligned, write out leading single byte */
 	actual = offset % 2;
@@ -718,17 +682,10 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 	if (ret)
 		goto done;
 
-	cmd_len = 4;
-	cmd[0] = SNOR_OP_AAI_WP;
-	cmd[1] = offset >> 16;
-	cmd[2] = offset >> 8;
-	cmd[3] = offset;
-
 	for (; actual < len - 1; actual += 2) {
-		debug("spi-nor: 0x%p => cmd = { 0x%02x 0x%06llx }\n",
-		      buf + actual, cmd[0], offset);
+		nor->program_opcode = SNOR_OP_AAI_WP;
 
-		ret = nor->write(nor, cmd, cmd_len, buf + actual, 2);
+		ret = nor->write(nor, offset, 2, buf + actual);
 		if (ret) {
 			debug("spi-nor: sst word program failed\n");
 			break;
@@ -738,7 +695,6 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 		if (ret)
 			break;
 
-		cmd_len = 1;
 		offset += 2;
 		*retlen += 2;
 	}
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index 4749ff4..19a5dd0 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -224,11 +224,11 @@ struct spi_nor {
 
 	int (*read_mmap)(struct spi_nor *nor, void *data, void *offset,
 			size_t len);
-	int (*read)(struct spi_nor *nor, const u8 *opcode, size_t cmd_len,
-			void *data, size_t data_len);
-	int (*write)(struct spi_nor *nor, const u8 *cmd, size_t cmd_len,
-			const void *data, size_t data_len);
-	int (*erase)(struct spi_nor *nor, const u8 *cmd, size_t cmd_len);
+	int (*read)(struct spi_nor *nor, loff_t from, size_t len,
+		    u_char *read_buf);
+	int (*write)(struct spi_nor *nor, loff_t to, size_t len,
+		     const u_char *write_buf);
+	int (*erase)(struct spi_nor *nor, loff_t offs);
 
 	int (*flash_lock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
 	int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 77/87] mtd: spi-nor: Rename spi_nor_addr to m25p_addr2cmd
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (74 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 76/87] mtd: spi-nor: Move opcode handling in m25p80 Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 78/87] mtd: spi-nor: Add addr_width Jagan Teki
                   ` (9 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

opcode handling is part of spi_nor_addr routine, since
it's been part of m25p80 so rename the function related
to that file name.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 560e5b2..a6e9cfe 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -27,7 +27,7 @@ struct m25p {
 	u8			command[MAX_CMD_SIZE];
 };
 
-static void spi_nor_addr(u32 addr, u8 *cmd)
+static void m25p_addr2cmd(u32 addr, u8 *cmd)
 {
 	/* cmd[0] is actual command */
 	cmd[1] = addr >> 16;
@@ -136,7 +136,7 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
 	}
 
 	flash->command[0] = nor->read_opcode;
-	spi_nor_addr(from, flash->command);
+	m25p_addr2cmd(from, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
@@ -171,7 +171,7 @@ static int m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
 		cmd_sz = 1;
 
 	flash->command[0] = nor->program_opcode;
-	spi_nor_addr(to, flash->command);
+	m25p_addr2cmd(to, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
@@ -204,7 +204,7 @@ static int m25p80_erase(struct spi_nor *nor, loff_t offset)
 	}
 
 	flash->command[0] = nor->erase_opcode;
-	spi_nor_addr(offset, flash->command);
+	m25p_addr2cmd(offset, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 78/87] mtd: spi-nor: Add addr_width
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (75 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 77/87] mtd: spi-nor: Rename spi_nor_addr to m25p_addr2cmd Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 79/87] mtd: spi-nor: Add m25p_cmdsz Jagan Teki
                   ` (8 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

addr_width is required to configure the flash
with 3 and 4 byte addressing, more features
will add in future patches.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c  | 17 +++++++++--------
 drivers/mtd/spi-nor/spi-nor.c |  5 +++++
 include/linux/mtd/spi-nor.h   |  2 ++
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index a6e9cfe..266407f 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -27,12 +27,13 @@ struct m25p {
 	u8			command[MAX_CMD_SIZE];
 };
 
-static void m25p_addr2cmd(u32 addr, u8 *cmd)
+static void m25p_addr2cmd(struct spi_nor *nor, unsigned int addr, u8 *cmd)
 {
-	/* cmd[0] is actual command */
-	cmd[1] = addr >> 16;
-	cmd[2] = addr >> 8;
-	cmd[3] = addr >> 0;
+	/* opcode is in cmd[0] */
+	cmd[1] = addr >> (nor->addr_width * 8 -  8);
+	cmd[2] = addr >> (nor->addr_width * 8 - 16);
+	cmd[3] = addr >> (nor->addr_width * 8 - 24);
+	cmd[4] = addr >> (nor->addr_width * 8 - 32);
 }
 
 static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
@@ -136,7 +137,7 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
 	}
 
 	flash->command[0] = nor->read_opcode;
-	m25p_addr2cmd(from, flash->command);
+	m25p_addr2cmd(nor, from, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
@@ -171,7 +172,7 @@ static int m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
 		cmd_sz = 1;
 
 	flash->command[0] = nor->program_opcode;
-	m25p_addr2cmd(to, flash->command);
+	m25p_addr2cmd(nor, to, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
@@ -204,7 +205,7 @@ static int m25p80_erase(struct spi_nor *nor, loff_t offset)
 	}
 
 	flash->command[0] = nor->erase_opcode;
-	m25p_addr2cmd(offset, flash->command);
+	m25p_addr2cmd(nor, offset, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index cb9ab21..0b3140d 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1032,6 +1032,11 @@ int spi_nor_scan(struct spi_nor *nor)
 		}
 	}
 
+	if (info->addr_width)
+		nor->addr_width = info->addr_width;
+	else
+		nor->addr_width = 3;
+
 	/* read_dummy: dummy byte is determined based on the
 	 * dummy cycles of a particular command.
 	 * Fast commands - read_dummy = dummy_cycles/8
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index 19a5dd0..b144341 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -171,6 +171,7 @@ extern const struct spi_nor_info spi_nor_ids[];
  * @mtd:		point to a mtd_info structure
  * @name:		name of the SPI NOR device
  * @page_size:		the page size of the SPI NOR
+ * @addr_width:		number of address bytes
  * @erase_opcode:	the opcode for erasing a sector
  * @read_opcode:	the read opcode
  * @read_dummy:	the dummy bytes needed by the read operation
@@ -202,6 +203,7 @@ struct spi_nor {
 	struct mtd_info		*mtd;
 	const char		*name;
 	u32			page_size;
+	u8			addr_width;
 	u8			erase_opcode;
 	u8			read_opcode;
 	u8			read_dummy;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 79/87] mtd: spi-nor: Add m25p_cmdsz
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (76 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 78/87] mtd: spi-nor: Add addr_width Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 80/87] mtd: spi-nor: read_dummy refers to dummy cycles not bytes Jagan Teki
                   ` (7 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Added m25p_cmdsz for finding command size based on
the addr_width.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 266407f..42c5a96 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -36,6 +36,11 @@ static void m25p_addr2cmd(struct spi_nor *nor, unsigned int addr, u8 *cmd)
 	cmd[4] = addr >> (nor->addr_width * 8 - 32);
 }
 
+static int m25p_cmdsz(struct spi_nor *nor)
+{
+	return 1 + nor->addr_width;
+}
+
 static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 {
 	struct m25p *flash = nor->priv;
@@ -142,8 +147,9 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, flash->command, 4 + nor->read_dummy,
-				  NULL, buf, len);
+	ret = spi_write_then_read(spi, flash->command,
+				  m25p_cmdsz(nor) + nor->read_dummy, NULL,
+				  buf, len);
 	if (ret < 0) {
 		debug("m25p80: error %d reading %x\n", ret, flash->command[0]);
 		return ret;
@@ -159,7 +165,7 @@ static int m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
-	int cmd_sz = 4;
+	int cmd_sz = m25p_cmdsz(nor);
 	int ret;
 
 	ret = spi_claim_bus(spi);
@@ -213,7 +219,8 @@ static int m25p80_erase(struct spi_nor *nor, loff_t offset)
 	debug("m25p80: erase %2x %2x %2x %2x (%llx)\n", flash->command[0],
 	       flash->command[1], flash->command[2], flash->command[3], offset);
 
-	ret = spi_write_then_read(spi, flash->command, 4, NULL, NULL, 0);
+	ret = spi_write_then_read(spi, flash->command, m25p_cmdsz(nor),
+				  NULL, NULL, 0);
 	if (ret < 0) {
 		debug("m25p80: error %d writing %x\n", ret, flash->command[0]);
 		return ret;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 80/87] mtd: spi-nor: read_dummy refers to dummy cycles not bytes
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (77 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 79/87] mtd: spi-nor: Add m25p_cmdsz Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 81/87] mtd: spi-nor: Use to instead of offset in write Jagan Teki
                   ` (6 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

read_dummy refered as dummy cycles and dummy bytes
will findout during read operations.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c  | 9 ++++++---
 drivers/mtd/spi-nor/spi-nor.c | 4 ++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index 42c5a96..c65534c 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -133,6 +133,7 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
+	unsigned int dummy = nor->read_dummy;
 	int ret;
 
 	ret = spi_claim_bus(spi);
@@ -141,15 +142,17 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
 		return ret;
 	}
 
+	/* convert the dummy cycles to the number of bytes */
+	dummy /= 8;
+
 	flash->command[0] = nor->read_opcode;
 	m25p_addr2cmd(nor, from, flash->command);
 
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, flash->command,
-				  m25p_cmdsz(nor) + nor->read_dummy, NULL,
-				  buf, len);
+	ret = spi_write_then_read(spi, flash->command, m25p_cmdsz(nor) + dummy,
+				  NULL, buf, len);
 	if (ret < 0) {
 		debug("m25p80: error %d reading %x\n", ret, flash->command[0]);
 		return ret;
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 0b3140d..fb7fb1c 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1047,13 +1047,13 @@ int spi_nor_scan(struct spi_nor *nor)
 	 */
 	switch (nor->read_opcode) {
 	case SNOR_OP_READ_1_1_4_IO:
-		nor->read_dummy = 2;
+		nor->read_dummy = 16;
 		break;
 	case SNOR_OP_READ:
 		nor->read_dummy = 0;
 		break;
 	default:
-		nor->read_dummy = 1;
+		nor->read_dummy = 8;
 	}
 
 	/* Configure the BAR - discover bank cmds and read current bank */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 81/87] mtd: spi-nor: Use to instead of offset in write
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (78 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 80/87] mtd: spi-nor: read_dummy refers to dummy cycles not bytes Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 82/87] mtd: spi-nor: offset with addr Jagan Teki
                   ` (5 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Used write operation address variable as 'to' instead
of 'offset' for more readability.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index fb7fb1c..36dfe77 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -535,7 +535,7 @@ erase_err:
 	return ret;
 }
 
-static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
+static int spi_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
 			 size_t *retlen, const u_char *buf)
 {
 	struct spi_nor *nor = mtd->priv;
@@ -544,9 +544,9 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 	int ret = -1;
 
 	if (mtd->_is_locked) {
-		if (mtd->_is_locked(mtd, offset, len) > 0) {
+		if (mtd->_is_locked(mtd, to, len) > 0) {
 			printf("offset 0x%llx is protected and cannot be written\n",
-			       offset);
+			       to);
 			return -EINVAL;
 		}
 	}
@@ -554,7 +554,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 	page_size = nor->page_size;
 
 	for (actual = 0; actual < len; actual += chunk_len) {
-		write_addr = offset;
+		write_addr = to;
 
 #ifdef CONFIG_SF_DUAL_FLASH
 		if (nor->dual > SNOR_DUAL_SINGLE)
@@ -565,7 +565,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 		if (ret < 0)
 			return ret;
 #endif
-		byte_addr = offset % page_size;
+		byte_addr = to % page_size;
 		chunk_len = min(len - actual, (size_t)(page_size - byte_addr));
 
 		if (nor->max_write_size)
@@ -582,7 +582,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t offset, size_t len,
 		if (ret < 0)
 			return ret;
 
-		offset += chunk_len;
+		to += chunk_len;
 		*retlen += chunk_len;
 	}
 
@@ -662,7 +662,7 @@ static int sst_byte_write(struct spi_nor *nor, u32 offset,
 	return spi_nor_wait_till_ready(nor, SNOR_READY_WAIT_PROG);
 }
 
-static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
+static int sst_write_wp(struct mtd_info *mtd, loff_t to, size_t len,
 			size_t *retlen, const u_char *buf)
 {
 	struct spi_nor *nor = mtd->priv;
@@ -670,13 +670,13 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 	int ret;
 
 	/* If the data is not word aligned, write out leading single byte */
-	actual = offset % 2;
+	actual = to % 2;
 	if (actual) {
-		ret = sst_byte_write(nor, offset, buf, retlen);
+		ret = sst_byte_write(nor, to, buf, retlen);
 		if (ret)
 			goto done;
 	}
-	offset += actual;
+	to += actual;
 
 	ret = write_enable(nor);
 	if (ret)
@@ -685,7 +685,7 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 	for (; actual < len - 1; actual += 2) {
 		nor->program_opcode = SNOR_OP_AAI_WP;
 
-		ret = nor->write(nor, offset, 2, buf + actual);
+		ret = nor->write(nor, to, 2, buf + actual);
 		if (ret) {
 			debug("spi-nor: sst word program failed\n");
 			break;
@@ -695,7 +695,7 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 		if (ret)
 			break;
 
-		offset += 2;
+		to += 2;
 		*retlen += 2;
 	}
 
@@ -704,13 +704,13 @@ static int sst_write_wp(struct mtd_info *mtd, loff_t offset, size_t len,
 
 	/* If there is a single trailing byte, write it out */
 	if (!ret && actual != len)
-		ret = sst_byte_write(nor, offset, buf + actual, retlen);
+		ret = sst_byte_write(nor, to, buf + actual, retlen);
 
  done:
 	return ret;
 }
 
-static int sst_write_bp(struct mtd_info *mtd, loff_t offset, size_t len,
+static int sst_write_bp(struct mtd_info *mtd, loff_t to, size_t len,
 			size_t *retlen, const u_char *buf)
 {
 	struct spi_nor *nor = mtd->priv;
@@ -718,12 +718,12 @@ static int sst_write_bp(struct mtd_info *mtd, loff_t offset, size_t len,
 	int ret;
 
 	for (actual = 0; actual < len; actual++) {
-		ret = sst_byte_write(nor, offset, buf + actual, retlen);
+		ret = sst_byte_write(nor, to, buf + actual, retlen);
 		if (ret) {
 			debug("spi-nor: sst byte program failed\n");
 			break;
 		}
-		offset++;
+		to++;
 	}
 
 	if (!ret)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 82/87] mtd: spi-nor: offset with addr
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (79 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 81/87] mtd: spi-nor: Use to instead of offset in write Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 83/87] mtd: m25p80: Rename cmd with opcode Jagan Teki
                   ` (4 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

For more readability use addr instead of offset.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/spi-nor.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 36dfe77..6166b62 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -642,8 +642,8 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
 }
 
 #ifdef CONFIG_SPI_NOR_SST
-static int sst_byte_write(struct spi_nor *nor, u32 offset,
-			  const void *buf, size_t *retlen)
+static int sst_byte_write(struct spi_nor *nor, u32 addr, const void *buf,
+			  size_t *retlen)
 {
 	int ret;
 
@@ -653,7 +653,7 @@ static int sst_byte_write(struct spi_nor *nor, u32 offset,
 
 	nor->program_opcode = SNOR_OP_BP;
 
-	ret = nor->write(nor, offset, 1, buf);
+	ret = nor->write(nor, addr, 1, buf);
 	if (ret)
 		return ret;
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 83/87] mtd: m25p80: Rename cmd with opcode
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (80 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 82/87] mtd: spi-nor: offset with addr Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 84/87] armv8/ls1043a: move CONFIG_MTD to defconfig Jagan Teki
                   ` (3 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

Use opcode instead of cmd, for more readability.

Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Mugunthan V N <mugunthanvnm@ti.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 drivers/mtd/spi-nor/m25p80.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/mtd/spi-nor/m25p80.c b/drivers/mtd/spi-nor/m25p80.c
index c65534c..bdf54be 100644
--- a/drivers/mtd/spi-nor/m25p80.c
+++ b/drivers/mtd/spi-nor/m25p80.c
@@ -41,7 +41,7 @@ static int m25p_cmdsz(struct spi_nor *nor)
 	return 1 + nor->addr_width;
 }
 
-static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
+static int m25p80_read_reg(struct spi_nor *nor, u8 opcode, u8 *val, int len)
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
@@ -56,9 +56,9 @@ static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, &cmd, 1, NULL, val, len);
+	ret = spi_write_then_read(spi, &opcode, 1, NULL, val, len);
 	if (ret < 0) {
-		debug("m25p80: error %d reading register %x\n", ret, cmd);
+		debug("m25p80: error %d reading register %x\n", ret, opcode);
 		return ret;
 	}
 
@@ -67,7 +67,7 @@ static int m25p80_read_reg(struct spi_nor *nor, u8 cmd, u8 *val, int len)
 	return ret;
 }
 
-static int m25p80_write_reg(struct spi_nor *nor, u8 cmd, u8 *buf, int len)
+static int m25p80_write_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len)
 {
 	struct m25p *flash = nor->priv;
 	struct spi_slave *spi = flash->spi;
@@ -82,9 +82,9 @@ static int m25p80_write_reg(struct spi_nor *nor, u8 cmd, u8 *buf, int len)
 	if (nor->flags & SNOR_F_U_PAGE)
 		spi->flags |= SPI_XFER_U_PAGE;
 
-	ret = spi_write_then_read(spi, &cmd, 1, buf, NULL, len);
+	ret = spi_write_then_read(spi, &opcode, 1, buf, NULL, len);
 	if (ret < 0) {
-		debug("m25p80: error %d writing register %x\n", ret, cmd);
+		debug("m25p80: error %d writing register %x\n", ret, opcode);
 		return ret;
 	}
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 84/87] armv8/ls1043a: move CONFIG_MTD to defconfig
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (81 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 83/87] mtd: m25p80: Rename cmd with opcode Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 85/87] defconfig: ls1021atwr_sdcard_qspi: Enable CONFIG_MTD Jagan Teki
                   ` (2 subsequent siblings)
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

To make it take effect to enable MTD driver model for SPI-NOR.

Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Gong Qianyu <Qianyu.Gong@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1043aqds_defconfig             | 1 +
 configs/ls1043aqds_lpuart_defconfig      | 1 +
 configs/ls1043aqds_nand_defconfig        | 1 +
 configs/ls1043aqds_nor_ddr3_defconfig    | 1 +
 configs/ls1043aqds_qspi_defconfig        | 1 +
 configs/ls1043aqds_sdcard_ifc_defconfig  | 1 +
 configs/ls1043aqds_sdcard_qspi_defconfig | 1 +
 configs/ls1043ardb_SECURE_BOOT_defconfig | 1 +
 configs/ls1043ardb_defconfig             | 1 +
 configs/ls1043ardb_nand_defconfig        | 1 +
 configs/ls1043ardb_sdcard_defconfig      | 1 +
 include/configs/ls1043a_common.h         | 1 -
 12 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/configs/ls1043aqds_defconfig b/configs/ls1043aqds_defconfig
index cde7708..361480a 100644
--- a/configs/ls1043aqds_defconfig
+++ b/configs/ls1043aqds_defconfig
@@ -11,3 +11,4 @@ CONFIG_DM=y
 CONFIG_SYS_NS16550=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD=y
diff --git a/configs/ls1043aqds_lpuart_defconfig b/configs/ls1043aqds_lpuart_defconfig
index 5e000bd..da5315b 100644
--- a/configs/ls1043aqds_lpuart_defconfig
+++ b/configs/ls1043aqds_lpuart_defconfig
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4,LPUART"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_FSL_LPUART=y
diff --git a/configs/ls1043aqds_nand_defconfig b/configs/ls1043aqds_nand_defconfig
index 46990c6..cc48f6f 100644
--- a/configs/ls1043aqds_nand_defconfig
+++ b/configs/ls1043aqds_nand_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043aqds_nor_ddr3_defconfig b/configs/ls1043aqds_nor_ddr3_defconfig
index b1eeee8..083667d 100644
--- a/configs/ls1043aqds_nor_ddr3_defconfig
+++ b/configs/ls1043aqds_nor_ddr3_defconfig
@@ -7,6 +7,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043aqds_qspi_defconfig b/configs/ls1043aqds_qspi_defconfig
index 01c8045..35bc65b 100644
--- a/configs/ls1043aqds_qspi_defconfig
+++ b/configs/ls1043aqds_qspi_defconfig
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043aqds_sdcard_ifc_defconfig b/configs/ls1043aqds_sdcard_ifc_defconfig
index 9e8cac1..0df5863 100644
--- a/configs/ls1043aqds_sdcard_ifc_defconfig
+++ b/configs/ls1043aqds_sdcard_ifc_defconfig
@@ -9,6 +9,7 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043aqds_sdcard_qspi_defconfig b/configs/ls1043aqds_sdcard_qspi_defconfig
index b43e5d4..3d99937 100644
--- a/configs/ls1043aqds_sdcard_qspi_defconfig
+++ b/configs/ls1043aqds_sdcard_qspi_defconfig
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
diff --git a/configs/ls1043ardb_SECURE_BOOT_defconfig b/configs/ls1043ardb_SECURE_BOOT_defconfig
index 094e6b1..aad8540 100644
--- a/configs/ls1043ardb_SECURE_BOOT_defconfig
+++ b/configs/ls1043ardb_SECURE_BOOT_defconfig
@@ -12,3 +12,4 @@ CONFIG_SYS_NS16550=y
 CONFIG_RSA=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD=y
diff --git a/configs/ls1043ardb_defconfig b/configs/ls1043ardb_defconfig
index 3945432..6b1999c 100644
--- a/configs/ls1043ardb_defconfig
+++ b/configs/ls1043ardb_defconfig
@@ -11,3 +11,4 @@ CONFIG_DM=y
 CONFIG_SYS_NS16550=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD=y
diff --git a/configs/ls1043ardb_nand_defconfig b/configs/ls1043ardb_nand_defconfig
index 180f464..c4a2e41 100644
--- a/configs/ls1043ardb_nand_defconfig
+++ b/configs/ls1043ardb_nand_defconfig
@@ -12,3 +12,4 @@ CONFIG_DM=y
 CONFIG_SYS_NS16550=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD=y
diff --git a/configs/ls1043ardb_sdcard_defconfig b/configs/ls1043ardb_sdcard_defconfig
index b8731df..2c5da16 100644
--- a/configs/ls1043ardb_sdcard_defconfig
+++ b/configs/ls1043ardb_sdcard_defconfig
@@ -12,3 +12,4 @@ CONFIG_DM=y
 CONFIG_SYS_NS16550=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD=y
diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h
index b86845f..1f023f3 100644
--- a/include/configs/ls1043a_common.h
+++ b/include/configs/ls1043a_common.h
@@ -195,7 +195,6 @@
 #define CONFIG_FSL_DSPI
 #ifdef CONFIG_FSL_DSPI
 #define CONFIG_CMD_SF
-#define CONFIG_MTD
 #define CONFIG_SPI_NOR_STMICRO	/* cs0 */
 #define CONFIG_SPI_NOR_SST		/* cs1 */
 #define CONFIG_SPI_NOR_MISC		/* cs2 */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 85/87] defconfig: ls1021atwr_sdcard_qspi: Enable CONFIG_MTD
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (82 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 84/87] armv8/ls1043a: move CONFIG_MTD to defconfig Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 86/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 87/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD_DATAFLASH Jagan Teki
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

From: Alison Wang <alison.wang@nxp.com>

As QSPI driver is supported in ls1021atwr_sdcard_qspi_defconfig,
CONFIG_MTD needs to be enabled for SPI-NOR with MTD uclass.

Cc: York Sun <york.sun@nxp.com>
Cc: Jagan Teki <jteki@openedev.com>
Signed-off-by: Alison Wang <alison.wang@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1021atwr_sdcard_qspi_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/ls1021atwr_sdcard_qspi_defconfig b/configs/ls1021atwr_sdcard_qspi_defconfig
index c0e1d49..05eab68 100644
--- a/configs/ls1021atwr_sdcard_qspi_defconfig
+++ b/configs/ls1021atwr_sdcard_qspi_defconfig
@@ -8,6 +8,7 @@ CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_MISC=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 86/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (83 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 85/87] defconfig: ls1021atwr_sdcard_qspi: Enable CONFIG_MTD Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 87/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD_DATAFLASH Jagan Teki
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

+ CONFIG_MTD

Cc: York Sun <york.sun@nxp.com>
Cc: Alison Wang <alison.wang@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1021aqds_sdcard_qspi_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig b/configs/ls1021aqds_sdcard_qspi_defconfig
index 9a06631..054c5ff 100644
--- a/configs/ls1021aqds_sdcard_qspi_defconfig
+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="ls1021a-qds-duart"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
+CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_NOR_SPANSION=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

* [U-Boot] [PATCH v7 87/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD_DATAFLASH
  2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
                   ` (84 preceding siblings ...)
  2016-03-22  7:38 ` [U-Boot] [PATCH v7 86/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD Jagan Teki
@ 2016-03-22  7:38 ` Jagan Teki
  85 siblings, 0 replies; 87+ messages in thread
From: Jagan Teki @ 2016-03-22  7:38 UTC (permalink / raw)
  To: u-boot

+ CONFIG_MTD_DATAFLASH

Cc: York Sun <york.sun@nxp.com>
Cc: Alison Wang <alison.wang@nxp.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
---
 configs/ls1021aqds_sdcard_qspi_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig b/configs/ls1021aqds_sdcard_qspi_defconfig
index 054c5ff..25ab3ee 100644
--- a/configs/ls1021aqds_sdcard_qspi_defconfig
+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
@@ -10,6 +10,7 @@ CONFIG_DM=y
 CONFIG_MTD=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD_DATAFLASH=y
 CONFIG_SPI_NOR_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 87+ messages in thread

end of thread, other threads:[~2016-03-22  7:38 UTC | newest]

Thread overview: 87+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-22  7:37 [U-Boot] [PATCH v7 01/87] mtd: Add m25p80 driver Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 02/87] mtd: Add Kconfig entry for MTD_M25P80 Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 03/87] mtd: Add SPI-NOR core support Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 04/87] doc: device-tree-bindings: jedec, spi-nor Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 05/87] mtd: spi-nor: Add Kconfig entry for MTD_SPI_NOR Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 06/87] mtd: spi-nor: Add kconfig for MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 07/87] mtd: spi-nor: Add MTD support Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 08/87] mtd: spi-nor: Add spi_nor support in m25p80 Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 09/87] mtd: spi-nor: Add dm spi-nor probing Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 10/87] mtd: spi-nor: Add spi_flash_probe for mtd-dm-spi-nor Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 11/87] mtd: spi-nor: Add spi_flash_free " Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 12/87] mtd: spi-nor: m25p80: Add spi_nor support for non-dm Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 13/87] sf: Rename erase_size to erasesize Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 14/87] sf: Use erasesize instead of sector_size Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 15/87] sf: Use uint64_t for flash->size Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 16/87] spi_flash: Use mtd_info operation for SPI-NOR Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 17/87] spi_flash: Use spi_flash_t instead of struct spi_flash Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 18/87] mtd: spi-nor: Move spi_read_then_write to spi layer Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 19/87] spi: Rename spi_read_then_write to spi_write_then_read Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 20/87] mtd: spi-nor: Rename SPI_FLASH_BAR to SPI_NOR_BAR Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 21/87] mtd: spi-nor: Add Kconfig entry for SPI_NOR_BAR Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 22/87] mtd: spi-nor: Copy spl files from drivers/mtd/spi Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 23/87] mtd: spi-nor: spl: Follow ascending order of include headers Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 24/87] mtd: spi-nor: fsl_espi_spl: Use mtd_info Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 25/87] mtd: spi-nor: fsl_espi_spl: Use writebufsize instead of page_size Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 26/87] mtd: spi-nor: spi_spl_load: Use mtd_info Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 27/87] spl: Add CONFIG_SPL_SPI_NOR_SUPPORT Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 28/87] mtd: spi-nor: Add flash vendor Kconfig entries Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 29/87] arm: zynq: Kconfig: Select MTD uclass Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 30/87] arm: zynq: Kconfig: Drop DM_SPI_FLASH Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 31/87] mtd: spi-nor: Copy sf_dataflash Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 32/87] mtd: dataflash: Remove unneeded spi data Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 33/87] mtd: dataflash: Move flash id detection into jedec_probe Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 34/87] mtd: dataflash: Fix add_dataflash return logic Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 35/87] mtd: dataflash: Add UCLASS_MTD support Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 36/87] mtd: dataflash: Use spi_write_then_read Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 37/87] mtd: dataflash: Drop sf_internal.h Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 38/87] mtd: dataflash: Minor cleanups Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 39/87] mtd: Rename sf_dataflash.c to mtd_dataflash.c Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 40/87] mtd: spi-nor: Add Kconfig entry for mtd_dataflash Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 41/87] mtd: dataflash: Add MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 42/87] mtd: spi-nor: Add kconfig MTD_DATAFLASH_WRITE_VERIFY Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 43/87] configs: ls1021aqds: Drop DM_SPI_FLASH and DATAFLASH Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 44/87] defconfig: ls1021aqds_qspi: Enable SPI-NOR Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 45/87] defconfig: ls1021aqds_qspi: Enable CONFIG_MTD_DATAFLASH Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 46/87] mtd: spi-nor: Copy sandbox Jagan Teki
2016-03-22  7:37 ` [U-Boot] [PATCH v7 47/87] mtd: spi-nor: sandbox: Use spi-nor header Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 48/87] mtd: spi-nor: sandbox: Fix ID exctract from spi_nor_info Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 49/87] mtd: spi-nor: Add SPI_NOR_SANDBOX Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 50/87] test/dm: Makefile: Use CONFIG_DM_MTD_SPI_NOR Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 51/87] test/dm: spi: " Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 52/87] configs: sandbox: Enable SPI-NOR sandbox driver Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 53/87] test/dm: spi: Use m25p80 as driver name Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 54/87] dts: sandbox: Use jedec, spi-nor compatible string Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 55/87] x86: Drop using spi_flash_dm_ops Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 56/87] spi_flash: Use spi_flash_t Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 57/87] defconfig: zynq_zc770_xm013: Enable ZYNQ_QSPI Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 58/87] configs: Drop CONFIG_SPI_FLASH_MTD Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 59/87] config: Enable SPI-NOR framework Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 60/87] spi-nor: Use CONFIG_MTD_SPI_NOR Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 61/87] configs: Use CONFIG_SPI_NOR_BAR Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 62/87] configs: spi-nor: Add new flash vendor configs Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 63/87] mtd: spi-nor: Add CONFIG_SPI_NOR_MISC Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 64/87] configs: Use CONFIG_SPI_NOR_MISC Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 65/87] powerpc/mpc85xx: Use spi.h instead of spi_flash.h Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 66/87] sf: Drop entire spi-flash framework Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 67/87] uclass: Drop UCLASS_SPI_FLASH Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 68/87] spi: Drop mode_rx Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 69/87] spi: Drop SPI_RX_FAST Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 70/87] MAINTAINERS: Add myself as SPI NOR maintainer Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 71/87] configs: CONFIG_MTD_SPI_NOR_USE_4K_SECTORS Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 72/87] dts: spi-nor: Use jedec, spi-nor compatible string Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 73/87] dts: spi-nor: Use spi-nor as node name Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 74/87] mtd: spi-nor: Add erase ops Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 75/87] mtd: spi-nor: Not required to memset dummy byte Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 76/87] mtd: spi-nor: Move opcode handling in m25p80 Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 77/87] mtd: spi-nor: Rename spi_nor_addr to m25p_addr2cmd Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 78/87] mtd: spi-nor: Add addr_width Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 79/87] mtd: spi-nor: Add m25p_cmdsz Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 80/87] mtd: spi-nor: read_dummy refers to dummy cycles not bytes Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 81/87] mtd: spi-nor: Use to instead of offset in write Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 82/87] mtd: spi-nor: offset with addr Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 83/87] mtd: m25p80: Rename cmd with opcode Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 84/87] armv8/ls1043a: move CONFIG_MTD to defconfig Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 85/87] defconfig: ls1021atwr_sdcard_qspi: Enable CONFIG_MTD Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 86/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD Jagan Teki
2016-03-22  7:38 ` [U-Boot] [PATCH v7 87/87] defconfig: ls1021aqds_sdcard_qspi: Enable MTD_DATAFLASH Jagan Teki

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.