Драйвер ядра Linux - SPI, как определяется устройство SPI?

Я читал о SPI и о том, как создавать драйверы ядра, но я все еще не уверен, как все это работает.

Например:

 static struct spi_driver ds1305_driver = {
         .driver.name    = "rtc-ds1343",
         .driver.owner   = THIS_MODULE,
         .probe          = ds1343_probe,
         .remove         = __devexit_p(ds1343_remove),
         /* REVISIT add suspend/resume */
 };

Если я правильно понимаю, вам следует добавить spi_board_info в файл платы (старые системы) или в дерево устройств, что затем позволит SPI узнать, как взаимодействовать с реальным устройством.

Глядя на другие реализации, кажется, что это действительно просто позволяет ядру знать, какой чип выбрать, скорость передачи данных и т. Д. Базовая информация SPI.

Вопросов:

Затем, когда система загружается, драйвер ядра отправит часы на устройство и прочитает имя устройства?

Стандартизировано ли это, что все устройства имеют свои имена, написанные в каком-то месте, или я просто ошибаюсь в этом?

Ответственен ли общий драйвер SPI за поиск этой информации на устройстве (в моем случае mxc_spi-0)?

Наконец, если он считывает имя устройства, прокручивает ли он доступные драйверы и сопоставляет их с этим spi_driver.driver.name?

Я действительно не понимаю в деталях.

Спасибо!


person user2654735    schedule 19.08.2015    source источник


Ответы (1)


SPI не предоставляет и не содержит идентификационной информации. Интегратор, дистрибьютор или пользователь должны указать, какие устройства SPI подключаются с помощью какой шины и / или механизма выбора ведомого устройства.

person Ignacio Vazquez-Abrams    schedule 19.08.2015