Sincronizar el código fuente de quince
Las solicitudes SPI ingresarán a la cola de E/S. Las solicitudes para un dispositivo SPI determinado también se emiten en orden FIFO y las notificaciones asincrónicas se emiten a través del mecanismo de finalización. Esto también es lo mismo que las medidas de sincronización simples: escribir primero, leer después.
Hay dos tipos de controladores SPI:
Controlador controlador... El controlador integrado en el SOC a menudo desempeña el doble papel de maestro y esclavo. Este controlador contacta directamente con los registros de la capa hardware e incluso utiliza DMA. O reproduce bitbanger y solo requiere pines GPIO;
River original... transfiere mensajes entre controlador y esclavo o entre controlador y host a través de otro enlace SPI. El controlador de protocolo se utiliza para analizar los datos leídos por el controlador (como una cadena de códigos 0, 1) en datos de protocolo significativos;
Para el controlador de protocolo, debemos escribir. SPI tiene el subsistema SPI en el kernel de Linux, que se divide en la capa central de SPI, al igual que USBcore, que es la parte del controlador principal, y la otra es la capa de dispositivo SPI. El kernel anterior ya ha sido escrito para nosotros. Para que su dispositivo spi funcione, debe escribir controladores de protocolo utilizando algunas de las funciones exportadas por el controlador spicontroller.
La estructura Struct spi_device encapsula la interfaz del lado del host entre los dos tipos de controladores.
Uno de los núcleos es minimizar la interfaz de programación SPI, enfocándose en usar la tabla de dispositivos proporcionada por el código de inicialización a nivel de placa para conectar el controlador y el controlador de protocolo con la ayuda del modelo de controlador. En el sistema de archivos sysfs, vista SPI:
1 /sys/devices/.../CTLR...El nodo físico del controlador SPI dado
2
3 /sys/devices/.../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. En este punto, el único estado de clase específico es el número de bus (la "B" en "spiB"), por lo que esas entradas en /sys/class son las únicas que identifican el bus.