Я разработал драйвер платформы SPI для одного устройства SPI. Это устройство SPI, которое мы используем, эта конфигурация может быть задана в функции Device Tree.probe() драйвера платформы SPI вызывается, когда совпадение имен происходит с именем в драйвере и то же самое в DT.Как обрабатывать два устройства SPI в ядре linux с одним драйвером платформы SPI?
В модуле mod_init() платформы платформы SPI мы регистрируем структуру устройства SPI (struct spi_driver spidev_spi_driver) с вызовом функции: spi_register_driver().
См., Например, ссылку (статическая структура spi_driver spidev_spi_driver) в приведенной ниже ссылке. Ссылка: http://lxr.free-electrons.com/source/drivers/spi/spidev.c#L664
Здесь Probe() является одним из важных методов, зарегистрированных в этом вызове. Когда функция зонда вызывается, ядро передает указатель на устройство SPI (например, struct spi_device * spi) в функции probe(), которое далее используется в операции чтения и записи с устройством SPI. Все описанные выше процедуры выполняются только один раз для одного устройства SPI.
Теперь у меня есть запрос, что если я хочу использовать более одного устройства SPI, присутствующих в моем микроконтроллере, например. imx6, то как я буду справляться с этой ситуацией? Как я могу получить указатели устройств SPI в этом случае? Будет ли функция зонда вызываться дважды (bcoz здесь только я получаю указатели устройств SPI от ядра)? ли мне нужно создать записи таких, как это сделано в spidev_dt_ids: http://lxr.free-electrons.com/source/drivers/spi/spidev.c#L657