SPI client Driver
SPI Core Driver
ECSPI Controller Driver
ECSPI Controller
SPI Slave
(SPI-NOR Flash)
Client Driver Interface
Controller Driver Interace
FSL ECSPI driver
(spi_imx.c)
SPI Bus Interface
Electrical Interface
SPI slave driver
SPI core driver
ECSPI host
controller driver
SPI slave device
Figure 25-2. Layering of SPI Drivers in SPI Subsystem
25.2.2 Software Limitations
The ECSPI driver limitations are as follows:
• Does not currently have SPI slave logic implementation
• Does not support a single client connected to multiple masters
• Does not currently implement the user space interface with the help of the device
node entry but supports sysfs interface
25.2.3 Standard Operations
The ECSPI driver is responsible for implementing standard entry points for init, exit, chip
select, and transfer. The driver implements the following functions:
• Init function spi_imx_init() registers the device_driver structure.
• Probe function spi_imx_probe() performs initialization and registration of the SPI
device specific structure with SPI core driver. The driver probes for memory and
IRQ resources. Configures the IOMUX to enable ECSPI I/O pins, requests for IRQ
and resets the hardware.
• Chip select function spi_imx_chipselect() configures the hardware ECSPI for the
current SPI device. Sets the word size, transfer mode, data rate for this device.
• SPI transfer function spi_imx_transfer() handles data transfers operations.
• SPI setup function spi_imx_setup() initializes the current SPI device.
• SPI driver ISR spi_imx_isr() is called when the data transfer operation is completed
and an interrupt is generated.
Chapter 25 Enhanced Configurable Serial Peripheral Interface (ECSPI) Driver
i.MX 6SoloLite Linux Reference Manual, Rev. L3.0.35_4.1.0, 09/2013
Freescale Semiconductor, Inc.
157