Skip to contentSkip to conversation

mtd: Add m25p80 driver

PATCH Superseded Jagan Teki 2 participants 84 messages Feb 14, 2016 – Feb 17, 2016 Page 1 of 2

Subsystems (15)

v6 of 7 Superseded Latest is v7 →

lore
Share & tools
lore

Jagan Teki

author
#0 lore raw

PATCH v6 1/76 mtd: Add m25p80 driver

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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
Makefile +1 -0
index 430dd4f..f299a24 100644
@@ -637,6 +637,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/
drivers/mtd/spi-nor/Makefile new file +6 -0
new file mode 100644
index 0000000..a4c19e3
@@ -0,0 +1,6 @@
+#
+# Copyright (C) 2016 Jagan Teki <[email protected]>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+
+obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
drivers/mtd/spi-nor/m25p80.c new file +37 -0
new file mode 100644
index 0000000..833a9c3
@@ -0,0 +1,37 @@
+/*
+ * MTD SPI-NOR driver for ST M25Pxx (and similar) serial flash chips
+ *
+ * Copyright (C) 2016 Jagan Teki <[email protected]>
+ *
+ * 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,
+};
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH v6 2/76 mtd: Add Kconfig entry for MTD_M25P80

Added Kconfig entry for MTD_M25P80

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/Kconfig
drivers/mtd/spi-nor/Kconfig new file +15 -0
new file mode 100644
index 0000000..d32486c
@@ -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.
Signature · 1 line
1.9.1
author
#2 lore raw

PATCH v6 3/76 mtd: Add SPI-NOR core support

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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
doc/mtd/spi-nor.txt new file +81 -0
new file mode 100644
index 0000000..8b381c1
@@ -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.
drivers/mtd/Kconfig +2 -0
index c58841e..2c8846b 100644
@@ -33,3 +33,5 @@ endmenu
 source "drivers/mtd/nand/Kconfig"
 
 source "drivers/mtd/spi/Kconfig"
+
+source "drivers/mtd/spi-nor/Kconfig"
drivers/mtd/spi-nor/Makefile +5 -0
index a4c19e3..9ab6e3d 100644
@@ -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
drivers/mtd/spi-nor/spi-nor-ids.c new file +276 -0

276 lines not on this page · raw message

drivers/mtd/spi-nor/spi-nor.c new file +1084 -0

1,084 lines not on this page · raw message

include/linux/err.h +5 -0
index 5b3c8bc..1bba498 100644
@@ -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.
include/linux/mtd/spi-nor.h new file +253 -0

253 lines not on this page · raw message

Signature · 1 line
1.9.1
author
#3 lore raw

PATCH v6 4/76 doc: device-tree-bindings: jedec, spi-nor

In reply to Jagan Teki

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

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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
doc/device-tree-bindings/mtd/jedec,spi-nor.txt new file +78 -0
new file mode 100644
index 0000000..2c91c03
@@ -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;
+	};
Signature · 1 line
1.9.1
author
#4 lore raw

PATCH v6 5/76 mtd: spi-nor: Add Kconfig entry for MTD_SPI_NOR

In reply to Jagan Teki

Added kconfig entry for MTD_SPI_NOR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
drivers/mtd/spi-nor/Kconfig +18 -0
index d32486c..f0ea9f9 100644
@@ -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
Signature · 1 line
1.9.1
author
#5 lore raw

PATCH v6 6/76 mtd: spi-nor: Add kconfig for MTD_SPI_NOR_USE_4K_SECTORS

In reply to Jagan Teki

Added kconfig entry for MTD_SPI_NOR_USE_4K_SECTORS.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
drivers/mtd/spi-nor/Kconfig +14 -0
index f0ea9f9..374cdcb 100644
@@ -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
Signature · 1 line
1.9.1
author
#6 lore raw

PATCH v6 7/76 mtd: spi-nor: Add MTD support

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/spi-nor.c | 275 +++++++++++++++++++++++++-----------------
 1 file changed, 166 insertions(+), 109 deletions(-)
drivers/mtd/spi-nor/spi-nor.c +166 -109
index f142ae4..b867ce9 100644
@@ -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");
 	}
Signature · 1 line
1.9.1
author
#7 lore raw

PATCH v6 8/76 mtd: spi-nor: Add spi_nor support in m25p80

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/m25p80.c | 236 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 236 insertions(+)
drivers/mtd/spi-nor/m25p80.c +236 -0
index 833a9c3..57e54d0 100644
@@ -10,14 +10,249 @@
 #include <dm.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;
+}
+
+void __weak flash_copy_mmap(void *data, void *offset, size_t len)
+{
+	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 +269,5 @@ U_BOOT_DRIVER(m25p80) = {
 	.id		= UCLASS_MTD,
 	.of_match	= m25p_ids,
 	.probe		= m25p_probe,
+	.priv_auto_alloc_size = sizeof(struct m25p),
 };
Signature · 1 line
1.9.1
author
#8 lore raw

PATCH v6 9/76 mtd: spi-nor: Add dm spi-nor probing

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 cmd/sf.c                            |  4 ++--
 common/env_sf.c                     |  4 ++--
 drivers/mtd/spi-nor/Kconfig         |  5 +++++
 drivers/mtd/spi-nor/Makefile        |  2 ++
 drivers/mtd/spi-nor/spi-nor-probe.c | 30 ++++++++++++++++++++++++++++++
 include/spi_flash.h                 | 11 ++++++++++-
 6 files changed, 51 insertions(+), 5 deletions(-)
 create mode 100644 drivers/mtd/spi-nor/spi-nor-probe.c
cmd/sf.c +2 -2
index 42862d9..e4d1274 100644
@@ -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_MTD_DM_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_MTD_DM_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) {
common/env_sf.c +2 -2
index 892e6cb..6d5d847 100644
@@ -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_MTD_DM_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_MTD_DM_SPI_NOR)
 	struct udevice *new;
 
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
drivers/mtd/spi-nor/Kconfig +5 -0
index 374cdcb..59bb943 100644
@@ -1,5 +1,6 @@
 menuconfig MTD_SPI_NOR
 	tristate "SPI-NOR device support"
+	select MTD_DM_SPI_NOR
 	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,10 @@ 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 MTD_DM_SPI_NOR
+	tristate
+	depends on DM_SPI && MTD
+
 if MTD_SPI_NOR
 
 config MTD_M25P80
drivers/mtd/spi-nor/Makefile +2 -0
index 9ab6e3d..71e7ae2 100644
@@ -6,6 +6,8 @@
 ifdef CONFIG_MTD_SPI_NOR
 obj-y += spi-nor.o
 obj-y += spi-nor-ids.o
+
+obj-$(CONFIG_MTD_DM_SPI_NOR)	+= spi-nor-probe.o
 endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
drivers/mtd/spi-nor/spi-nor-probe.c new file +30 -0
new file mode 100644
index 0000000..c808a7d
@@ -0,0 +1,30 @@
+/*
+ * 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 name[30], *str;
+	int ret;
+
+	snprintf(name, sizeof(name), "spi-nor@%d:%d", busnum, cs);
+	str = strdup(name);
+	ret = spi_get_bus_and_cs(busnum, cs, max_hz, spi_mode,
+				 "m25p80", str, &bus, &slave);
+	if (ret)
+		return ret;
+
+	*devp = slave->dev;
+	return 0;
+}
include/spi_flash.h +10 -1
index d0ce9e7..db07b99 100644
@@ -108,6 +108,14 @@ struct spi_flash {
 #endif
 };
 
+#if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_MTD_DM_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,8 @@ 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 spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 		unsigned int max_hz, unsigned int spi_mode);
 
Signature · 1 line
1.9.1
author
#9 lore raw

PATCH v6 9/76 mtd: spi-nor: Add dm spi-nor probing

Hi Masahiro,

Quoted 75 lines · Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 cmd/sf.c                            |  4 ++--
 common/env_sf.c                     |  4 ++--
 drivers/mtd/spi-nor/Kconfig         |  5 +++++
 drivers/mtd/spi-nor/Makefile        |  2 ++
 drivers/mtd/spi-nor/spi-nor-probe.c | 30 ++++++++++++++++++++++++++++++
 include/spi_flash.h                 | 11 ++++++++++-
 6 files changed, 51 insertions(+), 5 deletions(-)
 create mode 100644 drivers/mtd/spi-nor/spi-nor-probe.c
cmd/sf.c +2 -2
index 42862d9..e4d1274 100644
@@ -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_MTD_DM_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_MTD_DM_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) {
common/env_sf.c +2 -2
index 892e6cb..6d5d847 100644
@@ -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_MTD_DM_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_MTD_DM_SPI_NOR)
        struct udevice *new;
 
        ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
drivers/mtd/spi-nor/Kconfig +1 -0
index 374cdcb..59bb943 100644
@@ -1,5 +1,6 @@
 menuconfig MTD_SPI_NOR
        tristate "SPI-NOR device support"
+       select MTD_DM_SPI_NOR
        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.

drivers/mtd/spi-nor/Kconfig menuconfig MTD_SPI_NOR · line 19

Quoted 7 lines
drivers/mtd/spi-nor/Kconfig +4 -0
@@ -12,6 +13,10 @@ 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 MTD_DM_SPI_NOR
+       tristate
+       depends on DM_SPI && MTD
+

Need some inputs here, my intention was not to add extra config MTD_DM_SPI_NOR on individual board configs. So MTD_SPI_NOR is selecting MTD_DM_SPI_NOR and there MTD_DM_SPI_NOR is depends on DM_SPI and MTD configs.

1) MTD_DM_SPI_NOR will select only If DM_SPI and MTD defined
2) MTD_DM_SPI_NOR will un-select if DM_SPI or MTD undefined

case 2) here is forcing MTD_DM_SPI_NOR selecting even if DM_SPI or MTD undefined, any idea how to fix this? I saw the Linux Documentation/kbuild/kconfig-language.txt have similar issue with "Adding common features and make the usage configurable" but couldn't find any solution.

Quoted 82 lines
drivers/mtd/spi-nor/Kconfig +0 -0
 if MTD_SPI_NOR
 
 config MTD_M25P80
drivers/mtd/spi-nor/Makefile +2 -0
index 9ab6e3d..71e7ae2 100644
@@ -6,6 +6,8 @@
 ifdef CONFIG_MTD_SPI_NOR
 obj-y += spi-nor.o
 obj-y += spi-nor-ids.o
+
+obj-$(CONFIG_MTD_DM_SPI_NOR)   += spi-nor-probe.o
 endif
 
 obj-$(CONFIG_MTD_M25P80)       += m25p80.o
drivers/mtd/spi-nor/spi-nor-probe.c new file +30 -0
new file mode 100644
index 0000000..c808a7d
@@ -0,0 +1,30 @@
+/*
+ * 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 name[30], *str;
+       int ret;
+
+       snprintf(name, sizeof(name), "spi-nor@%d:%d", busnum, cs);
+       str = strdup(name);
+       ret = spi_get_bus_and_cs(busnum, cs, max_hz, spi_mode,
+                                "m25p80", str, &bus, &slave);
+       if (ret)
+               return ret;
+
+       *devp = slave->dev;
+       return 0;
+}
include/spi_flash.h +10 -2
index d0ce9e7..db07b99 100644
@@ -108,6 +108,14 @@ struct spi_flash {
 #endif
 };
 
+#if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_MTD_DM_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,8 @@ 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 spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
                unsigned int max_hz, unsigned int spi_mode);
 
--
Quoted 2 lines

1.9.1

thanks!

Signature · 1 line
Jagan.
author
#10 lore raw

PATCH v6 10/76 mtd: spi-nor: Add spi_flash_probe for mtd-dm-spi-nor

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/spi-nor-probe.c | 15 +++++++++++++++
 include/spi_flash.h                 |  6 ++++++
 2 files changed, 21 insertions(+)
drivers/mtd/spi-nor/spi-nor-probe.c +15 -0
index c808a7d..9bc61ea 100644
@@ -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)
include/spi_flash.h +6 -0
index db07b99..45fda7a 100644
@@ -110,10 +110,16 @@ struct spi_flash {
 
 #if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_MTD_DM_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 {
Signature · 1 line
1.9.1
author
#11 lore raw

PATCH v6 11/76 mtd: spi-nor: Add spi_flash_free for mtd-dm-spi-nor

In reply to Jagan Teki

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

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/spi-nor-probe.c | 7 +++++++
 include/spi_flash.h                 | 3 +++
 2 files changed, 10 insertions(+)
drivers/mtd/spi-nor/spi-nor-probe.c +7 -0
index 9bc61ea..ccc3b6c 100644
@@ -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)
include/spi_flash.h +3 -0
index 45fda7a..e76ea11 100644
@@ -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 {
Signature · 1 line
1.9.1
author
#12 lore raw

PATCH v6 12/76 mtd: spi-nor: m25p80: Add spi_nor support for non-dm

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/m25p80.c | 108 ++++++++++++++++++++++++++++++++++++++-----
 include/spi_flash.h          |  18 +++++++-
 2 files changed, 112 insertions(+), 14 deletions(-)
drivers/mtd/spi-nor/m25p80.c +96 -12
index 57e54d0..f0340a5 100644
@@ -19,6 +19,9 @@
 struct m25p {
 	struct spi_slave	*spi;
 	struct spi_nor		spi_nor;
+#ifndef CONFIG_MTD_DM_SPI_NOR
+	struct mtd_info		mtd;
+#endif
 };
 
 static int spi_read_then_write(struct spi_slave *spi, const u8 *cmd,
@@ -179,16 +182,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;
@@ -196,10 +196,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) {
@@ -251,10 +247,33 @@ err_scan:
 	spi_release_bus(spi);
 err_mtd:
 	spi_free_slave(spi);
-	device_remove(dev);
 	return ret;
 }
 
+#ifdef CONFIG_MTD_DM_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
@@ -271,3 +290,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_MTD_DM_SPI_NOR */
include/spi_flash.h +16 -2
index e76ea11..1165199 100644
@@ -108,10 +108,12 @@ struct spi_flash {
 #endif
 };
 
-#if defined(CONFIG_MTD_SPI_NOR) && defined(CONFIG_MTD_DM_SPI_NOR)
+#ifdef CONFIG_MTD_SPI_NOR
 
 typedef struct mtd_info spi_flash_t;
 
+#ifdef CONFIG_MTD_DM_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_MTD_DM_SPI_NOR */
+
+#endif /* CONFIG_MTD_SPI_NOR */
 
 struct dm_spi_flash_ops {
 	int (*read)(struct udevice *dev, u32 offset, size_t len, void *buf);
Signature · 1 line
1.9.1
author
#13 lore raw

PATCH v6 13/76 sf: Rename erase_size to erasesize

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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(-)
drivers/mtd/spi/sf_dataflash.c +2 -2
index b2a56da..0f66b99 100644
@@ -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");
drivers/mtd/spi/spi_flash.c +7 -7
index 8a60c72..17eb0e9 100644
@@ -328,7 +328,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;
@@ -795,7 +795,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;
 	/*
@@ -1082,17 +1082,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);
@@ -1164,7 +1164,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);
include/spi_flash.h +2 -2
index 1165199..c68df26 100644
@@ -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;
Signature · 1 line
1.9.1
author
#14 lore raw

PATCH v6 14/76 sf: Use erasesize instead of sector_size

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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(-)
cmd/sf.c +10 -10
index e4d1274..c20c901 100644
@@ -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,
drivers/dfu/dfu_sf.c +4 -4
index 9702eee..13e7f92 100644
@@ -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")) {
drivers/mtd/spi/sf_mtd.c +1 -1
index 0b9cb62..9a8302d 100644
@@ -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);
 }
drivers/mtd/spi/spi_flash.c +0 -3
index 17eb0e9..891e1ec 100644
@@ -1091,9 +1091,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) {
Signature · 1 line
1.9.1
author
#15 lore raw

PATCH v6 15/76 sf: Use uint64_t for flash->size

In reply to Jagan Teki

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

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 cmd/sf.c            | 4 ++--
 include/spi_flash.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
cmd/sf.c +2 -2
index c20c901..0fda27c 100644
@@ -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;
 	}
include/spi_flash.h +1 -1
index c68df26..e4d1d78 100644
@@ -70,7 +70,7 @@ struct spi_flash {
 	u8 shift;
 	u16 flags;
 
-	u32 size;
+	uint64_t size;
 	u32 page_size;
 	u32 sector_size;
 	u32 erasesize;
Signature · 1 line
1.9.1
author
#16 lore raw

PATCH v6 16/76 spi_flash: Use mtd_info operation for SPI-NOR

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 include/spi_flash.h | 60 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 48 insertions(+), 12 deletions(-)
include/spi_flash.h +48 -12
index e4d1d78..9c8e52c 100644
@@ -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_MTD_DM_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_MTD_DM_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 {
@@ -259,18 +307,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);
 
Signature · 1 line
1.9.1
author
#17 lore raw

PATCH v6 17/76 spi_flash: Use spi_flash_t instead of struct spi_flash

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 cmd/sf.c            | 10 +++++-----
 common/env_sf.c     |  2 +-
 include/spi_flash.h |  2 ++
 3 files changed, 8 insertions(+), 6 deletions(-)
cmd/sf.c +5 -5
index 0fda27c..5dd7177 100644
@@ -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;
common/env_sf.c +1 -1
index 6d5d847..cf909c0 100644
@@ -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)
include/spi_flash.h +2 -0
index 9c8e52c..29c07f5 100644
@@ -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)
 {
Signature · 1 line
1.9.1
author
#18 lore raw

PATCH v6 18/76 mtd: spi-nor: Move spi_read_then_write to spi layer

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/m25p80.c | 25 -------------------------
 drivers/spi/spi-uclass.c     | 25 +++++++++++++++++++++++++
 drivers/spi/spi.c            | 25 +++++++++++++++++++++++++
 include/spi.h                |  5 +++++
 4 files changed, 55 insertions(+), 25 deletions(-)
drivers/mtd/spi-nor/m25p80.c +0 -25
index f0340a5..4aefe93 100644
@@ -24,31 +24,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;
drivers/spi/spi-uclass.c +25 -0
index 677c020..7728eac 100644
@@ -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 */
drivers/spi/spi.c +25 -0
index 7d81fbd..a050386 100644
@@ -39,6 +39,31 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,
 	return ptr;
 }
 
+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)
include/spi.h +5 -0
index 4b88d39..19589aa 100644
@@ -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);
 
Signature · 1 line
1.9.1
author
#19 lore raw

PATCH v6 19/76 spi: Rename spi_read_then_write to spi_write_then_read

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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(-)
drivers/mtd/spi-nor/m25p80.c +4 -4
index 4aefe93..7e2702d 100644
@@ -39,7 +39,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;
@@ -65,7 +65,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;
@@ -119,7 +119,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;
@@ -146,7 +146,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;
drivers/spi/spi-uclass.c +9 -10
index 7728eac..0dfdd8b 100644
@@ -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;
drivers/spi/spi.c +9 -10
index a050386..c8051f9 100644
@@ -39,26 +39,25 @@ void *spi_do_alloc_slave(int offset, int size, unsigned int bus,
 	return ptr;
 }
 
-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;
include/spi.h +19 -4
index 19589aa..dd0b11b 100644
@@ -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);
Signature · 1 line
1.9.1
author
#20 lore raw

PATCH v6 20/76 mtd: spi-nor: Rename SPI_FLASH_BAR to SPI_NOR_BAR

In reply to Jagan Teki

Renamed SPI_FLASH_BAR to SPI_NOR_BAR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/spi-nor.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/mtd/spi-nor/spi-nor.c +7 -7
index b867ce9..130f7af 100644
@@ -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
 
Signature · 1 line
1.9.1
author
#21 lore raw

PATCH v6 21/76 mtd: spi-nor: Add Kconfig entry for SPI_NOR_BAR

In reply to Jagan Teki

Added kconfig entry for SPI_NOR_BAR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/mtd/spi-nor/Kconfig +7 -0
index 59bb943..43f59b7 100644
@@ -49,4 +49,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
Signature · 1 line
1.9.1
author
#22 lore raw

PATCH v6 22/76 mtd: spi-nor: Copy spl files from drivers/mtd/spi

In reply to Jagan Teki

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

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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
drivers/mtd/spi-nor/Makefile +5 -0
index 71e7ae2..4d27811 100644
@@ -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
drivers/mtd/spi-nor/fsl_espi_spl.c new file +90 -0

90 lines not on this page · raw message

drivers/mtd/spi-nor/spi_spl_load.c new file +90 -0

90 lines not on this page · raw message

Signature · 1 line
1.9.1
author
#23 lore raw

PATCH v6 23/76 mtd: spi-nor: spl: Follow ascending order of include headers

In reply to Jagan Teki

Use ascending order while including headers files.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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(-)
drivers/mtd/spi-nor/fsl_espi_spl.c +1 -1
index b915469..7c40245 100644
@@ -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
drivers/mtd/spi-nor/spi_spl_load.c +1 -1
index ca56fe9..285b6da 100644
@@ -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
Signature · 1 line
1.9.1
author
#24 lore raw

PATCH v6 24/76 mtd: spi-nor: fsl_espi_spl: Use mtd_info

In reply to Jagan Teki

Replace spi_flash{} with mtd_info{}

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/fsl_espi_spl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/mtd/spi-nor/fsl_espi_spl.c +2 -2
index 7c40245..93b0b2e 100644
@@ -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);
Signature · 1 line
1.9.1
author
#25 lore raw

PATCH v6 25/76 mtd: spi-nor: spi_spl_load: Use mtd_info

In reply to Jagan Teki

Replace spi_flash{} with mtd_info{}

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/spi_spl_load.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/mtd/spi-nor/spi_spl_load.c +2 -3
index 285b6da..9f33826 100644
@@ -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;
 
 	/*
Signature · 1 line
1.9.1
author
#26 lore raw

PATCH v6 26/76 mtd: spi-nor: Add flash vendor Kconfig entries

In reply to Jagan Teki

Added flash vendor kconfig entries from drivers/mtd/spi

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
drivers/mtd/spi-nor/Kconfig +40 -0
index 43f59b7..219306f 100644
@@ -56,4 +56,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
Signature · 1 line
1.9.1
author
#27 lore raw

PATCH v6 27/76 arm: zynq: Kconfig: Select MTD uclass

In reply to Jagan Teki

Since SPI-NOR core relies on MTD uclass.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/Kconfig +1 -0
index d2dbb1a..2dc2191 100644
@@ -565,6 +565,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
 
Signature · 1 line
1.9.1
author
#28 lore raw

PATCH v6 28/76 arm: zynq: Kconfig: Drop DM_SPI_FLASH

In reply to Jagan Teki

Drop using legacy DM_SPI_FLASH.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 arch/arm/Kconfig | 1 -
 1 file changed, 1 deletion(-)
arch/arm/Kconfig +0 -1
index 2dc2191..b26dddb 100644
@@ -566,7 +566,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
Signature · 1 line
1.9.1
author
#29 lore raw

PATCH v6 29/76 defconfigs: zynq_microzed: Drop CONFIG_SPI_FLASH

In reply to Jagan Teki

Drop using legacy spi_flash core.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 configs/zynq_microzed_defconfig | 1 -
 1 file changed, 1 deletion(-)
configs/zynq_microzed_defconfig +0 -1
index a3a66ec..c181537 100644
@@ -13,7 +13,6 @@ 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_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
Signature · 1 line
1.9.1
author
#30 lore raw

PATCH v6 30/76 defconfig: zynq_microzed: Enable CONFIG_MTD_M25P80

In reply to Jagan Teki

Use m25p80 which is flash interface layer between spi-nor core vs drivers/spi

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 configs/zynq_microzed_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/zynq_microzed_defconfig +1 -0
index c181537..79f2913 100644
@@ -18,3 +18,4 @@ CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
+CONFIG_MTD_M25P80=y
Signature · 1 line
1.9.1
author
#31 lore raw

PATCH v6 31/76 defconfig: zynq_microzed: Enable CONFIG_MTD_SPI_NOR

In reply to Jagan Teki

Enabled SPI-NOR core support

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 configs/zynq_microzed_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/zynq_microzed_defconfig +1 -0
index 79f2913..db02ba3 100644
@@ -19,3 +19,4 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_ZYNQ_GEM=y
 CONFIG_ZYNQ_QSPI=y
 CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
Signature · 1 line
1.9.1
author
#32 lore raw

PATCH v6 32/76 spl: Add CONFIG_SPL_SPI_NOR_SUPPORT

In reply to Jagan Teki

Add SPL support for SPI-NOR flash.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/Makefile | 1 +
 1 file changed, 1 insertion(+)
drivers/Makefile +1 -0
index e7eab66..1d179b9 100644
@@ -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/
Signature · 1 line
1.9.1
author
#33 lore raw

PATCH v6 33/76 configs: zynq: Use CONFIG_SPL_SPI_NOR_SUPPORT

In reply to Jagan Teki

Use SPI-NOR SPL support for zynq boards.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 include/configs/zynq-common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/configs/zynq-common.h +1 -1
index e8c3ef0..7427d22 100644
@@ -346,7 +346,7 @@
 #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_SYS_SPI_U_BOOT_OFFS	0x100000
 #define CONFIG_SYS_SPI_ARGS_OFFS	0x200000
 #define CONFIG_SYS_SPI_ARGS_SIZE	0x80000
Signature · 1 line
1.9.1
author
#34 lore raw

PATCH v6 34/76 configs: zynq: Use CONFIG_SPL_MTD_SUPPORT

In reply to Jagan Teki

Since SPI-NOR depends on MTD core enable the same for SPI-NOR SPL.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 include/configs/zynq-common.h | 1 +
 1 file changed, 1 insertion(+)
include/configs/zynq-common.h +1 -0
index 7427d22..582b2a3 100644
@@ -347,6 +347,7 @@
 #define CONFIG_SPL_SPI_SUPPORT
 #define CONFIG_SPL_SPI_LOAD
 #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
Signature · 1 line
1.9.1
author
#35 lore raw

PATCH v6 35/76 mtd: spi-nor: Copy sf_dataflash

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 701 +++++++++++++++++++++++++++++++++++++
 1 file changed, 701 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/sf_dataflash.c
drivers/mtd/spi-nor/sf_dataflash.c new file +701 -0
new file mode 100644
index 0000000..b2a56da
@@ -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,
+};
Signature · 1 line
1.9.1
author
#36 lore raw

PATCH v6 36/76 mtd: dataflash: Remove unneeded spi data

In reply to Jagan Teki

dataflash doesn't require options, memory_map from spi.

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +1 -5
index b2a56da..6a9dfef 100644
@@ -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;
Signature · 1 line
1.9.1
author
#37 lore raw

PATCH v6 37/76 mtd: dataflash: Move flash id detection into jedec_probe

In reply to Jagan Teki

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 <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +10 -9
index 6a9dfef..7c6c8d2 100644
@@ -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,
Signature · 1 line
1.9.1
author
#38 lore raw

PATCH v6 38/76 mtd: dataflash: Fix add_dataflash return logic

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 127 ++++++++++++++++++-------------------
 1 file changed, 61 insertions(+), 66 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +61 -66
index 7c6c8d2..212aa69 100644
@@ -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;
 }
 
Signature · 1 line
1.9.1
author
#39 lore raw

PATCH v6 39/76 mtd: dataflash: Add UCLASS_MTD support

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 216 ++++++++++++++++++-------------------
 1 file changed, 108 insertions(+), 108 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +108 -108
index 212aa69..722ab7e 100644
@@ -2,6 +2,7 @@
  *
  * Atmel DataFlash probing
  *
+ * Copyright (C) 2016 Jagan Teki <[email protected]>
  * 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;
@@ -657,7 +664,7 @@ static int spi_dataflash_probe(struct udevice *dev)
 	/* obsolete AT45DB1282 not (yet?) supported */
 	default:
 		dev_info(&spi->dev, "unsupported device (%x)\n",
-				 status & 0x3c);
+			 status & 0x3c);
 		status = -ENODEV;
 		goto err_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,
 };
Signature · 1 line
1.9.1
author
#40 lore raw

PATCH v6 40/76 mtd: dataflash: Use spi_write_then_read

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +11 -10
index 722ab7e..525af0a 100644
@@ -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);
Signature · 1 line
1.9.1
author
#41 lore raw

PATCH v6 41/76 mtd: dataflash: Drop sf_internal.h

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +2 -3
index 525af0a..9943560 100644
@@ -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;
 
 	/*
Signature · 1 line
1.9.1
author
#42 lore raw

PATCH v6 42/76 mtd: dataflash: Minor cleanups

In reply to Jagan Teki

- 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 <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/sf_dataflash.c | 51 ++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 29 deletions(-)
drivers/mtd/spi-nor/sf_dataflash.c +22 -29
index 9943560..2a5f5ae 100644
@@ -1,5 +1,4 @@
 /*
- *
  * Atmel DataFlash probing
  *
  * Copyright (C) 2016 Jagan Teki <[email protected]>
@@ -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),
 };
Signature · 1 line
1.9.1
author
#43 lore raw

PATCH v6 43/76 mtd: Rename sf_dataflash.c to mtd_dataflash.c

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 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%)
drivers/mtd/spi-nor/Makefile +1 -0
index 4d27811..0f5e3cc 100644
@@ -16,3 +16,4 @@ obj-$(CONFIG_MTD_DM_SPI_NOR)	+= spi-nor-probe.o
 endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
+obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
drivers/mtd/spi-nor/mtd_dataflash.c renamed from drivers/mtd/spi-nor/sf_dataflash.c +0 -0
similarity index 100%
rename from drivers/mtd/spi-nor/sf_dataflash.c
rename to drivers/mtd/spi-nor/mtd_dataflash.c
Signature · 1 line
1.9.1
author
#44 lore raw

PATCH v6 44/76 mtd: spi-nor: Add Kconfig entry for mtd_dataflash

In reply to Jagan Teki

Added kconfig entry for MTD_DATAFLASH

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
drivers/mtd/spi-nor/Kconfig +15 -0
index 219306f..15e8432 100644
@@ -97,3 +97,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
Signature · 1 line
1.9.1
author
#45 lore raw

PATCH v6 45/76 mtd: dataflash: Add MTD_DATAFLASH_WRITE_VERIFY

In reply to Jagan Teki

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

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/mtd_dataflash.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/mtd/spi-nor/mtd_dataflash.c +2 -2
index 2a5f5ae..fae862e 100644
@@ -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;
Signature · 1 line
1.9.1
author
#46 lore raw

PATCH v6 46/76 mtd: spi-nor: Add kconfig MTD_DATAFLASH_WRITE_VERIFY

In reply to Jagan Teki

Added kconfig entry for MTD_DATAFLASH_WRITE_VERIFY

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
Cc Haikun Wang <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig | 10 ++++++++++
 1 file changed, 10 insertions(+)
drivers/mtd/spi-nor/Kconfig +10 -0
index 15e8432..f039a9d 100644
@@ -112,3 +112,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.
Signature · 1 line
1.9.1
author
#47 lore raw

PATCH v6 47/76 configs: ls1021aqds: Drop DM_SPI_FLASH and DATAFLASH

In reply to Jagan Teki

Dropped DM_SPI_FLASH and SPI_FLASH_DATAFLASH

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
---
 include/configs/ls1021aqds.h | 2 --
 1 file changed, 2 deletions(-)
include/configs/ls1021aqds.h +0 -2
index f6efc55..c783eb9 100644
@@ -421,8 +421,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
 
Signature · 1 line
1.9.1
author
#48 lore raw

PATCH v6 48/76 defconfig: ls1021aqds_qspi: Enable SPI-NOR

In reply to Jagan Teki

Enable SPI-NOR with MTD uclass.

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
---
 configs/ls1021aqds_qspi_defconfig | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
configs/ls1021aqds_qspi_defconfig +3 -1
index 0f740fd..1638b19 100644
@@ -7,7 +7,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
Signature · 1 line
1.9.1
author
#49 lore raw

PATCH v6 49/76 defconfig: ls1021aqds_qspi: Enable CONFIG_MTD_DATAFLASH

In reply to Jagan Teki

Enable CONFIG_MTD_DATAFLASH

Cc Bin Meng <[email protected]>
Cc Simon Glass <[email protected]>
Cc York Sun <[email protected]>
---
 configs/ls1021aqds_qspi_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/ls1021aqds_qspi_defconfig +1 -0
index 1638b19..a3cade5 100644
@@ -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_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
Signature · 1 line
1.9.1
author
#50 lore raw

PATCH v6 50/76 mtd: spi-nor: Copy sandbox

In reply to Jagan Teki

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

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 drivers/mtd/spi-nor/Makefile  |   1 +
 drivers/mtd/spi-nor/sandbox.c | 697 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 698 insertions(+)
 create mode 100644 drivers/mtd/spi-nor/sandbox.c
drivers/mtd/spi-nor/Makefile +1 -0
index 0f5e3cc..d6edf1a 100644
@@ -17,3 +17,4 @@ endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
 obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
+obj-$(CONFIG_SPI_FLASH_SANDBOX)	+= sandbox.o
drivers/mtd/spi-nor/sandbox.c new file +697 -0

697 lines not on this page · raw message

Signature · 1 line
1.9.1
author
#51 lore raw

PATCH v6 51/76 mtd: spi-nor: sandbox: Use spi-nor header

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
---
 drivers/mtd/spi-nor/sandbox.c | 49 +++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 25 deletions(-)
drivers/mtd/spi-nor/sandbox.c +24 -25
index 895604d..3cfb47c 100644
@@ -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;
@@ -166,7 +166,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;
@@ -255,45 +255,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 {
@@ -361,8 +361,7 @@ 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 >>
-					(8 * (IDCODE_LEN - 1 - sbsf->off));
+				id = JEDEC_ID(sbsf->data) >> (8 * (IDCODE_LEN - 1 - sbsf->off));
 			} else {
 				id = 0;
 			}
@@ -394,11 +393,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:
Signature · 1 line
1.9.1
author
#52 lore raw

PATCH v6 52/76 mtd: spi-nor: Add SPI_NOR_SANBOX

In reply to Jagan Teki

To follow spi-nor notation replaced CONFIG_SPI_FLASH_SANDBOX with CONFIG_SPI_NOR_SANDBOX.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig  | 10 ++++++++++
 drivers/mtd/spi-nor/Makefile |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)
drivers/mtd/spi-nor/Kconfig +10 -0
index f039a9d..62439f4 100644
@@ -96,6 +96,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
drivers/mtd/spi-nor/Makefile +1 -1
index d6edf1a..61611f5 100644
@@ -17,4 +17,4 @@ endif
 
 obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
 obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
-obj-$(CONFIG_SPI_FLASH_SANDBOX)	+= sandbox.o
+obj-$(CONFIG_SPI_NOR_SANDBOX)	+= sandbox.o
Signature · 1 line
1.9.1
author
#53 lore raw

PATCH v6 53/76 sandbox: kconfig: Drop DM_SPI_FLASH

In reply to Jagan Teki

Drop using legacy DM_SPI_FLASH.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 arch/Kconfig | 1 -
 1 file changed, 1 deletion(-)
arch/Kconfig +0 -1
index ec12013..0c02099 100644
@@ -87,7 +87,6 @@ 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
Signature · 1 line
1.9.1
author
#54 lore raw

PATCH v6 54/76 sandbox: kconfig: Select MTD uclass

In reply to Jagan Teki

Since SPI-NOR core relies on MTD uclass.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 arch/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/Kconfig +1 -0
index 0c02099..2c58b9a 100644
@@ -91,6 +91,7 @@ config SANDBOX
 	select DM_I2C
 	select DM_SPI
 	select DM_GPIO
+	select MTD
 
 config SH
 	bool "SuperH architecture"
Signature · 1 line
1.9.1
author
#55 lore raw

PATCH v6 55/76 defconfigs: sandbox: Enable SPI-NOR

In reply to Jagan Teki

Enable SPI-NOR framework, MTD_M25P80 and MTD_SPI_NOR.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 configs/sandbox_defconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
configs/sandbox_defconfig +2 -2
index b5b81ca..14b0dfc 100644
@@ -40,8 +40,8 @@ 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_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
Signature · 1 line
1.9.1
author
#56 lore raw

PATCH v6 56/76 mtd: sandbox: Use CONFIG_MTD_SPI_NOR

In reply to Jagan Teki

Replace CONFIG_SPI_FLASH with CONFIG_MTD_SPI_NOR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 drivers/mtd/spi-nor/sandbox.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mtd/spi-nor/sandbox.c +1 -1
index 3cfb47c..c489ea9 100644
@@ -533,7 +533,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)
 {
Signature · 1 line
1.9.1
author
#57 lore raw

PATCH v6 57/76 defconfigs: sandbox: Enable SPI_NOR_SANDBOX

In reply to Jagan Teki

Enable updated SPI-NOR sandbox driver.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
---
 configs/sandbox_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/sandbox_defconfig +1 -0
index 14b0dfc..0d8815a 100644
@@ -40,6 +40,7 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SANDBOX=y
 CONFIG_RESET=y
 CONFIG_DM_MMC=y
+CONFIG_SPI_NOR_SANDBOX=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
Signature · 1 line
1.9.1
author
#58 lore raw

PATCH v6 58/76 spi_flash: Use spi_flash_t

In reply to Jagan Teki

Use spi_flash_t instead of struct spi_flash.

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 board/Arcturus/ucp1020/cmd_arc.c         | 2 +-
 board/Synology/common/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 +-
 13 files changed, 18 insertions(+), 18 deletions(-)
board/Arcturus/ucp1020/cmd_arc.c +1 -1
index fa6b485..9f98d6d 100644
@@ -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)
board/Synology/common/cmd_syno.c +1 -1
index 20544e2..1d0f3e7 100644
@@ -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;
board/buffalo/lsxl/lsxl.c +1 -1
index 0f37345..298d26e 100644
@@ -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);
board/congatec/cgtqmx6eval/cgtqmx6eval.c +1 -1
index 225de7c..8db2b9e 100644
@@ -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;
board/davinci/da8xxevm/da850evm.c +1 -1
index b82385a..356d3ce 100644
@@ -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,
board/renesas/sh7752evb/sh7752evb.c +2 -2
index 3aad532..35360fd 100644
@@ -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) {
board/renesas/sh7753evb/sh7753evb.c +2 -2
index 52a1906..8d609ec 100644
@@ -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) {
board/renesas/sh7757lcr/sh7757lcr.c +3 -3
index ddcf275..9793f1f 100644
@@ -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) {
board/siemens/taurus/taurus.c +1 -1
index 72c5e60..663db59 100644
@@ -122,7 +122,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();
common/splash_source.c +1 -1
index a09dd4b..3393f73 100644
@@ -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) {
drivers/dfu/dfu_sf.c +2 -2
index 13e7f92..48eb546 100644
@@ -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)) {
drivers/net/fm/fm.c +1 -1
index 40fbf19..d6c7003 100644
@@ -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;
 
drivers/net/phy/cortina.c +1 -1
index f975fd8..f7961a4 100644
@@ -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,
Signature · 1 line
1.9.1
author
#59 lore raw

PATCH v6 59/76 mtd: spi-nor: Add CONFIG_SPI_NOR_MISC

In reply to Jagan Teki

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 <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 drivers/mtd/spi-nor/Kconfig       | 17 ++++-------------
 drivers/mtd/spi-nor/spi-nor-ids.c | 21 ++++++++++++++-------
 2 files changed, 18 insertions(+), 20 deletions(-)
drivers/mtd/spi-nor/Kconfig +4 -13
index 62439f4..3a82c49 100644
@@ -56,20 +56,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_FLASH_MACRONIX
 	bool "Macronix SPI flash support"
drivers/mtd/spi-nor/spi-nor-ids.c +14 -7
index 2599731..f6ee627 100644
@@ -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_FLASH_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
 	{ },
 };
Signature · 1 line
1.9.1
author
#60 lore raw

PATCH v6 60/76 config: Enable SPI-NOR framework

In reply to Jagan Teki

New SPI-NOR framework use below configs

- CONFIG_MTD
- CONFIG_MTD_M25P80
- CONFIG_MTD_SPI_NOR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 arch/Kconfig                                           | 2 +-
 arch/arm/Kconfig                                       | 8 ++++----
 arch/arm/mach-rockchip/Kconfig                         | 2 +-
 arch/arm/mach-tegra/Kconfig                            | 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/chromebook_link_defconfig                      | 3 ++-
 configs/chromebox_panther_defconfig                    | 3 ++-
 configs/clearfog_defconfig                             | 3 ++-
 configs/cm_fx6_defconfig                               | 3 ++-
 configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  | 3 ++-
 configs/controlcenterd_36BIT_SDCARD_defconfig          | 3 ++-
 configs/coreboot-x86_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                           | 3 ++-
 configs/dra7xx_evm_qspiboot_defconfig                  | 3 ++-
 configs/dra7xx_evm_uart3_defconfig                     | 3 ++-
 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/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/lager_defconfig                                | 3 ++-
 configs/ls1021atwr_qspi_defconfig                      | 3 ++-
 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/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/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_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/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 ++-
 448 files changed, 894 insertions(+), 454 deletions(-)
arch/Kconfig +1 -1
index 2c58b9a..4aa4dd5 100644
@@ -113,7 +113,7 @@ config X86
 	select DM_SERIAL
 	select DM_GPIO
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 
 endchoice
 
arch/arm/Kconfig +4 -4
index b26dddb..193e9bb 100644
@@ -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,7 +220,7 @@ config TARGET_STV0991
 	select DM
 	select DM_SERIAL
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 	select SPI_FLASH
 
 config TARGET_X600
@@ -422,7 +422,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
@@ -511,7 +511,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
arch/arm/mach-rockchip/Kconfig +1 -1
index d3bddb7..a515a5c 100644
@@ -32,7 +32,7 @@ config DM_SERIAL
 config DM_SPI
 	default y
 
-config DM_SPI_FLASH
+config MTD
 	default y
 
 config DM_I2C
arch/arm/mach-tegra/Kconfig +1 -1
index 0b2852c..48d2869 100644
@@ -11,7 +11,7 @@ config TEGRA_COMMON
 	select DM_PCI_COMPAT
 	select DM_SERIAL
 	select DM_SPI
-	select DM_SPI_FLASH
+	select MTD
 	select OF_CONTROL
 
 config TEGRA_ARMV7_COMMON
configs/B4420QDS_NAND_defconfig +2 -1
index e50833a..65b8ec1 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=y
 CONFIG_SPL=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
configs/B4420QDS_SPIFLASH_defconfig +2 -1
index b53a1cf..f7c1010 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=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
configs/B4420QDS_defconfig +2 -1
index 8308b95..937a475 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=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
configs/B4860QDS_NAND_defconfig +2 -1
index a8f05db..f5145a9 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=y
 CONFIG_SPL=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
configs/B4860QDS_SECURE_BOOT_defconfig +2 -1
index 1a61dc3..6fcde70 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_B4860,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/B4860QDS_SPIFLASH_defconfig +2 -1
index 0875ee7..676ab28 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=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
configs/B4860QDS_SRIO_PCIE_BOOT_defconfig +2 -1
index 11db5bc..2e36e14 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_B4860QDS=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
configs/B4860QDS_defconfig +2 -1
index 54ceec7..9d7079d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_B4860QDS=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
configs/BSC9131RDB_NAND_SYSCLK100_defconfig +2 -1
index 5e0e09b..9e8122a 100644
@@ -5,7 +5,8 @@ CONFIG_SPL=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
configs/BSC9131RDB_NAND_defconfig +2 -1
index 4f666f1..386625a 100644
@@ -5,7 +5,8 @@ CONFIG_SPL=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
configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig +2 -1
index ca90c83..73b5b75 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_BSC9131RDB=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
configs/BSC9131RDB_SPIFLASH_defconfig +2 -1
index 2902a68..4b02146 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_BSC9131RDB=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
configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig +2 -1
index 15e3862..bea6d1f 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_NAND_DDRCLK100_defconfig +2 -1
index 48f1c3c..a2b2239 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SPL=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
configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig +2 -1
index b909789..7e6b12b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_NAND_DDRCLK133_defconfig +2 -1
index 06b411d..9e6135e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SPL=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
configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig +2 -1
index 6f37d36..711f801 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_NOR_DDRCLK100_defconfig +2 -1
index 4993dc9..578c79a 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig +2 -1
index d69047e..00e44c6 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_NOR_DDRCLK133_defconfig +2 -1
index f9129ca..3c439f5 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig +2 -1
index d11e9e3..b409876 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig +2 -1
index 4c22ce6..bd45600 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig +2 -1
index f350c34..06944d5 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig +2 -1
index 1862f0c..8e41abd 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig +2 -1
index 5173a5b..79f4352 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig +2 -1
index a1a5cd3..0bdca24 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig +2 -1
index 14ed190..317a272 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig +2 -1
index 6e5fbaf..c08faf5 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_BSC9132QDS=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
configs/C29XPCIE_NAND_defconfig +2 -1
index bef3771..8e615d0 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_C29XPCIE=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/C29XPCIE_NOR_SECBOOT_defconfig +2 -1
index 110e597..ada892c 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_C29XPCIE=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SECURE_BOOT"
-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
configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig +2 -1
index de0beb6..6b431ad 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_C29XPCIE=y
 CONFIG_SYS_EXTRA_OPTIONS="C29XPCIE,36BIT,SPIFLASH,SECURE_BOOT"
-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
configs/C29XPCIE_SPIFLASH_defconfig +2 -1
index d2d9262..688f007 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_C29XPCIE=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
configs/C29XPCIE_defconfig +2 -1
index 373db16..11a2b4d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_C29XPCIE=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
configs/M52277EVB_defconfig +2 -1
index 711a411..9683bb9 100644
@@ -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
configs/M52277EVB_stmicro_defconfig +2 -1
index 05d20d6..7ca2611 100644
@@ -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
configs/M54418TWR_defconfig +2 -1
index 62cebda..b019b63 100644
@@ -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
configs/M54418TWR_nand_mii_defconfig +2 -1
index de73e30..eedee6c 100644
@@ -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
configs/M54418TWR_nand_rmii_defconfig +2 -1
index 139811c..c8000a8 100644
@@ -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
configs/M54418TWR_nand_rmii_lowfreq_defconfig +2 -1
index a3cf48b..184936b 100644
@@ -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
configs/M54418TWR_serial_mii_defconfig +2 -1
index ad29d52..fd827e3 100644
@@ -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
configs/M54418TWR_serial_rmii_defconfig +2 -1
index 62cebda..b019b63 100644
@@ -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
configs/M54451EVB_defconfig +2 -1
index a9fe02f..62cf895 100644
@@ -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
configs/M54451EVB_stmicro_defconfig +2 -1
index f10e86c..447a506 100644
@@ -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
configs/M54455EVB_a66_defconfig +2 -1
index 3053514..f9d6f73 100644
@@ -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
configs/M54455EVB_defconfig +2 -1
index 9f70f7e..b9275b0 100644
@@ -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
configs/M54455EVB_i66_defconfig +2 -1
index 8421393..ddba2d5 100644
@@ -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
configs/M54455EVB_intel_defconfig +2 -1
index c630108..d3312c5 100644
@@ -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
configs/M54455EVB_stm33_defconfig +2 -1
index 4e8aee4..c3a4bb0 100644
@@ -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
configs/MPC8536DS_36BIT_defconfig +2 -1
index fdea51d..158f1cf 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=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
configs/MPC8536DS_SDCARD_defconfig +2 -1
index a7492fd..2664fb4 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=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
configs/MPC8536DS_SPIFLASH_defconfig +2 -1
index e2a4226..99e0e7b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=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
configs/MPC8536DS_defconfig +2 -1
index c07b84a..56d8929 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=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
configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig +2 -1
index c533f97..b8e864b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_36BIT_NAND_defconfig +2 -1
index 8c0f763..cd34f7e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig +2 -1
index c09e73e..3fcc68b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_36BIT_NOR_defconfig +2 -1
index 32580d8..d08fa95 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=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
configs/P1010RDB-PA_36BIT_SDCARD_defconfig +2 -1
index d656b21..1733ed7 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig +2 -1
index 7d31491..d6364ad 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig +2 -1
index 981d4db..06f570d 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PA_NAND_SECBOOT_defconfig +2 -1
index d49b5a7..43791a4 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_NAND_defconfig +2 -1
index f638ff2..8c9516e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1010RDB-PA_NOR_SECBOOT_defconfig +2 -1
index 8a4793d..e177b60 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_NOR_defconfig +2 -1
index f00c54f..f58ece4 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=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
configs/P1010RDB-PA_SDCARD_defconfig +2 -1
index 384d0e7..44d1049 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig +2 -1
index 751cc54..448de8c 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PA,SPIFLASH,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PA_SPIFLASH_defconfig +2 -1
index fc4afce..452fc30 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig +2 -1
index 40e2f26..7c9fd9d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_36BIT_NAND_defconfig +2 -1
index 6321123..c51ff2e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig +2 -1
index 982f829..fdd5864 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_36BIT_NOR_defconfig +2 -1
index 521a3d4..4e284d2 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=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
configs/P1010RDB-PB_36BIT_SDCARD_defconfig +2 -1
index ac6ee07..6726b95 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig +2 -1
index 2363aec..a10026b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig +2 -1
index 875e4d5..fd3061b 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PB_NAND_SECBOOT_defconfig +2 -1
index 51286af..2fcf134 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_NAND_defconfig +2 -1
index 47e249c..9aa22cd 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1010RDB-PB_NOR_SECBOOT_defconfig +2 -1
index aa68725..1487448 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_NOR_defconfig +2 -1
index c07fa85..80dd1af 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=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
configs/P1010RDB-PB_SDCARD_defconfig +2 -1
index 7a431b5..4c0cf13 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig +2 -1
index d3d9e49..e83fc7e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="P1010RDB_PB,SPIFLASH,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P1010RDB-PB_SPIFLASH_defconfig +2 -1
index 256bdf4..9a57911 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1010RDB=y
 CONFIG_SPL=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
configs/P1020RDB-PC_36BIT_NAND_defconfig +2 -1
index 0ecaaff..44c35ff 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1020RDB-PC_36BIT_SDCARD_defconfig +2 -1
index 32d3606..f1ea15a 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig +2 -1
index da260a7..00cfedd 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PC_36BIT_defconfig +2 -1
index 3fad0b9..2995195 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1020RDB-PC_NAND_defconfig +2 -1
index 09616da..e696b40 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1020RDB-PC_SDCARD_defconfig +2 -1
index 4ed2f7c..0ef8c4d 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PC_SPIFLASH_defconfig +2 -1
index 3a26800..136d221 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PC_defconfig +2 -1
index 734824e..e55ed00 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1020RDB-PD_NAND_defconfig +2 -1
index c45b2a8..a1d4a9a 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1020RDB-PD_SDCARD_defconfig +2 -1
index bdfc29e..d8be9f5 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PD_SPIFLASH_defconfig +2 -1
index 4ebcfea..8b542ca 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1020RDB-PD_defconfig +2 -1
index 3c97423..ae1045a 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1021RDB-PC_36BIT_NAND_defconfig +2 -1
index d6ec2ad..dfbc3f6 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1021RDB-PC_36BIT_SDCARD_defconfig +2 -1
index 9414eab..d985f56 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig +2 -1
index 429d249..b96f05f 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1021RDB-PC_36BIT_defconfig +2 -1
index 236d67a..e97e77d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1021RDB-PC_NAND_defconfig +2 -1
index e1410b6..b62c17e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1021RDB-PC_SDCARD_defconfig +2 -1
index 8950dcd..9e3325e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1021RDB-PC_SPIFLASH_defconfig +2 -1
index 8760a60..9c0989c 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1021RDB-PC_defconfig +2 -1
index fd52fcf..3bfbbef 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1022DS_36BIT_NAND_defconfig +2 -1
index a57ab4a..1146a7d 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1022DS_36BIT_SDCARD_defconfig +2 -1
index 0e68138..7490834 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=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
configs/P1022DS_36BIT_SPIFLASH_defconfig +2 -1
index 130b7cf..2034b28 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=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
configs/P1022DS_36BIT_defconfig +2 -1
index 5646062..b769062 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=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
configs/P1022DS_NAND_defconfig +2 -1
index ef08a9e..ef32d4e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1022DS_SDCARD_defconfig +2 -1
index 8ff94af..1258cc3 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=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
configs/P1022DS_SPIFLASH_defconfig +2 -1
index ecc48cc..1c8e115 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=y
 CONFIG_SPL=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
configs/P1022DS_defconfig +2 -1
index 40c6621..3cdb129 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1022DS=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
configs/P1024RDB_36BIT_defconfig +2 -1
index 3f96330..c0750b5 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1024RDB_NAND_defconfig +2 -1
index 05c06b6..6b0a537 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1024RDB_SDCARD_defconfig +2 -1
index ad081e5..d6c9000 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1024RDB_SPIFLASH_defconfig +2 -1
index 12158de..be92545 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1024RDB_defconfig +2 -1
index 3d13da9..8f36af9 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1025RDB_36BIT_defconfig +2 -1
index 453c057..98eaa1e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P1025RDB_NAND_defconfig +2 -1
index 1c5e06a..5ec12ef 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P1025RDB_SDCARD_defconfig +2 -1
index fc01fe6..2b75f71 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1025RDB_SPIFLASH_defconfig +2 -1
index 0a37298..bb9298e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P1025RDB_defconfig +2 -1
index fe21544..c5708f4 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P2020RDB-PC_36BIT_NAND_defconfig +2 -1
index 578bfc5..7b58c3c 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P2020RDB-PC_36BIT_SDCARD_defconfig +2 -1
index 19c795a..97e81c8 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig +2 -1
index bdc5e43..9c9a08a 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P2020RDB-PC_36BIT_defconfig +2 -1
index b9d4a47..9b7a861 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P2020RDB-PC_NAND_defconfig +2 -1
index ea9f830..c5a2122 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=y
 CONFIG_TPL=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
configs/P2020RDB-PC_SDCARD_defconfig +2 -1
index 997887d..27574fc 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P2020RDB-PC_SPIFLASH_defconfig +2 -1
index e547ea4..0d41a4b 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=y
 CONFIG_SPL=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
configs/P2020RDB-PC_defconfig +2 -1
index fdad880..a53e3e2 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P1_P2_RDB_PC=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
configs/P2041RDB_NAND_defconfig +2 -1
index 540b79d..cd1b116 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P2041RDB=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
configs/P2041RDB_SDCARD_defconfig +2 -1
index e879d94..4a1716e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P2041RDB=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
configs/P2041RDB_SECURE_BOOT_defconfig +2 -1
index 114fc32..b6cbfd2 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P2041RDB=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P2041RDB_SPIFLASH_defconfig +2 -1
index 6feec40..63ceb71 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P2041RDB=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
configs/P2041RDB_SRIO_PCIE_BOOT_defconfig +2 -1
index 45ba154..385dbd2 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P2041RDB=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
configs/P2041RDB_defconfig +2 -1
index 9a455ef..0d1e391 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P2041RDB=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
configs/P3041DS_NAND_SECURE_BOOT_defconfig +2 -1
index 783089b..8f5c5f6 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,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
configs/P3041DS_NAND_defconfig +2 -1
index d8fa407..7a5f479 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=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
configs/P3041DS_SDCARD_defconfig +2 -1
index 385bcc8..fd2493a 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=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
configs/P3041DS_SECURE_BOOT_defconfig +2 -1
index 5d463a2..4d82118 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P3041DS_SPIFLASH_defconfig +2 -1
index 2c52861..7dbd063 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=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
configs/P3041DS_SRIO_PCIE_BOOT_defconfig +2 -1
index 6925f99..5927d6e 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P3041DS=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
configs/P3041DS_defconfig +2 -1
index b41254d..736692b 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P3041DS=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
configs/P4080DS_SDCARD_defconfig +2 -1
index 4a0a65d..4bbc2fb 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P4080DS=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
configs/P4080DS_SECURE_BOOT_defconfig +2 -1
index 92e1c1d..b2c51a2 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P4080DS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P4080DS_SPIFLASH_defconfig +2 -1
index c503a70..61d94c6 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P4080DS=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
configs/P4080DS_SRIO_PCIE_BOOT_defconfig +2 -1
index f9b877b..94a7067 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P4080DS=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
configs/P4080DS_defconfig +2 -1
index 319f1c7..6e61dae 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P4080DS=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
configs/P5020DS_NAND_SECURE_BOOT_defconfig +2 -1
index 46b78bc..2422375 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,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
configs/P5020DS_NAND_defconfig +2 -1
index 259371c..8d0c593 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=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
configs/P5020DS_SDCARD_defconfig +2 -1
index 2da6f48..ed7120b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=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
configs/P5020DS_SECURE_BOOT_defconfig +2 -1
index aeb7949..a3a672b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P5020DS_SPIFLASH_defconfig +2 -1
index ae06e9c..7f75f6d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=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
configs/P5020DS_SRIO_PCIE_BOOT_defconfig +2 -1
index 53a279e..b135471 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_P5020DS=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
configs/P5020DS_defconfig +2 -1
index e133570..cee5c88 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5020DS=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
configs/P5040DS_NAND_SECURE_BOOT_defconfig +2 -1
index 063e0f7..7481328 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SECURE_BOOT,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
configs/P5040DS_NAND_defconfig +2 -1
index 2c5f058..465abd3 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=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
configs/P5040DS_SDCARD_defconfig +2 -1
index d78bea0..177b570 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=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
configs/P5040DS_SECURE_BOOT_defconfig +2 -1
index ca1c87c..29aab4c 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=y
 CONFIG_SYS_EXTRA_OPTIONS="SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/P5040DS_SPIFLASH_defconfig +2 -1
index 4c403b6..5947a02 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=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
configs/P5040DS_defconfig +2 -1
index 4c01789..d3776dc 100644
@@ -1,7 +1,8 @@
 CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_P5040DS=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
configs/T1023RDB_NAND_defconfig +2 -1
index 4fe6af8..d38b567 100644
@@ -5,7 +5,8 @@ CONFIG_SPL=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
configs/T1023RDB_SDCARD_defconfig +2 -1
index 84febc5..4ab8e9c 100644
@@ -5,7 +5,8 @@ CONFIG_SPL=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
configs/T1023RDB_SECURE_BOOT_defconfig +2 -1
index 8e355be..bb80746 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1023,T1023RDB,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T1023RDB_SPIFLASH_defconfig +2 -1
index b72fc86..6b2d137 100644
@@ -5,7 +5,8 @@ CONFIG_SPL=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
configs/T1023RDB_defconfig +2 -1
index eb5d4ef..e0cf08b 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=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
configs/T1024QDS_DDR4_SECURE_BOOT_defconfig +2 -1
index 5a30ab4..0a76b70 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
-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
configs/T1024QDS_DDR4_defconfig +2 -1
index 39dc0a6..75f1fa1 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=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
configs/T1024QDS_NAND_defconfig +2 -1
index 4425bb2..cbdb291 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=y
 CONFIG_SPL=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
configs/T1024QDS_SDCARD_defconfig +2 -1
index 97e32ca..dbcf4c1 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=y
 CONFIG_SPL=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
configs/T1024QDS_SECURE_BOOT_defconfig +2 -1
index aa5dcde..b8c075f 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SECURE_BOOT"
-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
configs/T1024QDS_SPIFLASH_defconfig +2 -1
index beaac8b..b5ccdd7 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=y
 CONFIG_SPL=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
configs/T1024QDS_defconfig +2 -1
index 7bb2ea6..f435979 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XQDS=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
configs/T1024RDB_NAND_defconfig +2 -1
index 065e168..018ed40 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=y
 CONFIG_SPL=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
configs/T1024RDB_SDCARD_defconfig +2 -1
index ae4f8cf..0f2cf27 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=y
 CONFIG_SPL=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
configs/T1024RDB_SECURE_BOOT_defconfig +2 -1
index e24c91b..9cb7985 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,T1024RDB,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T1024RDB_SPIFLASH_defconfig +2 -1
index 91aad61..90d87a7 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=y
 CONFIG_SPL=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
configs/T1024RDB_defconfig +2 -1
index d43ec06..9bce26c 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T102XRDB=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
configs/T1040D4RDB_NAND_defconfig +2 -1
index e96c984..4b13d87 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040D4RDB_SDCARD_defconfig +2 -1
index e90d39d..2e06c44 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040D4RDB_SECURE_BOOT_defconfig +2 -1
index 17f7585..401773e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,T1040D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T1040D4RDB_SPIFLASH_defconfig +2 -1
index 0191a63..1b265bd 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040D4RDB_defconfig +2 -1
index 6feecb3..39c19ea 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=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
configs/T1040QDS_DDR4_defconfig +2 -1
index 52b67c8..d28bf0f 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T1040QDS=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
configs/T1040QDS_SECURE_BOOT_defconfig +2 -1
index d98b87a..63647c1 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T1040QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT"
-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
configs/T1040QDS_defconfig +2 -1
index 56eb500..af808b3 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T1040QDS=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
configs/T1040RDB_NAND_defconfig +2 -1
index 74f22d2..332919a 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040RDB_SDCARD_defconfig +2 -1
index a0f9f2d..8917e52 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040RDB_SECURE_BOOT_defconfig +2 -1
index 7b19069..9d3e40e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SECURE_BOOT,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
configs/T1040RDB_SPIFLASH_defconfig +2 -1
index 3305e49..69aa05f 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1040RDB_defconfig +2 -1
index 8b7816d..d100627 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=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
configs/T1042D4RDB_NAND_defconfig +2 -1
index 8c77cda..0b59e8e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042D4RDB_SDCARD_defconfig +2 -1
index 0a3b0f8..5bdee2e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042D4RDB_SECURE_BOOT_defconfig +2 -1
index f856f7d..42a88f4 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042D4RDB,T104XD4RDB,SYS_FSL_DDR4,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T1042D4RDB_SPIFLASH_defconfig +2 -1
index 307de29..93840b0 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042D4RDB_defconfig +2 -1
index 1549200..9f72d7d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=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
configs/T1042RDB_PI_NAND_defconfig +2 -1
index fb229df..287d8a8 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042RDB_PI_SDCARD_defconfig +2 -1
index 3743a1f..9eca40d 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042RDB_PI_SPIFLASH_defconfig +2 -1
index ce3e54e..ea9e6d2 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SPL=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
configs/T1042RDB_PI_defconfig +2 -1
index 18d3967..21203df 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=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
configs/T1042RDB_SECURE_BOOT_defconfig +2 -1
index cdcfccf..5852e83 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,SECURE_BOOT,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
configs/T1042RDB_defconfig +2 -1
index 2a11421..54e97b8 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T104XRDB=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
configs/T2080QDS_NAND_defconfig +2 -1
index 13f40b4..6717c09 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2080QDS_SDCARD_defconfig +2 -1
index a72830e..2149a42 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2080QDS_SECURE_BOOT_defconfig +2 -1
index 6a50147..ca4c322 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
-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
configs/T2080QDS_SPIFLASH_defconfig +2 -1
index dc66fd3..b7651f4 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2080QDS_SRIO_PCIE_BOOT_defconfig +2 -1
index ca842a4..e522290 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_T208XQDS=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
configs/T2080QDS_defconfig +2 -1
index 3d2be66..16abd88 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=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
configs/T2080RDB_NAND_defconfig +2 -1
index e2eead4..ae8b23e 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XRDB=y
 CONFIG_SPL=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
configs/T2080RDB_SDCARD_defconfig +2 -1
index fc61d1a..04de928 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XRDB=y
 CONFIG_SPL=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
configs/T2080RDB_SECURE_BOOT_defconfig +2 -1
index fe4a439..cade10d 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XRDB=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T2080,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T2080RDB_SPIFLASH_defconfig +2 -1
index 4fbaf65..fd40952 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XRDB=y
 CONFIG_SPL=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
configs/T2080RDB_SRIO_PCIE_BOOT_defconfig +2 -1
index 95720ee..506e217 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_T208XRDB=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
configs/T2080RDB_defconfig +2 -1
index bc2fc92..e49e0aa 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XRDB=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
configs/T2081QDS_NAND_defconfig +2 -1
index 57f327c..8d8a476 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2081QDS_SDCARD_defconfig +2 -1
index 74a134e..180c897 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2081QDS_SPIFLASH_defconfig +2 -1
index 85d48c3..305f01f 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=y
 CONFIG_SPL=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
configs/T2081QDS_SRIO_PCIE_BOOT_defconfig +2 -1
index 70f87d7..0d71fff 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_T208XQDS=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
configs/T2081QDS_defconfig +2 -1
index 23ed67c..e8dd888 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T208XQDS=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
configs/T4160QDS_NAND_defconfig +2 -1
index bf88846..742b663 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SPL=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
configs/T4160QDS_SDCARD_defconfig +2 -1
index dcb9ac8..da5dc55 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SPL=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
configs/T4160QDS_SECURE_BOOT_defconfig +2 -1
index 42e6508..3d3238e 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4160,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T4160QDS_defconfig +2 -1
index d87eb23..4bceb10 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=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
configs/T4160RDB_defconfig +2 -1
index 708374b..354fa48 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240RDB=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
configs/T4240QDS_NAND_defconfig +2 -1
index 4ee998b..e92ded1 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SPL=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
configs/T4240QDS_SDCARD_defconfig +2 -1
index 6a3320a..02e8b85 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SPL=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
configs/T4240QDS_SECURE_BOOT_defconfig +2 -1
index 861ac5c..f871a74 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=y
 CONFIG_SYS_EXTRA_OPTIONS="PPC_T4240,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
configs/T4240QDS_SRIO_PCIE_BOOT_defconfig +2 -1
index 0adca74..915e5ba 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_T4240QDS=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
configs/T4240QDS_defconfig +2 -1
index 7d8e826..0516ca2 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240QDS=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
configs/T4240RDB_SDCARD_defconfig +2 -1
index 009ec04..7b3b470 100644
@@ -3,7 +3,8 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240RDB=y
 CONFIG_SPL=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
configs/T4240RDB_defconfig +2 -1
index 217471a..9315958 100644
@@ -2,7 +2,8 @@ CONFIG_PPC=y
 CONFIG_MPC85xx=y
 CONFIG_TARGET_T4240RDB=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
configs/UCP1020_SPIFLASH_defconfig +2 -1
index a075bcc..ca2ad6d 100644
@@ -6,7 +6,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
configs/UCP1020_defconfig +2 -1
index c8da464..241718c 100644
@@ -6,7 +6,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
configs/alt_defconfig +2 -1
index aaf6a99..7f61e4b 100644
@@ -17,6 +17,7 @@ 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
configs/am335x_boneblack_defconfig +2 -1
index 8803da5..eb1646e 100644
@@ -13,6 +13,7 @@ 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
configs/am335x_boneblack_vboot_defconfig +2 -1
index 060aa1c..7d0ab0b 100644
@@ -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
configs/am335x_evm_defconfig +2 -1
index 7753ab5..525a735 100644
@@ -12,6 +12,7 @@ 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
configs/am335x_evm_nor_defconfig +2 -1
index bde7b8a..370ba52 100644
@@ -8,6 +8,7 @@ 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
configs/am335x_evm_norboot_defconfig +2 -1
index 94dfb5a..420c6a2 100644
@@ -5,6 +5,7 @@ CONFIG_NOR_BOOT=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
configs/am335x_evm_spiboot_defconfig +2 -1
index 9757142..e6c1d6b 100644
@@ -8,6 +8,7 @@ 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
configs/am335x_evm_usbspl_defconfig +2 -1
index 0329948..da9a8c7 100644
@@ -8,6 +8,7 @@ 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
configs/am335x_gp_evm_defconfig +2 -1
index 49461e2..94bc717 100644
@@ -11,7 +11,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
configs/am437x_gp_evm_defconfig +2 -1
index 1d79ba19..e68c752 100644
@@ -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
configs/am437x_sk_evm_defconfig +3 -2
index 9eb41f9..3ffe224 100644
@@ -14,12 +14,13 @@ 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
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
configs/am43xx_evm_defconfig +2 -1
index 1ba1c8b..f090426 100644
@@ -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
configs/am43xx_evm_ethboot_defconfig +2 -1
index ff2acf0..dfcbe63 100644
@@ -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
configs/am43xx_evm_qspiboot_defconfig +2 -1
index 095f4d0..f78dac7 100644
@@ -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
configs/am43xx_evm_usbhost_boot_defconfig +2 -1
index be99599..5446b5a 100644
@@ -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
configs/am57xx_evm_defconfig +2 -1
index c5e4670..510b8d1 100644
@@ -16,6 +16,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
configs/aristainetos2_defconfig +2 -1
index b83e7ea..89f02d1 100644
@@ -5,5 +5,6 @@ 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
configs/aristainetos2b_defconfig +2 -1
index cdad556..e6cccd5 100644
@@ -5,5 +5,6 @@ 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
configs/aristainetos_defconfig +2 -1
index 15fc3a9..a2dfb33 100644
@@ -5,5 +5,6 @@ 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
configs/at91sam9n12ek_mmc_defconfig +2 -1
index 6f2390b..fb7d1d8 100644
@@ -7,5 +7,6 @@ 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
configs/at91sam9n12ek_nandflash_defconfig +2 -1
index ec16f34..c70568d 100644
@@ -8,5 +8,6 @@ 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
configs/at91sam9n12ek_spiflash_defconfig +2 -1
index 655c574..cf6bc9b 100644
@@ -8,5 +8,6 @@ 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
configs/at91sam9x5ek_dataflash_defconfig +2 -1
index 43b32d1..17d8643 100644
@@ -8,5 +8,6 @@ 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
configs/at91sam9x5ek_mmc_defconfig +2 -1
index 29fdf31..b759cfe 100644
@@ -8,5 +8,6 @@ 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
configs/at91sam9x5ek_nandflash_defconfig +2 -1
index 004ee25..5db48d1 100644
@@ -9,5 +9,6 @@ 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
configs/at91sam9x5ek_spiflash_defconfig +2 -1
index c574422..98e5b88 100644
@@ -9,5 +9,6 @@ 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
configs/atngw100_defconfig +2 -1
index 7ef4677..56ab790 100644
@@ -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
configs/atngw100mkii_defconfig +2 -1
index b552421..fa6e3f8 100644
@@ -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
configs/axm_defconfig +2 -1
index 25e4570..3b16b91 100644
@@ -10,6 +10,7 @@ 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
configs/bayleybay_defconfig +2 -1
index 0879d1e..f9e0764 100644
@@ -20,7 +20,8 @@ CONFIG_BOOTSTAGE_REPORT=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
configs/beaver_defconfig +2 -1
index 8add08d..cad0862 100644
@@ -12,7 +12,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
configs/bf518f-ezbrd_defconfig +2 -1
index a8eab8c..a211b44 100644
@@ -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
configs/bf525-ucr2_defconfig +2 -1
index 15a8f1f..416ffc0 100644
@@ -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
configs/bf526-ezbrd_defconfig +2 -1
index a5f4b73..cf608cd 100644
@@ -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
configs/bf527-ad7160-eval_defconfig +2 -1
index 4751df4..7aaf740 100644
@@ -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
configs/bf527-ezkit-v2_defconfig +2 -1
index 356ab64..ef8ae9e 100644
@@ -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
configs/bf527-ezkit_defconfig +2 -1
index c1b139c..478e21a 100644
@@ -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
configs/bf527-sdp_defconfig +2 -1
index 383f62e..34ee175 100644
@@ -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
configs/bf537-minotaur_defconfig +2 -1
index bf3d79f..4ce5aed 100644
@@ -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
configs/bf537-pnav_defconfig +2 -1
index e737561..3df58d7 100644
@@ -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
configs/bf537-srv1_defconfig +2 -1
index ba80e63..580bc83 100644
@@ -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
configs/bf537-stamp_defconfig +2 -1
index 34c774c..2e21cc5 100644
@@ -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
configs/bf548-ezkit_defconfig +2 -1
index eca4c85..d0b96ff 100644
@@ -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
configs/bf561-acvilon_defconfig +2 -1
index 4a25d2e..171de78 100644
@@ -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
configs/bf609-ezkit_defconfig +2 -1
index 642ca87..f050eff 100644
@@ -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
configs/bg0900_defconfig +2 -1
index 620d621..cfc5f75 100644
@@ -4,6 +4,7 @@ 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
configs/birdland_bav335a_defconfig +2 -1
index d807ea5..13140e9 100644
@@ -7,6 +7,7 @@ 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
configs/birdland_bav335b_defconfig +2 -1
index 2ed64f6..6ba399f 100644
@@ -7,6 +7,7 @@ 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
configs/blackstamp_defconfig +2 -1
index 944145a..0a2bd94 100644
@@ -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
configs/blackvme_defconfig +2 -1
index 41b5a23..e941e42 100644
@@ -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
configs/br4_defconfig +2 -1
index effba78..ae39cbb 100644
@@ -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
configs/cardhu_defconfig +2 -1
index c9f565a..1e897f5 100644
@@ -12,7 +12,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
configs/chromebook_link_defconfig +2 -1
index 1cee7d4..553a001 100644
@@ -27,7 +27,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
configs/chromebox_panther_defconfig +2 -1
index e4a3821..0b8ea6e 100644
@@ -21,7 +21,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
configs/clearfog_defconfig +2 -1
index 57d6a64..5d7b7fd 100644
@@ -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
configs/cm_fx6_defconfig +2 -1
index 528251c..edc6556 100644
@@ -17,7 +17,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
configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig +2 -1
index 3df602f..b615635 100644
@@ -6,7 +6,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
configs/controlcenterd_36BIT_SDCARD_defconfig +2 -1
index c30dfae..782b2ca 100644
@@ -6,7 +6,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
configs/coreboot-x86_defconfig +2 -1
index fda0db2..b83f50c 100644
@@ -11,7 +11,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
configs/crownbay_defconfig +2 -1
index 6bc4b8d..e36f308 100644
@@ -18,7 +18,8 @@ CONFIG_BOOTSTAGE_REPORT=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_SST=y
configs/d2net_v2_defconfig +2 -1
index c962a61..ab28651 100644
@@ -5,6 +5,7 @@ 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
configs/da850_am18xxevm_defconfig +2 -1
index c253c38..a0a34c0 100644
@@ -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
configs/da850evm_defconfig +2 -1
index 75f4eb6..550a33c 100644
@@ -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
configs/da850evm_direct_nor_defconfig +2 -1
index d8c002f..d4e55eb 100644
@@ -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
configs/dalmore_defconfig +2 -1
index dc5077d..76ddc41 100644
@@ -12,7 +12,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
configs/db-88f6820-gp_defconfig +2 -1
index 111f3a1..2c474c9 100644
@@ -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
configs/db-mv784mp-gp_defconfig +2 -1
index 6dda2ae..5f9bc78 100644
@@ -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
configs/dra72_evm_defconfig +3 -2
index 32d1dc1..1442d96 100644
@@ -15,12 +15,13 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS 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
 CONFIG_TI_QSPI=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
configs/dra74_evm_defconfig +3 -2
index 9946261..cecf443 100644
@@ -13,13 +13,14 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_NFS 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_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
+CONFIG_MTD=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
configs/dra7xx_evm_defconfig +2 -1
index 1be2f5b..39d8e91 100644
@@ -9,7 +9,8 @@ CONFIG_SPL_STACK_R=y
 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_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SYS_NS16550=y
configs/dra7xx_evm_qspiboot_defconfig +2 -1
index 4370b96..1d3e2f9 100644
@@ -10,7 +10,8 @@ CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 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_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
configs/dra7xx_evm_uart3_defconfig +2 -1
index 204483a..a31dfec 100644
@@ -11,7 +11,8 @@ CONFIG_SYS_EXTRA_OPTIONS="SPL_YMODEM_SUPPORT"
 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_SPANSION=y
 CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
configs/draco_defconfig +2 -1
index f7174e6..b282f97 100644
@@ -9,6 +9,7 @@ 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
configs/dreamplug_defconfig +2 -1
index 966fa9e..6ed3592 100644
@@ -9,6 +9,7 @@ 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
configs/ds414_defconfig +2 -1
index 4c3c1df..f43d358 100644
@@ -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
configs/e2220-1170_defconfig +2 -1
index db2d159..1741e6d 100644
@@ -10,7 +10,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
configs/ea20_defconfig +2 -1
index 6fe19c7..27ef793 100644
@@ -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
configs/ethernut5_defconfig +2 -1
index 04d8611..b3d4f82 100644
@@ -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
configs/galileo_defconfig +2 -1
index 925d3ee..eaf0912 100644
@@ -14,7 +14,8 @@ CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_CMD_BOOTSTAGE=y
 CONFIG_OF_CONTROL=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
configs/gose_defconfig +2 -1
index 01aa817..23b1617 100644
@@ -17,6 +17,7 @@ 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
configs/gplugd_defconfig +2 -1
index d2c5e6a..e1285bf 100644
@@ -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
configs/inetspace_v2_defconfig +2 -1
index 2d03974..ca9eaba 100644
@@ -5,6 +5,7 @@ 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
configs/ip04_defconfig +2 -1
index e2aa906..00160eb 100644
@@ -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
configs/jetson-tk1_defconfig +2 -1
index efc4aee..7937904 100644
@@ -12,7 +12,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
configs/k2e_evm_defconfig +2 -1
index 9fb9dac..33dd747 100644
@@ -10,6 +10,7 @@ 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
configs/k2g_evm_defconfig +2 -1
index 7bdf7a4..b1198be 100644
@@ -9,6 +9,7 @@ CONFIG_SPL=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
configs/k2hk_evm_defconfig +2 -1
index 940d483..c3b426e 100644
@@ -10,6 +10,7 @@ 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
configs/k2l_evm_defconfig +2 -1
index 1b21ed0..84ebcca 100644
@@ -10,6 +10,7 @@ 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
configs/km_kirkwood_128m16_defconfig +2 -1
index d2625e5..318731e 100644
@@ -4,6 +4,7 @@ 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
configs/km_kirkwood_defconfig +2 -1
index 4db809e..aed8114 100644
@@ -4,6 +4,7 @@ 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
configs/km_kirkwood_pci_defconfig +2 -1
index 98b1c10..007a765 100644
@@ -4,6 +4,7 @@ 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
configs/kmcoge4_defconfig +2 -1
index b4371ff..19b51a2 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_KMP204X=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
configs/kmcoge5un_defconfig +2 -1
index 0b4fee1..6946003 100644
@@ -4,6 +4,7 @@ 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
configs/kmlion1_defconfig +2 -1
index bf55746..08d170a 100644
@@ -4,7 +4,8 @@ CONFIG_TARGET_KMP204X=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
configs/kmnusa_defconfig +2 -1
index 13a3187..525e98c 100644
@@ -4,6 +4,7 @@ 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
configs/kmsugp1_defconfig +2 -1
index 0f4c51b..d3d8e6e 100644
@@ -4,6 +4,7 @@ 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
configs/kmsuv31_defconfig +2 -1
index 0c27f17..b6e5fa4 100644
@@ -4,6 +4,7 @@ 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
configs/koelsch_defconfig +2 -1
index fc8a567..521a937 100644
@@ -17,6 +17,7 @@ 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
configs/lager_defconfig +2 -1
index 77f1fb3..95f030f 100644
@@ -17,6 +17,7 @@ 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
configs/ls1021atwr_qspi_defconfig +2 -1
index d7c7e4c..f62a5f6 100644
@@ -7,7 +7,8 @@ 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_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_NETDEVICES=y
configs/ls1021atwr_sdcard_qspi_defconfig +2 -1
index 453a3bb..97bcd95 100644
@@ -6,7 +6,8 @@ CONFIG_SPL=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
configs/ls1043aqds_defconfig +2 -1
index f7113c5..bd18d46 100644
@@ -5,5 +5,6 @@ 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
configs/ls1043aqds_lpuart_defconfig +2 -1
index 21d6407..97f0f70 100644
@@ -6,5 +6,6 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-lpuart"
 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
configs/ls1043aqds_nand_defconfig +2 -1
index 8d4370f..4153a1f 100644
@@ -6,5 +6,6 @@ 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
configs/ls1043aqds_nor_ddr3_defconfig +2 -1
index bc76996..029b851 100644
@@ -4,5 +4,6 @@ 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
configs/ls1043aqds_qspi_defconfig +2 -1
index cb076c9..04655e3 100644
@@ -5,5 +5,6 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 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
configs/ls1043aqds_sdcard_ifc_defconfig +2 -1
index 0409e33..f263517 100644
@@ -6,5 +6,6 @@ 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
configs/ls1043aqds_sdcard_qspi_defconfig +2 -1
index 09fb1ed..cf77f53 100644
@@ -6,5 +6,6 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 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
configs/ls1043ardb_SECURE_BOOT_defconfig +2 -1
index d9d6c97..4004435 100644
@@ -5,5 +5,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-rdb"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
-CONFIG_SPI_FLASH=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_M25P80=y
 CONFIG_DM_SPI=y
\ No newline at end of file
configs/ls1043ardb_defconfig +2 -1
index 8622ce7..aad386f 100644
@@ -5,5 +5,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-rdb"
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

configs/ls1043ardb_nand_defconfig +2 -1
index c4f5f60..ccb50b1 100644

Lines of this file are not shown. View the raw message.

configs/ls1043ardb_sdcard_defconfig +2 -1
index 6c7eda3..1eba8fd 100644

Lines of this file are not shown. View the raw message.

configs/ls2080aqds_defconfig +1 -1
index 6ac09ce..441f405 100644

Lines of this file are not shown. View the raw message.

configs/ls2080ardb_defconfig +1 -1
index 1b30114..8d02762 100644

Lines of this file are not shown. View the raw message.

configs/ls2085aqds_defconfig +1 -1
index b4a1d8c..92d8c30 100644

Lines of this file are not shown. View the raw message.

configs/ls2085ardb_defconfig +1 -1
index 0f514ca..55cee8f 100644

Lines of this file are not shown. View the raw message.

configs/lschlv2_defconfig +2 -1
index 7264c2d..f5b43e0 100644

Lines of this file are not shown. View the raw message.

configs/lsxhl_defconfig +2 -1
index 62acb40..41ff59d 100644

Lines of this file are not shown. View the raw message.

configs/m28evk_defconfig +2 -1
index 9da42eb..bf8b425 100644

Lines of this file are not shown. View the raw message.

configs/marsboard_defconfig +2 -1
index 8495800..e03d1ba 100644

Lines of this file are not shown. View the raw message.

configs/maxbcm_defconfig +2 -1
index 200c7a0..5fb993d 100644

Lines of this file are not shown. View the raw message.

configs/mgcoge3un_defconfig +2 -1
index 965972a..c774b40 100644

Lines of this file are not shown. View the raw message.

configs/minnowmax_defconfig +2 -1
index af6a8ec..5055953 100644

Lines of this file are not shown. View the raw message.

configs/mx28evk_auart_console_defconfig +2 -1
index dcabd7b..bb90ded 100644

Lines of this file are not shown. View the raw message.

configs/mx28evk_defconfig +2 -1
index d7f0706..9433434 100644

Lines of this file are not shown. View the raw message.

configs/mx28evk_nand_defconfig +2 -1
index f4ace44..1f3f169 100644

Lines of this file are not shown. View the raw message.

configs/mx28evk_spi_defconfig +2 -1
index 976ebc2..40c0302 100644

Lines of this file are not shown. View the raw message.

configs/mx6dlsabreauto_defconfig +2 -1
index 40d82ca..f0d362b 100644

Lines of this file are not shown. View the raw message.

configs/mx6dlsabresd_defconfig +2 -1
index b2cf924..c60ec3a 100644

Lines of this file are not shown. View the raw message.

configs/mx6qpsabreauto_defconfig +2 -1
index c44cd8f..0529fb1 100644

Lines of this file are not shown. View the raw message.

configs/mx6qsabreauto_defconfig +2 -1
index 67b9e10..8cf7d46 100644

Lines of this file are not shown. View the raw message.

configs/mx6qsabrelite_defconfig +2 -1
index 8736e31..ff2cc51 100644

Lines of this file are not shown. View the raw message.

configs/mx6qsabresd_defconfig +2 -1
index 63187b3..6f47b7b 100644

Lines of this file are not shown. View the raw message.

configs/mx6sabresd_spl_defconfig +2 -1
index d047309..1850cd3 100644

Lines of this file are not shown. View the raw message.

configs/mx6slevk_defconfig +2 -1
index 5eca5e9..6cea2e0 100644

Lines of this file are not shown. View the raw message.

configs/mx6slevk_spinor_defconfig +2 -1
index caf0335..40de0ca 100644

Lines of this file are not shown. View the raw message.

configs/mx6slevk_spl_defconfig +2 -1
index 2603927..56b88ac 100644

Lines of this file are not shown. View the raw message.

configs/mx6sxsabreauto_defconfig +2 -1
index d9e35df..4dd2f8f 100644

Lines of this file are not shown. View the raw message.

configs/mx6sxsabresd_defconfig +2 -1
index 953a246..e248f0e 100644

Lines of this file are not shown. View the raw message.

configs/mx6sxsabresd_spl_defconfig +2 -1
index 3843f99..b216759 100644

Lines of this file are not shown. View the raw message.

configs/net2big_v2_defconfig +2 -1
index 87f4f92..5d7b7c7 100644

Lines of this file are not shown. View the raw message.

configs/netspace_lite_v2_defconfig +2 -1
index 2e2ee35..97454f3 100644

Lines of this file are not shown. View the raw message.

configs/netspace_max_v2_defconfig +2 -1
index d336ef3..c2d223b 100644

Lines of this file are not shown. View the raw message.

configs/netspace_mini_v2_defconfig +2 -1
index 667da1b..c639212 100644

Lines of this file are not shown. View the raw message.

configs/netspace_v2_defconfig +2 -1
index 949f680..ff19c5d 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6dl2g_defconfig +2 -1
index 281292d..bdd3830 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6dl_defconfig +2 -1
index 5ae77e3..0b61988 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6q2g_defconfig +2 -1
index e5c7824..434cdb1 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6q_defconfig +2 -1
index e2a1242..0d4b14b 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6s1g_defconfig +2 -1
index 3d38c08..84da2e0 100644

Lines of this file are not shown. View the raw message.

configs/nitrogen6s_defconfig +2 -1
index 9b44758..2bdd51d 100644

Lines of this file are not shown. View the raw message.

configs/nyan-big_defconfig +2 -1
index ca0f9e0..fc29407 100644

Lines of this file are not shown. View the raw message.

configs/omapl138_lcdk_defconfig +2 -1
index 7c2d6c8..63b7243 100644

Lines of this file are not shown. View the raw message.

configs/ot1200_defconfig +2 -1
index a1ecf06..c624dc4 100644

Lines of this file are not shown. View the raw message.

configs/ot1200_spl_defconfig +2 -1
index 5d44d7d..8b1daea 100644

Lines of this file are not shown. View the raw message.

configs/p2371-0000_defconfig +2 -1
index a7315ce..1fc8143 100644

Lines of this file are not shown. View the raw message.

configs/p2371-2180_defconfig +2 -1
index c41f322..6b4e6ed 100644

Lines of this file are not shown. View the raw message.

configs/p2571_defconfig +2 -1
index e6de2da..ee2f355 100644

Lines of this file are not shown. View the raw message.

configs/pcm051_rev1_defconfig +2 -1
index ce7c4bb..8adb114 100644

Lines of this file are not shown. View the raw message.

configs/pcm051_rev3_defconfig +2 -1
index 7c2dee4..1a452bb 100644

Lines of this file are not shown. View the raw message.

configs/peach-pi_defconfig +2 -1
index 65c6044..2c2bd45 100644

Lines of this file are not shown. View the raw message.

configs/peach-pit_defconfig +2 -1
index 272988f..6634387 100644

Lines of this file are not shown. View the raw message.

configs/porter_defconfig +2 -1
index 44f2387..52036a9 100644

Lines of this file are not shown. View the raw message.

configs/portl2_defconfig +2 -1
index 0efc4c6..9ce9a3e 100644

Lines of this file are not shown. View the raw message.

configs/pr1_defconfig +2 -1
index c813502..2f92389 100644

Lines of this file are not shown. View the raw message.

configs/pxm2_defconfig +2 -1
index 02984ed..b270e4e 100644

Lines of this file are not shown. View the raw message.

configs/qemu-x86_defconfig +2 -1
index b0c935c..6d3c4af 100644

Lines of this file are not shown. View the raw message.

configs/rastaban_defconfig +2 -1
index a1403fb..7b32177 100644

Lines of this file are not shown. View the raw message.

configs/riotboard_defconfig +2 -1
index 3cf82c3..f8e43ab 100644

Lines of this file are not shown. View the raw message.

configs/rut_defconfig +2 -1
index 4c1fd4b..cfb9d61 100644

Lines of this file are not shown. View the raw message.

configs/sama5d2_xplained_mmc_defconfig +2 -1
index 75b1713..6836925 100644

Lines of this file are not shown. View the raw message.

configs/sama5d2_xplained_spiflash_defconfig +2 -1
index 6d61a7e..50d9a12 100644

Lines of this file are not shown. View the raw message.

configs/sama5d3xek_mmc_defconfig +2 -1
index 644b150..72796db 100644

Lines of this file are not shown. View the raw message.

configs/sama5d3xek_nandflash_defconfig +2 -1
index 1e42880..b84ba0f 100644

Lines of this file are not shown. View the raw message.

configs/sama5d3xek_spiflash_defconfig +2 -1
index 724b55b..623680d 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4_xplained_mmc_defconfig +2 -1
index 3daac36..db69bdb 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4_xplained_nandflash_defconfig +2 -1
index e3517e8..1faf841 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4_xplained_spiflash_defconfig +2 -1
index 1cdb9bc..9af4b41 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4ek_mmc_defconfig +2 -1
index a75705a..7f307ac 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4ek_nandflash_defconfig +2 -1
index 346a890..549d70d 100644

Lines of this file are not shown. View the raw message.

configs/sama5d4ek_spiflash_defconfig +2 -1
index efba861..d8fb502 100644

Lines of this file are not shown. View the raw message.

configs/sh7752evb_defconfig +2 -1
index 4c8883b..5754fe5 100644

Lines of this file are not shown. View the raw message.

configs/sh7753evb_defconfig +2 -1
index 9992cff..ae46a8f 100644

Lines of this file are not shown. View the raw message.

configs/sh7757lcr_defconfig +2 -1
index 54d6436..51f9061 100644

Lines of this file are not shown. View the raw message.

configs/silk_defconfig +2 -1
index 836beff..343ee9f 100644

Lines of this file are not shown. View the raw message.

configs/smdk5250_defconfig +2 -1
index b0dec29..b08a266 100644

Lines of this file are not shown. View the raw message.

configs/smdk5420_defconfig +2 -1
index 50148fc..3dde244 100644

Lines of this file are not shown. View the raw message.

configs/snow_defconfig +2 -1
index 3d8081b..93150ef 100644

Lines of this file are not shown. View the raw message.

configs/socfpga_arria5_defconfig +2 -1
index 6e8976f..40d46f8 100644

Lines of this file are not shown. View the raw message.

configs/socfpga_cyclone5_defconfig +2 -1
index e31aa71..5db6c42 100644

Lines of this file are not shown. View the raw message.

configs/socfpga_sockit_defconfig +2 -1
index 59fbb2c..d6d5a81 100644

Lines of this file are not shown. View the raw message.

configs/socfpga_socrates_defconfig +2 -1
index aaba8cb..937a66b 100644

Lines of this file are not shown. View the raw message.

configs/socfpga_sr1500_defconfig +2 -1
index a4f0835..2f104e7 100644

Lines of this file are not shown. View the raw message.

configs/spring_defconfig +2 -1
index 11cb6e3..37a3250 100644

Lines of this file are not shown. View the raw message.

configs/stout_defconfig +2 -1
index d353495..bc502e7 100644

Lines of this file are not shown. View the raw message.

configs/taurus_defconfig +2 -1
index 3f08cc1..40e1d55 100644

Lines of this file are not shown. View the raw message.

configs/tec-ng_defconfig +2 -1
index 3d10fd0..1bf50b9 100644

Lines of this file are not shown. View the raw message.

configs/theadorable_debug_defconfig +2 -1
index fbed23c..4e38380 100644

Lines of this file are not shown. View the raw message.

configs/theadorable_defconfig +2 -1
index cce4669..c87de72 100644

Lines of this file are not shown. View the raw message.

configs/thuban_defconfig +2 -1
index 13aade6..d1e1eb3 100644

Lines of this file are not shown. View the raw message.

configs/tqma6q_mba6_mmc_defconfig +2 -1
index cdc51c0..99d704e 100644

Lines of this file are not shown. View the raw message.

configs/tqma6q_mba6_spi_defconfig +2 -1
index 1408be3..d14e841 100644

Lines of this file are not shown. View the raw message.

configs/tqma6s_mba6_mmc_defconfig +2 -1
index 4e5428b..387e9b4 100644

Lines of this file are not shown. View the raw message.

configs/tqma6s_mba6_spi_defconfig +2 -1
index 04740ec..0a4c4f6 100644

Lines of this file are not shown. View the raw message.

configs/trimslice_defconfig +2 -1
index e34faa3..0136342 100644

Lines of this file are not shown. View the raw message.

configs/tseries_spi_defconfig +2 -1
index 11e4e6b..0354ae6 100644

Lines of this file are not shown. View the raw message.

configs/venice2_defconfig +2 -1
index 05f6bc4..b40cbbc 100644

Lines of this file are not shown. View the raw message.

configs/vf610twr_defconfig +2 -1
index d959293..6a9d549 100644

Lines of this file are not shown. View the raw message.

configs/vf610twr_nand_defconfig +2 -1
index b6a96f2..40a848a 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zc702_defconfig +2 -1
index 3540653..2de47e8 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zc706_defconfig +2 -1
index f333b7a..58ecda9 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zc770_xm010_defconfig +2 -1
index ebfdeb0..c272beb 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zc770_xm013_defconfig +2 -1
index 9672940..382ef8f 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zed_defconfig +2 -1
index 5868012..f5c5167 100644

Lines of this file are not shown. View the raw message.

configs/zynq_zybo_defconfig +2 -1
index ebaae49..5bc9278 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
1.9.1

Part of the diff is not shown here. View the raw message.

author
#61 lore raw

PATCH v6 61/76 spi-nor: Use CONFIG_MTD_SPI_NOR

In reply to Jagan Teki

Replace legacy CONFIG_SPI_FLASH with CONFIG_MTD_SPI_NOR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 board/davinci/da8xxevm/da850evm.c | 2 +-
 common/splash_source.c            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
board/davinci/da8xxevm/da850evm.c +1 -1
index 356d3ce..7a2b8e0 100644
@@ -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
common/splash_source.c +1 -1
index 3393f73..505fa2a 100644
@@ -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)
 {
Signature · 1 line
1.9.1
author
#62 lore raw

PATCH v6 62/76 configs: Use CONFIG_MTD_SPI_NOR

In reply to Jagan Teki

for conditional construct
CONFIG_SPI_FLASH => CONFIG_MTD_SPI_NOR

for defines replace
CONFIG_SPI_FLASH => CONFIG_MTD_M25P80 and CONFIG_MTD_SPI_NOR

c: Simon Glass <[email protected]>

Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 board/davinci/ea20/ea20.c                 |  2 +-
 include/configs/MPC8536DS.h               |  2 +-
 include/configs/T208xQDS.h                |  2 +-
 include/configs/T208xRDB.h                |  2 +-
 include/configs/UCP1020.h                 |  4 ++--
 include/configs/bfin_adi_common.h         |  2 +-
 include/configs/cgtqmx6eval.h             |  3 ++-
 include/configs/cm_t43.h                  |  6 ++++--
 include/configs/dreamplug.h               |  2 +-
 include/configs/exynos5-common.h          |  2 +-
 include/configs/gw_ventana.h              | 10 +++++-----
 include/configs/ls2080aqds.h              |  3 ++-
 include/configs/ls2080ardb.h              |  3 ++-
 include/configs/lsxl.h                    |  2 +-
 include/configs/mx6ul_14x14_evk.h         |  3 ++-
 include/configs/mx7dsabresd.h             |  3 ++-
 include/configs/p1_p2_rdb_pc.h            |  2 +-
 include/configs/pcm052.h                  |  3 ++-
 include/configs/rk3036_common.h           |  2 +-
 include/configs/rk3288_common.h           |  2 +-
 include/configs/tegra-common-usb-gadget.h |  2 +-
 21 files changed, 35 insertions(+), 27 deletions(-)
board/davinci/ea20/ea20.c +1 -1
index 66804d7..ef72d6b 100644
@@ -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),
include/configs/MPC8536DS.h +1 -1
index 294be3b..2df74a9 100644
@@ -420,7 +420,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
include/configs/T208xQDS.h +1 -1
index a56208c..2acf079 100644
@@ -549,7 +549,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
 
include/configs/T208xRDB.h +1 -1
index b5290a1..3b9f2f7 100644
@@ -503,7 +503,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
include/configs/UCP1020.h +2 -2
index 2354009..934d7d1 100644
@@ -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
 
include/configs/bfin_adi_common.h +1 -1
index 9c537e0..fb9d5bf 100644
@@ -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)
include/configs/cgtqmx6eval.h +2 -1
index 487c011..9dd883f 100644
@@ -42,7 +42,8 @@
 
 /* SPI NOR */
 #define CONFIG_CMD_SF
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define CONFIG_SPI_FLASH_STMICRO
 #define CONFIG_SPI_FLASH_SST
 #define CONFIG_MXC_SPI
include/configs/cm_t43.h +4 -2
index d3cd38d..a4cd470 100644
@@ -68,9 +68,11 @@
 #define CONFIG_AM437X_USB2PHY2_HOST
 
 /* SPI Flash support */
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80
 #define CONFIG_TI_SPI_MMAP
-#define CONFIG_SPI_FLASH_BAR
+#define CONFIG_MTD_SPI_NOR
+#define CONFIG_MTD_M25P80_BAR
 #define CONFIG_SF_DEFAULT_SPEED		48000000
 #define CONFIG_DEFAULT_SPI_MODE		SPI_MODE_3
 
include/configs/dreamplug.h +1 -1
index 0b7d89b..a9e1219 100644
@@ -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
include/configs/exynos5-common.h +1 -1
index 9c3ea88..d9a4584 100644
@@ -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
include/configs/gw_ventana.h +5 -5
index b7b9c78..01db2ec 100644
@@ -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
@@ -95,7 +95,7 @@
   #define CONFIG_APBH_DMA_BURST8
 #endif
 
-#endif /* CONFIG_SPI_FLASH */
+#endif /* CONFIG_MTD_SPI_NOR */
 
 /* Flattened Image Tree Suport */
 #define CONFIG_FIT
@@ -254,7 +254,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)"
@@ -264,7 +264,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
@@ -370,7 +370,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" \
include/configs/ls2080aqds.h +2 -1
index a402c06..81eb7a4 100644
@@ -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
 
 /*
include/configs/ls2080ardb.h +2 -1
index 116dbcd..a0c808e 100644
@@ -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
 
include/configs/lsxl.h +1 -1
index 19ee5bc..a5ea845 100644
@@ -89,7 +89,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
include/configs/mx6ul_14x14_evk.h +2 -1
index 4374c3a..861715a 100644
@@ -197,7 +197,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_BAR
 #define CONFIG_SF_DEFAULT_BUS		0
 #define CONFIG_SF_DEFAULT_CS		0
include/configs/mx7dsabresd.h +2 -1
index d23e4f3..4db5f76 100644
@@ -263,7 +263,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
include/configs/p1_p2_rdb_pc.h +1 -1
index 60bedaa..4c6eedd 100644
@@ -709,7 +709,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
include/configs/pcm052.h +2 -1
index 9d80306..eb6130d 100644
@@ -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
include/configs/rk3036_common.h +1 -1
index 368d046..c38d0e2 100644
@@ -66,7 +66,7 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define SDRAM_BANK_SIZE			(512UL << 20UL)
 
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
 #define CONFIG_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
include/configs/rk3288_common.h +1 -1
index 427ac4b..550b6d9 100644
@@ -87,7 +87,7 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define SDRAM_BANK_SIZE			(2UL << 30)
 
-#define CONFIG_SPI_FLASH
+#define CONFIG_MTD_SPI_NOR
 #define CONFIG_SPI
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
include/configs/tegra-common-usb-gadget.h +1 -1
index f6e1d5c..30e6f9c 100644
@@ -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
Signature · 1 line
1.9.1
author
#63 lore raw

PATCH v6 63/76 configs: Use CONFIG_SPI_NOR_BAR

In reply to Jagan Teki

CONFIG_SPI_FLASH_BAR => CONFIG_SPI_NOR_BAR

Cc Simon Glass <[email protected]>
Cc Bin Meng <[email protected]>
Cc Mugunthan V N <[email protected]>
Cc Michal Simek <[email protected]>
Cc Siva Durga Prasad Paladugu <[email protected]>
---
 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/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 +-
 37 files changed, 46 insertions(+), 46 deletions(-)
configs/alt_defconfig +1 -1
index 7f61e4b..2fd873c 100644
@@ -19,5 +19,5 @@ 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
configs/am437x_sk_evm_defconfig +1 -1
index 3ffe224..f077f70 100644
@@ -21,6 +21,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_TI_QSPI=y
 CONFIG_DM_SPI=y
 CONFIG_MTD=y
-CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_NOR_BAR=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
configs/am43xx_evm_defconfig +1 -1
index f090426..73b16ac 100644
@@ -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
configs/am57xx_evm_defconfig +1 -1
index 510b8d1..68b7278 100644
@@ -18,5 +18,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
configs/bg0900_defconfig +1 -1
index cfc5f75..6cd2692 100644
@@ -6,5 +6,5 @@ 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
configs/dra72_evm_defconfig +1 -1
index 1442d96..46e5692 100644
@@ -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
configs/dra74_evm_defconfig +1 -1
index cecf443..a096dd2 100644
@@ -15,7 +15,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_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
configs/dra7xx_evm_defconfig +1 -1
index 39d8e91..56f362a 100644
@@ -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
configs/ds414_defconfig +1 -1
index f43d358..a4ccc52 100644
@@ -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
configs/gose_defconfig +1 -1
index 23b1617..040cbaa 100644
@@ -19,5 +19,5 @@ 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
configs/koelsch_defconfig +1 -1
index 521a937..5bae9b4 100644
@@ -19,5 +19,5 @@ 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
configs/lager_defconfig +1 -1
index 95f030f..ada450d 100644
@@ -19,5 +19,5 @@ 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
configs/maxbcm_defconfig +1 -1
index 5fb993d..03ab40e 100644
@@ -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
configs/mx6sxsabreauto_defconfig +1 -1
index 4dd2f8f..3616c82 100644
@@ -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
configs/mx6sxsabresd_defconfig +1 -1
index e248f0e..5f8adba 100644
@@ -8,4 +8,4 @@ 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
configs/porter_defconfig +1 -1
index 52036a9..7fff267 100644
@@ -19,5 +19,5 @@ 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
configs/silk_defconfig +1 -1
index 343ee9f..82f9034 100644
@@ -19,5 +19,5 @@ 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
configs/stout_defconfig +1 -1
index bc502e7..7572ade 100644
@@ -19,5 +19,5 @@ 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
configs/zynq_zc702_defconfig +1 -1
index 2de47e8..8c96a2e 100644
@@ -14,7 +14,7 @@ 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_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
configs/zynq_zc706_defconfig +1 -1
index 58ecda9..ce9a2ef 100644
@@ -15,7 +15,7 @@ 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_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
configs/zynq_zc770_xm010_defconfig +1 -1
index c272beb..f45b043 100644
@@ -16,7 +16,7 @@ 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_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
configs/zynq_zc770_xm013_defconfig +1 -1
index 382ef8f..63199af 100644
@@ -16,5 +16,5 @@ 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
configs/zynq_zed_defconfig +1 -1
index f5c5167..d7eb77d 100644
@@ -15,7 +15,7 @@ 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_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
doc/SPI/README.ti_qspi_dra_test +1 -1
index fe37857..bff1be1 100644
@@ -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
drivers/spi/fsl_qspi.c +9 -9
index cb8d929..1c4cb72 100644
@@ -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;
include/configs/T102xQDS.h +1 -1
index e5df784..d446309 100644
@@ -583,7 +583,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
 
include/configs/T102xRDB.h +1 -1
index 3cda3b1..01424ce 100644
@@ -573,7 +573,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
 
include/configs/T104xRDB.h +1 -1
index 5fc3497..34ba4a4 100644
@@ -537,7 +537,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
include/configs/T208xQDS.h +1 -1
index 2acf079..26bbb74 100644
@@ -554,7 +554,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
include/configs/T208xRDB.h +1 -1
index 3b9f2f7..2857c6a 100644
@@ -504,7 +504,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
include/configs/gw_ventana.h +1 -1
index 01db2ec..2f15876 100644
@@ -69,7 +69,7 @@
 #ifdef CONFIG_CMD_SF
   #define CONFIG_MXC_SPI
   #define CONFIG_SPI_FLASH_MTD
-  #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) */
include/configs/km/kmp204x-common.h +1 -1
index 6860ad2..612020d 100644
@@ -296,7 +296,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
include/configs/ls2080ardb.h +1 -1
index a0c808e..2b00ba2 100644
@@ -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
 
 /*
include/configs/mx6ul_14x14_evk.h +1 -1
index 861715a..34c0989 100644
@@ -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
include/configs/mx7dsabresd.h +1 -1
index 4db5f76..a8248ac 100644
@@ -266,7 +266,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
include/configs/socfpga_common.h +2 -2
index 8de0ab9..a1a3a09 100644
@@ -92,7 +92,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
include/linux/mtd/spi-nor.h +1 -1
index fb32c9f..daa4a5f 100644
@@ -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;
Signature · 1 line
1.9.1