Skip to content

Commit b1353d1

Browse files
larsclausenbroonie
authored andcommitted
spi: Add Analog Devices AXI SPI Engine controller support
This patch adds support for the AXI SPI Engine controller which is a FPGA soft-peripheral which is used in some of Analog Devices' reference designs. The AXI SPI Engine controller is part of the SPI Engine framework[1] and allows memory mapped access to the SPI Engine control bus. This allows it to be used as a general purpose software driven SPI controller. The SPI Engine in addition offers some optional advanced acceleration and offloading capabilities, which are not part of this patch though and will be introduced separately. At the core of the SPI Engine framework is a small sort of co-processor that accepts a command stream and turns the commands into low-level SPI transactions. Communication is done through three memory mapped FIFOs in the register map of the AXI SPI Engine peripheral. One FIFO for the command stream and one each for transmit and receive data. The driver translates a spi_message in a command stream and writes it to the peripheral which executes it asynchronously. This allows it to perform very precise timings which are required for some SPI slave devices to achieve maximum performance (e.g. analog-to-digital and digital-to-analog converters). The execution flow is synchronized to the host system by a special synchronize instruction which generates a interrupt. [1] https://wiki.analog.com/resources/fpga/peripherals/spi_engine Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 2ec3b62 commit b1353d1

File tree

3 files changed

+600
-0
lines changed

3 files changed

+600
-0
lines changed

drivers/spi/Kconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ config SPI_AU1550
8383
If you say yes to this option, support will be included for the
8484
PSC SPI controller found on Au1550, Au1200 and Au1300 series.
8585

86+
config SPI_AXI_SPI_ENGINE
87+
tristate "Analog Devices AXI SPI Engine controller"
88+
depends on HAS_IOMEM
89+
help
90+
This enables support for the Analog Devices AXI SPI Engine SPI controller.
91+
It is part of the SPI Engine framework that is used in some Analog Devices
92+
reference designs for FPGAs.
93+
8694
config SPI_BCM2835
8795
tristate "BCM2835 SPI controller"
8896
depends on GPIOLIB

drivers/spi/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ obj-$(CONFIG_SPI_ALTERA) += spi-altera.o
1515
obj-$(CONFIG_SPI_ATMEL) += spi-atmel.o
1616
obj-$(CONFIG_SPI_ATH79) += spi-ath79.o
1717
obj-$(CONFIG_SPI_AU1550) += spi-au1550.o
18+
obj-$(CONFIG_SPI_AXI_SPI_ENGINE) += spi-axi-spi-engine.o
1819
obj-$(CONFIG_SPI_BCM2835) += spi-bcm2835.o
1920
obj-$(CONFIG_SPI_BCM2835AUX) += spi-bcm2835aux.o
2021
obj-$(CONFIG_SPI_BCM53XX) += spi-bcm53xx.o

0 commit comments

Comments
 (0)