diff mbox series

mtd: spi-nor: spansion: Add support for infineon cy15v102qsn

Message ID 20240408124328.777375-1-hui.wang@canonical.com
State Rejected
Headers show
Series mtd: spi-nor: spansion: Add support for infineon cy15v102qsn | expand

Commit Message

Hui Wang April 8, 2024, 12:43 p.m. UTC
It is 2Mbit F-RAM which is logically organized as 256K x 8.

Signed-off-by: Hui Wang <hui.wang@canonical.com>
---
 drivers/mtd/spi-nor/spansion.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Michael Walle April 8, 2024, 12:53 p.m. UTC | #1
Hi,

On Mon Apr 8, 2024 at 2:43 PM CEST, Hui Wang wrote:
> It is 2Mbit F-RAM which is logically organized as 256K x 8.

Please have a look at drivers/misc/at25.c. I'm trying to get rid of
the NO_ERASE flag. This is more of an EEPROM like device. The at25
driver already have some kind of FRAM type support.

> Signed-off-by: Hui Wang <hui.wang@canonical.com>
> ---
>  drivers/mtd/spi-nor/spansion.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
> index 6cc237c24e07..5dc94926b2cb 100644
> --- a/drivers/mtd/spi-nor/spansion.c
> +++ b/drivers/mtd/spi-nor/spansion.c
> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
>  		.name = "s28hs02gt",
>  		.mfr_flags = USE_CLPEF,
>  		.fixups = &s28hx_t_fixups,
> +	}, {
> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),

This doesn't look like a JEDEC id. The datasheet says it is a 11bit
manufacturer id?

-michael

> +		.name = "cy15v102qsn",
> +		.size = SZ_256K,
> +		.sector_size = SZ_256K,
> +		.flags = SPI_NOR_NO_ERASE,
>  	}, {
>  		.id = SNOR_ID(0xef, 0x40, 0x13),
>  		.name = "s25fl004k",
Hui Wang April 9, 2024, 8:35 a.m. UTC | #2
On 4/8/24 20:53, Michael Walle wrote:
> Hi,
>
> On Mon Apr 8, 2024 at 2:43 PM CEST, Hui Wang wrote:
>> It is 2Mbit F-RAM which is logically organized as 256K x 8.
> Please have a look at drivers/misc/at25.c. I'm trying to get rid of
> the NO_ERASE flag. This is more of an EEPROM like device. The at25
> driver already have some kind of FRAM type support.
After reading your comment, I checked the drivers/misc/at25.c, I found 
It couldn't work on my hardware. In my case, the F-RAM is under a spi 
bus (spi-nxp-fspi.c) which only supports spi_mem transfer mode. So 
currently, the mtd/spi-nor is the only choice.
>> Signed-off-by: Hui Wang <hui.wang@canonical.com>
>> ---
>>   drivers/mtd/spi-nor/spansion.c | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
>> index 6cc237c24e07..5dc94926b2cb 100644
>> --- a/drivers/mtd/spi-nor/spansion.c
>> +++ b/drivers/mtd/spi-nor/spansion.c
>> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
>>   		.name = "s28hs02gt",
>>   		.mfr_flags = USE_CLPEF,
>>   		.fixups = &s28hx_t_fixups,
>> +	}, {
>> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
> This doesn't look like a JEDEC id. The datasheet says it is a 11bit
> manufacturer id?
>
> -michael

 From the page 82 of datasheet, the Device ID is 0000000006805148, and 
the ID read by spi_nor_read_id() matches it (id[0] is 0x48, id[1] is 
0x51, ...).

Thanks,

Hui.

>
>> +		.name = "cy15v102qsn",
>> +		.size = SZ_256K,
>> +		.sector_size = SZ_256K,
>> +		.flags = SPI_NOR_NO_ERASE,
>>   	}, {
>>   		.id = SNOR_ID(0xef, 0x40, 0x13),
>>   		.name = "s25fl004k",
Michael Walle April 9, 2024, 8:41 a.m. UTC | #3
Hi,

> >> It is 2Mbit F-RAM which is logically organized as 256K x 8.
> > Please have a look at drivers/misc/at25.c. I'm trying to get rid of
> > the NO_ERASE flag. This is more of an EEPROM like device. The at25
> > driver already have some kind of FRAM type support.
> After reading your comment, I checked the drivers/misc/at25.c, I found 
> It couldn't work on my hardware. In my case, the F-RAM is under a spi 
> bus (spi-nxp-fspi.c) which only supports spi_mem transfer mode. So 
> currently, the mtd/spi-nor is the only choice.

Then it will be a great opportunity to make the at25 driver spi-mem
ready :)

> >> Signed-off-by: Hui Wang <hui.wang@canonical.com>
> >> ---
> >>   drivers/mtd/spi-nor/spansion.c | 6 ++++++
> >>   1 file changed, 6 insertions(+)
> >>
> >> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
> >> index 6cc237c24e07..5dc94926b2cb 100644
> >> --- a/drivers/mtd/spi-nor/spansion.c
> >> +++ b/drivers/mtd/spi-nor/spansion.c
> >> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
> >>   		.name = "s28hs02gt",
> >>   		.mfr_flags = USE_CLPEF,
> >>   		.fixups = &s28hx_t_fixups,
> >> +	}, {
> >> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
> > This doesn't look like a JEDEC id. The datasheet says it is a 11bit
> > manufacturer id?
> >
> > -michael
>
>  From the page 82 of datasheet, the Device ID is 0000000006805148, and 
> the ID read by spi_nor_read_id() matches it (id[0] is 0x48, id[1] is 
> 0x51, ...).

JEDEC manufacturer IDs are not 11bit wide.

-michael
Hui Wang April 9, 2024, 1:22 p.m. UTC | #4
On 4/9/24 16:41, Michael Walle wrote:
> Hi,
>
>>>> It is 2Mbit F-RAM which is logically organized as 256K x 8.
>>> Please have a look at drivers/misc/at25.c. I'm trying to get rid of
>>> the NO_ERASE flag. This is more of an EEPROM like device. The at25
>>> driver already have some kind of FRAM type support.
>> After reading your comment, I checked the drivers/misc/at25.c, I found
>> It couldn't work on my hardware. In my case, the F-RAM is under a spi
>> bus (spi-nxp-fspi.c) which only supports spi_mem transfer mode. So
>> currently, the mtd/spi-nor is the only choice.
> Then it will be a great opportunity to make the at25 driver spi-mem
> ready :)
OK. :-)
>>>> Signed-off-by: Hui Wang <hui.wang@canonical.com>
>>>> ---
>>>>    drivers/mtd/spi-nor/spansion.c | 6 ++++++
>>>>    1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
>>>> index 6cc237c24e07..5dc94926b2cb 100644
>>>> --- a/drivers/mtd/spi-nor/spansion.c
>>>> +++ b/drivers/mtd/spi-nor/spansion.c
>>>> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
>>>>    		.name = "s28hs02gt",
>>>>    		.mfr_flags = USE_CLPEF,
>>>>    		.fixups = &s28hx_t_fixups,
>>>> +	}, {
>>>> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
>>> This doesn't look like a JEDEC id. The datasheet says it is a 11bit
>>> manufacturer id?
>>>
>>> -michael
>>   From the page 82 of datasheet, the Device ID is 0000000006805148, and
>> the ID read by spi_nor_read_id() matches it (id[0] is 0x48, id[1] is
>> 0x51, ...).
> JEDEC manufacturer IDs are not 11bit wide.
Have no idea here. I thought it is same as the cy15x104q and the 
spansion.c has the support for cy15x104q.
>
> -michael
Michael Walle April 9, 2024, 1:25 p.m. UTC | #5
Hi,

> >>>> It is 2Mbit F-RAM which is logically organized as 256K x 8.
> >>> Please have a look at drivers/misc/at25.c. I'm trying to get rid of
> >>> the NO_ERASE flag. This is more of an EEPROM like device. The at25
> >>> driver already have some kind of FRAM type support.
> >> After reading your comment, I checked the drivers/misc/at25.c, I found
> >> It couldn't work on my hardware. In my case, the F-RAM is under a spi
> >> bus (spi-nxp-fspi.c) which only supports spi_mem transfer mode. So
> >> currently, the mtd/spi-nor is the only choice.
> > Then it will be a great opportunity to make the at25 driver spi-mem
> > ready :)
> OK. :-)
> >>>> Signed-off-by: Hui Wang <hui.wang@canonical.com>
> >>>> ---
> >>>>    drivers/mtd/spi-nor/spansion.c | 6 ++++++
> >>>>    1 file changed, 6 insertions(+)
> >>>>
> >>>> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
> >>>> index 6cc237c24e07..5dc94926b2cb 100644
> >>>> --- a/drivers/mtd/spi-nor/spansion.c
> >>>> +++ b/drivers/mtd/spi-nor/spansion.c
> >>>> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
> >>>>    		.name = "s28hs02gt",
> >>>>    		.mfr_flags = USE_CLPEF,
> >>>>    		.fixups = &s28hx_t_fixups,
> >>>> +	}, {
> >>>> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
> >>> This doesn't look like a JEDEC id. The datasheet says it is a 11bit
> >>> manufacturer id?
> >>>
> >>> -michael
> >>   From the page 82 of datasheet, the Device ID is 0000000006805148, and
> >> the ID read by spi_nor_read_id() matches it (id[0] is 0x48, id[1] is
> >> 0x51, ...).
> > JEDEC manufacturer IDs are not 11bit wide.
> Have no idea here. I thought it is same as the cy15x104q and the 
> spansion.c has the support for cy15x104q.

That one was already broken (and I'd like to move that one to the
at25 too); it had the ID bits reversed and this one is even more
broken :(

-michael
Hui Wang April 10, 2024, 12:36 a.m. UTC | #6
On 4/9/24 21:25, Michael Walle wrote:
> Hi,
>
>>>>>> It is 2Mbit F-RAM which is logically organized as 256K x 8.
>>>>> Please have a look at drivers/misc/at25.c. I'm trying to get rid of
>>>>> the NO_ERASE flag. This is more of an EEPROM like device. The at25
>>>>> driver already have some kind of FRAM type support.
>>>> After reading your comment, I checked the drivers/misc/at25.c, I found
>>>> It couldn't work on my hardware. In my case, the F-RAM is under a spi
>>>> bus (spi-nxp-fspi.c) which only supports spi_mem transfer mode. So
>>>> currently, the mtd/spi-nor is the only choice.
>>> Then it will be a great opportunity to make the at25 driver spi-mem
>>> ready :)
>> OK. :-)
>>>>>> Signed-off-by: Hui Wang <hui.wang@canonical.com>
>>>>>> ---
>>>>>>     drivers/mtd/spi-nor/spansion.c | 6 ++++++
>>>>>>     1 file changed, 6 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
>>>>>> index 6cc237c24e07..5dc94926b2cb 100644
>>>>>> --- a/drivers/mtd/spi-nor/spansion.c
>>>>>> +++ b/drivers/mtd/spi-nor/spansion.c
>>>>>> @@ -981,6 +981,12 @@ static const struct flash_info spansion_nor_parts[] = {
>>>>>>     		.name = "s28hs02gt",
>>>>>>     		.mfr_flags = USE_CLPEF,
>>>>>>     		.fixups = &s28hx_t_fixups,
>>>>>> +	}, {
>>>>>> +		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
>>>>> This doesn't look like a JEDEC id. The datasheet says it is a 11bit
>>>>> manufacturer id?
>>>>>
>>>>> -michael
>>>>    From the page 82 of datasheet, the Device ID is 0000000006805148, and
>>>> the ID read by spi_nor_read_id() matches it (id[0] is 0x48, id[1] is
>>>> 0x51, ...).
>>> JEDEC manufacturer IDs are not 11bit wide.
>> Have no idea here. I thought it is same as the cy15x104q and the
>> spansion.c has the support for cy15x104q.
> That one was already broken (and I'd like to move that one to the
> at25 too); it had the ID bits reversed and this one is even more
> broken :(
OK, got it. :-)  will focus on at25 then.
> -michael
diff mbox series

Patch

diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
index 6cc237c24e07..5dc94926b2cb 100644
--- a/drivers/mtd/spi-nor/spansion.c
+++ b/drivers/mtd/spi-nor/spansion.c
@@ -981,6 +981,12 @@  static const struct flash_info spansion_nor_parts[] = {
 		.name = "s28hs02gt",
 		.mfr_flags = USE_CLPEF,
 		.fixups = &s28hx_t_fixups,
+	}, {
+		.id = SNOR_ID(0x48, 0x51, 0x80, 0x06, 0x00, 0x00),
+		.name = "cy15v102qsn",
+		.size = SZ_256K,
+		.sector_size = SZ_256K,
+		.flags = SPI_NOR_NO_ERASE,
 	}, {
 		.id = SNOR_ID(0xef, 0x40, 0x13),
 		.name = "s25fl004k",