什么可以从Linux i2c-dev驱动程序中删除,作为仅适用于一个设备的新驱动程序的基础?

时间:2014-12-19 18:59:52

标签: linux linux-device-driver i2c

我正在尝试为恰好通过I2C进行通信的设备编写Linux字符设备驱动程序。该器件是Atmel微控制器,其代码提供I2C地址。它已经可以在Linux端使用典型的i2c-dev方法。

所以现在我想复制i2c-dev作为一个专门用于这个特定设备的新驱动程序,这样我就可以在顶部添加一些我自己的设备特定的抽象代码。但我想从i2c-dev中删除目前使其成为通用的所有不必要的代码。在这种情况下可以删除什么?

1 个答案:

答案 0 :(得分:1)

  

在这种情况下可以删除什么?

你实际上是在问一个XY问题 您可以更好地查看和调整已经在所需功能上类似的现有I2C设备驱动程序,而不是为用户空间访问攻击特殊案例驱动程序。

  

所以现在我想将i2c-dev复制为专门用于此特定设备的新驱动程序,以便我可以在顶部添加一些我自己的设备特定抽象代码

那么你实际上需要编写一个“客户端驱动程序”,如下所述(来自Linux Documentation / i2c / summary):

When we talk about I2C, we use the following terms:
   Bus    -> Algorithm
             Adapter
   Device -> Driver
             Client

 An Algorithm driver contains general code that can be used for a whole class
 of I2C adapters. Each specific adapter driver either depends on one algorithm
 driver, or includes its own implementation.

 A Driver driver (yes, this sounds ridiculous, sorry) contains the general
 code to access some type of device. Each detected device gets its own
 data in the Client structure. Usually, Driver and Client are more closely
 integrated than Algorithm and Adapter.

详情见Documentation/i2c/writing-clients 要查找具有类似功能的驱动程序,请扫描I2C client drivers列表。请注意,这些I2C驱动程序根据其功能(例如drivers/rtc/drivers/hwmon/)而不是其接口(即I2C)位于Linux源代码树中。