MTD: Add support for S25FL032P spi nor-flash
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
This patch introduces an extra mask-field in spansion_spi_flash_params to support flash chips with 1-byte extended ID (like the S25FL032P).
--- drivers/mtd/spi/spansion.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-)
drivers/mtd/spi/spansion.c +2 -0
@@ -52,12 +52,14 @@#define SPSN_ID_S25FL128P 0x2018#define SPSN_EXT_ID_S25FL128P_256KB 0x0300#define SPSN_EXT_ID_S25FL128P_64KB 0x0301 +#define SPSN_EXT_ID_S25FL032P 0x4d00#define SPANSION_SR_WIP (1 << 0)/* Write-in-Progress */ struct spansion_spi_flash_params {u16 idcode1;u16 idcode2; +u16 idmask2;u16 page_size;u16 pages_per_sector;u16 nr_sectors;
@@ -79,6 +81,7 @@ static const struct spansion_spi_flash_params
spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL008A,
.idcode2 = 0,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 256,
.nr_sectors = 16,
@@ -87,6 +90,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL016A,
.idcode2 = 0,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 256,
.nr_sectors = 32,
@@ -95,6 +99,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL032A,
.idcode2 = 0,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 256,
.nr_sectors = 64,
@@ -103,6 +108,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL064A,
.idcode2 = 0,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 256,
.nr_sectors = 128,
@@ -111,6 +117,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL128P,
.idcode2 = SPSN_EXT_ID_S25FL128P_64KB,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 256,
.nr_sectors = 256,
@@ -119,11 +126,21 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
{
.idcode1 = SPSN_ID_S25FL128P,
.idcode2 = SPSN_EXT_ID_S25FL128P_256KB,
+ .idmask2 = 0xffff,
.page_size = 256,
.pages_per_sector = 1024,
.nr_sectors = 64,
.name = "S25FL128P_256K",
},
+ {
+ .idcode1 = SPSN_ID_S25FL032A,
+ .idcode2 = SPSN_EXT_ID_S25FL032P,
+ .idmask2 = 0xff00,
+ .page_size = 256,
+ .pages_per_sector = 256,
+ .nr_sectors = 64,
+ .name = "S25FL032P",
+ },
};
static int spansion_wait_ready(struct spi_flash *flash, unsigned long
timeout)
@@ -317,7 +334,7 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
for (i = 0; i < ARRAY_SIZE(spansion_spi_flash_table); i++) {
params = &spansion_spi_flash_table[i];
if (params->idcode1 == jedec) {
- if (params->idcode2 == ext_jedec)
+ if (params->idcode2 == (ext_jedec & params->idmask2))
break;
}
}
Signature · 1 line
1.6.3.3
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Review
Quoted 4 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +4
-0+ { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00,
what does the idcode2 look like such that you need a mask ?
-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/20100823/c14bdda8/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Quoted 8 lines · Mike Frysinger
Review
Quoted 4 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +4
-0+ { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00,what does the idcode2 look like such that you need a mask ? -mike
According to the datasheet the RDID command (0x9f) returns the following bytes:
byte 0: Manufacturer ID = 0x01
byte 1,2: Device ID = 0x02, 0x15 (same as S25FL032A) byte 3: Extended ID = 0x4d
byte 4,5,6: Spansion reserved (do not use).
byte 4 is read as 0x00 on my part, but due to the above explaination, I cannot say for sure it is always the same, so I had to implement a mask to check for it.
Best regards,
Signature · 5 lines
David Jander Protonic Holland. tel.: +31 (0) 229 212928 fax.: +31 (0) 229 210930 Factorij 36 / 1689 AL Zwaag
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Quoted 12 lines · On Tuesday, August 24, 2010 02:39:16 David Jander wrote:
Quoted 7 lines · Mike Frysinger
Review
Quoted 4 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +4
-0+ { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00,what does the idcode2 look like such that you need a mask ?
According to the datasheet the RDID command (
0x9f) returns the following bytes:
Quoted 8 lines
byte 0: Manufacturer ID =
0x01
byte 1,2: Device ID =0x02,0x15(same as S25FL032A) byte 3: Extended ID =0x4d
byte 4,5,6: Spansion reserved (do not use).byte 4 is read as
0x00on my part, but due to the above explaination, I cannot say for sure it is always the same, so I had to implement a mask to check for it.
i'd rather we delay adding code to support something that may never change. so drop the whole idmask2 stuff and wait for it to become an actual problem -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/20100824/7f339722/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Quoted 18 lines · Mike Frysinger
Quoted 17 lines · On Tuesday, August 24, 2010 02:39:16 David Jander wrote:
Quoted 7 lines · Mike Frysinger
Review
Quoted 4 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +4
-0+ { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00,what does the idcode2 look like such that you need a mask ?
According to the datasheet the RDID command (
0x9f) returns the following bytes:byte 0: Manufacturer ID =
0x01
byte 1,2: Device ID =0x02,0x15(same as S25FL032A) byte 3: Extended ID =0x4d
byte 4,5,6: Spansion reserved (do not use).
Quoted 7 lines
Quoted 3 lines
byte 4 is read as
0x00on my part, but due to the above explaination, I cannot say for sure it is always the same, so I had to implement a mask to check for it.i'd rather we delay adding code to support something that may never change. so drop the whole idmask2 stuff and wait for it to become an actual problem -mike
I agree that chances this ever breaks might seem rather tiny, but if it ever does break, waiting for it to happen could trigger a much bigger problem than it is to add these few lines; in the worst case, in some distant future, some boards will just not work for no apparent reason (if spansion decided to do something with byte 4 without notifying), and nobody will remember this discussion anymore...
OTOH, you decide. It's ok with me if you want to leave it out. Given the fact that you had already accepted this patch, should I send a new version (without the mask)?
Best regards,
Signature · 2 lines
David Jander Protonic Holland.
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Quoted 27 lines · On Tuesday, August 24, 2010 14:36:43 David Jander wrote:
Quoted 18 lines · Mike Frysinger
Quoted 17 lines · On Tuesday, August 24, 2010 02:39:16 David Jander wrote:
Quoted 7 lines · Mike Frysinger
Review
Quoted 4 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +4
-0+ { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00,what does the idcode2 look like such that you need a mask ?
According to the datasheet the RDID command (
0x9f) returns the following bytes:byte 0: Manufacturer ID =
0x01
byte 1,2: Device ID =0x02,0x15(same as S25FL032A) byte 3: Extended ID =0x4d
byte 4,5,6: Spansion reserved (do not use).Quoted 7 lines
Quoted 3 lines
byte 4 is read as
0x00on my part, but due to the above explaination, I cannot say for sure it is always the same, so I had to implement a mask to check for it.i'd rather we delay adding code to support something that may never change. so drop the whole idmask2 stuff and wait for it to become an actual problem
Quoted 6 lines
I agree that chances this ever breaks might seem rather tiny, but if it ever does break, waiting for it to happen could trigger a much bigger problem than it is to add these few lines; in the worst case, in some distant future, some boards will just not work for no apparent reason (if spansion decided to do something with byte 4 without notifying), and nobody will remember this discussion anymore...
considering the problem is rather minute and easily detected, i dont think it'll be that big of a deal
Quoted 3 lines
OTOH, you decide. It's ok with me if you want to leave it out. Given the fact that you had already accepted this patch, should I send a new version (without the mask)?
it's in a branch of mine that i can throw away, so just send a new patch based on current mainline and i'll integrate it. thanks !
-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/20100824/aeabfa49/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
--- drivers/mtd/spi/spansion.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
drivers/mtd/spi/spansion.c +9 -0
@@ -52,6 +52,7 @@#define SPSN_ID_S25FL128P 0x2018#define SPSN_EXT_ID_S25FL128P_256KB 0x0300#define SPSN_EXT_ID_S25FL128P_64KB 0x0301 +#define SPSN_EXT_ID_S25FL032P 0x4d00#define SPANSION_SR_WIP (1 << 0)/* Write-in-Progress */
@@ -124,6 +125,14 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { .nr_sectors = 64, .name = "S25FL128P_256K", }, + { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .page_size = 256, + .pages_per_sector = 256, + .nr_sectors = 64, + .name = "S25FL032P", + }, };static int spansion_wait_ready (struct spi_flash *flash,unsigned long timeout)
Signature · 1 line
1.6.3.3
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
thanks, this is now in my sf branch
-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/20100825/c3e77243/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
In reply to David JanderReview static const struct spansion_spi_flash_params · line 81
Quoted 2 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +0
-0@@ -79,6 +81,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
also, your e-mailer appears to have mangled this patch. please use git send- email so that it doesnt screw things up.
-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/20100823/2fa28072/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
Quoted 6 lines · On Monday, August 23, 2010 17:35:03 Mike Frysinger wrote:
Review static const struct spansion_spi_flash_params · line 81
Quoted 2 lines · On Monday, August 23, 2010 09:12:16 David Jander wrote:
(quoted diff) +0
-0@@ -79,6 +81,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {also, your e-mailer appears to have mangled this patch. please use
git send- emailso that it doesnt screw things up.
although i fixed up the commit and merged it manually. but you only get one pass, so next time i'll wait for a proper resend :P.
this is in my sf branch so it wont get lost
-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/20100823/e0361e1e/attachment.pgp
PATCH 1/1 MTD: Add support for S25FL032P spi nor-flash
In reply to Mike FrysingerThis patch introduces an extra mask-field in spansion_spi_flash_params to support flash chips with 1-byte extended ID (like the S25FL032P).
--- drivers/mtd/spi/spansion.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-)
drivers/mtd/spi/spansion.c +18 -1
@@ -52,12 +52,14 @@#define SPSN_ID_S25FL128P 0x2018#define SPSN_EXT_ID_S25FL128P_256KB 0x0300#define SPSN_EXT_ID_S25FL128P_64KB 0x0301 +#define SPSN_EXT_ID_S25FL032P 0x4d00#define SPANSION_SR_WIP (1 << 0)/* Write-in-Progress */ struct spansion_spi_flash_params {u16 idcode1;u16 idcode2; +u16 idmask2;u16 page_size;u16 pages_per_sector;u16 nr_sectors;
@@ -79,6 +81,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL008A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 16,
@@ -87,6 +90,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL016A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 32,
@@ -95,6 +99,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL032A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 64,
@@ -103,6 +108,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL064A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 128,
@@ -111,6 +117,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL128P, .idcode2 = SPSN_EXT_ID_S25FL128P_64KB, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 256,
@@ -119,11 +126,21 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL128P, .idcode2 = SPSN_EXT_ID_S25FL128P_256KB, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 1024, .nr_sectors = 64, .name = "S25FL128P_256K", }, + { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00, + .page_size = 256, + .pages_per_sector = 256, + .nr_sectors = 64, + .name = "S25FL032P", + }, };static int spansion_wait_ready (struct spi_flash *flash,unsigned long timeout)
@@ -317,7 +334,7 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)for (i =0 ; i <ARRAY_SIZE (spansion_spi_flash_table); i++) { params = &spansion_spi_flash_table[i];if (params->idcode1 == jedec) { -if (params->idcode2 == ext_jedec) +if (params->idcode2 == (ext_jedec & params->idmask2))break ; } }
Signature · 1 line
1.6.3.3