spi: pxa2xx: Pass the SSP type via device property
authorMark Brown <broonie@kernel.org>
Mon, 24 Oct 2022 14:12:28 +0000 (15:12 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 24 Oct 2022 14:12:28 +0000 (15:12 +0100)
commit55201afd6e8ad6b5e349bff32331806e17c5d57e
tree472d78de11e0115f5b5886088039374b854d1490
parent6d0cebbdf29922eaba4648a7a06d0d4ffd00439f
parent0e1f0b1ca79fdcc03c3e6b4277a994ca894c9fcc
spi: pxa2xx: Pass the SSP type via device property

Merge series from Andy Shevchenko <andriy.shevchenko@linux.intel.com>:

Currently the SPI PXA2xx devices on Intel platforms can be instantiated
via the following paths:
 1) as ACPI LPSS device on Haswell, Bay Trail and Cherry Trail;
 2) as ACPI LPSS device on the Sky Lake and newer;
 3) as PCI LPSS device on Haswell, Bay Trail and Cherry Trail;
 4) as PCI LPSS device on the Sky Lake and newer;
 5) as PCI device via ID table.

Each of these cases provides some platform related data differently,
i.e.:
 1) via drivers/acpi/acpi_lpss.c and drivers/spi/spi-pxa2xx.c
 2) via drivers/mfd/intel-lpss-acpi.c
 3) via drivers/spi/spi-pxa2xx-pci.c
 4) via drivers/mfd/intel-lpss-pci.c and drivers/spi/spi-pxa2xx.c
 5) via drivers/spi/spi-pxa2xx-pci.c

This approach has two downsides:

a) there is no data propagated in the case #2 because we can't have
   two or more drivers to match the same ACPI ID and hence some cases
   are still not supported (Sky Lake and newer ACPI enabled LPSS);

b) the data is duplicated over two drivers in the cases #1 & #4 and,
   besides to be a bloatware, it is error prone (e.g. Lakefield has
   a wrong data right now due to missed PCI entry in the spi-pxa2xx.c).

This series fixes the downsides, and enables previously unsupported
cases.