【问题标题】:Linux device driver with optional multiple platform driver interfaces具有可选多平台驱动程序接口的 Linux 设备驱动程序
【发布时间】: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,这对我来说似乎不是好方法。

【问题讨论】:

    标签: linux driver


    【解决方案1】:

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

    可以找到几个例子,例如在 sound/soc/codecs/: pcm179x.c / pcm179x-i2c.c / pcm179x-spi.c 等。

    对于 ssd1307,这(还没有?)完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2013-07-08
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多