[PATCH 3/3] mtd: spi-nor: sfdp: Use SFDP_DWORD() macro for optional parameter tables

Tudor Ambarus tudor.ambarus at linaro.org
Thu Dec 22 23:36:16 PST 2022



On 23.12.2022 09:21, tkuw584924 at gmail.com wrote:
> From: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
> 
> Change 0-based indexing values of parameter tables to 1-based ones by
> SFDP_DWORD() macro.
> 

marvelous! The series is looking good. If you want to resubmit for those
small comments, fine, otherwise I'll handle them when applying.

Cheers,
ta

> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
> ---
>   drivers/mtd/spi-nor/sfdp.c | 28 ++++++++++++++++------------
>   1 file changed, 16 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
> index 5c2ab868707b..3acc01c3a900 100644
> --- a/drivers/mtd/spi-nor/sfdp.c
> +++ b/drivers/mtd/spi-nor/sfdp.c
> @@ -1004,7 +1004,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
>   
>   		discard_hwcaps |= read->hwcaps;
>   		if ((params->hwcaps.mask & read->hwcaps) &&
> -		    (dwords[0] & read->supported_bit))
> +		    (dwords[SFDP_DWORD(1)] & read->supported_bit))
>   			read_hwcaps |= read->hwcaps;
>   	}
>   
> @@ -1023,7 +1023,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
>   		 * authority for specifying Page Program support.
>   		 */
>   		discard_hwcaps |= program->hwcaps;
> -		if (dwords[0] & program->supported_bit)
> +		if (dwords[SFDP_DWORD(1)] & program->supported_bit)
>   			pp_hwcaps |= program->hwcaps;
>   	}
>   
> @@ -1035,7 +1035,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
>   	for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) {
>   		const struct sfdp_4bait *erase = &erases[i];
>   
> -		if (dwords[0] & erase->supported_bit)
> +		if (dwords[SFDP_DWORD(1)] & erase->supported_bit)
>   			erase_mask |= BIT(i);
>   	}
>   
> @@ -1086,7 +1086,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
>   
>   	for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) {
>   		if (erase_mask & BIT(i))
> -			erase_type[i].opcode = (dwords[1] >>
> +			erase_type[i].opcode = (dwords[SFDP_DWORD(2)] >>
>   						erase_type[i].idx * 8) & 0xFF;
>   		else
>   			spi_nor_set_erase_type(&erase_type[i], 0u, 0xFF);
> @@ -1145,15 +1145,15 @@ static int spi_nor_parse_profile1(struct spi_nor *nor,
>   	le32_to_cpu_array(dwords, profile1_header->length);
>   
>   	/* Get 8D-8D-8D fast read opcode and dummy cycles. */
> -	opcode = FIELD_GET(PROFILE1_DWORD1_RD_FAST_CMD, dwords[0]);
> +	opcode = FIELD_GET(PROFILE1_DWORD1_RD_FAST_CMD, dwords[SFDP_DWORD(1)]);
>   
>   	 /* Set the Read Status Register dummy cycles and dummy address bytes. */
> -	if (dwords[0] & PROFILE1_DWORD1_RDSR_DUMMY)
> +	if (dwords[SFDP_DWORD(1)] & PROFILE1_DWORD1_RDSR_DUMMY)
>   		nor->params->rdsr_dummy = 8;
>   	else
>   		nor->params->rdsr_dummy = 4;
>   
> -	if (dwords[0] & PROFILE1_DWORD1_RDSR_ADDR_BYTES)
> +	if (dwords[SFDP_DWORD(1)] & PROFILE1_DWORD1_RDSR_ADDR_BYTES)
>   		nor->params->rdsr_addr_nbytes = 4;
>   	else
>   		nor->params->rdsr_addr_nbytes = 0;
> @@ -1167,13 +1167,16 @@ static int spi_nor_parse_profile1(struct spi_nor *nor,
>   	 * Default to PROFILE1_DUMMY_DEFAULT if we don't find anything, and let
>   	 * flashes set the correct value if needed in their fixup hooks.
>   	 */
> -	dummy = FIELD_GET(PROFILE1_DWORD4_DUMMY_200MHZ, dwords[3]);
> +	dummy = FIELD_GET(PROFILE1_DWORD4_DUMMY_200MHZ, dwords[SFDP_DWORD(4)]);
>   	if (!dummy)
> -		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_166MHZ, dwords[4]);
> +		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_166MHZ,
> +				  dwords[SFDP_DWORD(5)]);
>   	if (!dummy)
> -		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_133MHZ, dwords[4]);
> +		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_133MHZ,
> +				  dwords[SFDP_DWORD(5)]);
>   	if (!dummy)
> -		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_100MHZ, dwords[4]);
> +		dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_100MHZ,
> +				  dwords[SFDP_DWORD(5)]);
>   	if (!dummy)
>   		dev_dbg(nor->dev,
>   			"Can't find dummy cycles from Profile 1.0 table\n");
> @@ -1228,7 +1231,8 @@ 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[21]))
> +	if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE,
> +		      dwords[SFDP_DWORD(22)]))
>   		nor->flags |= SNOR_F_IO_MODE_EN_VOLATILE;
>   
>   out:



More information about the linux-mtd mailing list