【发布时间】:2018-09-30 16:01:08
【问题描述】:
假设我有一个芯片,它有多种接口可供选择,例如,该芯片可能有一个 I2C 接口和一个 SPI 接口,我可以选择其中一个接口并相应地连接设备。如何为此类设备编写 linux 设备驱动程序?
具有这种行为的芯片是 ssd1307,它已经在主线 linux 内核 (https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/ssd1307fb.c) 中实现了驱动程序,仅针对其 I2C 接口实现(该芯片还具有 3/4 线 SPI 接口)。正如你在代码中看到的那样,探测函数在很大程度上依赖于它是一个 I2C 接口这一事实,所以为了使用 SPI 接口,我需要编写一个全新的驱动程序,重复很多通用代码,或者插入很多#ifdefs,这对我来说似乎不是好方法。
【问题讨论】: