From: "Michael Walle" <mwalle@kernel.org>
To: "Nuno Sá" <nuno.sa@analog.com>
Cc: <linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>,
"Pratyush Yadav" <pratyush@kernel.org>,
"Takahiro Kuwano" <takahiro.kuwano@infineon.com>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>
Subject: Re: [PATCH v2 2/2] mtd: spi-nor: issi: Add support for is25wx01g
Date: Wed, 16 Sep 2026 09:14:52 +0200 [thread overview]
Message-ID: <DLGK0FH8L7PM.1JRX5777NZQQF@kernel.org> (raw)
In-Reply-To: <aqgRsP3cxzcLok5C@nsa>
Hi,
On Mon Sep 14, 2026 at 5:31 PM CEST, Nuno Sá wrote:
> On Mon, Sep 14, 2026 at 04:04:40PM +0200, Michael Walle wrote:
>> On Mon Sep 14, 2026 at 3:42 PM CEST, Nuno Sá wrote:
>> > (*): I should note that the command actually failed with -EIO but it
>> > actually unlocked the chip! And the reason is because the flash as the same
>> > FSR register than the micron-st flash. So WEL is set to 1 but can only
>> > be cleared when clearing the FSR register.
>>
>> Why doesn't this affect only the locking operation? WEL polling is
>> used also during write and erase.
Sorry I meant WIP.
> Not sure if I fully understand. But AFAICT, the reason why erase and
> write is silent is because the default spi_nor_sr_ready() only looks at
> SR_WIP [1]:
So usually, the WEL is cleared automatically by whatever needs the
WEL in the first place, i.e. program or erase, write (status)
register. That should also be the case for this flash.
Now for this flash (as well as the st/micron ones), there is one
peculiarity. Whenever there is an error bit set in the FSR, the WEL
cannot be cleared by a write disable command. Which we shouldn't
need anyway because it should be cleared automatically if nothing
goes wrong.
Also the write status register won't set the error bits if i read
the datasheet correctly and it will always disable the WEL, see
Table 29 ("WRITE REGISTER Operations") in the MT35XU512ABA datasheet
and Table 8,8 ("WRITE REGISTER Operstaions") in the IS25WX01G
datasheet.
> OTOH, on the unlock path we do spi_nor_write_sr1_and_sr2_and_check() and
> give no special handling to WEL so I imagine that we try to set it as 0
> but read it as 1 (given that it clears only with FSR) and hence I got
> the -EIO in [2].
We do a RMW, so my guess is that it's the other way around. We read
it as 1, but then after writing the SR, it's 0 (see above). That
actually assumes, that if the WEL and any error bit in the FSR is
set, a write status register will clear the WEL anyways. Could you
debug that so we are sure, this is what actually happens?
But the question is who is setting the error bit in the first place.
And I guess it's the testing sequence for the locking when you try
to write to a locked range. So you could also actually test the
locking/unlocking without writing any data to the flash just to see
if that is the case.
>> > AFAICT, we should do something similar as micron so the writing to an
>> > actual protected region fails rather than being silently discarded with
>> > that status bit set. The question would be how to do it? The code is
>> > pretty much identical to [1]. The masks, the opcoded... So should we
>> > somehow handle this in the core (by having some common helper) that
>> > could be set in .late_init() under a common MFR_FSR flag? Or just keep
>> > both implementations separate for now?
>>
>> I'd like to keep that out of the core.c, but also like to avoid any
>> code duplication esp. because there is already handling for the
>> intel spi controller in there. So maybe move it it into a new
>> common.c.
>
> Also don't like the dup tbh. Could that be a follow up or should it be
> v3. From the top of my head I could think on a mfr_common.c kind of thing.
> Don't thing this FSR register is standard?
Not really.
But (at least) parts of the datasheets are actually copied verbatim
between micron and issi, I wonder if we shouldn't just put the ISSI
part in micron-st.c. (Yes vendor will be wrong, but I plan on
deprecating that sysfs property anyway).
-michael
next prev parent reply other threads:[~2026-09-16 7:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-14 13:42 [PATCH v2 0/2] mtd: spi-nor: issi: add support for the IS25WX01G octal flash Nuno Sá
2026-09-14 13:42 ` [PATCH v2 1/2] mtd: spi-nor: sfdp: get the 1-1-8 and 1-8-8 page programs from 4BAIT Nuno Sá
2026-09-14 13:42 ` [PATCH v2 2/2] mtd: spi-nor: issi: Add support for is25wx01g Nuno Sá
2026-09-14 14:04 ` Michael Walle
2026-09-14 15:31 ` Nuno Sá
2026-09-16 7:14 ` Michael Walle [this message]
2026-09-16 8:44 ` Nuno Sá
2026-09-14 14:18 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DLGK0FH8L7PM.1JRX5777NZQQF@kernel.org \
--to=mwalle@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=miquel.raynal@bootlin.com \
--cc=nuno.sa@analog.com \
--cc=pratyush@kernel.org \
--cc=richard@nod.at \
--cc=takahiro.kuwano@infineon.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®