首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux I2C内核驱动程序

Linux I2C内核驱动程序
EN

Stack Overflow用户
提问于 2017-06-06 15:44:56
回答 0查看 697关注 0票数 1

我需要创建一个Linux内核驱动程序,通过接口板在I2C上与一堆单片机连接。因为它们的数量会很多,即大约1-18个,所以我们使用恩智浦/ TI I2C多路复用器。

我已导入恩智浦/ TI I2C多路复用器内核驱动程序,并已将其合并到DTS文件中。我已经成功地将所有I2C多路复用器列为不同的i2c-x节点。

所有MCU都使用相同的地址0x08。我创建了一个内核驱动程序,它为它创建了一个hwmon + sysfs接口。但是,insmod上的驱动程序只触发__init函数。并且不会为probe()而烦恼。

在参考了许多文档后,我只能在插入时触发探测功能

代码语言:javascript
复制
static struct i2c_board_info xxxx_i2c_devices[] = {
  {
     I2C_BOARD_INFO("xxxx", 0x08),
  },
};

以及与其对应的

代码语言:javascript
复制
i2c_register_board_info(0, xxxx_i2c_devices, ARRAY_SIZE(xxxx_i2c_devices));

但是,这在HWMON中只创建了一个实例,而不是我想象中的多个实例。我已经推荐了https://www.kernel.org/doc/Documentation/i2c/instantiating-devices

在没有更改主板init的情况下,我尝试使用方法3,但是内核甚至不调用probe()和检测function(),只调用驱动程序的__init函数。

我遵循驱动程序- https://github.com/1119553797/sprd-kernel-common/blob/sprdb2g_gonk4.0/drivers/hwmon/w83l785ts.c

如果需要,我将发布整个内核驱动程序,以供参考,我使用的是kernel 3.0.8,这是一个自定义主板,使用对相同内核的板级更改。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44384154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档