diff mbox series

[v2] mtd: spi-nor: Add support for cy15x104q

Message ID 20200309084033.8752-1-s.hauer@pengutronix.de
State Changes Requested
Delegated to: Ambarus Tudor
Headers show
Series [v2] mtd: spi-nor: Add support for cy15x104q | expand

Commit Message

Sascha Hauer March 9, 2020, 8:40 a.m. UTC
The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
Add support for them to the spi-nor driver.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---

Changes since v1:
- Instead of specifying 1024 sectors with a sector size of 512 specify
  512 * 1024 sectos with a sector size of 1. The device has no idea of
  sectors and is not erasable, so a sector size of 1 seems to better
  reflect reality.

 drivers/mtd/spi-nor/spi-nor.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Sascha Hauer April 14, 2020, 12:09 p.m. UTC | #1
Hi,

Any feedback to this one?

Sascha

On Mon, Mar 09, 2020 at 09:40:33AM +0100, Sascha Hauer wrote:
> The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> Add support for them to the spi-nor driver.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> 
> Changes since v1:
> - Instead of specifying 1024 sectors with a sector size of 512 specify
>   512 * 1024 sectos with a sector size of 1. The device has no idea of
>   sectors and is not erasable, so a sector size of 1 seems to better
>   reflect reality.
> 
>  drivers/mtd/spi-nor/spi-nor.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index 4fc632ec18fe..a5c1d684364c 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
>  
>  	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
>  
> +	/* Cypress */
> +	{ "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1, SPI_NOR_NO_ERASE) },
> +
>  	/* EON -- en25xxx */
>  	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SECT_4K) },
>  	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, 0) },
> -- 
> 2.25.1
> 
>
Tudor Ambarus April 14, 2020, 4:41 p.m. UTC | #2
On Tuesday, April 14, 2020 3:09:45 PM EEST Sascha Hauer wrote:
> Any feedback to this one?

Hi, Sascha,

I'm a bit busy but I'll try to allocate time to review patches sometime this 
week. BTW, we moved the manufacturer specific code out of the core, we now 
have a dedicated file for each manufacturer (this includes flash_info 
entries), check the spi-nor/next branch. I know that it's not your fault that 
your patch was left behind, so I volunteer to respin your patch if you don't 
feel like doing it.

Cheers,
ta
Sascha Hauer April 15, 2020, 5:35 a.m. UTC | #3
Hi Tudor,

On Tue, Apr 14, 2020 at 04:41:42PM +0000, Tudor.Ambarus@microchip.com wrote:
> On Tuesday, April 14, 2020 3:09:45 PM EEST Sascha Hauer wrote:
> > Any feedback to this one?
> 
> Hi, Sascha,
> 
> I'm a bit busy but I'll try to allocate time to review patches sometime this 
> week. BTW, we moved the manufacturer specific code out of the core, we now 
> have a dedicated file for each manufacturer (this includes flash_info 
> entries), check the spi-nor/next branch.

I see. It's in master now btw.

> I know that it's not your fault that
> your patch was left behind, so I volunteer to respin your patch if you don't
> feel like doing it.

Don't worry, I can respin it. You want to have a cypress.c file, even
though it has only a single entry, right?

Sascha
Yicong Yang April 15, 2020, 8:22 a.m. UTC | #4
On 2020/4/15 13:35, Sascha Hauer wrote:
> Hi Tudor,
>
> On Tue, Apr 14, 2020 at 04:41:42PM +0000, Tudor.Ambarus@microchip.com wrote:
>> On Tuesday, April 14, 2020 3:09:45 PM EEST Sascha Hauer wrote:
>>> Any feedback to this one?
>> Hi, Sascha,
>>
>> I'm a bit busy but I'll try to allocate time to review patches sometime this 
>> week. BTW, we moved the manufacturer specific code out of the core, we now 
>> have a dedicated file for each manufacturer (this includes flash_info 
>> entries), check the spi-nor/next branch.
> I see. It's in master now btw.
>
>> I know that it's not your fault that
>> your patch was left behind, so I volunteer to respin your patch if you don't
>> feel like doing it.
> Don't worry, I can respin it. You want to have a cypress.c file, even
> though it has only a single entry, right?

Hi Sascha,

Maybe it's okay to put in spansion.c, as Spansion/Cypress may use same
manufacturer id on some flash. Otherwise, we should spilt the Cypress ones from
list in spansion.c to new cypress.c.

Regards,
Yicong


>
> Sascha
>
Tudor Ambarus April 15, 2020, 3:08 p.m. UTC | #5
On Wednesday, April 15, 2020 8:35:27 AM EEST Sascha Hauer wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> content is safe
> 
> Hi Tudor,

Hi, Sascha,

> 
> On Tue, Apr 14, 2020 at 04:41:42PM +0000, Tudor.Ambarus@microchip.com wrote:
> > On Tuesday, April 14, 2020 3:09:45 PM EEST Sascha Hauer wrote:
> > > Any feedback to this one?
> > 
> > Hi, Sascha,
> > 
> > I'm a bit busy but I'll try to allocate time to review patches sometime
> > this week. BTW, we moved the manufacturer specific code out of the core,
> > we now have a dedicated file for each manufacturer (this includes
> > flash_info entries), check the spi-nor/next branch.
> 
> I see. It's in master now btw.
> 
> > I know that it's not your fault that
> > your patch was left behind, so I volunteer to respin your patch if you
> > don't feel like doing it.
> 
> Don't worry, I can respin it. You want to have a cypress.c file, even
> though it has only a single entry, right?
> 

I think you can add this as the last entry in the spansion_parts[] array from 
spansion.c. Cypress and Spansion merged back in 2015, they are a single entity 
now. The fixup hook is not affecting this flash, we should be fine. For the 
moment I don't see a need for a spi_nor_cypress struct.

Cheers,
ta
Tudor Ambarus April 15, 2020, 3:24 p.m. UTC | #6
On Monday, March 9, 2020 10:40:33 AM EEST Sascha Hauer wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> content is safe
> 
> The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> Add support for them to the spi-nor driver.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> 
> Changes since v1:
> - Instead of specifying 1024 sectors with a sector size of 512 specify
>   512 * 1024 sectos with a sector size of 1. The device has no idea of
>   sectors and is not erasable, so a sector size of 1 seems to better
>   reflect reality.
> 
>  drivers/mtd/spi-nor/spi-nor.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index 4fc632ec18fe..a5c1d684364c 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
> 
>         { "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
> 
> +       /* Cypress */
> +       { "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1,
> SPI_NOR_NO_ERASE) }, +

Shouldn't the id start with 0x03 instead of 0x04? Check [1]. Otherwise looks 
good. Also, would you please specify in the commit message on which platform 
did you test the flash, or with which controller? We usually don't add new 
flash_info entries solely by datasheet info, we've seen some nasty bugs and we 
try to avoid adding flashes that are broken since day one.

Cheers,
ta

[1] https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwikvb6A2-
roAhUKjqQKHQRzAhEQFjAAegQIAhAB&url=https%3A%2F%2Fmedia.digikey.com%2Fpdf%2FData%2520Sheets%2FCypress%2520PDFs%2FCY15B104Q_CY15V104Q_RevB_2-3-20.pdf&usg=AOvVaw0BmuUvI2j3NR07ZN_Jd4bN
Raghavendra, Vignesh April 15, 2020, 5:28 p.m. UTC | #7
On 09/03/20 2:10 pm, Sascha Hauer wrote:
> The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> Add support for them to the spi-nor driver.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> 
> Changes since v1:
> - Instead of specifying 1024 sectors with a sector size of 512 specify
>   512 * 1024 sectos with a sector size of 1. The device has no idea of
>   sectors and is not erasable, so a sector size of 1 seems to better
>   reflect reality.
> 
>  drivers/mtd/spi-nor/spi-nor.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index 4fc632ec18fe..a5c1d684364c 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
>  
>  	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
>  
> +	/* Cypress */
> +	{ "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1, SPI_NOR_NO_ERASE) },

This seems wrong

As the datasheet for the device says:

"Device ID
The CY15B104Q device can be interrogated for its manufacturer, product
identification, and die revision. The RDID opcode 9Fh allows
the user to read the manufacturer ID and product ID, both of which are
read-only bytes. The JEDEC-assigned manufacturer ID places
the Cypress (Ramtron) identifier in bank 7; therefore, there are six
bytes of the continuation code 7Fh followed by the single byte C2h.
There are two bytes of product ID, which includes a family code, a
density code, a sub code, and the product revision code."

I am not sure how are you reading 0x4 as the first byte. It should have
been 6 bytes of 0x7F followed by 0xc2 right?

Also 0x7F is continuation code and not actual device ID (See JEDEC
standard JEP106). You will have to extend spi_nor_read_id() function to
take care of continuation code and read more bytes in order to get the
actual Manuf/device ID

> +
>  	/* EON -- en25xxx */
>  	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SECT_4K) },
>  	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, 0) },
>
Tudor Ambarus April 16, 2020, 4:44 a.m. UTC | #8
On Wednesday, April 15, 2020 8:28:36 PM EEST Vignesh Raghavendra wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> content is safe
> On 09/03/20 2:10 pm, Sascha Hauer wrote:
> > The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> > Add support for them to the spi-nor driver.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > 
> > Changes since v1:
> > - Instead of specifying 1024 sectors with a sector size of 512 specify
> > 
> >   512 * 1024 sectos with a sector size of 1. The device has no idea of
> >   sectors and is not erasable, so a sector size of 1 seems to better
> >   reflect reality.
> >  
> >  drivers/mtd/spi-nor/spi-nor.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> > index 4fc632ec18fe..a5c1d684364c 100644
> > --- a/drivers/mtd/spi-nor/spi-nor.c
> > +++ b/drivers/mtd/spi-nor/spi-nor.c
> > @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
> > 
> >       { "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
> > 
> > +     /* Cypress */
> > +     { "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1,
> > SPI_NOR_NO_ERASE) },
> This seems wrong
> 
> As the datasheet for the device says:
> 
> "Device ID
> The CY15B104Q device can be interrogated for its manufacturer, product
> identification, and die revision. The RDID opcode 9Fh allows
> the user to read the manufacturer ID and product ID, both of which are
> read-only bytes. The JEDEC-assigned manufacturer ID places
> the Cypress (Ramtron) identifier in bank 7; therefore, there are six
> bytes of the continuation code 7Fh followed by the single byte C2h.
> There are two bytes of product ID, which includes a family code, a
> density code, a sub code, and the product revision code."
> 
> I am not sure how are you reading 0x4 as the first byte. It should have
> been 6 bytes of 0x7F followed by 0xc2 right?

You're right, I skimmed too quickly through the id.

> 
> Also 0x7F is continuation code and not actual device ID (See JEDEC
> standard JEP106). You will have to extend spi_nor_read_id() function to
> take care of continuation code and read more bytes in order to get the
> actual Manuf/device ID

Right, thanks for the intervention, Vignesh!

Cheers,
ta
Sascha Hauer April 16, 2020, 6:39 a.m. UTC | #9
Hi,

On Wed, Apr 15, 2020 at 10:58:36PM +0530, Vignesh Raghavendra wrote:
> 
> 
> On 09/03/20 2:10 pm, Sascha Hauer wrote:
> > The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> > Add support for them to the spi-nor driver.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > 
> > Changes since v1:
> > - Instead of specifying 1024 sectors with a sector size of 512 specify
> >   512 * 1024 sectos with a sector size of 1. The device has no idea of
> >   sectors and is not erasable, so a sector size of 1 seems to better
> >   reflect reality.
> > 
> >  drivers/mtd/spi-nor/spi-nor.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> > index 4fc632ec18fe..a5c1d684364c 100644
> > --- a/drivers/mtd/spi-nor/spi-nor.c
> > +++ b/drivers/mtd/spi-nor/spi-nor.c
> > @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
> >  
> >  	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
> >  
> > +	/* Cypress */
> > +	{ "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1, SPI_NOR_NO_ERASE) },
> 
> This seems wrong
> 
> As the datasheet for the device says:
> 
> "Device ID
> The CY15B104Q device can be interrogated for its manufacturer, product
> identification, and die revision. The RDID opcode 9Fh allows
> the user to read the manufacturer ID and product ID, both of which are
> read-only bytes. The JEDEC-assigned manufacturer ID places
> the Cypress (Ramtron) identifier in bank 7; therefore, there are six
> bytes of the continuation code 7Fh followed by the single byte C2h.
> There are two bytes of product ID, which includes a family code, a
> density code, a sub code, and the product revision code."
> 
> I am not sure how are you reading 0x4 as the first byte. It should have
> been 6 bytes of 0x7F followed by 0xc2 right?
> 
> Also 0x7F is continuation code and not actual device ID (See JEDEC
> standard JEP106). You will have to extend spi_nor_read_id() function to
> take care of continuation code and read more bytes in order to get the
> actual Manuf/device ID

The three times 0x7f looked fishy from the start. I'll dig a bit deeper
what is happening here. Thanks for the input.

Sascha
Sascha Hauer April 20, 2020, 8:56 a.m. UTC | #10
On Wed, Apr 15, 2020 at 10:58:36PM +0530, Vignesh Raghavendra wrote:
> 
> 
> On 09/03/20 2:10 pm, Sascha Hauer wrote:
> > The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> > Add support for them to the spi-nor driver.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > 
> > Changes since v1:
> > - Instead of specifying 1024 sectors with a sector size of 512 specify
> >   512 * 1024 sectos with a sector size of 1. The device has no idea of
> >   sectors and is not erasable, so a sector size of 1 seems to better
> >   reflect reality.
> > 
> >  drivers/mtd/spi-nor/spi-nor.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> > index 4fc632ec18fe..a5c1d684364c 100644
> > --- a/drivers/mtd/spi-nor/spi-nor.c
> > +++ b/drivers/mtd/spi-nor/spi-nor.c
> > @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
> >  
> >  	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
> >  
> > +	/* Cypress */
> > +	{ "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1, SPI_NOR_NO_ERASE) },
> 
> This seems wrong
> 
> As the datasheet for the device says:
> 
> "Device ID
> The CY15B104Q device can be interrogated for its manufacturer, product
> identification, and die revision. The RDID opcode 9Fh allows
> the user to read the manufacturer ID and product ID, both of which are
> read-only bytes. The JEDEC-assigned manufacturer ID places
> the Cypress (Ramtron) identifier in bank 7; therefore, there are six
> bytes of the continuation code 7Fh followed by the single byte C2h.
> There are two bytes of product ID, which includes a family code, a
> density code, a sub code, and the product revision code."
> 
> I am not sure how are you reading 0x4 as the first byte. It should have
> been 6 bytes of 0x7F followed by 0xc2 right?
> 
> Also 0x7F is continuation code and not actual device ID (See JEDEC
> standard JEP106). You will have to extend spi_nor_read_id() function to
> take care of continuation code and read more bytes in order to get the
> actual Manuf/device ID

I digged a bit deeper.

According to the datasheet the data sent as response to the read id
command is:

7f 7f 7f 7f 7f 7f c2 2c 04

What I read from the device instead is:

04 2c c2 7f 7f 7f 7f 7f 7f

You see the order of the values is reversed. And in fact this matches
the datasheet. Read on in the paragraph you cited from:

| Note: The least significant data byte (Byte 0) shifts out first and
| the most significant data byte (Byte 8) shifts out last.

This sounds very buggy to me. The number of continuation codes (0x7f)
says which bank in jep106 I have to look at. I increased
SPI_NOR_MAX_ID_LEN to see what the device sends after the ID above and
the device happily sends more 0x7f continuation codes. How should I
count the number of continuation codes when the device sends any desired
number of them at the end of the message?

I don't know what's going on here, to me it looks like they accidently
mixed the order of the bytes and instead of fixing it a note was added
in the datasheet. I hope it's different and you tell me what's wrong in
my understanding ;)

Sascha
Sascha Hauer April 23, 2020, 12:30 p.m. UTC | #11
On Wed, Apr 15, 2020 at 03:24:33PM +0000, Tudor.Ambarus@microchip.com wrote:
> On Monday, March 9, 2020 10:40:33 AM EEST Sascha Hauer wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> > content is safe
> > 
> > The Cypress cy15b104q and cy15v104q are 4Mbit serial SPI F-RAM devices.
> > Add support for them to the spi-nor driver.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > 
> > Changes since v1:
> > - Instead of specifying 1024 sectors with a sector size of 512 specify
> >   512 * 1024 sectos with a sector size of 1. The device has no idea of
> >   sectors and is not erasable, so a sector size of 1 seems to better
> >   reflect reality.
> > 
> >  drivers/mtd/spi-nor/spi-nor.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> > index 4fc632ec18fe..a5c1d684364c 100644
> > --- a/drivers/mtd/spi-nor/spi-nor.c
> > +++ b/drivers/mtd/spi-nor/spi-nor.c
> > @@ -2335,6 +2335,9 @@ static const struct flash_info spi_nor_ids[] = {
> > 
> >         { "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
> > 
> > +       /* Cypress */
> > +       { "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1,
> > SPI_NOR_NO_ERASE) }, +
> 
> Shouldn't the id start with 0x03 instead of 0x04? Check [1].

The datasheet you are referencing describes only one of a whole family
of chips. They all seem software compatible, here is a list of ids I
found in various datasheets:

CY15B104Q-PZXI     7F7F7F7F7F7FC22C03 51-85075 8-pin PDIP Industrial
CY15B104QN-50SXA   7F7F7F7F7F7FC22C40 001-85261 8-pin SOIC (EIAJ) Automotive
CY15V104QN-50SXI   7F7F7F7F7F7FC22C04 002-18131 8-pin GQFN Industrial
CY15B104QN-20LPXC  7F7F7F7F7F7FC22CA1 002-18131 8-pin GQFN Commercial
CY15B104QN-20LPXI  7F7F7F7F7F7FC22C01 002-18131 8-pin GQFN Industrial
CY15V104QN-20LPXC  7F7F7F7F7F7FC22CA5 002-18131 8-pin GQFN Commercial
CY15V104QN-20LPXI  7F7F7F7F7F7FC22C05 002-18131 8-pin GQFN Industrial
CY15B104QN-50LPXI  7F7F7F7F7F7FC22C00 002-18131 8-pin GQFN Industrial

Sascha
diff mbox series

Patch

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 4fc632ec18fe..a5c1d684364c 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2335,6 +2335,9 @@  static const struct flash_info spi_nor_ids[] = {
 
 	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
 
+	/* Cypress */
+	{ "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1, SPI_NOR_NO_ERASE) },
+
 	/* EON -- en25xxx */
 	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SECT_4K) },
 	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, 0) },