具有可选的多平台驱动程序接口的Linux设备驱动程序

时间:2018-09-30 16:01:09

标签: linux driver

假设我有一个具有多种接口的芯片,例如,该芯片可能具有I2C接口和SPI接口,我可以选择这些接口之一并相应地为设备接线。我该如何为此类设备编写linux设备驱动程序?

具有这种行为的芯片是ssd1307,该芯片已经在主线linux内核(https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/ssd1307fb.c)中具有驱动程序实现,仅针对其I2C接口实现(该芯片还具有3/4 Wire SPI接口)。正如您在代码中看到的那样,探针功能在很大程度上依赖于它是一个I2C接口这一事实,因此,要使用SPI接口,我需要编写一个全新的驱动程序,重复很多通用代码或插入很多#ifdef,这对我来说似乎不是好方法。

1 个答案:

答案 0 :(得分:0)

对于提供几种接口类型的芯片,标准做法是为其提供核心驱动程序和特定于接口的前端。

可以找到几个示例,例如声音/soc/codecs/:pcm179x.c / pcm179x-i2c.c / pcm179x-spi.c等。

(尚未完成)ssd1307。