All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/9] spi flash updates for v2011.09
@ 2011-06-28 17:38 Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 1/9] sf: spansion: add support for S25FL129P_64K Mike Frysinger
                   ` (10 more replies)
  0 siblings, 11 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

These have all been posted already.  A few part updates, bug fixes,
code unification, and that kind of fun stuff.

Macpaul Lin (1):
  sf: macronix: add MX25L4005 and MX25L8005

Mike Frysinger (6):
  sf: unify write enable commands
  sf: unify write funcs
  sf: kill off now-unused local state
  sf: eon/stmicro: inline useless ID defines
  sf: unify write disable commands
  sf: sst: support newer standardized flashes

Shaohui Xie (1):
  sf: spansion: add support for S25FL129P_64K

Simon Guinot (1):
  sf: macronix: disable write protection when initializing

 drivers/mtd/spi/eon.c                |  102 ++++------------------------
 drivers/mtd/spi/macronix.c           |  126 +++++++++++++++-------------------
 drivers/mtd/spi/ramtron.c            |    2 +-
 drivers/mtd/spi/spansion.c           |  107 ++++++-----------------------
 drivers/mtd/spi/spi_flash.c          |   59 ++++++++++++++++-
 drivers/mtd/spi/spi_flash_internal.h |   25 +++++++
 drivers/mtd/spi/sst.c                |   26 ++++++-
 drivers/mtd/spi/stmicro.c            |  124 ++++++----------------------------
 drivers/mtd/spi/winbond.c            |  104 ++++------------------------
 include/spi_flash.h                  |    5 +-
 10 files changed, 232 insertions(+), 448 deletions(-)

-- 
1.7.5.3

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

* [U-Boot] [PATCH 1/9] sf: spansion: add support for S25FL129P_64K
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 2/9] sf: macronix: add MX25L4005 and MX25L8005 Mike Frysinger
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

From: Shaohui Xie <b21989@freescale.com>

Signed-off-by: Shaohui Xie <b21989@freescale.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/spansion.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index a3401b3..8835e96 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -53,6 +53,7 @@
 #define SPSN_EXT_ID_S25FL128P_256KB	0x0300
 #define SPSN_EXT_ID_S25FL128P_64KB	0x0301
 #define SPSN_EXT_ID_S25FL032P		0x4d00
+#define SPSN_EXT_ID_S25FL129P		0x4d01
 
 struct spansion_spi_flash_params {
 	u16 idcode1;
@@ -131,6 +132,14 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
 		.nr_sectors = 64,
 		.name = "S25FL032P",
 	},
+	{
+		.idcode1 = SPSN_ID_S25FL128P,
+		.idcode2 = SPSN_EXT_ID_S25FL129P,
+		.page_size = 256,
+		.pages_per_sector = 256,
+		.nr_sectors = 256,
+		.name = "S25FL129P_64K",
+	},
 };
 
 static int spansion_write(struct spi_flash *flash,
-- 
1.7.5.3

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

* [U-Boot] [PATCH 2/9] sf: macronix: add MX25L4005 and MX25L8005
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 1/9] sf: spansion: add support for S25FL129P_64K Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 3/9] sf: unify write enable commands Mike Frysinger
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

From: Macpaul Lin <macpaul@andestech.com>

Add support of MX25L4005 and MX25L8005 according to the datasheet
http://www.mct.net/download/macronix/mx25l8005.pdf

This patch has been tested with MX25L4005 and MX25L8005

Signed-off-by: Macpaul Lin <macpaul@andestech.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/macronix.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c
index ff66f2a..90aa657 100644
--- a/drivers/mtd/spi/macronix.c
+++ b/drivers/mtd/spi/macronix.c
@@ -71,6 +71,22 @@ static inline struct macronix_spi_flash *to_macronix_spi_flash(struct spi_flash
 
 static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {
 	{
+		.idcode = 0x2013,
+		.page_size = 256,
+		.pages_per_sector = 16,
+		.sectors_per_block = 16,
+		.nr_blocks = 8,
+		.name = "MX25L4005",
+	},
+	{
+		.idcode = 0x2014,
+		.page_size = 256,
+		.pages_per_sector = 16,
+		.sectors_per_block = 16,
+		.nr_blocks = 16,
+		.name = "MX25L8005",
+	},
+	{
 		.idcode = 0x2015,
 		.page_size = 256,
 		.pages_per_sector = 16,
-- 
1.7.5.3

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

* [U-Boot] [PATCH 3/9] sf: unify write enable commands
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 1/9] sf: spansion: add support for S25FL129P_64K Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 2/9] sf: macronix: add MX25L4005 and MX25L8005 Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 4/9] sf: unify write funcs Mike Frysinger
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

Every spi flash uses the same write enable command, so unify this in
the common code.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/eon.c                |    2 +-
 drivers/mtd/spi/macronix.c           |    2 +-
 drivers/mtd/spi/ramtron.c            |    2 +-
 drivers/mtd/spi/spansion.c           |    2 +-
 drivers/mtd/spi/spi_flash.c          |    2 +-
 drivers/mtd/spi/spi_flash_internal.h |    8 ++++++++
 drivers/mtd/spi/sst.c                |    2 +-
 drivers/mtd/spi/stmicro.c            |    2 +-
 drivers/mtd/spi/winbond.c            |    2 +-
 9 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/spi/eon.c b/drivers/mtd/spi/eon.c
index e3de3aa..6826708 100644
--- a/drivers/mtd/spi/eon.c
+++ b/drivers/mtd/spi/eon.c
@@ -91,7 +91,7 @@ static int eon_write(struct spi_flash *flash,
 		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
 		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
 
-		ret = spi_flash_cmd(flash->spi, CMD_EN25Q128_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			break;
diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c
index 90aa657..f1c2bbb 100644
--- a/drivers/mtd/spi/macronix.c
+++ b/drivers/mtd/spi/macronix.c
@@ -163,7 +163,7 @@ static int macronix_write(struct spi_flash *flash,
 		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
 		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
 
-		ret = spi_flash_cmd(flash->spi, CMD_MX25XX_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			break;
diff --git a/drivers/mtd/spi/ramtron.c b/drivers/mtd/spi/ramtron.c
index 078d16c..27d4039 100644
--- a/drivers/mtd/spi/ramtron.c
+++ b/drivers/mtd/spi/ramtron.c
@@ -198,7 +198,7 @@ static int ramtron_common(struct spi_flash *flash,
 
 	if (command == CMD_RAMTRON_WRITE) {
 		/* send WREN */
-		ret = spi_flash_cmd(flash->spi, CMD_RAMTRON_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			goto releasebus;
diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index 8835e96..9dbab5d 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -177,7 +177,7 @@ static int spansion_write(struct spi_flash *flash,
 		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
 		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
 
-		ret = spi_flash_cmd(flash->spi, CMD_S25FLXX_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			break;
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 016b586..3e0d02d 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -163,7 +163,7 @@ int spi_flash_cmd_erase(struct spi_flash *flash, u8 erase_cmd,
 		debug("SF: erase %2x %2x %2x %2x (%x)\n", cmd[0], cmd[1],
 		      cmd[2], cmd[3], offset);
 
-		ret = spi_flash_cmd(flash->spi, CMD_WRITE_ENABLE, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret)
 			goto out;
 
diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
index fc109ce..6665bed 100644
--- a/drivers/mtd/spi/spi_flash_internal.h
+++ b/drivers/mtd/spi/spi_flash_internal.h
@@ -46,6 +46,14 @@ int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
 		const void *data, size_t data_len);
 
 /*
+ * Enable writing on the SPI flash.
+ */
+static inline int spi_flash_cmd_write_enable(struct spi_flash *flash)
+{
+	return spi_flash_cmd(flash->spi, CMD_WRITE_ENABLE, NULL, 0);
+}
+
+/*
  * Same as spi_flash_cmd_read() except it also claims/releases the SPI
  * bus. Used as common part of the ->read() operation.
  */
diff --git a/drivers/mtd/spi/sst.c b/drivers/mtd/spi/sst.c
index 4dc2db2..6691c1d 100644
--- a/drivers/mtd/spi/sst.c
+++ b/drivers/mtd/spi/sst.c
@@ -96,7 +96,7 @@ static const struct sst_spi_flash_params sst_spi_flash_table[] = {
 static int
 sst_enable_writing(struct spi_flash *flash)
 {
-	int ret = spi_flash_cmd(flash->spi, CMD_SST_WREN, NULL, 0);
+	int ret = spi_flash_cmd_write_enable(flash);
 	if (ret)
 		debug("SF: Enabling Write failed\n");
 	return ret;
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index a1959ca..80d97b4 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -169,7 +169,7 @@ static int stmicro_write(struct spi_flash *flash,
 		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
 		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
 
-		ret = spi_flash_cmd(flash->spi, CMD_M25PXX_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			break;
diff --git a/drivers/mtd/spi/winbond.c b/drivers/mtd/spi/winbond.c
index e8d30ae..10fabf5 100644
--- a/drivers/mtd/spi/winbond.c
+++ b/drivers/mtd/spi/winbond.c
@@ -140,7 +140,7 @@ static int winbond_write(struct spi_flash *flash,
 			buf + actual,
 			cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
 
-		ret = spi_flash_cmd(flash->spi, CMD_W25_WREN, NULL, 0);
+		ret = spi_flash_cmd_write_enable(flash);
 		if (ret < 0) {
 			debug("SF: Enabling Write failed\n");
 			goto out;
-- 
1.7.5.3

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

* [U-Boot] [PATCH 4/9] sf: unify write funcs
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (2 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 3/9] sf: unify write enable commands Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 5/9] sf: kill off now-unused local state Mike Frysinger
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

Once we add a new page_size field for write lengths, we can unify the
write methods for most of the spi flash drivers.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/eon.c                |   66 +------------------------------
 drivers/mtd/spi/macronix.c           |   66 +------------------------------
 drivers/mtd/spi/spansion.c           |   66 +------------------------------
 drivers/mtd/spi/spi_flash.c          |   57 +++++++++++++++++++++++++++
 drivers/mtd/spi/spi_flash_internal.h |    8 ++++
 drivers/mtd/spi/stmicro.c            |   66 +------------------------------
 drivers/mtd/spi/winbond.c            |   71 +--------------------------------
 include/spi_flash.h                  |    5 ++-
 8 files changed, 80 insertions(+), 325 deletions(-)

diff --git a/drivers/mtd/spi/eon.c b/drivers/mtd/spi/eon.c
index 6826708..036855b 100644
--- a/drivers/mtd/spi/eon.c
+++ b/drivers/mtd/spi/eon.c
@@ -56,69 +56,6 @@ static const struct eon_spi_flash_params eon_spi_flash_table[] = {
 	},
 };
 
-static int eon_write(struct spi_flash *flash,
-		     u32 offset, size_t len, const void *buf)
-{
-	struct eon_spi_flash *eon = to_eon_spi_flash(flash);
-	unsigned long page_addr;
-	unsigned long byte_addr;
-	unsigned long page_size;
-	size_t chunk_len;
-	size_t actual;
-	int ret;
-	u8 cmd[4];
-
-	page_size = eon->params->page_size;
-	page_addr = offset / page_size;
-	byte_addr = offset % page_size;
-
-	ret = spi_claim_bus(flash->spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = 0;
-	for (actual = 0; actual < len; actual += chunk_len) {
-		chunk_len = min(len - actual, page_size - byte_addr);
-
-		cmd[0] = CMD_EN25Q128_PP;
-		cmd[1] = page_addr >> 8;
-		cmd[2] = page_addr;
-		cmd[3] = byte_addr;
-
-		debug
-		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
-		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_cmd_write_enable(flash);
-		if (ret < 0) {
-			debug("SF: Enabling Write failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
-					  buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: EON Page Program failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			break;
-
-		page_addr++;
-		byte_addr = 0;
-	}
-
-	debug("SF: EON: Successfully programmed %u bytes @ 0x%x\n",
-	      len, offset);
-
-	spi_release_bus(flash->spi);
-	return ret;
-}
-
 static int eon_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_EN25Q128_BE, offset, len);
@@ -151,9 +88,10 @@ struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode)
 	eon->flash.spi = spi;
 	eon->flash.name = params->name;
 
-	eon->flash.write = eon_write;
+	eon->flash.write = spi_flash_cmd_write_multi;
 	eon->flash.erase = eon_erase;
 	eon->flash.read = spi_flash_cmd_read_fast;
+	eon->flash.page_size = params->page_size;
 	eon->flash.sector_size = params->page_size * params->pages_per_sector
 	    * params->sectors_per_block;
 	eon->flash.size = params->page_size * params->pages_per_sector
diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c
index f1c2bbb..cb06476 100644
--- a/drivers/mtd/spi/macronix.c
+++ b/drivers/mtd/spi/macronix.c
@@ -128,69 +128,6 @@ static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {
 	},
 };
 
-static int macronix_write(struct spi_flash *flash,
-			  u32 offset, size_t len, const void *buf)
-{
-	struct macronix_spi_flash *mcx = to_macronix_spi_flash(flash);
-	unsigned long page_addr;
-	unsigned long byte_addr;
-	unsigned long page_size;
-	size_t chunk_len;
-	size_t actual;
-	int ret;
-	u8 cmd[4];
-
-	page_size = mcx->params->page_size;
-	page_addr = offset / page_size;
-	byte_addr = offset % page_size;
-
-	ret = spi_claim_bus(flash->spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = 0;
-	for (actual = 0; actual < len; actual += chunk_len) {
-		chunk_len = min(len - actual, page_size - byte_addr);
-
-		cmd[0] = CMD_MX25XX_PP;
-		cmd[1] = page_addr >> 8;
-		cmd[2] = page_addr;
-		cmd[3] = byte_addr;
-
-		debug
-		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
-		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_cmd_write_enable(flash);
-		if (ret < 0) {
-			debug("SF: Enabling Write failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
-					  buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: Macronix Page Program failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			break;
-
-		page_addr++;
-		byte_addr = 0;
-	}
-
-	debug("SF: Macronix: Successfully programmed %u bytes @ 0x%x\n",
-	      len, offset);
-
-	spi_release_bus(flash->spi);
-	return ret;
-}
-
 static int macronix_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_MX25XX_BE, offset, len);
@@ -224,9 +161,10 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
 	mcx->flash.spi = spi;
 	mcx->flash.name = params->name;
 
-	mcx->flash.write = macronix_write;
+	mcx->flash.write = spi_flash_cmd_write_multi;
 	mcx->flash.erase = macronix_erase;
 	mcx->flash.read = spi_flash_cmd_read_fast;
+	mcx->flash.page_size = params->page_size;
 	mcx->flash.sector_size = params->page_size * params->pages_per_sector
 		* params->sectors_per_block;
 	mcx->flash.size = mcx->flash.sector_size * params->nr_blocks;
diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index 9dbab5d..1ef8c82 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -142,69 +142,6 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
 	},
 };
 
-static int spansion_write(struct spi_flash *flash,
-			 u32 offset, size_t len, const void *buf)
-{
-	struct spansion_spi_flash *spsn = to_spansion_spi_flash(flash);
-	unsigned long page_addr;
-	unsigned long byte_addr;
-	unsigned long page_size;
-	size_t chunk_len;
-	size_t actual;
-	int ret;
-	u8 cmd[4];
-
-	page_size = spsn->params->page_size;
-	page_addr = offset / page_size;
-	byte_addr = offset % page_size;
-
-	ret = spi_claim_bus(flash->spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = 0;
-	for (actual = 0; actual < len; actual += chunk_len) {
-		chunk_len = min(len - actual, page_size - byte_addr);
-
-		cmd[0] = CMD_S25FLXX_PP;
-		cmd[1] = page_addr >> 8;
-		cmd[2] = page_addr;
-		cmd[3] = byte_addr;
-
-		debug
-		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
-		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_cmd_write_enable(flash);
-		if (ret < 0) {
-			debug("SF: Enabling Write failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
-					  buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: SPANSION Page Program failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			break;
-
-		page_addr++;
-		byte_addr = 0;
-	}
-
-	debug("SF: SPANSION: Successfully programmed %u bytes @ 0x%x\n",
-	      len, offset);
-
-	spi_release_bus(flash->spi);
-	return ret;
-}
-
 static int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_S25FLXX_SE, offset, len);
@@ -243,9 +180,10 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
 	spsn->flash.spi = spi;
 	spsn->flash.name = params->name;
 
-	spsn->flash.write = spansion_write;
+	spsn->flash.write = spi_flash_cmd_write_multi;
 	spsn->flash.erase = spansion_erase;
 	spsn->flash.read = spi_flash_cmd_read_fast;
+	spsn->flash.page_size = params->page_size;
 	spsn->flash.sector_size = params->page_size * params->pages_per_sector;
 	spsn->flash.size = spsn->flash.sector_size * params->nr_sectors;
 
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 3e0d02d..730c009 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -65,6 +65,63 @@ int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
 	return spi_flash_read_write(spi, cmd, cmd_len, data, NULL, data_len);
 }
 
+int spi_flash_cmd_write_multi(struct spi_flash *flash, u32 offset,
+		size_t len, const void *buf)
+{
+	unsigned long page_addr, byte_addr, page_size;
+	size_t chunk_len, actual;
+	int ret;
+	u8 cmd[4];
+
+	page_size = flash->page_size;
+	page_addr = offset / page_size;
+	byte_addr = offset % page_size;
+
+	ret = spi_claim_bus(flash->spi);
+	if (ret) {
+		debug("SF: unable to claim SPI bus\n");
+		return ret;
+	}
+
+	cmd[0] = CMD_PAGE_PROGRAM;
+	for (actual = 0; actual < len; actual += chunk_len) {
+		chunk_len = min(len - actual, page_size - byte_addr);
+
+		cmd[1] = page_addr >> 8;
+		cmd[2] = page_addr;
+		cmd[3] = byte_addr;
+
+		debug("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %zu\n",
+		      buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
+
+		ret = spi_flash_cmd_write_enable(flash);
+		if (ret < 0) {
+			debug("SF: enabling write failed\n");
+			break;
+		}
+
+		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
+					  buf + actual, chunk_len);
+		if (ret < 0) {
+			debug("SF: write failed\n");
+			break;
+		}
+
+		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
+		if (ret)
+			break;
+
+		page_addr++;
+		byte_addr = 0;
+	}
+
+	debug("SF: program %s %zu bytes @ %#x\n",
+	      ret ? "failure" : "success", len, offset);
+
+	spi_release_bus(flash->spi);
+	return ret;
+}
+
 int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd,
 		size_t cmd_len, void *data, size_t data_len)
 {
diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
index 6665bed..f80f717 100644
--- a/drivers/mtd/spi/spi_flash_internal.h
+++ b/drivers/mtd/spi/spi_flash_internal.h
@@ -19,6 +19,7 @@
 #define CMD_READ_ARRAY_FAST		0x0b
 #define CMD_READ_ARRAY_LEGACY		0xe8
 
+#define CMD_PAGE_PROGRAM		0x02
 #define CMD_READ_STATUS			0x05
 #define CMD_WRITE_ENABLE		0x06
 
@@ -46,6 +47,13 @@ int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
 		const void *data, size_t data_len);
 
 /*
+ * Write the requested data out breaking it up into multiple write
+ * commands as needed per the write size.
+ */
+int spi_flash_cmd_write_multi(struct spi_flash *flash, u32 offset,
+		size_t len, const void *buf);
+
+/*
  * Enable writing on the SPI flash.
  */
 static inline int spi_flash_cmd_write_enable(struct spi_flash *flash)
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index 80d97b4..8106e7c 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -134,69 +134,6 @@ static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
 	},
 };
 
-static int stmicro_write(struct spi_flash *flash,
-			 u32 offset, size_t len, const void *buf)
-{
-	struct stmicro_spi_flash *stm = to_stmicro_spi_flash(flash);
-	unsigned long page_addr;
-	unsigned long byte_addr;
-	unsigned long page_size;
-	size_t chunk_len;
-	size_t actual;
-	int ret;
-	u8 cmd[4];
-
-	page_size = stm->params->page_size;
-	page_addr = offset / page_size;
-	byte_addr = offset % page_size;
-
-	ret = spi_claim_bus(flash->spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	ret = 0;
-	for (actual = 0; actual < len; actual += chunk_len) {
-		chunk_len = min(len - actual, page_size - byte_addr);
-
-		cmd[0] = CMD_M25PXX_PP;
-		cmd[1] = page_addr >> 8;
-		cmd[2] = page_addr;
-		cmd[3] = byte_addr;
-
-		debug
-		    ("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
-		     buf + actual, cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_cmd_write_enable(flash);
-		if (ret < 0) {
-			debug("SF: Enabling Write failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
-					  buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: STMicro Page Program failed\n");
-			break;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			break;
-
-		page_addr++;
-		byte_addr = 0;
-	}
-
-	debug("SF: STMicro: Successfully programmed %u bytes @ 0x%x\n",
-	      len, offset);
-
-	spi_release_bus(flash->spi);
-	return ret;
-}
-
 static int stmicro_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_M25PXX_SE, offset, len);
@@ -243,9 +180,10 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
 	stm->flash.spi = spi;
 	stm->flash.name = params->name;
 
-	stm->flash.write = stmicro_write;
+	stm->flash.write = spi_flash_cmd_write_multi;
 	stm->flash.erase = stmicro_erase;
 	stm->flash.read = spi_flash_cmd_read_fast;
+	stm->flash.page_size = params->page_size;
 	stm->flash.sector_size = params->page_size * params->pages_per_sector;
 	stm->flash.size = stm->flash.sector_size * params->nr_sectors;
 
diff --git a/drivers/mtd/spi/winbond.c b/drivers/mtd/spi/winbond.c
index 10fabf5..3db0cb0 100644
--- a/drivers/mtd/spi/winbond.c
+++ b/drivers/mtd/spi/winbond.c
@@ -105,71 +105,6 @@ static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
 	},
 };
 
-static int winbond_write(struct spi_flash *flash,
-		u32 offset, size_t len, const void *buf)
-{
-	struct winbond_spi_flash *stm = to_winbond_spi_flash(flash);
-	unsigned long page_addr;
-	unsigned long byte_addr;
-	unsigned long page_size;
-	unsigned int page_shift;
-	size_t chunk_len;
-	size_t actual;
-	int ret;
-	u8 cmd[4];
-
-	page_shift = stm->params->l2_page_size;
-	page_size = (1 << page_shift);
-	page_addr = offset / page_size;
-	byte_addr = offset % page_size;
-
-	ret = spi_claim_bus(flash->spi);
-	if (ret) {
-		debug("SF: Unable to claim SPI bus\n");
-		return ret;
-	}
-
-	for (actual = 0; actual < len; actual += chunk_len) {
-		chunk_len = min(len - actual, page_size - byte_addr);
-
-		cmd[0] = CMD_W25_PP;
-		cmd[1] = page_addr >> (16 - page_shift);
-		cmd[2] = page_addr << (page_shift - 8) | (byte_addr >> 8);
-		cmd[3] = byte_addr;
-		debug("PP: 0x%p => cmd = { 0x%02x 0x%02x%02x%02x } chunk_len = %d\n",
-			buf + actual,
-			cmd[0], cmd[1], cmd[2], cmd[3], chunk_len);
-
-		ret = spi_flash_cmd_write_enable(flash);
-		if (ret < 0) {
-			debug("SF: Enabling Write failed\n");
-			goto out;
-		}
-
-		ret = spi_flash_cmd_write(flash->spi, cmd, 4,
-				buf + actual, chunk_len);
-		if (ret < 0) {
-			debug("SF: Winbond Page Program failed\n");
-			goto out;
-		}
-
-		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-		if (ret)
-			goto out;
-
-		page_addr++;
-		byte_addr = 0;
-	}
-
-	debug("SF: Winbond: Successfully programmed %u bytes @ 0x%x\n",
-			len, offset);
-	ret = 0;
-
-out:
-	spi_release_bus(flash->spi);
-	return ret;
-}
-
 static int winbond_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_W25_SE, offset, len);
@@ -207,11 +142,11 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode)
 	/* Assuming power-of-two page size initially. */
 	page_size = 1 << params->l2_page_size;
 
-	stm->flash.write = winbond_write;
+	stm->flash.write = spi_flash_cmd_write_multi;
 	stm->flash.erase = winbond_erase;
 	stm->flash.read = spi_flash_cmd_read_fast;
-	stm->flash.sector_size = (1 << stm->params->l2_page_size) *
-		stm->params->pages_per_sector;
+	stm->flash.page_size = page_size;
+	stm->flash.sector_size = page_size * stm->params->pages_per_sector;
 	stm->flash.size = page_size * params->pages_per_sector
 				* params->sectors_per_block
 				* params->nr_blocks;
diff --git a/include/spi_flash.h b/include/spi_flash.h
index a384071..2671ab5 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -31,8 +31,11 @@ struct spi_flash {
 
 	const char	*name;
 
+	/* Total flash size */
 	u32		size;
-
+	/* Write (page) size */
+	u32		page_size;
+	/* Erase (sector) size */
 	u32		sector_size;
 
 	int		(*read)(struct spi_flash *flash, u32 offset,
-- 
1.7.5.3

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

* [U-Boot] [PATCH 5/9] sf: kill off now-unused local state
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (3 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 4/9] sf: unify write funcs Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-30 15:31   ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 6/9] sf: eon/stmicro: inline useless ID defines Mike Frysinger
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

Now that the common spi_flash structure tracks all the info that these
drivers need, kill off their local state indirection and use just what
the common code provides.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/eon.c      |   36 ++++++++++++------------------------
 drivers/mtd/spi/macronix.c |   36 ++++++++++++------------------------
 drivers/mtd/spi/spansion.c |   36 ++++++++++++------------------------
 drivers/mtd/spi/stmicro.c  |   37 ++++++++++++-------------------------
 drivers/mtd/spi/winbond.c  |   39 +++++++++++++--------------------------
 5 files changed, 61 insertions(+), 123 deletions(-)

diff --git a/drivers/mtd/spi/eon.c b/drivers/mtd/spi/eon.c
index 036855b..5937b61 100644
--- a/drivers/mtd/spi/eon.c
+++ b/drivers/mtd/spi/eon.c
@@ -34,17 +34,6 @@ struct eon_spi_flash_params {
 	const char *name;
 };
 
-/* spi_flash needs to be first so upper layers can free() it */
-struct eon_spi_flash {
-	struct spi_flash flash;
-	const struct eon_spi_flash_params *params;
-};
-
-static inline struct eon_spi_flash *to_eon_spi_flash(struct spi_flash *flash)
-{
-	return container_of(flash, struct eon_spi_flash, flash);
-}
-
 static const struct eon_spi_flash_params eon_spi_flash_table[] = {
 	{
 		.idcode1 = EON_ID_EN25Q128,
@@ -64,7 +53,7 @@ static int eon_erase(struct spi_flash *flash, u32 offset, size_t len)
 struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode)
 {
 	const struct eon_spi_flash_params *params;
-	struct eon_spi_flash *eon;
+	struct spi_flash *flash;
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(eon_spi_flash_table); ++i) {
@@ -78,24 +67,23 @@ struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode)
 		return NULL;
 	}
 
-	eon = malloc(sizeof(*eon));
-	if (!eon) {
+	flash = malloc(sizeof(*flash));
+	if (!flash) {
 		debug("SF: Failed to allocate memory\n");
 		return NULL;
 	}
 
-	eon->params = params;
-	eon->flash.spi = spi;
-	eon->flash.name = params->name;
+	flash->spi = spi;
+	flash->name = params->name;
 
-	eon->flash.write = spi_flash_cmd_write_multi;
-	eon->flash.erase = eon_erase;
-	eon->flash.read = spi_flash_cmd_read_fast;
-	eon->flash.page_size = params->page_size;
-	eon->flash.sector_size = params->page_size * params->pages_per_sector
+	flash->write = spi_flash_cmd_write_multi;
+	flash->erase = eon_erase;
+	flash->read = spi_flash_cmd_read_fast;
+	flash->page_size = params->page_size;
+	flash->sector_size = params->page_size * params->pages_per_sector
 	    * params->sectors_per_block;
-	eon->flash.size = params->page_size * params->pages_per_sector
+	flash->size = params->page_size * params->pages_per_sector
 	    * params->nr_sectors;
 
-	return &eon->flash;
+	return flash;
 }
diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c
index cb06476..96fd5f0 100644
--- a/drivers/mtd/spi/macronix.c
+++ b/drivers/mtd/spi/macronix.c
@@ -58,17 +58,6 @@ struct macronix_spi_flash_params {
 	const char *name;
 };
 
-struct macronix_spi_flash {
-	struct spi_flash flash;
-	const struct macronix_spi_flash_params *params;
-};
-
-static inline struct macronix_spi_flash *to_macronix_spi_flash(struct spi_flash
-							       *flash)
-{
-	return container_of(flash, struct macronix_spi_flash, flash);
-}
-
 static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {
 	{
 		.idcode = 0x2013,
@@ -136,7 +125,7 @@ static int macronix_erase(struct spi_flash *flash, u32 offset, size_t len)
 struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
 {
 	const struct macronix_spi_flash_params *params;
-	struct macronix_spi_flash *mcx;
+	struct spi_flash *flash;
 	unsigned int i;
 	u16 id = idcode[2] | idcode[1] << 8;
 
@@ -151,23 +140,22 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
 		return NULL;
 	}
 
-	mcx = malloc(sizeof(*mcx));
-	if (!mcx) {
+	flash = malloc(sizeof(*flash));
+	if (!flash) {
 		debug("SF: Failed to allocate memory\n");
 		return NULL;
 	}
 
-	mcx->params = params;
-	mcx->flash.spi = spi;
-	mcx->flash.name = params->name;
+	flash->spi = spi;
+	flash->name = params->name;
 
-	mcx->flash.write = spi_flash_cmd_write_multi;
-	mcx->flash.erase = macronix_erase;
-	mcx->flash.read = spi_flash_cmd_read_fast;
-	mcx->flash.page_size = params->page_size;
-	mcx->flash.sector_size = params->page_size * params->pages_per_sector
+	flash->write = spi_flash_cmd_write_multi;
+	flash->erase = macronix_erase;
+	flash->read = spi_flash_cmd_read_fast;
+	flash->page_size = params->page_size;
+	flash->sector_size = params->page_size * params->pages_per_sector
 		* params->sectors_per_block;
-	mcx->flash.size = mcx->flash.sector_size * params->nr_blocks;
+	flash->size = flash->sector_size * params->nr_blocks;
 
-	return &mcx->flash;
+	return flash;
 }
diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index 1ef8c82..6301d87 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -64,17 +64,6 @@ struct spansion_spi_flash_params {
 	const char *name;
 };
 
-struct spansion_spi_flash {
-	struct spi_flash flash;
-	const struct spansion_spi_flash_params *params;
-};
-
-static inline struct spansion_spi_flash *to_spansion_spi_flash(struct spi_flash
-							     *flash)
-{
-	return container_of(flash, struct spansion_spi_flash, flash);
-}
-
 static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
 	{
 		.idcode1 = SPSN_ID_S25FL008A,
@@ -150,7 +139,7 @@ static int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
 struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
 {
 	const struct spansion_spi_flash_params *params;
-	struct spansion_spi_flash *spsn;
+	struct spi_flash *flash;
 	unsigned int i;
 	unsigned short jedec, ext_jedec;
 
@@ -170,22 +159,21 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
 		return NULL;
 	}
 
-	spsn = malloc(sizeof(struct spansion_spi_flash));
-	if (!spsn) {
+	flash = malloc(sizeof(*flash));
+	if (!flash) {
 		debug("SF: Failed to allocate memory\n");
 		return NULL;
 	}
 
-	spsn->params = params;
-	spsn->flash.spi = spi;
-	spsn->flash.name = params->name;
+	flash->spi = spi;
+	flash->name = params->name;
 
-	spsn->flash.write = spi_flash_cmd_write_multi;
-	spsn->flash.erase = spansion_erase;
-	spsn->flash.read = spi_flash_cmd_read_fast;
-	spsn->flash.page_size = params->page_size;
-	spsn->flash.sector_size = params->page_size * params->pages_per_sector;
-	spsn->flash.size = spsn->flash.sector_size * params->nr_sectors;
+	flash->write = spi_flash_cmd_write_multi;
+	flash->erase = spansion_erase;
+	flash->read = spi_flash_cmd_read_fast;
+	flash->page_size = params->page_size;
+	flash->sector_size = params->page_size * params->pages_per_sector;
+	flash->size = flash->sector_size * params->nr_sectors;
 
-	return &spsn->flash;
+	return flash;
 }
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index 8106e7c..9a9d3d4 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -63,18 +63,6 @@ struct stmicro_spi_flash_params {
 	const char *name;
 };
 
-/* spi_flash needs to be first so upper layers can free() it */
-struct stmicro_spi_flash {
-	struct spi_flash flash;
-	const struct stmicro_spi_flash_params *params;
-};
-
-static inline struct stmicro_spi_flash *to_stmicro_spi_flash(struct spi_flash
-							     *flash)
-{
-	return container_of(flash, struct stmicro_spi_flash, flash);
-}
-
 static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
 	{
 		.idcode1 = STM_ID_M25P10,
@@ -142,7 +130,7 @@ static int stmicro_erase(struct spi_flash *flash, u32 offset, size_t len)
 struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
 {
 	const struct stmicro_spi_flash_params *params;
-	struct stmicro_spi_flash *stm;
+	struct spi_flash *flash;
 	unsigned int i;
 
 	if (idcode[0] == 0xff) {
@@ -170,22 +158,21 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
 		return NULL;
 	}
 
-	stm = malloc(sizeof(struct stmicro_spi_flash));
-	if (!stm) {
+	flash = malloc(sizeof(*flash));
+	if (!flash) {
 		debug("SF: Failed to allocate memory\n");
 		return NULL;
 	}
 
-	stm->params = params;
-	stm->flash.spi = spi;
-	stm->flash.name = params->name;
+	flash->spi = spi;
+	flash->name = params->name;
 
-	stm->flash.write = spi_flash_cmd_write_multi;
-	stm->flash.erase = stmicro_erase;
-	stm->flash.read = spi_flash_cmd_read_fast;
-	stm->flash.page_size = params->page_size;
-	stm->flash.sector_size = params->page_size * params->pages_per_sector;
-	stm->flash.size = stm->flash.sector_size * params->nr_sectors;
+	flash->write = spi_flash_cmd_write_multi;
+	flash->erase = stmicro_erase;
+	flash->read = spi_flash_cmd_read_fast;
+	flash->page_size = params->page_size;
+	flash->sector_size = params->page_size * params->pages_per_sector;
+	flash->size = flash->sector_size * params->nr_sectors;
 
-	return &stm->flash;
+	return flash;
 }
diff --git a/drivers/mtd/spi/winbond.c b/drivers/mtd/spi/winbond.c
index 3db0cb0..45bd146 100644
--- a/drivers/mtd/spi/winbond.c
+++ b/drivers/mtd/spi/winbond.c
@@ -34,18 +34,6 @@ struct winbond_spi_flash_params {
 	const char	*name;
 };
 
-/* spi_flash needs to be first so upper layers can free() it */
-struct winbond_spi_flash {
-	struct spi_flash flash;
-	const struct winbond_spi_flash_params *params;
-};
-
-static inline struct winbond_spi_flash *
-to_winbond_spi_flash(struct spi_flash *flash)
-{
-	return container_of(flash, struct winbond_spi_flash, flash);
-}
-
 static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
 	{
 		.id			= 0x3015,
@@ -113,9 +101,9 @@ static int winbond_erase(struct spi_flash *flash, u32 offset, size_t len)
 struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode)
 {
 	const struct winbond_spi_flash_params *params;
-	unsigned page_size;
-	struct winbond_spi_flash *stm;
+	struct spi_flash *flash;
 	unsigned int i;
+	unsigned page_size;
 
 	for (i = 0; i < ARRAY_SIZE(winbond_spi_flash_table); i++) {
 		params = &winbond_spi_flash_table[i];
@@ -129,27 +117,26 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode)
 		return NULL;
 	}
 
-	stm = malloc(sizeof(struct winbond_spi_flash));
-	if (!stm) {
+	flash = malloc(sizeof(*flash));
+	if (!flash) {
 		debug("SF: Failed to allocate memory\n");
 		return NULL;
 	}
 
-	stm->params = params;
-	stm->flash.spi = spi;
-	stm->flash.name = params->name;
+	flash->spi = spi;
+	flash->name = params->name;
 
 	/* Assuming power-of-two page size initially. */
 	page_size = 1 << params->l2_page_size;
 
-	stm->flash.write = spi_flash_cmd_write_multi;
-	stm->flash.erase = winbond_erase;
-	stm->flash.read = spi_flash_cmd_read_fast;
-	stm->flash.page_size = page_size;
-	stm->flash.sector_size = page_size * stm->params->pages_per_sector;
-	stm->flash.size = page_size * params->pages_per_sector
+	flash->write = spi_flash_cmd_write_multi;
+	flash->erase = winbond_erase;
+	flash->read = spi_flash_cmd_read_fast;
+	flash->page_size = page_size;
+	flash->sector_size = page_size * params->pages_per_sector;
+	flash->size = page_size * params->pages_per_sector
 				* params->sectors_per_block
 				* params->nr_blocks;
 
-	return &stm->flash;
+	return flash;
 }
-- 
1.7.5.3

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

* [U-Boot] [PATCH 6/9] sf: eon/stmicro: inline useless ID defines
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (4 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 5/9] sf: kill off now-unused local state Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 7/9] sf: unify write disable commands Mike Frysinger
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

These defines are used in only one place, so just inline them.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/eon.c     |    4 +---
 drivers/mtd/spi/stmicro.c |   25 ++++++++-----------------
 2 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/drivers/mtd/spi/eon.c b/drivers/mtd/spi/eon.c
index 5937b61..806b44e 100644
--- a/drivers/mtd/spi/eon.c
+++ b/drivers/mtd/spi/eon.c
@@ -23,8 +23,6 @@
 #define CMD_EN25Q128_DP		0xb9    /* Deep Power-down */
 #define CMD_EN25Q128_RES	0xab    /* Release from DP, and Read Signature */
 
-#define EON_ID_EN25Q128		0x18
-
 struct eon_spi_flash_params {
 	u8 idcode1;
 	u16 page_size;
@@ -36,7 +34,7 @@ struct eon_spi_flash_params {
 
 static const struct eon_spi_flash_params eon_spi_flash_table[] = {
 	{
-		.idcode1 = EON_ID_EN25Q128,
+		.idcode1 = 0x18,
 		.page_size = 256,
 		.pages_per_sector = 16,
 		.sectors_per_block = 16,
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index 9a9d3d4..a9b33cf 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -46,15 +46,6 @@
 #define CMD_M25PXX_DP		0xb9	/* Deep Power-down */
 #define CMD_M25PXX_RES		0xab	/* Release from DP, and Read Signature */
 
-#define STM_ID_M25P10		0x11
-#define STM_ID_M25P16		0x15
-#define STM_ID_M25P20		0x12
-#define STM_ID_M25P32		0x16
-#define STM_ID_M25P40		0x13
-#define STM_ID_M25P64		0x17
-#define STM_ID_M25P80		0x14
-#define STM_ID_M25P128		0x18
-
 struct stmicro_spi_flash_params {
 	u8 idcode1;
 	u16 page_size;
@@ -65,56 +56,56 @@ struct stmicro_spi_flash_params {
 
 static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
 	{
-		.idcode1 = STM_ID_M25P10,
+		.idcode1 = 0x11,
 		.page_size = 256,
 		.pages_per_sector = 128,
 		.nr_sectors = 4,
 		.name = "M25P10",
 	},
 	{
-		.idcode1 = STM_ID_M25P16,
+		.idcode1 = 0x15,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 32,
 		.name = "M25P16",
 	},
 	{
-		.idcode1 = STM_ID_M25P20,
+		.idcode1 = 0x12,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 4,
 		.name = "M25P20",
 	},
 	{
-		.idcode1 = STM_ID_M25P32,
+		.idcode1 = 0x16,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 64,
 		.name = "M25P32",
 	},
 	{
-		.idcode1 = STM_ID_M25P40,
+		.idcode1 = 0x13,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 8,
 		.name = "M25P40",
 	},
 	{
-		.idcode1 = STM_ID_M25P64,
+		.idcode1 = 0x17,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 128,
 		.name = "M25P64",
 	},
 	{
-		.idcode1 = STM_ID_M25P80,
+		.idcode1 = 0x14,
 		.page_size = 256,
 		.pages_per_sector = 256,
 		.nr_sectors = 16,
 		.name = "M25P80",
 	},
 	{
-		.idcode1 = STM_ID_M25P128,
+		.idcode1 = 0x18,
 		.page_size = 256,
 		.pages_per_sector = 1024,
 		.nr_sectors = 64,
-- 
1.7.5.3

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

* [U-Boot] [PATCH 7/9] sf: unify write disable commands
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (5 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 6/9] sf: eon/stmicro: inline useless ID defines Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 8/9] sf: sst: support newer standardized flashes Mike Frysinger
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

Every spi flash uses the same write disnable command, so unify this in
the common code.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/spi_flash_internal.h |    9 +++++++++
 drivers/mtd/spi/sst.c                |    2 +-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
index f80f717..91e036a 100644
--- a/drivers/mtd/spi/spi_flash_internal.h
+++ b/drivers/mtd/spi/spi_flash_internal.h
@@ -20,6 +20,7 @@
 #define CMD_READ_ARRAY_LEGACY		0xe8
 
 #define CMD_PAGE_PROGRAM		0x02
+#define CMD_WRITE_DISABLE		0x04
 #define CMD_READ_STATUS			0x05
 #define CMD_WRITE_ENABLE		0x06
 
@@ -62,6 +63,14 @@ static inline int spi_flash_cmd_write_enable(struct spi_flash *flash)
 }
 
 /*
+ * Disable writing on the SPI flash.
+ */
+static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
+{
+	return spi_flash_cmd(flash->spi, CMD_WRITE_DISABLE, NULL, 0);
+}
+
+/*
  * Same as spi_flash_cmd_read() except it also claims/releases the SPI
  * bus. Used as common part of the ->read() operation.
  */
diff --git a/drivers/mtd/spi/sst.c b/drivers/mtd/spi/sst.c
index 6691c1d..d1e8a93 100644
--- a/drivers/mtd/spi/sst.c
+++ b/drivers/mtd/spi/sst.c
@@ -105,7 +105,7 @@ sst_enable_writing(struct spi_flash *flash)
 static int
 sst_disable_writing(struct spi_flash *flash)
 {
-	int ret = spi_flash_cmd(flash->spi, CMD_SST_WRDI, NULL, 0);
+	int ret = spi_flash_cmd_write_disable(flash);
 	if (ret)
 		debug("SF: Disabling Write failed\n");
 	return ret;
-- 
1.7.5.3

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

* [U-Boot] [PATCH 8/9] sf: sst: support newer standardized flashes
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (6 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 7/9] sf: unify write disable commands Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:38 ` [U-Boot] [PATCH 9/9] sf: macronix: disable write protection when initializing Mike Frysinger
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

Newer SST flashes have dropped the Auto Address Increment (AAI) word
programming (WP) modes in favor of the standard page programming mode
that most flashes now support.  So add a flags field to the different
flashes to support both modes with new and old styles.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/sst.c |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi/sst.c b/drivers/mtd/spi/sst.c
index d1e8a93..9559c80 100644
--- a/drivers/mtd/spi/sst.c
+++ b/drivers/mtd/spi/sst.c
@@ -36,8 +36,12 @@
 #define SST_SR_AAI		(1 << 6)	/* Addressing mode */
 #define SST_SR_BPL		(1 << 7)	/* BP bits lock */
 
+#define SST_FEAT_WP		(1 << 0)	/* Supports AAI word program */
+#define SST_FEAT_MBP		(1 << 1)	/* Supports multibyte program */
+
 struct sst_spi_flash_params {
 	u8 idcode1;
+	u8 flags;
 	u16 nr_sectors;
 	const char *name;
 };
@@ -53,41 +57,51 @@ static inline struct sst_spi_flash *to_sst_spi_flash(struct spi_flash *flash)
 }
 
 #define SST_SECTOR_SIZE (4 * 1024)
+#define SST_PAGE_SIZE   256
 static const struct sst_spi_flash_params sst_spi_flash_table[] = {
 	{
 		.idcode1 = 0x8d,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 128,
 		.name = "SST25VF040B",
 	},{
 		.idcode1 = 0x8e,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 256,
 		.name = "SST25VF080B",
 	},{
 		.idcode1 = 0x41,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 512,
 		.name = "SST25VF016B",
 	},{
 		.idcode1 = 0x4a,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 1024,
 		.name = "SST25VF032B",
 	},{
 		.idcode1 = 0x4b,
+		.flags = SST_FEAT_MBP,
 		.nr_sectors = 2048,
 		.name = "SST25VF064C",
 	},{
 		.idcode1 = 0x01,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 16,
 		.name = "SST25WF512",
 	},{
 		.idcode1 = 0x02,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 32,
 		.name = "SST25WF010",
 	},{
 		.idcode1 = 0x03,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 64,
 		.name = "SST25WF020",
 	},{
 		.idcode1 = 0x04,
+		.flags = SST_FEAT_WP,
 		.nr_sectors = 128,
 		.name = "SST25WF040",
 	},
@@ -137,7 +151,7 @@ sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf)
 }
 
 static int
-sst_write(struct spi_flash *flash, u32 offset, size_t len, const void *buf)
+sst_write_wp(struct spi_flash *flash, u32 offset, size_t len, const void *buf)
 {
 	size_t actual, cmd_len;
 	int ret;
@@ -257,9 +271,13 @@ spi_flash_probe_sst(struct spi_slave *spi, u8 *idcode)
 	stm->flash.spi = spi;
 	stm->flash.name = params->name;
 
-	stm->flash.write = sst_write;
+	if (stm->params->flags & SST_FEAT_WP)
+		stm->flash.write = sst_write_wp;
+	else
+		stm->flash.write = spi_flash_cmd_write_multi;
 	stm->flash.erase = sst_erase;
 	stm->flash.read = spi_flash_cmd_read_fast;
+	stm->flash.page_size = SST_PAGE_SIZE;
 	stm->flash.sector_size = SST_SECTOR_SIZE;
 	stm->flash.size = stm->flash.sector_size * params->nr_sectors;
 
-- 
1.7.5.3

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

* [U-Boot] [PATCH 9/9] sf: macronix: disable write protection when initializing
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (7 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 8/9] sf: sst: support newer standardized flashes Mike Frysinger
@ 2011-06-28 17:38 ` Mike Frysinger
  2011-06-28 17:39 ` [U-Boot] Pull request u-boot-blackfin.git (sf branch) Mike Frysinger
  2011-06-29 21:16 ` [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Wolfgang Denk
  10 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:38 UTC (permalink / raw)
  To: u-boot

From: Simon Guinot <sguinot@lacie.com>

Signed-off-by: Simon Guinot <sguinot@lacie.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/mtd/spi/macronix.c |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c
index 96fd5f0..dacbc28 100644
--- a/drivers/mtd/spi/macronix.c
+++ b/drivers/mtd/spi/macronix.c
@@ -117,6 +117,45 @@ static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {
 	},
 };
 
+static int macronix_write_status(struct spi_flash *flash, u8 sr)
+{
+	u8 cmd;
+	int ret;
+
+	ret = spi_flash_cmd_write_enable(flash);
+	if (ret < 0) {
+		debug("SF: enabling write failed\n");
+		return ret;
+	}
+
+	cmd = CMD_MX25XX_WRSR;
+	ret = spi_flash_cmd_write(flash->spi, &cmd, 1, &sr, 1);
+	if (ret) {
+		debug("SF: fail to write status register\n");
+		return ret;
+	}
+
+	ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
+	if (ret < 0) {
+		debug("SF: write status register timed out\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+static int macronix_unlock(struct spi_flash *flash)
+{
+	int ret;
+
+	/* Enable status register writing and clear BP# bits */
+	ret = macronix_write_status(flash, 0);
+	if (ret)
+		debug("SF: fail to disable write protection\n");
+
+	return ret;
+}
+
 static int macronix_erase(struct spi_flash *flash, u32 offset, size_t len)
 {
 	return spi_flash_cmd_erase(flash, CMD_MX25XX_BE, offset, len);
@@ -157,5 +196,8 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
 		* params->sectors_per_block;
 	flash->size = flash->sector_size * params->nr_blocks;
 
+	/* Clear BP# bits for read-only flash */
+	macronix_unlock(flash);
+
 	return flash;
 }
-- 
1.7.5.3

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (8 preceding siblings ...)
  2011-06-28 17:38 ` [U-Boot] [PATCH 9/9] sf: macronix: disable write protection when initializing Mike Frysinger
@ 2011-06-28 17:39 ` Mike Frysinger
  2011-06-29 21:16   ` Wolfgang Denk
  2011-06-29 21:16 ` [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Wolfgang Denk
  10 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2011-06-28 17:39 UTC (permalink / raw)
  To: u-boot

The following changes since commit b1af6f532e0d348b153d5c148369229d24af361a:

  Prepare v2011.06 (2011-06-27 22:22:42 +0200)

are available in the git repository at:
  git://www.denx.de/git/u-boot-blackfin.git sf

Macpaul Lin (1):
      sf: macronix: add MX25L4005 and MX25L8005

Mike Frysinger (6):
      sf: unify write enable commands
      sf: unify write funcs
      sf: kill off now-unused local state
      sf: eon/stmicro: inline useless ID defines
      sf: unify write disable commands
      sf: sst: support newer standardized flashes

Shaohui Xie (1):
      sf: spansion: add support for S25FL129P_64K

Simon Guinot (1):
      sf: macronix: disable write protection when initializing

 drivers/mtd/spi/eon.c                |  102 ++++------------------------
 drivers/mtd/spi/macronix.c           |  126 +++++++++++++++-------------------
 drivers/mtd/spi/ramtron.c            |    2 +-
 drivers/mtd/spi/spansion.c           |  107 ++++++-----------------------
 drivers/mtd/spi/spi_flash.c          |   59 ++++++++++++++++-
 drivers/mtd/spi/spi_flash_internal.h |   25 +++++++
 drivers/mtd/spi/sst.c                |   26 ++++++-
 drivers/mtd/spi/stmicro.c            |  124 ++++++----------------------------
 drivers/mtd/spi/winbond.c            |  104 ++++------------------------
 include/spi_flash.h                  |    5 +-
 10 files changed, 232 insertions(+), 448 deletions(-)

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

* [U-Boot] [PATCH 0/9] spi flash updates for v2011.09
  2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
                   ` (9 preceding siblings ...)
  2011-06-28 17:39 ` [U-Boot] Pull request u-boot-blackfin.git (sf branch) Mike Frysinger
@ 2011-06-29 21:16 ` Wolfgang Denk
  10 siblings, 0 replies; 19+ messages in thread
From: Wolfgang Denk @ 2011-06-29 21:16 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <1309282694-27103-1-git-send-email-vapier@gentoo.org> you wrote:
> These have all been posted already.  A few part updates, bug fixes,
> code unification, and that kind of fun stuff.

Then why exactly are you reposting these here?

And IF these are reposts, why dopn't I see a patch version in the
Subject line, nor any change log in the patches itself?

NAK on the whole series.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You don't have to stay up nights to succeed; you have to  stay  awake
days.

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-06-28 17:39 ` [U-Boot] Pull request u-boot-blackfin.git (sf branch) Mike Frysinger
@ 2011-06-29 21:16   ` Wolfgang Denk
  2011-06-30 15:35     ` Mike Frysinger
  0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2011-06-29 21:16 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <1309282783-27244-1-git-send-email-vapier@gentoo.org> you wrote:
> The following changes since commit b1af6f532e0d348b153d5c148369229d24af361a:
> 
>   Prepare v2011.06 (2011-06-27 22:22:42 +0200)
> 
> are available in the git repository at:
>   git://www.denx.de/git/u-boot-blackfin.git sf

These patches (as is) were just posted a few hours ago.  You are
supposed to allow for a couple of days for reeview before sending a
pull request.

Ignored.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You can only live once, but if you do it right, once is enough.

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

* [U-Boot] [PATCH 5/9] sf: kill off now-unused local state
  2011-06-28 17:38 ` [U-Boot] [PATCH 5/9] sf: kill off now-unused local state Mike Frysinger
@ 2011-06-30 15:31   ` Mike Frysinger
  0 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2011-06-30 15:31 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 28, 2011 at 13:38, Mike Frysinger wrote:
> Now that the common spi_flash structure tracks all the info that these
> drivers need, kill off their local state indirection and use just what
> the common code provides.

this patch has been updated since it's original posting, but only to
rebase onto newer patches
-mike

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-06-29 21:16   ` Wolfgang Denk
@ 2011-06-30 15:35     ` Mike Frysinger
  2011-07-08  8:54       ` Simon Guinot
  0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2011-06-30 15:35 UTC (permalink / raw)
  To: u-boot

On Wed, Jun 29, 2011 at 17:16, Wolfgang Denk wrote:
> Mike Frysinger wrote:
>> The following changes since commit b1af6f532e0d348b153d5c148369229d24af361a:
>>
>> ? Prepare v2011.06 (2011-06-27 22:22:42 +0200)
>>
>> are available in the git repository at:
>> ? git://www.denx.de/git/u-boot-blackfin.git sf
>
> These patches (as is) were just posted a few hours ago. ?You are
> supposed to allow for a couple of days for reeview before sending a
> pull request.

all the patches in this series are unchanged from the ones posted
months ago (except for one that i noted, but that was a minor rebase)
-mike

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-06-30 15:35     ` Mike Frysinger
@ 2011-07-08  8:54       ` Simon Guinot
  2011-07-08 20:40         ` Mike Frysinger
  0 siblings, 1 reply; 19+ messages in thread
From: Simon Guinot @ 2011-07-08  8:54 UTC (permalink / raw)
  To: u-boot

Hi Mike and Wolfgang,

On Thu, Jun 30, 2011 at 11:35:55AM -0400, Mike Frysinger wrote:
> On Wed, Jun 29, 2011 at 17:16, Wolfgang Denk wrote:
> > Mike Frysinger wrote:
> >> The following changes since commit b1af6f532e0d348b153d5c148369229d24af361a:
> >>
> >> ? Prepare v2011.06 (2011-06-27 22:22:42 +0200)
> >>
> >> are available in the git repository at:
> >> ? git://www.denx.de/git/u-boot-blackfin.git sf
> >
> > These patches (as is) were just posted a few hours ago. ?You are
> > supposed to allow for a couple of days for reeview before sending a
> > pull request.
> 
> all the patches in this series are unchanged from the ones posted
> months ago (except for one that i noted, but that was a minor rebase)

Then, what is the status for this SF patches ?
How to get them merged with mainline ?

Regards,

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110708/aa2924e6/attachment.pgp 

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-07-08  8:54       ` Simon Guinot
@ 2011-07-08 20:40         ` Mike Frysinger
  2011-07-13 10:36           ` Simon Guinot
  0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2011-07-08 20:40 UTC (permalink / raw)
  To: u-boot

On Friday, July 08, 2011 04:54:09 Simon Guinot wrote:
> On Thu, Jun 30, 2011 at 11:35:55AM -0400, Mike Frysinger wrote:
> > On Wed, Jun 29, 2011 at 17:16, Wolfgang Denk wrote:
> > > Mike Frysinger wrote:
> > >> The following changes since commit
> > >> b1af6f532e0d348b153d5c148369229d24af361a:
> > >> 
> > >>   Prepare v2011.06 (2011-06-27 22:22:42 +0200)
> > >> 
> > >> are available in the git repository at:
> > >>   git://www.denx.de/git/u-boot-blackfin.git sf
> > > 
> > > These patches (as is) were just posted a few hours ago.  You are
> > > supposed to allow for a couple of days for reeview before sending a
> > > pull request.
> > 
> > all the patches in this series are unchanged from the ones posted
> > months ago (except for one that i noted, but that was a minor rebase)
> 
> Then, what is the status for this SF patches ?
> How to get them merged with mainline ?

Wolfgang wont take my pull requests for these, so i'll have to wait for him to 
pick them one by one out of patchwork.

you could try taking them out of patchwork and send Wolfgang a pull request.  
maybe he'll accept it from you.  here's the order:
http://patchwork.ozlabs.org/patch/103939/
http://patchwork.ozlabs.org/patch/103936/
http://patchwork.ozlabs.org/patch/92646/
http://patchwork.ozlabs.org/patch/92760/
http://patchwork.ozlabs.org/patch/103938/
http://patchwork.ozlabs.org/patch/92643/
http://patchwork.ozlabs.org/patch/92761/
http://patchwork.ozlabs.org/patch/92762/
http://patchwork.ozlabs.org/patch/103937/
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110708/2fa6258d/attachment.pgp 

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-07-08 20:40         ` Mike Frysinger
@ 2011-07-13 10:36           ` Simon Guinot
  2011-07-13 10:46             ` Wolfgang Denk
  0 siblings, 1 reply; 19+ messages in thread
From: Simon Guinot @ 2011-07-13 10:36 UTC (permalink / raw)
  To: u-boot

On Fri, Jul 08, 2011 at 04:40:37PM -0400, Mike Frysinger wrote:
> On Friday, July 08, 2011 04:54:09 Simon Guinot wrote:
> > On Thu, Jun 30, 2011 at 11:35:55AM -0400, Mike Frysinger wrote:
> > > On Wed, Jun 29, 2011 at 17:16, Wolfgang Denk wrote:
> > > > Mike Frysinger wrote:
> > > >> The following changes since commit
> > > >> b1af6f532e0d348b153d5c148369229d24af361a:
> > > >> 
> > > >>   Prepare v2011.06 (2011-06-27 22:22:42 +0200)
> > > >> 
> > > >> are available in the git repository at:
> > > >>   git://www.denx.de/git/u-boot-blackfin.git sf
> > > > 
> > > > These patches (as is) were just posted a few hours ago.  You are
> > > > supposed to allow for a couple of days for reeview before sending a
> > > > pull request.
> > > 
> > > all the patches in this series are unchanged from the ones posted
> > > months ago (except for one that i noted, but that was a minor rebase)
> > 
> > Then, what is the status for this SF patches ?
> > How to get them merged with mainline ?
> 
> Wolfgang wont take my pull requests for these, so i'll have to wait for him to 
> pick them one by one out of patchwork.
> 
> you could try taking them out of patchwork and send Wolfgang a pull request.  
> maybe he'll accept it from you.  here's the order:
> http://patchwork.ozlabs.org/patch/103939/
> http://patchwork.ozlabs.org/patch/103936/
> http://patchwork.ozlabs.org/patch/92646/
> http://patchwork.ozlabs.org/patch/92760/
> http://patchwork.ozlabs.org/patch/103938/
> http://patchwork.ozlabs.org/patch/92643/
> http://patchwork.ozlabs.org/patch/92761/
> http://patchwork.ozlabs.org/patch/92762/
> http://patchwork.ozlabs.org/patch/103937/

I have tried but I suspect Wolfgang will not accept a such pull request.

Wolfgang, this patches are needed and there is no point to drop them
down like this. Could you please explain how to get them mainlined ?

Thanks in advance.

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110713/8579befa/attachment.pgp 

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

* [U-Boot] Pull request u-boot-blackfin.git (sf branch)
  2011-07-13 10:36           ` Simon Guinot
@ 2011-07-13 10:46             ` Wolfgang Denk
  0 siblings, 0 replies; 19+ messages in thread
From: Wolfgang Denk @ 2011-07-13 10:46 UTC (permalink / raw)
  To: u-boot

Dear Simon Guinot,

In message <20110713103646.GB16297@kw.sim.vm.gnt> you wrote:
> 
> Wolfgang, this patches are needed and there is no point to drop them
> down like this. Could you please explain how to get them mainlined ?

Sorry, but this is not at the top of my priority list at the moment.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"...and the fully armed nuclear warheads, are, of  course,  merely  a
courtesy detail."

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

end of thread, other threads:[~2011-07-13 10:46 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-28 17:38 [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 1/9] sf: spansion: add support for S25FL129P_64K Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 2/9] sf: macronix: add MX25L4005 and MX25L8005 Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 3/9] sf: unify write enable commands Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 4/9] sf: unify write funcs Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 5/9] sf: kill off now-unused local state Mike Frysinger
2011-06-30 15:31   ` Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 6/9] sf: eon/stmicro: inline useless ID defines Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 7/9] sf: unify write disable commands Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 8/9] sf: sst: support newer standardized flashes Mike Frysinger
2011-06-28 17:38 ` [U-Boot] [PATCH 9/9] sf: macronix: disable write protection when initializing Mike Frysinger
2011-06-28 17:39 ` [U-Boot] Pull request u-boot-blackfin.git (sf branch) Mike Frysinger
2011-06-29 21:16   ` Wolfgang Denk
2011-06-30 15:35     ` Mike Frysinger
2011-07-08  8:54       ` Simon Guinot
2011-07-08 20:40         ` Mike Frysinger
2011-07-13 10:36           ` Simon Guinot
2011-07-13 10:46             ` Wolfgang Denk
2011-06-29 21:16 ` [U-Boot] [PATCH 0/9] spi flash updates for v2011.09 Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.