From ebfa18cb3d8b5e6f57ac22e39b21c4fc1c1d3597 Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Thu, 27 Oct 2016 21:16:05 +1300 Subject: spi: kirkwood_spi: implement mvebu_spi_set_mode() Set the appropriate bits in the interface config register based on the SPI_ mode flags. Reviewed-by: Stefan Roese Reviewed-by: Jagan Teki Signed-off-by: Chris Packham --- drivers/spi/kirkwood_spi.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'drivers') diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c index 6851ba942f5..791f3e8099c 100644 --- a/drivers/spi/kirkwood_spi.c +++ b/drivers/spi/kirkwood_spi.c @@ -271,6 +271,21 @@ static int mvebu_spi_set_speed(struct udevice *bus, uint hz) static int mvebu_spi_set_mode(struct udevice *bus, uint mode) { + struct mvebu_spi_platdata *plat = dev_get_platdata(bus); + struct kwspi_registers *reg = plat->spireg; + u32 data = readl(®->cfg); + + data &= ~(KWSPI_CPHA | KWSPI_CPOL | KWSPI_RXLSBF | KWSPI_TXLSBF); + + if (mode & SPI_CPHA) + data |= KWSPI_CPHA; + if (mode & SPI_CPOL) + data |= KWSPI_CPOL; + if (mode & SPI_LSB_FIRST) + data |= (KWSPI_RXLSBF | KWSPI_TXLSBF); + + writel(data, ®->cfg); + return 0; } -- cgit v1.3.1