* [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info @ 2025-04-07 7:53 Cheng Ming Lin 2025-04-07 7:53 ` [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields Cheng Ming Lin ` (3 more replies) 0 siblings, 4 replies; 16+ messages in thread From: Cheng Ming Lin @ 2025-04-07 7:53 UTC (permalink / raw) To: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel Cc: alvinzhou, leoyu, Cheng Ming Lin From: Cheng Ming Lin <chengminglin@mxic.com.tw> Organize Macronix flash information to make it more readable. v2: * Support 1-4-4 Read and 1-4-4 Page Program by adding fixups for MX25L3255E Cheng Ming Lin (3): mtd: spi-nor: macronix: Drop the redundant flash info fields mtd: spi-nor: macronix: Remove duplicate flash info entries mtd: spi-nor: macronix: Add fixups for MX25L3255E drivers/mtd/spi-nor/macronix.c | 73 ++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 34 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-04-07 7:53 [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Cheng Ming Lin @ 2025-04-07 7:53 ` Cheng Ming Lin 2025-06-08 1:04 ` Guenter Roeck 2025-04-07 7:53 ` [PATCH v2 2/3] mtd: spi-nor: macronix: Remove duplicate flash info entries Cheng Ming Lin ` (2 subsequent siblings) 3 siblings, 1 reply; 16+ messages in thread From: Cheng Ming Lin @ 2025-04-07 7:53 UTC (permalink / raw) To: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel Cc: alvinzhou, leoyu, Cheng Ming Lin From: Cheng Ming Lin <chengminglin@mxic.com.tw> Many flash devices share the same ID but have different part numbers. To avoid confusion, the part number field is removed. Additionally, since SFDP already provides size information and functionality covered by no_sfdp_flags, these fields are also removed. Furthermore, when 4-byte address instruction table is available, the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> --- drivers/mtd/spi-nor/macronix.c | 36 +++++++++------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c index 4b09e5add630..2acd8e28d1c4 100644 --- a/drivers/mtd/spi-nor/macronix.c +++ b/drivers/mtd/spi-nor/macronix.c @@ -88,10 +88,8 @@ static const struct flash_info macronix_nor_parts[] = { .name = "mx25l8005", .size = SZ_1M, }, { + /* MX25L1606E */ .id = SNOR_ID(0xc2, 0x20, 0x15), - .name = "mx25l1606e", - .size = SZ_2M, - .no_sfdp_flags = SECT_4K, }, { .id = SNOR_ID(0xc2, 0x20, 0x16), .name = "mx25l3205d", @@ -103,29 +101,21 @@ static const struct flash_info macronix_nor_parts[] = { .size = SZ_8M, .no_sfdp_flags = SECT_4K, }, { + /* MX25L12805D */ .id = SNOR_ID(0xc2, 0x20, 0x18), - .name = "mx25l12805d", - .size = SZ_16M, .flags = SPI_NOR_HAS_LOCK | SPI_NOR_4BIT_BP, - .no_sfdp_flags = SECT_4K, }, { + /* MX25L25635E, MX25L25645G */ .id = SNOR_ID(0xc2, 0x20, 0x19), - .name = "mx25l25635e", - .size = SZ_32M, - .no_sfdp_flags = SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixups = &mx25l25635_fixups }, { + /* MX66L51235F */ .id = SNOR_ID(0xc2, 0x20, 0x1a), - .name = "mx66l51235f", - .size = SZ_64M, - .no_sfdp_flags = SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixup_flags = SPI_NOR_4B_OPCODES, .fixups = ¯onix_qpp4b_fixups, }, { + /* MX66L1G45G */ .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, }, { /* MX66L2G45G */ @@ -167,11 +157,8 @@ static const struct flash_info macronix_nor_parts[] = { .size = SZ_16M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, }, { + /* MX25U51245G */ .id = SNOR_ID(0xc2, 0x25, 0x3a), - .name = "mx25u51245g", - .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), @@ -185,11 +172,8 @@ static const struct flash_info macronix_nor_parts[] = { .id = SNOR_ID(0xc2, 0x25, 0x3b), .fixups = ¯onix_qpp4b_fixups, }, { + /* MX66U2G45G */ .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), @@ -215,15 +199,13 @@ static const struct flash_info macronix_nor_parts[] = { .size = SZ_4M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, }, { + /* MX25UW51245G */ .id = SNOR_ID(0xc2, 0x81, 0x3a), - .name = "mx25uw51245g", .n_banks = 4, .flags = SPI_NOR_RWW, }, { + /* MX25L3255E */ .id = SNOR_ID(0xc2, 0x9e, 0x16), - .name = "mx25l3255e", - .size = SZ_4M, - .no_sfdp_flags = SECT_4K, }, /* * This spares us of adding new flash entries for flashes that can be -- 2.25.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-04-07 7:53 ` [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields Cheng Ming Lin @ 2025-06-08 1:04 ` Guenter Roeck 2025-06-08 12:53 ` Pratyush Yadav 0 siblings, 1 reply; 16+ messages in thread From: Guenter Roeck @ 2025-06-08 1:04 UTC (permalink / raw) To: Cheng Ming Lin Cc: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin Hi, On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: > From: Cheng Ming Lin <chengminglin@mxic.com.tw> > > Many flash devices share the same ID but have different part numbers. > To avoid confusion, the part number field is removed. > > Additionally, since SFDP already provides size information and > functionality covered by no_sfdp_flags, these fields are also removed. > > Furthermore, when 4-byte address instruction table is available, > the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. > > Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> > Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> With this patch in place, some of my qemu tests no longer recognize the flash chips (MX25L25635E/F). Do you have a suggestion on how to handle this other than avoiding Macronix flash chips when working with qemu ? Thanks, Guenter ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-08 1:04 ` Guenter Roeck @ 2025-06-08 12:53 ` Pratyush Yadav 2025-06-09 1:13 ` Guenter Roeck 0 siblings, 1 reply; 16+ messages in thread From: Pratyush Yadav @ 2025-06-08 12:53 UTC (permalink / raw) To: Guenter Roeck Cc: Cheng Ming Lin, tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On Sat, Jun 07 2025, Guenter Roeck wrote: > Hi, > > On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >> >> Many flash devices share the same ID but have different part numbers. >> To avoid confusion, the part number field is removed. >> >> Additionally, since SFDP already provides size information and >> functionality covered by no_sfdp_flags, these fields are also removed. >> >> Furthermore, when 4-byte address instruction table is available, >> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >> >> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> > > With this patch in place, some of my qemu tests no longer recognize the > flash chips (MX25L25635E/F). Do you have a suggestion on how to handle > this other than avoiding Macronix flash chips when working with qemu ? Could you share some logs? Does the flash fail to detect, or does the SFDP-based probing fail? Since this is qemu, it would be even better if you can share a setup/reproduction guide. I have been meaning to set up qemu for SPI NOR testing for some time now, but never got around to figuring it out. -- Regards, Pratyush Yadav ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-08 12:53 ` Pratyush Yadav @ 2025-06-09 1:13 ` Guenter Roeck 2025-06-10 0:14 ` Guenter Roeck 0 siblings, 1 reply; 16+ messages in thread From: Guenter Roeck @ 2025-06-09 1:13 UTC (permalink / raw) To: Pratyush Yadav Cc: Cheng Ming Lin, tudor.ambarus, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On 6/8/25 05:53, Pratyush Yadav wrote: > On Sat, Jun 07 2025, Guenter Roeck wrote: > >> Hi, >> >> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >>> >>> Many flash devices share the same ID but have different part numbers. >>> To avoid confusion, the part number field is removed. >>> >>> Additionally, since SFDP already provides size information and >>> functionality covered by no_sfdp_flags, these fields are also removed. >>> >>> Furthermore, when 4-byte address instruction table is available, >>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >>> >>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> >> >> With this patch in place, some of my qemu tests no longer recognize the >> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >> this other than avoiding Macronix flash chips when working with qemu ? > > Could you share some logs? Does the flash fail to detect, or does the > SFDP-based probing fail? Since this is qemu, it would be even better if > you can share a setup/reproduction guide. I have been meaning to set up > qemu for SPI NOR testing for some time now, but never got around to > figuring it out. > I suspect that the SFDP data for the affected flashes is incorrect in qemu. Since this is very likely a qemu problem, I'll just configure different flash chips when running affected tests. For reference, here is a sample qemu command line. qemu-system-arm -M supermicro-x11spi-bmc,fmc-model=n25q256a13,spi-model=n25q256a13 \ -kernel arch/arm/boot/zImage -no-reboot -snapshot -audio none \ -drive file=/tmp/flash,format=raw,if=mtd -nic user \ --append "root=/dev/mtdblock0 rootwait console=ttyS4,115200 earlycon=uart8250,mmio32,0x1e784000,115200n8" \ -dtb arch/arm/boot/dts/aspeed/aspeed-bmc-supermicro-x11spi.dtb \ -nographic -monitor null -serial stdio This is with aspeed_g5_defconfig. In this example, ",fmc-model=n25q256a13,spi-model=n25q256a13" is used to override the default flash model (MX25L25635E) because it longer works after this patch. Normally that should not be required, but it is useful to test support for different flash chips. Guenter ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-09 1:13 ` Guenter Roeck @ 2025-06-10 0:14 ` Guenter Roeck 2025-06-10 6:46 ` Tudor Ambarus 0 siblings, 1 reply; 16+ messages in thread From: Guenter Roeck @ 2025-06-10 0:14 UTC (permalink / raw) To: Pratyush Yadav Cc: Cheng Ming Lin, tudor.ambarus, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On 6/8/25 18:13, Guenter Roeck wrote: > On 6/8/25 05:53, Pratyush Yadav wrote: >> On Sat, Jun 07 2025, Guenter Roeck wrote: >> >>> Hi, >>> >>> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >>>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>> >>>> Many flash devices share the same ID but have different part numbers. >>>> To avoid confusion, the part number field is removed. >>>> >>>> Additionally, since SFDP already provides size information and >>>> functionality covered by no_sfdp_flags, these fields are also removed. >>>> >>>> Furthermore, when 4-byte address instruction table is available, >>>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >>>> >>>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> >>> >>> With this patch in place, some of my qemu tests no longer recognize the >>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >>> this other than avoiding Macronix flash chips when working with qemu ? >> >> Could you share some logs? Does the flash fail to detect, or does the >> SFDP-based probing fail? Since this is qemu, it would be even better if >> you can share a setup/reproduction guide. I have been meaning to set up >> qemu for SPI NOR testing for some time now, but never got around to >> figuring it out. >> > > I suspect that the SFDP data for the affected flashes is incorrect in qemu. > Since this is very likely a qemu problem, I'll just configure different flash > chips when running affected tests. > I was able to confirm the above. This is from the kernel log: [ 4.500000] spi-nor spi0.0: BFPT parsing failed. Please consider using SPI_NOR_SKIP_SFDP when declaring the flash [ 4.500000] spi-nor spi0.0: probe with driver spi-nor failed with error -22 Guenter ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-10 0:14 ` Guenter Roeck @ 2025-06-10 6:46 ` Tudor Ambarus 2025-06-10 7:29 ` Cheng Ming Lin 2025-06-10 7:41 ` Guenter Roeck 0 siblings, 2 replies; 16+ messages in thread From: Tudor Ambarus @ 2025-06-10 6:46 UTC (permalink / raw) To: Guenter Roeck, Pratyush Yadav, Cheng Ming Lin Cc: Cheng Ming Lin, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On 6/10/25 1:14 AM, Guenter Roeck wrote: > On 6/8/25 18:13, Guenter Roeck wrote: >> On 6/8/25 05:53, Pratyush Yadav wrote: >>> On Sat, Jun 07 2025, Guenter Roeck wrote: >>> >>>> Hi, >>>> >>>> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >>>>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>> >>>>> Many flash devices share the same ID but have different part numbers. >>>>> To avoid confusion, the part number field is removed. >>>>> >>>>> Additionally, since SFDP already provides size information and >>>>> functionality covered by no_sfdp_flags, these fields are also removed. >>>>> >>>>> Furthermore, when 4-byte address instruction table is available, >>>>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >>>>> >>>>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> >>>> >>>> With this patch in place, some of my qemu tests no longer recognize the >>>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >>>> this other than avoiding Macronix flash chips when working with qemu ? >>> >>> Could you share some logs? Does the flash fail to detect, or does the >>> SFDP-based probing fail? Since this is qemu, it would be even better if >>> you can share a setup/reproduction guide. I have been meaning to set up >>> qemu for SPI NOR testing for some time now, but never got around to >>> figuring it out. >>> >> >> I suspect that the SFDP data for the affected flashes is incorrect in >> qemu. >> Since this is very likely a qemu problem, I'll just configure >> different flash >> chips when running affected tests. >> > > I was able to confirm the above. This is from the kernel log: > > [ 4.500000] spi-nor spi0.0: BFPT parsing failed. Please consider > using SPI_NOR_SKIP_SFDP when declaring the flash > [ 4.500000] spi-nor spi0.0: probe with driver spi-nor failed with > error -22 > It's likely the problem where the same flash ID is used for different flavors of flashes. Typically we differentiate the flavors by comparing their SFDP data and use post SFDP hooks to amend where needed. If no one cares about fixing it, we can undo the change for the affected flash or revert the patch entirely. Cheng? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-10 6:46 ` Tudor Ambarus @ 2025-06-10 7:29 ` Cheng Ming Lin 2025-06-10 7:43 ` Guenter Roeck 2025-06-10 7:41 ` Guenter Roeck 1 sibling, 1 reply; 16+ messages in thread From: Cheng Ming Lin @ 2025-06-10 7:29 UTC (permalink / raw) To: Tudor Ambarus Cc: Guenter Roeck, Pratyush Yadav, Cheng Ming Lin, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu Tudor Ambarus <tudor.ambarus@linaro.org> 於 2025年6月10日 週二 下午2:46寫道: > > > > On 6/10/25 1:14 AM, Guenter Roeck wrote: > > On 6/8/25 18:13, Guenter Roeck wrote: > >> On 6/8/25 05:53, Pratyush Yadav wrote: > >>> On Sat, Jun 07 2025, Guenter Roeck wrote: > >>> > >>>> Hi, > >>>> > >>>> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: > >>>>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> > >>>>> > >>>>> Many flash devices share the same ID but have different part numbers. > >>>>> To avoid confusion, the part number field is removed. > >>>>> > >>>>> Additionally, since SFDP already provides size information and > >>>>> functionality covered by no_sfdp_flags, these fields are also removed. > >>>>> > >>>>> Furthermore, when 4-byte address instruction table is available, > >>>>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. > >>>>> > >>>>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> > >>>>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> > >>>> > >>>> With this patch in place, some of my qemu tests no longer recognize the > >>>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle > >>>> this other than avoiding Macronix flash chips when working with qemu ? > >>> > >>> Could you share some logs? Does the flash fail to detect, or does the > >>> SFDP-based probing fail? Since this is qemu, it would be even better if > >>> you can share a setup/reproduction guide. I have been meaning to set up > >>> qemu for SPI NOR testing for some time now, but never got around to > >>> figuring it out. > >>> > >> > >> I suspect that the SFDP data for the affected flashes is incorrect in > >> qemu. > >> Since this is very likely a qemu problem, I'll just configure > >> different flash > >> chips when running affected tests. > >> > > > > I was able to confirm the above. This is from the kernel log: > > > > [ 4.500000] spi-nor spi0.0: BFPT parsing failed. Please consider > > using SPI_NOR_SKIP_SFDP when declaring the flash > > [ 4.500000] spi-nor spi0.0: probe with driver spi-nor failed with > > error -22 > > > > It's likely the problem where the same flash ID is used for different > flavors of flashes. Typically we differentiate the flavors by comparing > their SFDP data and use post SFDP hooks to amend where needed. If no one > cares about fixing it, we can undo the change for the affected flash or > revert the patch entirely. Cheng? > Since this patch removed the size field, the issue occurs because the "spi_nor_init_params" function now processes the "spi_nor_parse_sfdp" function. As a result, the error is likely caused by a problem during the SFDP parsing, which leads to the failure of "spi_nor_init_params". The issue can be resolved by adding .size = SZ_32M to the flash_info for MX25L25635E to prevent failures caused by SFDP parsing. The root cause of this problem lies in the failure of parsing the SFDP data for the flash, rather than an issue with the patch itself. I believe we should not revert this patch. Thanks, Cheng Ming Lin ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-10 7:29 ` Cheng Ming Lin @ 2025-06-10 7:43 ` Guenter Roeck 0 siblings, 0 replies; 16+ messages in thread From: Guenter Roeck @ 2025-06-10 7:43 UTC (permalink / raw) To: Cheng Ming Lin, Tudor Ambarus Cc: Pratyush Yadav, Cheng Ming Lin, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu On 6/10/25 00:29, Cheng Ming Lin wrote: > Tudor Ambarus <tudor.ambarus@linaro.org> 於 2025年6月10日 週二 下午2:46寫道: >> >> >> >> On 6/10/25 1:14 AM, Guenter Roeck wrote: >>> On 6/8/25 18:13, Guenter Roeck wrote: >>>> On 6/8/25 05:53, Pratyush Yadav wrote: >>>>> On Sat, Jun 07 2025, Guenter Roeck wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >>>>>>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>>>> >>>>>>> Many flash devices share the same ID but have different part numbers. >>>>>>> To avoid confusion, the part number field is removed. >>>>>>> >>>>>>> Additionally, since SFDP already provides size information and >>>>>>> functionality covered by no_sfdp_flags, these fields are also removed. >>>>>>> >>>>>>> Furthermore, when 4-byte address instruction table is available, >>>>>>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >>>>>>> >>>>>>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>>>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> >>>>>> >>>>>> With this patch in place, some of my qemu tests no longer recognize the >>>>>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >>>>>> this other than avoiding Macronix flash chips when working with qemu ? >>>>> >>>>> Could you share some logs? Does the flash fail to detect, or does the >>>>> SFDP-based probing fail? Since this is qemu, it would be even better if >>>>> you can share a setup/reproduction guide. I have been meaning to set up >>>>> qemu for SPI NOR testing for some time now, but never got around to >>>>> figuring it out. >>>>> >>>> >>>> I suspect that the SFDP data for the affected flashes is incorrect in >>>> qemu. >>>> Since this is very likely a qemu problem, I'll just configure >>>> different flash >>>> chips when running affected tests. >>>> >>> >>> I was able to confirm the above. This is from the kernel log: >>> >>> [ 4.500000] spi-nor spi0.0: BFPT parsing failed. Please consider >>> using SPI_NOR_SKIP_SFDP when declaring the flash >>> [ 4.500000] spi-nor spi0.0: probe with driver spi-nor failed with >>> error -22 >>> >> >> It's likely the problem where the same flash ID is used for different >> flavors of flashes. Typically we differentiate the flavors by comparing >> their SFDP data and use post SFDP hooks to amend where needed. If no one >> cares about fixing it, we can undo the change for the affected flash or >> revert the patch entirely. Cheng? >> > > Since this patch removed the size field, the issue occurs because the > "spi_nor_init_params" function now processes the "spi_nor_parse_sfdp" > function. As a result, the error is likely caused by a problem during the > SFDP parsing, which leads to the failure of "spi_nor_init_params". > > The issue can be resolved by adding .size = SZ_32M to the flash_info for > MX25L25635E to prevent failures caused by SFDP parsing. > > The root cause of this problem lies in the failure of parsing the SFDP > data for the flash, rather than an issue with the patch itself. I believe > we should not revert this patch. > I tend to agree. The problem is very likely on the qemu side and should be addressed there. Guenter ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-10 6:46 ` Tudor Ambarus 2025-06-10 7:29 ` Cheng Ming Lin @ 2025-06-10 7:41 ` Guenter Roeck 2025-06-22 19:09 ` Pratyush Yadav 1 sibling, 1 reply; 16+ messages in thread From: Guenter Roeck @ 2025-06-10 7:41 UTC (permalink / raw) To: Tudor Ambarus, Pratyush Yadav, Cheng Ming Lin Cc: Cheng Ming Lin, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu On 6/9/25 23:46, Tudor Ambarus wrote: > > > On 6/10/25 1:14 AM, Guenter Roeck wrote: >> On 6/8/25 18:13, Guenter Roeck wrote: >>> On 6/8/25 05:53, Pratyush Yadav wrote: >>>> On Sat, Jun 07 2025, Guenter Roeck wrote: >>>> >>>>> Hi, >>>>> >>>>> On Mon, Apr 07, 2025 at 03:53:58PM +0800, Cheng Ming Lin wrote: >>>>>> From: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>>> >>>>>> Many flash devices share the same ID but have different part numbers. >>>>>> To avoid confusion, the part number field is removed. >>>>>> >>>>>> Additionally, since SFDP already provides size information and >>>>>> functionality covered by no_sfdp_flags, these fields are also removed. >>>>>> >>>>>> Furthermore, when 4-byte address instruction table is available, >>>>>> the SPI_NOR_4B_OPCODES flag is no longer needed and is removed. >>>>>> >>>>>> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> >>>>>> Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org> >>>>> >>>>> With this patch in place, some of my qemu tests no longer recognize the >>>>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >>>>> this other than avoiding Macronix flash chips when working with qemu ? >>>> >>>> Could you share some logs? Does the flash fail to detect, or does the >>>> SFDP-based probing fail? Since this is qemu, it would be even better if >>>> you can share a setup/reproduction guide. I have been meaning to set up >>>> qemu for SPI NOR testing for some time now, but never got around to >>>> figuring it out. >>>> >>> >>> I suspect that the SFDP data for the affected flashes is incorrect in >>> qemu. >>> Since this is very likely a qemu problem, I'll just configure >>> different flash >>> chips when running affected tests. >>> >> >> I was able to confirm the above. This is from the kernel log: >> >> [ 4.500000] spi-nor spi0.0: BFPT parsing failed. Please consider >> using SPI_NOR_SKIP_SFDP when declaring the flash >> [ 4.500000] spi-nor spi0.0: probe with driver spi-nor failed with >> error -22 >> > > It's likely the problem where the same flash ID is used for different > flavors of flashes. Typically we differentiate the flavors by comparing > their SFDP data and use post SFDP hooks to amend where needed. If no one > cares about fixing it, we can undo the change for the affected flash or > revert the patch entirely. Cheng? > Some debugging shows two problems with qemu: The returned SFPD data for one of the flashes is wrong and does not reflect the data qemu is supposed to provide, and qemu does not provide SFPD data for all flashes. I don't know if the bad data is due to a bad Linux driver (unlikely), a bug in qemu's SPI emulation code, or a bug in qemu's flash emulation code. Unfortunately I don't really have time to track this down further. Guenter ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields 2025-06-10 7:41 ` Guenter Roeck @ 2025-06-22 19:09 ` Pratyush Yadav 0 siblings, 0 replies; 16+ messages in thread From: Pratyush Yadav @ 2025-06-22 19:09 UTC (permalink / raw) To: Guenter Roeck Cc: Tudor Ambarus, Pratyush Yadav, Cheng Ming Lin, Cheng Ming Lin, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Linus Torvalds Hi Guenter, On Tue, Jun 10 2025, Guenter Roeck wrote: > On 6/9/25 23:46, Tudor Ambarus wrote: >> On 6/10/25 1:14 AM, Guenter Roeck wrote: >>> On 6/8/25 18:13, Guenter Roeck wrote: >>>> On 6/8/25 05:53, Pratyush Yadav wrote: >>>>> On Sat, Jun 07 2025, Guenter Roeck wrote: [...] >>>>>> With this patch in place, some of my qemu tests no longer recognize the >>>>>> flash chips (MX25L25635E/F). Do you have a suggestion on how to handle >>>>>> this other than avoiding Macronix flash chips when working with qemu ? >>>>> >>>>> Could you share some logs? Does the flash fail to detect, or does the >>>>> SFDP-based probing fail? Since this is qemu, it would be even better if >>>>> you can share a setup/reproduction guide. I have been meaning to set up >>>>> qemu for SPI NOR testing for some time now, but never got around to >>>>> figuring it out. >>>>> >>>> >>>> I suspect that the SFDP data for the affected flashes is incorrect in >>>> qemu. >>>> Since this is very likely a qemu problem, I'll just configure >>>> different flash >>>> chips when running affected tests. >>>> [...] > > Some debugging shows two problems with qemu: The returned SFPD data for one > of the flashes is wrong and does not reflect the data qemu is supposed > to provide, and qemu does not provide SFPD data for all flashes. > > I don't know if the bad data is due to a bad Linux driver (unlikely), a bug > in qemu's SPI emulation code, or a bug in qemu's flash emulation code. > Unfortunately I don't really have time to track this down further. I used the command you posted in [0] and tried to reproduce the bug, but for me the flash probes just fine: root@romulus:/sys/bus/spi/devices/spi0.0/spi-nor# cat manufacturer macronix root@romulus:/sys/bus/spi/devices/spi0.0/spi-nor# cat jedec_id c22019 root@romulus:/sys/bus/spi/devices/spi0.0/spi-nor# uname -a Linux romulus 6.16.0-rc2-00308-gf7301f856d35-dirty #5 SMP Sat Jun 21 19:29:15 CEST 2025 armv6l GNU/Linux The rootfs is also mounted on a mtdblock device backed by this flash, and everything appears to work fine. Which version of qemu are you using? I can see that SFDP data for mx25l25635e was added to qemu in commit dc907a667c ("m25p80: Add the mx25l25635e SFPD table"), which was released in v7.2.0. Older versions of qemu might run into trouble with this flash if SFDP data is not available. FWIW, my qemu version: $ qemu-system-arm --version QEMU emulator version 10.0.0 Copyright (c) 2003-2025 Fabrice Bellard and the QEMU Project developers [0] https://lore.kernel.org/linux-mtd/da58fc81-3c99-4951-85bc-e3c139283b5a@roeck-us.net/ -- Regards, Pratyush Yadav ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 2/3] mtd: spi-nor: macronix: Remove duplicate flash info entries 2025-04-07 7:53 [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Cheng Ming Lin 2025-04-07 7:53 ` [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields Cheng Ming Lin @ 2025-04-07 7:53 ` Cheng Ming Lin 2025-04-07 7:54 ` [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E Cheng Ming Lin 2025-05-06 9:36 ` [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Pratyush Yadav 3 siblings, 0 replies; 16+ messages in thread From: Cheng Ming Lin @ 2025-04-07 7:53 UTC (permalink / raw) To: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel Cc: alvinzhou, leoyu, Cheng Ming Lin From: Cheng Ming Lin <chengminglin@mxic.com.tw> To clean up the code and reduce duplication, this entry is removed. Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org> --- drivers/mtd/spi-nor/macronix.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c index 2acd8e28d1c4..07e0bd0b70a0 100644 --- a/drivers/mtd/spi-nor/macronix.c +++ b/drivers/mtd/spi-nor/macronix.c @@ -160,13 +160,6 @@ static const struct flash_info macronix_nor_parts[] = { /* MX25U51245G */ .id = SNOR_ID(0xc2, 0x25, 0x3a), .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, }, { /* MX66U1G45G */ .id = SNOR_ID(0xc2, 0x25, 0x3b), -- 2.25.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E 2025-04-07 7:53 [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Cheng Ming Lin 2025-04-07 7:53 ` [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields Cheng Ming Lin 2025-04-07 7:53 ` [PATCH v2 2/3] mtd: spi-nor: macronix: Remove duplicate flash info entries Cheng Ming Lin @ 2025-04-07 7:54 ` Cheng Ming Lin 2025-04-07 8:25 ` Cheng Ming Lin 2025-04-08 14:52 ` Pratyush Yadav 2025-05-06 9:36 ` [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Pratyush Yadav 3 siblings, 2 replies; 16+ messages in thread From: Cheng Ming Lin @ 2025-04-07 7:54 UTC (permalink / raw) To: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel Cc: alvinzhou, leoyu, Cheng Ming Lin From: Cheng Ming Lin <chengminglin@mxic.com.tw> SFDP of MX25L3255E is JESD216, which does not include the Quad Enable bit Requirement in BFPT. As a result, during BFPT parsing, the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. Therefore, it is necessary to correct this setting by late_init. In addition, MX25L3255E also supports 1-4-4 page program in 3-byte address mode. However, since the 3-byte address 1-4-4 page program is not defined in SFDP, it needs to be configured in late_init. Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> --- drivers/mtd/spi-nor/macronix.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c index 07e0bd0b70a0..4bbd3b651cec 100644 --- a/drivers/mtd/spi-nor/macronix.c +++ b/drivers/mtd/spi-nor/macronix.c @@ -58,6 +58,31 @@ macronix_qpp4b_post_sfdp_fixups(struct spi_nor *nor) return 0; } +static int +mx25l3255e_late_init_fixups(struct spi_nor *nor) +{ + /* + * SFDP of MX25L3255E is JESD216, which does not include the Quad + * Enable bit Requirement in BFPT. As a result, during BFPT parsing, + * the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. + * Therefore, it is necessary to correct this setting by late_init. + */ + nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; + + /* + * In addition, MX25L3255E also supports 1-4-4 page program in 3-byte + * address mode. However, since the 3-byte address 1-4-4 page program + * is not defined in SFDP, it needs to be configured in late_init. + */ + struct spi_nor_flash_parameter *params = nor->params; + + params->hwcaps.mask |= SNOR_HWCAPS_PP_1_4_4; + spi_nor_set_pp_settings(¶ms->page_programs[SNOR_CMD_PP_1_4_4], + SPINOR_OP_PP_1_4_4, SNOR_PROTO_1_4_4); + + return 0; +} + static const struct spi_nor_fixups mx25l25635_fixups = { .post_bfpt = mx25l25635_post_bfpt_fixups, .post_sfdp = macronix_qpp4b_post_sfdp_fixups, @@ -67,6 +92,10 @@ static const struct spi_nor_fixups macronix_qpp4b_fixups = { .post_sfdp = macronix_qpp4b_post_sfdp_fixups, }; +static const struct spi_nor_fixups mx25l3255e_fixups = { + .late_init = mx25l3255e_late_init_fixups, +}; + static const struct flash_info macronix_nor_parts[] = { { .id = SNOR_ID(0xc2, 0x20, 0x10), @@ -199,6 +228,7 @@ static const struct flash_info macronix_nor_parts[] = { }, { /* MX25L3255E */ .id = SNOR_ID(0xc2, 0x9e, 0x16), + .fixups = &mx25l3255e_fixups, }, /* * This spares us of adding new flash entries for flashes that can be -- 2.25.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E 2025-04-07 7:54 ` [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E Cheng Ming Lin @ 2025-04-07 8:25 ` Cheng Ming Lin 2025-04-08 14:52 ` Pratyush Yadav 1 sibling, 0 replies; 16+ messages in thread From: Cheng Ming Lin @ 2025-04-07 8:25 UTC (permalink / raw) To: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel Cc: alvinzhou, leoyu, Cheng Ming Lin Sorry for missing the minimum testing requirements. Here are the details: zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id c29e16 zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer macronix zynq> hexdump -Cv /sys/bus/spi/devices/spi0.0/spi-nor/sfdp 00000000 53 46 44 50 00 01 01 ff 00 00 01 09 30 00 00 ff |SFDP........0...| 00000010 c2 00 01 04 60 00 00 ff ff ff ff ff ff ff ff ff |....`...........| 00000020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 00000030 e5 20 f1 ff ff ff ff 01 44 eb 08 6b 08 3b 04 bb |. ......D..k.;..| 00000040 ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52 |............. .R| 00000050 10 d8 00 ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 00000060 00 36 00 27 9e 49 ff ff d9 f8 ff ff ff ff ff ff |.6.'.I..........| 00000070 zynq> sha256sum /sys/bus/spi/devices/spi0.0/spi-nor/sfdp cf7b2e5b00388040786877de15f7594fcc064a1b7dbe34393a06d462cc1da9b0 /sys/bus/spi/devices/spi0.0/spi-nor/sfdp zynq> cat /sys/kernel/debug/spi-nor/spi0.0/capabilities Supported read modes by the flash 1S-1S-1S opcode 0x03 mode cycles 0 dummy cycles 0 1S-1S-2S opcode 0x3b mode cycles 0 dummy cycles 8 1S-2S-2S opcode 0xbb mode cycles 0 dummy cycles 4 1S-1S-4S opcode 0x6b mode cycles 0 dummy cycles 8 1S-4S-4S opcode 0xeb mode cycles 2 dummy cycles 4 Supported page program modes by the flash 1S-1S-1S opcode 0x02 1S-4S-4S opcode 0x38 zynq> cat /sys/kernel/debug/spi-nor/spi0.0/params name (null) id c2 9e 16 c2 9e 16 size 4.00 MiB write size 1 page size 256 address nbytes 3 flags HAS_16BIT_SR opcodes read 0xeb dummy cycles 6 erase 0xd8 program 0x38 8D extension none protocols read 1S-4S-4S write 1S-4S-4S register 1S-1S-1S erase commands 20 (4.00 KiB) [1] 52 (32.0 KiB) [2] d8 (64.0 KiB) [3] c7 (4.00 MiB) sector map region (in hex) | erase mask | overlaid ------------------+------------+---------- 00000000-003fffff | [ 3] | no zynq> dd if=/dev/urandom of=/tmp/spi_test bs=1M count=2 2+0 records in 2+0 records out 2097152 bytes (2.0MB) copied, 0.084038 seconds, 23.8MB/s zynq> mtd_debug erase /dev/mtd0 0 2097152 Erased 2097152 bytes from address 0x00000000 in flash zynq> mtd_debug read /dev/mtd0 0 2097152 /tmp/spi_read Copied 2097152 bytes from address 0x00000000 in flash to /tmp/spi_read zynq> hexdump /tmp/spi_read 0000000 ffff ffff ffff ffff ffff ffff ffff ffff * 0200000 zynq> sha256sum /tmp/spi_read 4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 /tmp/spi_read zynq> mtd_debug write /dev/mtd0 0 2097152 /tmp/spi_test Copied 2097152 bytes from /tmp/spi_test to address 0x00000000 in flash zynq> mtd_debug read /dev/mtd0 0 2097152 /tmp/spi_read Copied 2097152 bytes from address 0x00000000 in flash to /tmp/spi_read zynq> sha256sum /tmp/spi* 0be542d171336e052532d4b4f50b148293f7436f640211644df075da8682f54a /tmp/spi_read 0be542d171336e052532d4b4f50b148293f7436f640211644df075da8682f54a /tmp/spi_test zynq> mtd_debug erase /dev/mtd0 0 2097152 Erased 2097152 bytes from address 0x00000000 in flash zynq> mtd_debug read /dev/mtd0 0 2097152 /tmp/spi_read Copied 2097152 bytes from address 0x00000000 in flash to /tmp/spi_read zynq> sha256sum /tmp/spi* 4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 /tmp/spi_read 0be542d171336e052532d4b4f50b148293f7436f640211644df075da8682f54a /tmp/spi_test zynq> mtd_debug info /dev/mtd0 mtd.type = MTD_NORFLASH mtd.flags = MTD_CAP_NORFLASH mtd.size = 4194304 (4M) mtd.erasesize = 65536 (64K) mtd.writesize = 1 mtd.oobsize = 0 regions = 0 Cheng Ming Lin <linchengming884@gmail.com> 於 2025年4月7日 週一 下午3:59寫道: > > From: Cheng Ming Lin <chengminglin@mxic.com.tw> > > SFDP of MX25L3255E is JESD216, which does not include the Quad > Enable bit Requirement in BFPT. As a result, during BFPT parsing, > the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. > Therefore, it is necessary to correct this setting by late_init. > > In addition, MX25L3255E also supports 1-4-4 page program in 3-byte > address mode. However, since the 3-byte address 1-4-4 page program > is not defined in SFDP, it needs to be configured in late_init. > > Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> > --- > drivers/mtd/spi-nor/macronix.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c > index 07e0bd0b70a0..4bbd3b651cec 100644 > --- a/drivers/mtd/spi-nor/macronix.c > +++ b/drivers/mtd/spi-nor/macronix.c > @@ -58,6 +58,31 @@ macronix_qpp4b_post_sfdp_fixups(struct spi_nor *nor) > return 0; > } > > +static int > +mx25l3255e_late_init_fixups(struct spi_nor *nor) > +{ > + /* > + * SFDP of MX25L3255E is JESD216, which does not include the Quad > + * Enable bit Requirement in BFPT. As a result, during BFPT parsing, > + * the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. > + * Therefore, it is necessary to correct this setting by late_init. > + */ > + nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; > + > + /* > + * In addition, MX25L3255E also supports 1-4-4 page program in 3-byte > + * address mode. However, since the 3-byte address 1-4-4 page program > + * is not defined in SFDP, it needs to be configured in late_init. > + */ > + struct spi_nor_flash_parameter *params = nor->params; > + > + params->hwcaps.mask |= SNOR_HWCAPS_PP_1_4_4; > + spi_nor_set_pp_settings(¶ms->page_programs[SNOR_CMD_PP_1_4_4], > + SPINOR_OP_PP_1_4_4, SNOR_PROTO_1_4_4); > + > + return 0; > +} > + > static const struct spi_nor_fixups mx25l25635_fixups = { > .post_bfpt = mx25l25635_post_bfpt_fixups, > .post_sfdp = macronix_qpp4b_post_sfdp_fixups, > @@ -67,6 +92,10 @@ static const struct spi_nor_fixups macronix_qpp4b_fixups = { > .post_sfdp = macronix_qpp4b_post_sfdp_fixups, > }; > > +static const struct spi_nor_fixups mx25l3255e_fixups = { > + .late_init = mx25l3255e_late_init_fixups, > +}; > + > static const struct flash_info macronix_nor_parts[] = { > { > .id = SNOR_ID(0xc2, 0x20, 0x10), > @@ -199,6 +228,7 @@ static const struct flash_info macronix_nor_parts[] = { > }, { > /* MX25L3255E */ > .id = SNOR_ID(0xc2, 0x9e, 0x16), > + .fixups = &mx25l3255e_fixups, > }, > /* > * This spares us of adding new flash entries for flashes that can be > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E 2025-04-07 7:54 ` [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E Cheng Ming Lin 2025-04-07 8:25 ` Cheng Ming Lin @ 2025-04-08 14:52 ` Pratyush Yadav 1 sibling, 0 replies; 16+ messages in thread From: Pratyush Yadav @ 2025-04-08 14:52 UTC (permalink / raw) To: Cheng Ming Lin Cc: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On Mon, Apr 07 2025, Cheng Ming Lin wrote: > From: Cheng Ming Lin <chengminglin@mxic.com.tw> > > SFDP of MX25L3255E is JESD216, which does not include the Quad > Enable bit Requirement in BFPT. As a result, during BFPT parsing, > the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. > Therefore, it is necessary to correct this setting by late_init. > > In addition, MX25L3255E also supports 1-4-4 page program in 3-byte > address mode. However, since the 3-byte address 1-4-4 page program > is not defined in SFDP, it needs to be configured in late_init. > > Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw> > --- > drivers/mtd/spi-nor/macronix.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/mtd/spi-nor/macronix.c b/drivers/mtd/spi-nor/macronix.c > index 07e0bd0b70a0..4bbd3b651cec 100644 > --- a/drivers/mtd/spi-nor/macronix.c > +++ b/drivers/mtd/spi-nor/macronix.c > @@ -58,6 +58,31 @@ macronix_qpp4b_post_sfdp_fixups(struct spi_nor *nor) > return 0; > } > > +static int > +mx25l3255e_late_init_fixups(struct spi_nor *nor) > +{ > + /* > + * SFDP of MX25L3255E is JESD216, which does not include the Quad > + * Enable bit Requirement in BFPT. As a result, during BFPT parsing, > + * the quad_enable method is not set to spi_nor_sr1_bit6_quad_enable. > + * Therefore, it is necessary to correct this setting by late_init. > + */ > + nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; > + > + /* > + * In addition, MX25L3255E also supports 1-4-4 page program in 3-byte > + * address mode. However, since the 3-byte address 1-4-4 page program > + * is not defined in SFDP, it needs to be configured in late_init. > + */ > + struct spi_nor_flash_parameter *params = nor->params; Please don't have variable declarations in the middle of the function. It looks odd. Though neither checkpatch nor cc seem to complain about this. I thought they did... Anyway, no need for a new revision, this can be fixed when applying by me or Tudor. Acked-by: Pratyush Yadav <pratyush@kernel.org> > + > + params->hwcaps.mask |= SNOR_HWCAPS_PP_1_4_4; > + spi_nor_set_pp_settings(¶ms->page_programs[SNOR_CMD_PP_1_4_4], > + SPINOR_OP_PP_1_4_4, SNOR_PROTO_1_4_4); > + > + return 0; > +} > + [...] -- Regards, Pratyush Yadav ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info 2025-04-07 7:53 [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Cheng Ming Lin ` (2 preceding siblings ...) 2025-04-07 7:54 ` [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E Cheng Ming Lin @ 2025-05-06 9:36 ` Pratyush Yadav 3 siblings, 0 replies; 16+ messages in thread From: Pratyush Yadav @ 2025-05-06 9:36 UTC (permalink / raw) To: Cheng Ming Lin Cc: tudor.ambarus, pratyush, mwalle, miquel.raynal, richard, vigneshr, linux-mtd, linux-kernel, alvinzhou, leoyu, Cheng Ming Lin On Mon, Apr 07 2025, Cheng Ming Lin wrote: > From: Cheng Ming Lin <chengminglin@mxic.com.tw> > > Organize Macronix flash information to make it more readable. Series applied to spi-nor/next. Thanks! -- Regards, Pratyush Yadav ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2025-06-22 19:09 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-04-07 7:53 [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Cheng Ming Lin 2025-04-07 7:53 ` [PATCH v2 1/3] mtd: spi-nor: macronix: Drop the redundant flash info fields Cheng Ming Lin 2025-06-08 1:04 ` Guenter Roeck 2025-06-08 12:53 ` Pratyush Yadav 2025-06-09 1:13 ` Guenter Roeck 2025-06-10 0:14 ` Guenter Roeck 2025-06-10 6:46 ` Tudor Ambarus 2025-06-10 7:29 ` Cheng Ming Lin 2025-06-10 7:43 ` Guenter Roeck 2025-06-10 7:41 ` Guenter Roeck 2025-06-22 19:09 ` Pratyush Yadav 2025-04-07 7:53 ` [PATCH v2 2/3] mtd: spi-nor: macronix: Remove duplicate flash info entries Cheng Ming Lin 2025-04-07 7:54 ` [PATCH v2 3/3] mtd: spi-nor: macronix: Add fixups for MX25L3255E Cheng Ming Lin 2025-04-07 8:25 ` Cheng Ming Lin 2025-04-08 14:52 ` Pratyush Yadav 2025-05-06 9:36 ` [PATCH v2 0/3] mtd: spi-nor: macronix: Cleanup macronix flash info Pratyush Yadav
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).