我需要为我的少数控制器编写自己的驱动程序 chipset.I使用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
答案 0 :(得分:3)
第一项业务是查找您的IC驱动程序是否已在Linux内核或第三方中实现。您可能会发现您需要的驱动程序已经实现。尝试询问您的SoC供应商是否可以告诉哪家公司制造了I2C宏单元,因为您正在寻找替代驱动程序。同样,您可能会发现您需要的驱动程序已经存在。
你正在寻找合适的地方。该文件应该进入总线并且应该实现并注册驱动程序接口。您还需要注册平台设备,以便内核像往常一样连接驱动程序 - 设备对。其他SoC有很多例子,如果你没有。我认为您不会发现需要与i2c-core和i2c-dev进行交互。
我会寻找一个小文件大小和最近修改过的驱动程序,如果我必须选择一个作为基线。
SPI将花费与I2C相同的工作量。 USB小工具将会相当多 - 是其他两项任务所需工作量的几倍,具体取决于需要多少实施工作。我不愿意为任何一个任务写一个数字。如果幸运的话,并不是所有的功能都需要(例如,你是否关心低功耗待机?)并且你可能会偷工减料。
答案 1 :(得分:0)
您正在谈论I2C总线(适配器)驱动程序。 这是大大简化的wiev:
您必须定义自己的I2C platform_driver
结构并将其注册为platform_driver
。
在probe()
函数中,驱动程序与I2C设备绑定。
您必须定义自己的I2C设备结构,其中包含i2c_adapter
初始化其成员,以及i2c_algorithm
结构,用于定义挂钩(callbcaks)
static const struct i2c_algorithm xxx_i2c_algo = {
.master_xfer = xxxxx()
然后将i2c_adapter
添加到内核I2C层,以便i2c-core
和i2c-dev
能够使用您的总线驱动程序。
SPI总线设备注册遵循类似的原理。