Patchwork mtd: m25p80: add support for the windbond w25q256 chip

login
register
mail settings
Submitter Matthieu CASTET
Date Sept. 25, 2012, 9:05 a.m.
Message ID <1348563927-9131-1-git-send-email-matthieu.castet@parrot.com>
Download mbox | patch
Permalink /patch/186744/
State Accepted
Commit 0aa87b7563f138149429f35727b975ec25a494a6
Headers show

Comments

Matthieu CASTET - Sept. 25, 2012, 9:05 a.m.
Signed-off-by: Matthieu CASTET <matthieu.castet@parrot.com>
---
 drivers/mtd/devices/m25p80.c |    2 ++
 1 file changed, 2 insertions(+)
Brian Norris - Sept. 26, 2012, 10:20 p.m.
On Tue, Sep 25, 2012 at 2:05 AM, Matthieu CASTET
<matthieu.castet@parrot.com> wrote:
> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
> index 5257345..4eb99c6 100644
> --- a/drivers/mtd/devices/m25p80.c
> +++ b/drivers/mtd/devices/m25p80.c
> @@ -168,6 +168,7 @@ static inline int set_4byte(struct m25p *flash, u32 jedec_id, int enable)
>  {
>         switch (JEDEC_MFR(jedec_id)) {
>         case CFI_MFR_MACRONIX:
> +       case 0xEF /* winbond */:
>                 flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
>                 return spi_write(flash->spi, flash->command, 1);
>         default:

Just checking: Winbond didn't use their known manufacturer ID (0xDA)
for this chip? Do they have other chips that support/need 4-byte
addressing and use 0xDA?

Brian
Matthieu CASTET - Sept. 27, 2012, 8:15 a.m.
Brian Norris a écrit :
> On Tue, Sep 25, 2012 at 2:05 AM, Matthieu CASTET
> <matthieu.castet@parrot.com> wrote:
>> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
>> index 5257345..4eb99c6 100644
>> --- a/drivers/mtd/devices/m25p80.c
>> +++ b/drivers/mtd/devices/m25p80.c
>> @@ -168,6 +168,7 @@ static inline int set_4byte(struct m25p *flash, u32 jedec_id, int enable)
>>  {
>>         switch (JEDEC_MFR(jedec_id)) {
>>         case CFI_MFR_MACRONIX:
>> +       case 0xEF /* winbond */:
>>                 flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
>>                 return spi_write(flash->spi, flash->command, 1);
>>         default:
> 
> Just checking: Winbond didn't use their known manufacturer ID (0xDA)
> for this chip? Do they have other chips that support/need 4-byte
> addressing and use 0xDA?
> 
I don't know, but if you look in m25p80 device list, all windbond flash start
(the jdec manuf code) with 0xEF [1].
May be MFR code are different for NOR flash and spi NOR ?

For info the datasheet is avaiable at :
http://www.winbond.com.tw/NR/rdonlyres/658E0D71-9AC3-48D6-B043-3702625A2CF5/0/W25Q256FV.pdf

Matthieu

[1]
    /* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */
    { "w25x10", INFO(0xef3011, 0, 64 * 1024,  2,  SECT_4K) },
    { "w25x20", INFO(0xef3012, 0, 64 * 1024,  4,  SECT_4K) },
    { "w25x40", INFO(0xef3013, 0, 64 * 1024,  8,  SECT_4K) },
    { "w25x80", INFO(0xef3014, 0, 64 * 1024,  16, SECT_4K) },
    { "w25x16", INFO(0xef3015, 0, 64 * 1024,  32, SECT_4K) },
    { "w25x32", INFO(0xef3016, 0, 64 * 1024,  64, SECT_4K) },
    { "w25q32", INFO(0xef4016, 0, 64 * 1024,  64, SECT_4K) },
    { "w25q32dw", INFO(0xef6016, 0, 64 * 1024,  64, SECT_4K) },
    { "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
    { "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
    { "w25q80", INFO(0xef5014, 0, 64 * 1024,  16, SECT_4K) },
    { "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K) },
Artem Bityutskiy - Oct. 10, 2012, 2:35 p.m.
On Tue, 2012-09-25 at 11:05 +0200, Matthieu CASTET wrote:
> Signed-off-by: Matthieu CASTET <matthieu.castet@parrot.com>

Pushed to l2-mtd.git, thanks!

Patch

diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 5257345..4eb99c6 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -168,6 +168,7 @@  static inline int set_4byte(struct m25p *flash, u32 jedec_id, int enable)
 {
 	switch (JEDEC_MFR(jedec_id)) {
 	case CFI_MFR_MACRONIX:
+	case 0xEF /* winbond */:
 		flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
 		return spi_write(flash->spi, flash->command, 1);
 	default:
@@ -739,6 +740,7 @@  static const struct spi_device_id m25p_ids[] = {
 	{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
 	{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
 	{ "w25q80", INFO(0xef5014, 0, 64 * 1024,  16, SECT_4K) },
+	{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K) },
 
 	/* Catalyst / On Semiconductor -- non-JEDEC */
 	{ "cat25c11", CAT25_INFO(  16, 8, 16, 1) },