From: Conor Dooley <conor@kernel.org>
To: Chris Packham <Chris.Packham@alliedtelesis.co.nz>
Cc: "broonie@kernel.org" <broonie@kernel.org>,
"kdasu.kdev@gmail.com" <kdasu.kdev@gmail.com>,
"bcm-kernel-feedback-list@broadcom.com"
<bcm-kernel-feedback-list@broadcom.com>,
"linux-spi@vger.kernel.org" <linux-spi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used
Date: Tue, 31 Mar 2026 03:21:03 +0100 [thread overview]
Message-ID: <20260330-maturing-clamor-0dca2a6a400d@spud> (raw)
In-Reply-To: <1bc86691-dc6b-43ea-958b-6bd7db94777c@alliedtelesis.co.nz>
[-- Attachment #1: Type: text/plain, Size: 3122 bytes --]
On Sun, Mar 29, 2026 at 08:18:22PM +0000, Chris Packham wrote:
> Hi Connor,
>
> On 28/03/2026 07:29, Conor Dooley wrote:
> > On Thu, Nov 07, 2019 at 05:42:35PM +1300, Chris Packham wrote:
> >> Devices with chip selects driven via GPIO are not compatible with the
> >> spi-mem operations. Fallback to using standard spi transfers when the
> >> device is connected with a gpio CS.
> > Bitta necromancy, but why are they not compatible?
> > Couldn't you have just done an if/else in your driver to call
> > gpiod_set_value(spi_get_csgpiod())?
> >
> > For some context, I've been trying to resolve some issues with using
> > the standard transfers code when used with flash devices in the
> > microchip-core-qspi driver, but if I delete this !mem->spi->cs_gpiod
> > check, and add the aforementioned if/else in my driver, the mem ops
> > work fine.
Turns out, I goofed and it doesn't magically solve my problem. I blame
working too late on a Friday evening. But it should work on my platform,
once I get to the bottom of what's breaking it for both cases.
> > What am I missing that makes them incompatible?
>
> The cover letter from this series[1] adds a little context. Basically
> the hardware design I was dealing with is a bit odd. It doesn't wire up
> GPIOs as chip selects directly it uses a GPIO and some extra logic to
> steer the native CS. On the BCM58525 the CS appears to be driven
> automatically (other SoCs that use the bcm-qspi driver appear to be able
> to explicitly control the chip select). This combined with the ability
> to offload the various spi-mem operations means we need the spi core to
> drive the GPIO CS and use the standard spi operations.
>
> I think that check could probably be replaced with some flag that
> amounts to disabling the spi-mem ops when we don't have full control
> over the native CS.
I dunno, that seems likely to cause regressions, no? Devices that didn't
add handing of gpio chip selects in their mem ops code, cos it wasn't
ever called in that case, would regress. Guess could go through and
modify anything with the gpio_descriptors (or w/e it is called) flag,
but opt-in might be safer. I'll think about it when my stuff works...
>
> [1] -
> https://lore.kernel.org/all/20191107044235.4864-1-chris.packham@alliedtelesis.co.nz/
>
> >
> > Cheers,
> > Conor.
> >
> >> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> >> ---
> >> drivers/spi/spi-mem.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c
> >> index 9f0fa9f3116d..e5a46f0eb93b 100644
> >> --- a/drivers/spi/spi-mem.c
> >> +++ b/drivers/spi/spi-mem.c
> >> @@ -286,7 +286,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
> >> if (!spi_mem_internal_supports_op(mem, op))
> >> return -ENOTSUPP;
> >>
> >> - if (ctlr->mem_ops) {
> >> + if (ctlr->mem_ops && !mem->spi->cs_gpiod) {
> >> ret = spi_mem_access_start(mem);
> >> if (ret)
> >> return ret;
> >> --
> >> 2.24.0
> >>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2026-03-31 2:21 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-07 4:42 [PATCH 0/2] spi: more GPIO CS work Chris Packham
2019-11-07 4:42 ` [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors Chris Packham
2019-11-07 13:13 ` Applied "spi: bcm-qspi: Convert to use CS GPIO descriptors" to the spi tree Mark Brown
2019-11-07 4:42 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Chris Packham
2019-11-07 13:13 ` Applied "spi: spi-mem: fallback to using transfers when CS gpios are used" to the spi tree Mark Brown
2026-03-27 18:29 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Conor Dooley
2026-03-29 20:18 ` Chris Packham
2026-03-31 2:21 ` Conor Dooley [this message]
2026-03-31 2:35 ` Chris Packham
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=20260330-maturing-clamor-0dca2a6a400d@spud \
--to=conor@kernel.org \
--cc=Chris.Packham@alliedtelesis.co.nz \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=broonie@kernel.org \
--cc=kdasu.kdev@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
/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