假设我有一个具有多个接口选项的芯片,例如,该芯片可能有一个I2C接口和一个SPI接口,我可以选择其中一个接口并相应地连接设备。我将如何为这样的设备编写linux设备驱动程序?
具有这种行为的芯片是ssd1307,它已经在主线linux内核(https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/ssd1307fb.c)中实现了驱动程序,它只为其I2C接口实现(该芯片还具有3/4 Wire接口)。正如您在代码中所看到的,探测函数在很大程度上依赖于它是一个I2C接口,因此为了使用SPI接口,我需要编写一个全新的驱动程序,重复许多常见的代码,或者插入许多#ifdefs,这对我来说似乎不是很好的方法。
发布于 2018-10-07 20:55:06
对于提供多种接口类型的芯片,标准实践是为其提供核心驱动程序和接口特定的前端。
有几个例子,例如声音/soc/codecs/: pcm179x.c / pcm179x-i2c.c / pcm179x-spi.c等。
这还不是(现在?)为ssd1307做的。
https://stackoverflow.com/questions/52579617
复制相似问题