spi: dw: Add support for the Canaan K210 SoC SPI
authorDamien Le Moal <damien.lemoal@wdc.com>
Sun, 6 Dec 2020 01:18:17 +0000 (10:18 +0900)
committerMark Brown <broonie@kernel.org>
Wed, 9 Dec 2020 12:14:23 +0000 (12:14 +0000)
commitb0dfd948379c79b8754e224e29b99d30ce0d79b8
tree7b05c3ef22cf6a5edabb20b173ee26a90a53b388
parenta51acc2400d47df0f87e1f011c63266421c594b9
spi: dw: Add support for the Canaan K210 SoC SPI

The Canaan Kendryte K210 RISC-V SoC includes a DW apb_ssi v4 controller
which is documented to have a 32 words deep TX and RX FIFO. The FIFO
length detection in spi_hw_init() correctly detects this value.
However, when the controller RX FIFO is filled up to 32 entries
(RXFLR = 32), an RX FIFO overrun error occurs. This likely due to a
hardware bug which can be avoided by force setting the fifo_len field of
struct dw_spi to 31.

Define the dw_spi_canaan_k210_init() function to force set fifo_len to
31 when the device node compatible string is "canaan,k210-spi".

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Acked-by: Serge Semin <fancer.lancer@gmail.com>
Link: https://lore.kernel.org/r/20201206011817.11700-4-damien.lemoal@wdc.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw-mmio.c