2

我需要为我的芯片组中的几个控制器编写自己的驱动程序。我使用 SDK 开发 SoC,它不提供“linux i2c 兼容”驱动程序。它有用于 i2c 的简单字符驱动程序。我想使用一些标准的 i2c RTC 驱动程序。

  • 我假设我需要将文件添加到 /busses 文件夹,并实现标准接口。就这样。这个文件应该与 i2c-core 和 i2c-dev 合作?

  • 哪个驱动程序将是最好的基础?我有大约 9 个 32 位寄存器可以使用。乍一看 i2c-ibm_iic.c 对我来说似乎很友好。

I2C 是此 SoC 的 SPI 和 USB 小工具驱动程序之前的预热。你知道这些任务的原始人/小时估计吗?

我将不胜感激任何提示。

BR Bartlomiej Grzeskowiak

4

2 回答 2

3

首要任务是确定您的 IC 驱动程序是否已经在 Linux 内核中或由第三方实现。您可能会发现您需要的驱动程序已经实现。尝试询问您的 SoC 供应商,他们是否可以确定 I2C 宏单元是哪家公司制造的,因为您正在寻找替代驱动程序。同样,您可能会发现您需要的驱动程序已经存在。

你找对地方了。该文件应该进入总线并且应该实现和注册驱动程序接口。您还需要注册一个平台设备,以便内核像往常一样连接驱动程序-设备对。如果您的 SoC 没有,其他 SoC 有很多这样的例子。我不认为你会发现你需要与 i2c-core 和 i2c-dev 交互。

如果我必须选择一个作为基准,我会寻找一个小文件大小和最近修改的驱动程序。

SPI 将花费与 I2C 大致相同的工作量。USB 小工具将要多得多——其他两项任务所需的工作量是其他两项任务的几倍,具体取决于需要多少实施工作。我不愿意为任何一项任务加上一个数字。如果幸运的话,并非所有功能都需要(例如,您是否关心低功耗待机?)并且您可以偷工减料。

于 2011-07-27T23:35:20.723 回答
0

您在谈论 I2C 总线(适配器)驱动程序。这是大大简化的wiev:

您必须定义自己的 I2Cplatform_driver结构并将其注册为platform_driver. probe()驱动程序在功能上与 I2C 设备绑定。

您必须定义您的 I2C 设备结构,其中包含i2c_adapter初始化它的成员和i2c_algorithm定义挂钩的结构(callbcaks)

static const struct i2c_algorithm xxx_i2c_algo = { .master_xfer = xxxxx()

然后添加到内核 I2C层i2c_adapter以便能够使用您的总线驱动程序。i2c-corei2c-dev

SPI 总线设备注册遵循类似的理念。

于 2018-12-10T12:28:24.400 回答