|
@@ -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;
|
|
|
}
|
|
|
|