Re: [PATCH RFC 0/5] *** SPI Slave mode support ***

From: Jiada Wang
Date: Thu Apr 27 2017 - 02:43:44 EST


Hello Geert and Mark

On 04/25/2017 03:31 AM, Mark Brown wrote:
On Mon, Apr 24, 2017 at 12:55:21PM +0200, Geert Uytterhoeven wrote:
On Fri, Apr 14, 2017 at 7:39 AM, Jiada Wang<jiada_wang@xxxxxxxxxx> wrote:
Our use case is to use spidev as an interface to communicate with external
SPI master devices.
meanwhile the SPI bus controller can also act as master device to send data
to other
SPI slave devices on the board.
That sounds a bit hackish to me. SPI was never meant to be a multi-master bus.
While it can be done, you will need external synchronization (signals) to
avoid conflicts between the SPI masters.
I found in your implementation, SPI bus controller is limited to either work
in master mode or
slave mode, is there any reasoning to not configure SPI mode based on SPI
devices use case?
If you really need both master and slave support, you can use 2 subnodes
in DT, the first representing the master, the second the slave.
Mark, what's your opinion about this?
That sounds like a mess... we *could* put the slave flag on the device
rather than the controller I guess but there's also going to need to be
something representing whatever avoids collisions on the bus somewhere.
The reason I gave the example use case is want to point out that
with Geert's patch set, a SPI device (with only one controller) can no longer
act as master and slave at the same time. because IMO as a SPI core function,
it needs to cover all the use cases, and to be as generic as possible.

BUT if you think the use case don't need to be supported from SPI core,
then I don't have objection either, I will only submit imx SPI slave support patch,
after your SPI slave support patch set been applied


Thanks,
Jiada