mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
spi: spi-axi-spi-engine: Add support for MOSI idle configuration
Implement MOSI idle low and MOSI idle high to better support peripherals that request specific MOSI behavior. Acked-by: Nuno Sa <nuno.sa@analog.com> Reviewed-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Marcelo Schmitt <marcelo.schmitt@analog.com> Link: https://patch.msgid.link/f237166c7bbe0a1cdabce243b97484bf2f428143.1720810545.git.marcelo.schmitt@analog.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
927d382c7e
commit
a62073f4b2
@ -41,6 +41,7 @@
|
||||
#define SPI_ENGINE_CONFIG_CPHA BIT(0)
|
||||
#define SPI_ENGINE_CONFIG_CPOL BIT(1)
|
||||
#define SPI_ENGINE_CONFIG_3WIRE BIT(2)
|
||||
#define SPI_ENGINE_CONFIG_SDO_IDLE_HIGH BIT(3)
|
||||
|
||||
#define SPI_ENGINE_INST_TRANSFER 0x0
|
||||
#define SPI_ENGINE_INST_ASSERT 0x1
|
||||
@ -137,6 +138,10 @@ static unsigned int spi_engine_get_config(struct spi_device *spi)
|
||||
config |= SPI_ENGINE_CONFIG_CPHA;
|
||||
if (spi->mode & SPI_3WIRE)
|
||||
config |= SPI_ENGINE_CONFIG_3WIRE;
|
||||
if (spi->mode & SPI_MOSI_IDLE_HIGH)
|
||||
config |= SPI_ENGINE_CONFIG_SDO_IDLE_HIGH;
|
||||
if (spi->mode & SPI_MOSI_IDLE_LOW)
|
||||
config &= ~SPI_ENGINE_CONFIG_SDO_IDLE_HIGH;
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -692,10 +697,14 @@ static int spi_engine_probe(struct platform_device *pdev)
|
||||
host->num_chipselect = 8;
|
||||
|
||||
/* Some features depend of the IP core version. */
|
||||
if (ADI_AXI_PCORE_VER_MAJOR(version) >= 1) {
|
||||
if (ADI_AXI_PCORE_VER_MINOR(version) >= 2) {
|
||||
host->mode_bits |= SPI_CS_HIGH;
|
||||
host->setup = spi_engine_setup;
|
||||
}
|
||||
if (ADI_AXI_PCORE_VER_MINOR(version) >= 3)
|
||||
host->mode_bits |= SPI_MOSI_IDLE_LOW | SPI_MOSI_IDLE_HIGH;
|
||||
}
|
||||
|
||||
if (host->max_speed_hz == 0)
|
||||
return dev_err_probe(&pdev->dev, -EINVAL, "spi_clk rate is 0");
|
||||
|
Loading…
Reference in New Issue
Block a user