我有一个需求来创建一个Linux内核驱动程序,通过接口板通过I2C接口与一堆MCU。因为它们的数量会很多,即大约1-18个,我们正在使用恩智浦/ TI I2C多路复用器。Linux I2C内核驱动程序
我已导入恩智浦/ TI I2C多路复用器内核驱动程序,并将它们合并到DTS文件中。我已成功地将所有I2C多路复用器列为不同的i2c-x节点。
MCU的全部使用相同的地址0x08。我创建了一个内核驱动程序,它为它创建了一个接口。 但是,驱动程序insmod
仅触发__init
函数。并且不打扰probe()
。
在提到许多单证时,我将
static struct i2c_board_info xxxx_i2c_devices[] = {
{
I2C_BOARD_INFO("xxxx", 0x08),
},
};
及其相应
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
如果需要,会后整个内核驱动程序,以供参考现在用的是3.0.8内核,定制电路板使用的板级改动同上述内核。
尽量少古代内核第一。 – 0andriy