Commit 55398beb authored by Takahiro Kuwano's avatar Takahiro Kuwano Committed by Tudor Ambarus

mtd: spi-nor: sfdp: Use SFDP_DWORD() macro for optional parameter tables

Change 0-based indexing values of parameter tables to 1-based ones by
SFDP_DWORD() macro.
Suggested-by: default avatarTudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: default avatarTakahiro Kuwano <Takahiro.Kuwano@infineon.com>
Signed-off-by: default avatarTudor Ambarus <tudor.ambarus@linaro.org>
Link: https://lore.kernel.org/r/48cb008b40fdef4bf7f87e37029efaa2bfefa9ef.1672026365.git.Takahiro.Kuwano@infineon.com
parent 86d4cdf8
...@@ -1004,7 +1004,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor, ...@@ -1004,7 +1004,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
discard_hwcaps |= read->hwcaps; discard_hwcaps |= read->hwcaps;
if ((params->hwcaps.mask & read->hwcaps) && if ((params->hwcaps.mask & read->hwcaps) &&
(dwords[0] & read->supported_bit)) (dwords[SFDP_DWORD(1)] & read->supported_bit))
read_hwcaps |= read->hwcaps; read_hwcaps |= read->hwcaps;
} }
...@@ -1023,7 +1023,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor, ...@@ -1023,7 +1023,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
* authority for specifying Page Program support. * authority for specifying Page Program support.
*/ */
discard_hwcaps |= program->hwcaps; discard_hwcaps |= program->hwcaps;
if (dwords[0] & program->supported_bit) if (dwords[SFDP_DWORD(1)] & program->supported_bit)
pp_hwcaps |= program->hwcaps; pp_hwcaps |= program->hwcaps;
} }
...@@ -1035,7 +1035,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor, ...@@ -1035,7 +1035,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) { for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) {
const struct sfdp_4bait *erase = &erases[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); erase_mask |= BIT(i);
} }
...@@ -1086,7 +1086,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor, ...@@ -1086,7 +1086,7 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) { for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) {
if (erase_mask & BIT(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; erase_type[i].idx * 8) & 0xFF;
else else
spi_nor_set_erase_type(&erase_type[i], 0u, 0xFF); spi_nor_set_erase_type(&erase_type[i], 0u, 0xFF);
...@@ -1145,15 +1145,15 @@ static int spi_nor_parse_profile1(struct spi_nor *nor, ...@@ -1145,15 +1145,15 @@ static int spi_nor_parse_profile1(struct spi_nor *nor,
le32_to_cpu_array(dwords, profile1_header->length); le32_to_cpu_array(dwords, profile1_header->length);
/* Get 8D-8D-8D fast read opcode and dummy cycles. */ /* 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. */ /* 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; nor->params->rdsr_dummy = 8;
else else
nor->params->rdsr_dummy = 4; 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; nor->params->rdsr_addr_nbytes = 4;
else else
nor->params->rdsr_addr_nbytes = 0; nor->params->rdsr_addr_nbytes = 0;
...@@ -1167,13 +1167,16 @@ static int spi_nor_parse_profile1(struct spi_nor *nor, ...@@ -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 * Default to PROFILE1_DUMMY_DEFAULT if we don't find anything, and let
* flashes set the correct value if needed in their fixup hooks. * 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) if (!dummy)
dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_166MHZ, dwords[4]); dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_166MHZ,
dwords[SFDP_DWORD(5)]);
if (!dummy) if (!dummy)
dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_133MHZ, dwords[4]); dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_133MHZ,
dwords[SFDP_DWORD(5)]);
if (!dummy) if (!dummy)
dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_100MHZ, dwords[4]); dummy = FIELD_GET(PROFILE1_DWORD5_DUMMY_100MHZ,
dwords[SFDP_DWORD(5)]);
if (!dummy) if (!dummy)
dev_dbg(nor->dev, dev_dbg(nor->dev,
"Can't find dummy cycles from Profile 1.0 table\n"); "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, ...@@ -1228,7 +1231,8 @@ static int spi_nor_parse_sccr(struct spi_nor *nor,
le32_to_cpu_array(dwords, sccr_header->length); 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; nor->flags |= SNOR_F_IO_MODE_EN_VOLATILE;
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment