Предположим, у меня есть микросхема с несколькими вариантами взаимодействия с ней, например, микросхема может иметь интерфейс 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, которые мне не подходят.