Re: [PATCH] mtd: spi-nor: Add support for MX25L12833F and MX25L12845G

From: Cheng Ming Lin

Date: Tue Jun 02 2026 - 02:18:02 EST


Hi Michael,

Michael Walle <mwalle@xxxxxxxxxx> 於 2026年6月1日週一 下午8:57寫道:
>
> On Mon Jun 1, 2026 at 2:56 AM CEST, Cheng Ming Lin wrote:
> > Hi Michael,
> >
> > Michael Walle <mwalle@xxxxxxxxxx> 於 2026年5月28日週四 下午3:52寫道:
> >>
> >> Hi,
> >>
> >> On Thu May 28, 2026 at 9:42 AM CEST, Miquel Raynal wrote:
> >> > Hi Cheng Ming,
> >> >
> >> >>> It looks like you're getting bitten by the ID reuse. You can't just
> >> >>> unconditionally add the quad PP because as far as I can see the
> >> >>> MX25L12805D [1] is just a standard single bit i/o flash and doesn't
> >> >>> support the 4PP.
> >> >>
> >> >> You are absolutely right. Thanks for catching this.
> >> >>
> >> >> The MX25L12805D is indeed a much older product (released around 2009).
> >> >> Since the initial JESD216 SFDP standard wasn't published until 2011,
> >> >> I double-checked with our internal PM and confirmed that the MX25L12805D
> >> >> does not support SFDP at all.
> >> >>
> >> >> Since the newer flashes (MX25L12833F and MX25L12845G) do support SFDP,
> >> >> we could use this as a differentiator to distinguish them from the legacy
> >> >> MX25L12805D.
> >> >>
> >> >> What if we try to read the SFDP signature (RDSFDP) in the fixup hook?
> >> >> If a valid SFDP signature is detected, we can safely identify it as the
> >> >> newer flash and apply the SNOR_HWCAPS_PP_1_4_4 capability. If there is
> >> >> no SFDP signature, we leave it as is for the legacy MX25L12805D.
> >> >>
> >> >> Do you think this approach is feasible and acceptable? If so, I will
> >> >> implement this logic and submit a v2 patch.
> >> >
> >> > The ->post_sfdp() fixup hook is documented as "not called for SPI NORs
> >> > that do not support SFDP". Alternatively, I believe an earlier hook,
> >> > like ->post_bfpt() could also work since it does not seem to run on
> >> > non SFDP compatible flashes.
> >>
> >> Moreover:
> >>
> >> * spi_nor_post_sfdp_fixups() is called after the SFDP tables are parsed.
> >> * It is used to tweak various flash parameters when information provided
> >> * by the SFDP tables are wrong.
> >>
> >> And it looks like that is the case for these flashes. Also, please
> >> provide a comment on the fixup describing that the flash misses that
> >> property. Basically, what you've written in the commit message.
> >
> > I am currently working on the flash part 0xc22018 and I am planning to
> > add its size back to the flash info table. However, I encountered an
> > issue regarding the fixup hooks.
> >
> > Since this specific flash does not support dual, quad, or octal reads,
> > the core logic in spi_nor_init_params_deprecated() determines that SFDP
> > parsing is not needed. Because the SFDP parsing is skipped, the post_bfpt
> > or post_sfdp hooks are never triggered, which prevents us from applying
> > the necessary fixups as we expected.
> >
> > I initially considered asking about the possibility of removing this
> > specific check in spi_nor_init_params_deprecated(), which would allow
> > all SPI-NOR flashes to go through SFDP parsing by default (unless
> > SPI_NOR_SKIP_SFDP is explicitly set).
>
> Oops, I've forgot to add you on CC. Sorry. I've just send a series
> to get rid of that legacy handling. Please give it a try on your
> flashes.

No worries at all! Thanks for the heads-up.

I have tested your series on our Macronix flashes, and everything works
perfectly.

Quick question regarding my own patch series:
should I wait for your series to be applied before sending out my v2,
or is it okay to send it now?

>
> [1] https://lore.kernel.org/linux-mtd/20260601125438.3481722-1-mwalle@xxxxxxxxxx/
>
> -michael
>
> > However, I am aware that forcing SFDP parsing globally on all legacy
> > 1-1-1 flashes might be risky. Flashes predating the JESD216 standard
> > might return garbage data when the SFDP opcode (0x5A) is issued,
> > potentially causing regressions if the garbage data accidentally matches
> > the SFDP signature.
> >
> > If dropping this global check is indeed considered too risky for older
> > hardware, would it be acceptable to use the late_init hook to handle
> > this flash individually? The idea would be to manually check and parse
> > the SFDP table exclusively for 0xc22018 within its own fixup, ensuring
> > that no other legacy 1-1-1 flashes are affected by this change.
> >
> > Any thoughts or guidance on whether this late_init approach is the right
> > way to go would be greatly appreciated.

Thanks,
Cheng Ming Lin