mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
mtd: spi-nor: macronix: Add post_sfdp fixups for Quad Input Page Program
Although certain Macronix NOR flash support the Quad Input Page Program feature, the corresponding information in the 4-byte Address Instruction Table of these flash is not properly filled. As a result, this feature cannot be enabled as expected. To address this issue, a post_sfdp fixups implementation is required to correct the missing information. Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> Link: https://lore.kernel.org/r/20250211063028.382169-2-linchengming884@gmail.com [ta: fix alignment to match open parenthesis] Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
This commit is contained in:
committed by
Tudor Ambarus
parent
03e7bb864d
commit
798aafeffb
@@ -45,8 +45,26 @@ mx25l25635_post_bfpt_fixups(struct spi_nor *nor,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
macronix_qpp4b_post_sfdp_fixups(struct spi_nor *nor)
|
||||
{
|
||||
/* PP_1_1_4_4B is supported but missing in 4BAIT. */
|
||||
struct spi_nor_flash_parameter *params = nor->params;
|
||||
|
||||
params->hwcaps.mask |= SNOR_HWCAPS_PP_1_1_4;
|
||||
spi_nor_set_pp_settings(¶ms->page_programs[SNOR_CMD_PP_1_1_4],
|
||||
SPINOR_OP_PP_1_1_4_4B, SNOR_PROTO_1_1_4);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct spi_nor_fixups mx25l25635_fixups = {
|
||||
.post_bfpt = mx25l25635_post_bfpt_fixups,
|
||||
.post_sfdp = macronix_qpp4b_post_sfdp_fixups,
|
||||
};
|
||||
|
||||
static const struct spi_nor_fixups macronix_qpp4b_fixups = {
|
||||
.post_sfdp = macronix_qpp4b_post_sfdp_fixups,
|
||||
};
|
||||
|
||||
static const struct flash_info macronix_nor_parts[] = {
|
||||
@@ -102,11 +120,13 @@ static const struct flash_info macronix_nor_parts[] = {
|
||||
.size = SZ_64M,
|
||||
.no_sfdp_flags = SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
.fixup_flags = SPI_NOR_4B_OPCODES,
|
||||
.fixups = ¯onix_qpp4b_fixups,
|
||||
}, {
|
||||
.id = SNOR_ID(0xc2, 0x20, 0x1b),
|
||||
.name = "mx66l1g45g",
|
||||
.size = SZ_128M,
|
||||
.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
.fixups = ¯onix_qpp4b_fixups,
|
||||
}, {
|
||||
.id = SNOR_ID(0xc2, 0x23, 0x14),
|
||||
.name = "mx25v8035f",
|
||||
@@ -148,18 +168,21 @@ static const struct flash_info macronix_nor_parts[] = {
|
||||
.size = SZ_64M,
|
||||
.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
.fixup_flags = SPI_NOR_4B_OPCODES,
|
||||
.fixups = ¯onix_qpp4b_fixups,
|
||||
}, {
|
||||
.id = SNOR_ID(0xc2, 0x25, 0x3a),
|
||||
.name = "mx66u51235f",
|
||||
.size = SZ_64M,
|
||||
.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
.fixup_flags = SPI_NOR_4B_OPCODES,
|
||||
.fixups = ¯onix_qpp4b_fixups,
|
||||
}, {
|
||||
.id = SNOR_ID(0xc2, 0x25, 0x3c),
|
||||
.name = "mx66u2g45g",
|
||||
.size = SZ_256M,
|
||||
.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
|
||||
.fixup_flags = SPI_NOR_4B_OPCODES,
|
||||
.fixups = ¯onix_qpp4b_fixups,
|
||||
}, {
|
||||
.id = SNOR_ID(0xc2, 0x26, 0x18),
|
||||
.name = "mx25l12855e",
|
||||
|
||||
Reference in New Issue
Block a user