Re: [PATCH RFC 1/3] spi: Allow SPI controller override device buswidth

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

On 28.02.2020 18:18, John Garry wrote:

Currently ACPI firmware description for a SPI device does not have any
method to describe the data buswidth on the board.

So even through the controller and device may support higher modes than
          ^^^^^^^
   Though?

standard SPI, it cannot be assumed that the board does - as such, that
device is limited to standard SPI in such a circumstance.

As a workaround, allow the controller driver supply buswidth override bits,
which are used inform the core code that the controller driver knows the
buswidth supported on that board for that device.

A host controller driver might know this info from DMI tables, for example.

Signed-off-by: John Garry <john.garry@xxxxxxxxxx>
---
  drivers/spi/spi.c       | 4 +++-
  include/linux/spi/spi.h | 3 +++
  2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 38b4c78df506..292f26807b41 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -510,6 +510,7 @@ struct spi_device *spi_alloc_device(struct spi_controller *ctlr)
  	spi->dev.bus = &spi_bus_type;
  	spi->dev.release = spidev_release;
  	spi->cs_gpio = -ENOENT;
+	spi->mode = ctlr->buswidth_override_bits;
spin_lock_init(&spi->statistics.lock); @@ -2181,9 +2182,10 @@ static acpi_status acpi_register_spi_device(struct spi_controller *ctlr,
  		return AE_NO_MEMORY;
  	}
+

   What for?

  	ACPI_COMPANION_SET(&spi->dev, adev);
  	spi->max_speed_hz	= lookup.max_speed_hz;
-	spi->mode		= lookup.mode;
+	spi->mode		|= lookup.mode;
  	spi->irq		= lookup.irq;
  	spi->bits_per_word	= lookup.bits_per_word;
  	spi->chip_select	= lookup.chip_select;
[...]

MBR, Sergei



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux