Am 2020-03-18 01:15, schrieb Vladimir Oltean:
From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
This series addresses a few issues that were missed during the previous
series "[PATCH 00/12] TCFQ to XSPI migration for NXP DSPI driver", on
SoCs other than LS1021A and LS1043A. DMA mode has been completely
broken
by that series, and XSPI mode never worked on little-endian
controllers.
Then it introduces support for the LS1028A chip, whose compatible has
recently been documented here:
https://lore.kernel.org/linux-devicetree/20200218171418.18297-1-michael@xxxxxxxx/
The device tree for the LS1028A SoC is extended with DMA channels
definition, such that even though the default operating mode is XSPI,
one can simply change DSPI_XSPI_MODE to DSPI_DMA_MODE in the
devtype_data structure of the driver and use that instead.
Compared to earlier v4, the only change is in patch 05/12 to fix a race
condition signaled by Michael Walle here:
https://lkml.org/lkml/2020/3/17/740
I don't expect the "fixes" patches to reach very far down the stable
pipe, since there has been pretty heavy refactoring in this driver.
For testing, benchmarking and debugging, the mikroBUS connector on the
LS1028A-RDB is made available via spidev.
Patches 1-11:
Tested-by: Michael Walle <michael@xxxxxxxx>
Thanks Vladimir for the great work.
-michael
Vladimir Oltean (12):
spi: spi-fsl-dspi: Don't access reserved fields in SPI_MCR
spi: spi-fsl-dspi: Fix little endian access to PUSHR CMD and TXDATA
spi: spi-fsl-dspi: Fix bits-per-word acceleration in DMA mode
spi: spi-fsl-dspi: Avoid reading more data than written in EOQ mode
spi: spi-fsl-dspi: Protect against races on dspi->words_in_flight
spi: spi-fsl-dspi: Replace interruptible wait queue with a simple
completion
spi: spi-fsl-dspi: Avoid NULL pointer in dspi_slave_abort for non-DMA
mode
spi: spi-fsl-dspi: Fix interrupt-less DMA mode taking an XSPI code
path
spi: spi-fsl-dspi: Move invariant configs out of
dspi_transfer_one_message
spi: spi-fsl-dspi: Add support for LS1028A
arm64: dts: ls1028a: Specify the DMA channels for the DSPI
controllers
arm64: dts: ls1028a-rdb: Add a spidev node for the mikroBUS
.../boot/dts/freescale/fsl-ls1028a-rdb.dts | 14 +
.../arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 6 +
drivers/spi/spi-fsl-dspi.c | 324 +++++++++---------
3 files changed, 182 insertions(+), 162 deletions(-)