Sincronizar el código fuente de quince

El archivo de encabezado SPI/SPI.h gt; contiene la documentación del kernel. Como código fuente principal, lea en detalle los capítulos relevantes de la documentación de la API del kernel. Este artículo es sólo una descripción general, sería bueno tener una idea aproximada antes de entrar en detalles.

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.