[PATCH] mtd: spi-nor: core: Introduce spi_nor_abort_octal_dtr()

liao jaime jaimeliao.tw at gmail.com
Tue Dec 12 18:37:33 PST 2023


Hi Michael


>
> Hi,
>
> >> > Some flashes contains 8D_8D_8D information in SFDP but did not enter
> >> > octal DTR mode if conditions are not satisfied.
> >>
> >> What exactly are these conditions? Rather than "abort" the octal mode,
> >> the flash shouldn't have that capability in the first place.
> > "Abort" is not a good word.
> > Is it better for using "discard"?
> > 3 conditions should be satisfied before enable octal dtr mode.
> > 1. function hook in nor->params->set_octal_dtr
> > 2. nor->read_proto and nor->write_proto are SNOR_PROTO_8_8_8_DTR
> > 3. nor->flags & SNOR_F_IO_MODE_EN_VOLATILE
> > Flash driver still bring 8D_8D_8D protocol instructions in 1s-1s-1s
> > mode if
> > conditions are not satisfied.
> > In a case, flash ID didn't include in vendor's ID table.
> > It will be "spi-nor-generic".
> > 8D-8D-8D information could be parsed in SFDP but
> > nor->params->set_octal_dtr
> > didn't hook vendor specific function for enabling octal dtr mode.
> > So that it still bring 8D protocol in 1s-1s-1s mode and have no chance
> > to select 1-1-8 protocol.
> > I think it may better to re-select a suitable protocol for this case.
>
> Just that we are on the same page. You are using the spi-nor-generic
> driver, but that driver will elect the 8d8d8d protocol but that won't
> work, because we don't have a .set_octal_dtr. Therefore, the fallback
> is 1s1s1s. Correct?
Yes.
Based on my understanding, typically, flash that support the 1-1-8 feature
also tends to support 8D-8D-8D feature.
However, in the case of spi-nor-generic, we don't have a .set_octal_dtr.
Therefore, I believe that if octal DTR mode cannot be enabled due to
this, it might be necessary to reconsider and choose a suitable feature.

>
> To me it seems, that spi_nor_select_{read,pp,erase}() will select
> the wrong commands/proto. So it should be fixed there. Probably
> shared_mask is wrong.
Features in shared_mask have include 2 parts as below.
1. Flash support the feature (by parse SFDP or ID table flags)
2. spi host controller support the feature (In spi_nor_spimem_adjust_hwcaps)

But I think Octal DTR is a special case because, in addition to the 2 points
mentioned above, there are also other conditions that need to be met.
My goal is to enable Octal DTR mode for Octal flashes listed in ID table.
For those not in ID table, choosing spi_nor_generic should allow selecting
either 1-1-8 protocol or, at the very least, 1-1-1 protocol.

>
> -michael

Thanks
Jaime



More information about the linux-mtd mailing list