public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES
@ 2010-04-21  6:14 Thomas Chou
  2010-04-21  7:42 ` Mike Frysinger
  2010-04-21  8:16 ` [U-Boot] [PATCH v2] " Thomas Chou
  0 siblings, 2 replies; 5+ messages in thread
From: Thomas Chou @ 2010-04-21  6:14 UTC (permalink / raw)
  To: u-boot

Some old STMicro parts do not support JEDEC ID (0x9f). This patch
uses RES (0xab) to get Electronic ID and translates it to JEDEC ID.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
 drivers/mtd/spi/spi_flash.c |   12 ++++++++++++
 drivers/mtd/spi/stmicro.c   |    8 ++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 612f819..8986879 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -120,6 +120,18 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 	ret = spi_flash_cmd(spi, CMD_READ_ID, &idcode, sizeof(idcode));
 	if (ret)
 		goto err_read_id;
+#ifdef CONFIG_SPI_FLASH_STMICRO
+	if (idcode[0] == 0xff) { /* try RES to read electronic id */
+		ret = spi_flash_cmd(spi, 0xab, &idcode, sizeof(idcode));
+		if (ret)
+			goto err_read_id;
+		if ((idcode[3] & 0xf0) == 0x10) {
+			idcode[0] = 0x20;
+			idcode[1] = 0x20;
+			idcode[2] = idcode[3] + 1;
+		}
+	}
+#endif
 
 	debug("SF: Got idcode %02x %02x %02x %02x %02x\n", idcode[0],
 			idcode[1], idcode[2], idcode[3], idcode[4]);
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index ae0d047..bdb49da 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -46,6 +46,7 @@
 #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
@@ -78,6 +79,13 @@ static inline struct stmicro_spi_flash *to_stmicro_spi_flash(struct spi_flash
 
 static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
 	{
+		.idcode1 = STM_ID_M25P10,
+		.page_size = 256,
+		.pages_per_sector = 128,
+		.nr_sectors = 4,
+		.name = "M25P10",
+	},
+	{
 		.idcode1 = STM_ID_M25P16,
 		.page_size = 256,
 		.pages_per_sector = 256,
-- 
1.6.6.1

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

* [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES
  2010-04-21  6:14 [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES Thomas Chou
@ 2010-04-21  7:42 ` Mike Frysinger
  2010-04-21  7:51   ` Thomas Chou
  2010-04-21  8:16 ` [U-Boot] [PATCH v2] " Thomas Chou
  1 sibling, 1 reply; 5+ messages in thread
From: Mike Frysinger @ 2010-04-21  7:42 UTC (permalink / raw)
  To: u-boot

On Wednesday 21 April 2010 02:14:07 Thomas Chou wrote:
> --- a/drivers/mtd/spi/spi_flash.c
> +++ b/drivers/mtd/spi/spi_flash.c
> @@ -120,6 +120,18 @@ struct spi_flash *spi_flash_probe(unsigned int bus,
> unsigned int cs, ret = spi_flash_cmd(spi, CMD_READ_ID, &idcode,
> sizeof(idcode));
>  	if (ret)
>  		goto err_read_id;
> +#ifdef CONFIG_SPI_FLASH_STMICRO
> +	if (idcode[0] == 0xff) { /* try RES to read electronic id */
> +		ret = spi_flash_cmd(spi, 0xab, &idcode, sizeof(idcode));
> +		if (ret)
> +			goto err_read_id;
> +		if ((idcode[3] & 0xf0) == 0x10) {
> +			idcode[0] = 0x20;
> +			idcode[1] = 0x20;
> +			idcode[2] = idcode[3] + 1;
> +		}
> +	}
> +#endif

please move this logic to stmicro's probe function to keep the common code 
clear of such cruft.
-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/20100421/002a377d/attachment.pgp 

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

* [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES
  2010-04-21  7:42 ` Mike Frysinger
@ 2010-04-21  7:51   ` Thomas Chou
  2010-04-21  9:54     ` Mike Frysinger
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Chou @ 2010-04-21  7:51 UTC (permalink / raw)
  To: u-boot

On 04/21/2010 03:42 PM, Mike Frysinger wrote:
> please move this logic to stmicro's probe function to keep the common code
> clear of such cruft.
> -mike
>    
Hi Mike,

Thanks. I can move them to stmicro.c. But I still need to sort 0xff to 
stmicro. Is this OK?

Best regards,
Thomas

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 8986879..d400639 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -159,6 +159,7 @@ struct spi_flash *spi_flash_probe(unsigned int bus, 
unsigned int cs,
  #endif
  #ifdef CONFIG_SPI_FLASH_STMICRO
      case 0x20:
+    case 0xff:
          flash = spi_flash_probe_stmicro(spi, idcode);
          break;
  #endif

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

* [U-Boot] [PATCH v2] spi_flash: support old STMicro parts with RES
  2010-04-21  6:14 [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES Thomas Chou
  2010-04-21  7:42 ` Mike Frysinger
@ 2010-04-21  8:16 ` Thomas Chou
  1 sibling, 0 replies; 5+ messages in thread
From: Thomas Chou @ 2010-04-21  8:16 UTC (permalink / raw)
  To: u-boot

Some old STMicro parts do not support JEDEC ID (0x9f). This patch
uses RES (0xab) to get Electronic ID and translates it to JEDEC ID.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
move the logic to stmicro's probe function.

 drivers/mtd/spi/spi_flash.c |    1 +
 drivers/mtd/spi/stmicro.c   |   21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 612f819..c8e4bdd 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -147,6 +147,7 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 #endif
 #ifdef CONFIG_SPI_FLASH_STMICRO
 	case 0x20:
+	case 0xff:
 		flash = spi_flash_probe_stmicro(spi, idcode);
 		break;
 #endif
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index ae0d047..21e9b00 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -46,6 +46,7 @@
 #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
@@ -78,6 +79,13 @@ static inline struct stmicro_spi_flash *to_stmicro_spi_flash(struct spi_flash
 
 static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
 	{
+		.idcode1 = STM_ID_M25P10,
+		.page_size = 256,
+		.pages_per_sector = 128,
+		.nr_sectors = 4,
+		.name = "M25P10",
+	},
+	{
 		.idcode1 = STM_ID_M25P16,
 		.page_size = 256,
 		.pages_per_sector = 256,
@@ -316,6 +324,19 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
 	struct stmicro_spi_flash *stm;
 	unsigned int i;
 
+	if (idcode[0] == 0xff) {
+		i = spi_flash_cmd(spi, CMD_M25PXX_RES,
+				  idcode, 4);
+		if (i)
+			return NULL;
+		if ((idcode[3] & 0xf0) == 0x10) {
+			idcode[0] = 0x20;
+			idcode[1] = 0x20;
+			idcode[2] = idcode[3] + 1;
+		} else
+			return NULL;
+	}
+
 	for (i = 0; i < ARRAY_SIZE(stmicro_spi_flash_table); i++) {
 		params = &stmicro_spi_flash_table[i];
 		if (params->idcode1 == idcode[2]) {
-- 
1.6.6.1

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

* [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES
  2010-04-21  7:51   ` Thomas Chou
@ 2010-04-21  9:54     ` Mike Frysinger
  0 siblings, 0 replies; 5+ messages in thread
From: Mike Frysinger @ 2010-04-21  9:54 UTC (permalink / raw)
  To: u-boot

On Wednesday 21 April 2010 03:51:33 Thomas Chou wrote:
> On 04/21/2010 03:42 PM, Mike Frysinger wrote:
> > please move this logic to stmicro's probe function to keep the common
> > code clear of such cruft.
> 
> Thanks. I can move them to stmicro.c. But I still need to sort 0xff to
> stmicro.

the id function is given a pointer to the idcode buffer which means the sub 
function is free to modify it, so there should be no need for that.
-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/20100421/02ba7dfd/attachment.pgp 

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

end of thread, other threads:[~2010-04-21  9:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-21  6:14 [U-Boot] [PATCH] spi_flash: support old STMicro parts with RES Thomas Chou
2010-04-21  7:42 ` Mike Frysinger
2010-04-21  7:51   ` Thomas Chou
2010-04-21  9:54     ` Mike Frysinger
2010-04-21  8:16 ` [U-Boot] [PATCH v2] " Thomas Chou

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox