[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <YgpOzw2rq+vAIPBU@sirena.org.uk>
Date: Mon, 14 Feb 2022 12:45:03 +0000
From: Mark Brown <broonie@...nel.org>
To: Yun Zhou <yun.zhou@...driver.com>
Cc: "linux-spi@...r.kernel.org" <linux-spi@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"Xue, Ying" <Ying.Xue@...driver.com>
Subject: Re: 回复: [PATCH] spi: disable
chipselect after complete transfer
On Mon, Feb 14, 2022 at 08:35:33PM +0800, Yun Zhou wrote:
Please don't top post, reply in line with needed context. This allows
readers to readily follow the flow of conversation and understand what
you are talking about and also helps ensure that everything in the
discussion is being addressed.
> The focus of our differences is what the role of cs_change is.
> I think the direct effect of cs_change is to change CS to inactive.
During a message. At the end of the message it does the opposite.
> I also investigated the role of cs_change in several drivers, the result is
> similar, e.g. spi-mpc52xx-psc.c, spi-fsl-spi.c, spi-bcm63xx.c,
> spi-mpc52xx.c, etc.
Individual drivers may not respect chip select at all, never mind in
this specific way - in general any driver actively managing chip select
is going to be unable to implement the full semnatics of cs_change,
possibly even most of the semantics of cs_change, due to hardware
limiations. If a driver has full control over chip select it'll
normally be able to implement a set_cs() operation and just use the core
handling.
> To sum up, there is no indication and no requirement that when cs_change is
> true, we need to keep chipselect active.
>
> I hope you can seriously consider my analysis. If what I said is wrong,
> please
> correct it.
* All SPI transfers start with the relevant chipselect active. Normally
* it stays selected until after the last transfer in a message. Drivers
* can affect the chipselect signal using cs_change.
*
* (i) If the transfer isn't the last one in the message, this flag is
* used to make the chipselect briefly go inactive in the middle of the
* message. Toggling chipselect in this way may be needed to terminate
* a chip command, letting a single spi_message perform all of group of
* chip transactions together.
*
* (ii) When the transfer is the last one in the message, the chip may
* stay selected until the next transfer. On multi-device SPI busses
* with nothing blocking messages going to other devices, this is just
* a performance hint; starting a message to another device deselects
* this one. But in other cases, this can be used to ensure correctness.
* Some devices need protocol transactions to be built from a series of
* spi_message submissions, where the content of one message is determined
* by the results of previous messages and where the whole transaction
* ends when the chipselect goes intactive.
especially (ii).
Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)
Powered by blists - more mailing lists