インタフェースボードを介して、I2C上のMCUの束とインターフェースするLinuxカーネルドライバを作成する必要があります。それらは数が多く、すなわち1-18程度であるため、NXP/TI I2Cマルチプレクサを利用しています。Linux I2Cカーネルドライバ
NXP/TIのI2Cマルチプレクサカーネルドライバをインポートし、DTSファイルに組み込んだことがあります。私は、すべてのI2Cマルチプレクサを異なるi2c-xノードとしてリストすることに成功しました。
MCUはすべて同じアドレス0x08を使用しています。そして私はhwmon
+ sysfs
のインタフェースを作成するカーネルドライバを作成します。 しかし、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
に一つだけのインスタンスを作成しません私はそれがあると想像した。私はボードinit
の変化がなければhttps://www.kernel.org/doc/Documentation/i2c/instantiating-devices
を言及している、私は、しかし、カーネルもprobe()
を呼び出し、function()
を検出しない、方法3を利用するために、ドライバのだけ__init
機能を試してみました。ドライバ次
アム - 必要に応じて https://github.com/1119553797/sprd-kernel-common/blob/sprdb2g_gonk4.0/drivers/hwmon/w83l785ts.c
は参考のために、全体のカーネルドライバを投稿するのと同じ上記のカーネルにボード・レベルの変更を使用して、カスタムボードをカーネル3.0.8を使用しています。
以下をお試しください古代のカーネルが最初に。 – 0andriy