* [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.