Драйвер устройства Linux с дополнительными интерфейсами драйверов нескольких платформ - PullRequest
0 голосов
/ 30 сентября 2018

Предположим, у меня есть микросхема с несколькими вариантами взаимодействия с ней, например, микросхема может иметь интерфейс I2C и интерфейс SPI, и я могу выбрать один из этих интерфейсов и подключить устройство соответствующим образом.Как бы я написал драйвер устройства Linux для такого устройства?

Микросхема с таким поведением - ssd1307, которая уже имеет реализацию драйвера в основном ядре Linux (https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/ssd1307fb.c), реализована только для его интерфейса I2C).(Микросхема также имеет интерфейс 3/4 Wire SPI.) Как видно из кода, функция зонда в значительной степени зависит от того, что это интерфейс I2C, поэтому для использования интерфейса SPI мне нужно написатьсовершенно новый драйвер, повторяющий много общего кода или вставляющий много #ifdefs, которые мне не подходят.

1 Ответ

0 голосов
/ 07 октября 2018

Для микросхем, обеспечивающих несколько типов интерфейсов, стандартная практика заключается в предоставлении для него драйвера ядра и интерфейсных интерфейсов.

Несколько примеров можно найти, например, в sound / soc / codecs /: pcm179x.c / pcm179x-i2c.c / pcm179x-spi.c и другие.

Это еще не сделано для ssd1307.

...