diff mbox series

[v2] mtd: spi-nor: sfdp: Fix index value for SCCR dwords

Message ID 20220912051317.2369-1-Takahiro.Kuwano@infineon.com
State Changes Requested
Delegated to: Ambarus Tudor
Headers show
Series [v2] mtd: spi-nor: sfdp: Fix index value for SCCR dwords | expand

Commit Message

Takahiro Kuwano Sept. 12, 2022, 5:13 a.m. UTC
From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>

Array index for SCCR 22th DOWRD should be 21.

Fixes: 981a8d60e01f ("mtd: spi-nor: Parse SFDP SCCR Map")
Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
---
v2: Add Fixes tag.

 drivers/mtd/spi-nor/sfdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Walle Sept. 12, 2022, 7:29 a.m. UTC | #1
Am 2022-09-12 07:13, schrieb tkuw584924@gmail.com:
> From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
> 
> Array index for SCCR 22th DOWRD should be 21.
> 
> Fixes: 981a8d60e01f ("mtd: spi-nor: Parse SFDP SCCR Map")
> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>

Reviewed-by: Michael Walle <michael@walle.cc>
Tudor Ambarus Oct. 3, 2022, 6:07 a.m. UTC | #2
Hi, Takahiro,

On 9/12/22 08:13, tkuw584924@gmail.com wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
> 
> Array index for SCCR 22th DOWRD should be 21.
> 
> Fixes: 981a8d60e01f ("mtd: spi-nor: Parse SFDP SCCR Map")
> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
> ---
> v2: Add Fixes tag.
> 
>  drivers/mtd/spi-nor/sfdp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
> index 2257f1b4c2e2..681e5e78724c 100644
> --- a/drivers/mtd/spi-nor/sfdp.c
> +++ b/drivers/mtd/spi-nor/sfdp.c
> @@ -1222,7 +1222,7 @@ static int spi_nor_parse_sccr(struct spi_nor *nor,
> 
>         le32_to_cpu_array(dwords, sccr_header->length);
> 
> -       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[22]))
> +       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[21]))

Would such a change work?
diff --git a/drivers/mtd/spi-nor/sfdp.h b/drivers/mtd/spi-nor/sfdp.h
index bbf80d2990ab..e83d9bd89066 100644
--- a/drivers/mtd/spi-nor/sfdp.h
+++ b/drivers/mtd/spi-nor/sfdp.h
@@ -19,7 +19,7 @@
  * JESD216 rev D defines a Basic Flash Parameter Table of 20 DWORDs.
  * They are indexed from 1 but C arrays are indexed from 0.
  */
-#define BFPT_DWORD(i)          ((i) - 1)
+#define SFDP_DWORD(i)          ((i) - 1)


and use:
+       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[SFDP_DWORD(22)]))

and dwords may be renamed to sccrm, from "Status, Control and Configuration Register Map",
so:
+       if (FIELD_GET(SCCRM_DWORD22_OCTAL_DTR_EN_VOLATILE, sccrm[SFDP_DWORD(22)]))

But you'll have to check that all the tables from the latest jesd216 (e version I guess)
use the same kind of indexing. Let me know if you'd like to pursue my suggestion instead.
Takahiro Kuwano Oct. 3, 2022, 6:49 a.m. UTC | #3
On 10/3/2022 3:07 PM, Tudor.Ambarus@microchip.com wrote:
> Hi, Takahiro,
> 
> On 9/12/22 08:13, tkuw584924@gmail.com wrote:
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
>>
>> Array index for SCCR 22th DOWRD should be 21.
>>
>> Fixes: 981a8d60e01f ("mtd: spi-nor: Parse SFDP SCCR Map")
>> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
>> ---
>> v2: Add Fixes tag.
>>
>>  drivers/mtd/spi-nor/sfdp.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
>> index 2257f1b4c2e2..681e5e78724c 100644
>> --- a/drivers/mtd/spi-nor/sfdp.c
>> +++ b/drivers/mtd/spi-nor/sfdp.c
>> @@ -1222,7 +1222,7 @@ static int spi_nor_parse_sccr(struct spi_nor *nor,
>>
>>         le32_to_cpu_array(dwords, sccr_header->length);
>>
>> -       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[22]))
>> +       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[21]))
> 
> Would such a change work?
> diff --git a/drivers/mtd/spi-nor/sfdp.h b/drivers/mtd/spi-nor/sfdp.h
> index bbf80d2990ab..e83d9bd89066 100644
> --- a/drivers/mtd/spi-nor/sfdp.h
> +++ b/drivers/mtd/spi-nor/sfdp.h
> @@ -19,7 +19,7 @@
>   * JESD216 rev D defines a Basic Flash Parameter Table of 20 DWORDs.
>   * They are indexed from 1 but C arrays are indexed from 0.
>   */
> -#define BFPT_DWORD(i)          ((i) - 1)
> +#define SFDP_DWORD(i)          ((i) - 1)
> 
> 
> and use:
> +       if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[SFDP_DWORD(22)]))
> 
> and dwords may be renamed to sccrm, from "Status, Control and Configuration Register Map",
> so:
> +       if (FIELD_GET(SCCRM_DWORD22_OCTAL_DTR_EN_VOLATILE, sccrm[SFDP_DWORD(22)]))
> 
> But you'll have to check that all the tables from the latest jesd216 (e version I guess)
> use the same kind of indexing. Let me know if you'd like to pursue my suggestion instead.
> 
Yes, this should work and I like to follow your suggestion.
I will check the JESD216 (revision F is the latest).

Thanks,
Takahiro
diff mbox series

Patch

diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
index 2257f1b4c2e2..681e5e78724c 100644
--- a/drivers/mtd/spi-nor/sfdp.c
+++ b/drivers/mtd/spi-nor/sfdp.c
@@ -1222,7 +1222,7 @@  static int spi_nor_parse_sccr(struct spi_nor *nor,
 
 	le32_to_cpu_array(dwords, sccr_header->length);
 
-	if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[22]))
+	if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[21]))
 		nor->flags |= SNOR_F_IO_MODE_EN_VOLATILE;
 
 out: