Código fuente asincrónico de quince
La solicitud SPI ingresa a la cola de E/S. Las solicitudes para un dispositivo SPI determinado se emiten en orden FIFO y las notificaciones asincrónicas se emiten a través del mecanismo de finalización. Igual que la sincronización simple: escribe primero, lee después.
Dos tipos de controladores SPI:
El controlador del controlador... es un conjunto de controladores SOC que desempeñan el doble papel de maestro y esclavo. Los controladores de clase se comunican directamente con los registros de la capa de hardware, incluso utilizando DMA. O juegan bitbanger y solo necesitan pines GPIO.
Río original... El controlador envía un mensaje desde el esclavo o el maestro de otro enlace SPI del controlador. El controlador del controlador de protocolo lee datos, apila códigos 0,1 y analiza datos de protocolo significativos;
En el controlador de protocolo, quiero escribir la capa central spi del sistema spi del kernel de spilinux, similar al dispositivo de control principal USBcore parte, y también hay una capa de dispositivo spi. El núcleo anterior nos ayuda a escribirlo para que el dispositivo spi pueda funcionar, y los controladores de protocolo se escriben con la ayuda del controlador spicontroller.
La estructura Struct spi_device encapsula la interfaz del lado del host entre los dos tipos de controladores.
El núcleo de la interfaz de programación SPI proporciona principalmente código de inicialización a nivel de placa para la tabla de dispositivos y le conecta el protocolo del controlador. Modelo de controlador con la ayuda del sistema de archivos sysfs. Vista SPI:
1 /sys/devices/.../CTLR...El nodo físico del controlador SPI dado
2
3 /sys /dispositivos/.../CTLR/spiB. C...spi_device en el bus "B",
4 chip selecciona C, se accede a través de CTLR.
Cinco
6 /sys/bus/spi/devices/spiB. C...Enlace Simbólico Físico
Siete.../CTLR/spiB. cDispositivos
ocho
9/System/Devices/.../CTLR/spiB. C/modalias... identificando el controlador
Este dispositivo debe usar 10 (para hotplug/coldplug)
11
12/system /bus/spi/drivers /D... Uno o más controladores spi*. *Device
13
14/sys/class/SPI_master/spiB... enlace simbólico (o nodo de dispositivo real) a
15 un nodo lógico, Se pueden guardar
16 controladores del bus de gestión "B". Todo spiB. *Los dispositivos comparten un
17 segmentos de bus SPI físicos con SCLK, MOSI y MISO.
Cabe señalar que la ubicación real del estado de la clase del controlador depende de si activa el indicador CONFIG_SYSFS_DEPRECATED. Solo el número de bus de estado de clase específico (la "B" en "spiB"), todas las entradas /sys/class solo identifican la bandera del bus.