diff options
author | Talel Shenhar <talel@amazon.com> | 2018-10-11 07:20:07 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-10-11 10:11:04 -0400 |
commit | f2d704794864a4bb486f2a0eaed40f25dd87303f (patch) | |
tree | 9b0b39d17cd6cec53a7e3196b025a2668cf1abe7 /drivers/spi/spi-dw.c | |
parent | d49a30366793210cd64759edcdf7099a2e32efd6 (diff) |
dw: spi: add support for Amazon's Alpine spi controller
Add support for a new devicetree compatible string called
'amazon,alpine-apb-ssi', which is necessary for the Amazon Alpine spi
controller. 'amazon,alpine-dw-apb-ssi' is used in the dw spi driver if
specified in the devicetree. Otherwise, fall back to driver default
behavior, i.e. original dw IP hw driver behavior.
Signed-off-by: Talel Shenhar <talel@amazon.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-dw.c')
-rw-r--r-- | drivers/spi/spi-dw.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index 3e205ab60cd4..b705f2bdb8b9 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c | |||
@@ -144,6 +144,8 @@ void dw_spi_set_cs(struct spi_device *spi, bool enable) | |||
144 | 144 | ||
145 | if (!enable) | 145 | if (!enable) |
146 | dw_writel(dws, DW_SPI_SER, BIT(spi->chip_select)); | 146 | dw_writel(dws, DW_SPI_SER, BIT(spi->chip_select)); |
147 | else if (dws->cs_override) | ||
148 | dw_writel(dws, DW_SPI_SER, 0); | ||
147 | } | 149 | } |
148 | EXPORT_SYMBOL_GPL(dw_spi_set_cs); | 150 | EXPORT_SYMBOL_GPL(dw_spi_set_cs); |
149 | 151 | ||
@@ -463,6 +465,10 @@ static void spi_hw_init(struct device *dev, struct dw_spi *dws) | |||
463 | dws->fifo_len = (fifo == 1) ? 0 : fifo; | 465 | dws->fifo_len = (fifo == 1) ? 0 : fifo; |
464 | dev_dbg(dev, "Detected FIFO size: %u bytes\n", dws->fifo_len); | 466 | dev_dbg(dev, "Detected FIFO size: %u bytes\n", dws->fifo_len); |
465 | } | 467 | } |
468 | |||
469 | /* enable HW fixup for explicit CS deselect for Amazon's alpine chip */ | ||
470 | if (dws->cs_override) | ||
471 | dw_writel(dws, DW_SPI_CS_OVERRIDE, 0xF); | ||
466 | } | 472 | } |
467 | 473 | ||
468 | int dw_spi_add_host(struct device *dev, struct dw_spi *dws) | 474 | int dw_spi_add_host(struct device *dev, struct dw_spi *dws) |