最新のI2Cバインディングモデルを使用するために他のカーネル用に作成した一部のI2Cデバイスドライバを移植しようとしています。カーネル文書では、これを行う手順について詳しく説明しています。http://www.mjmwired.net/kernel/Documentation/i2c/upgrading-clients
私が理解していないのは、この新しいモデルを使用するときにデバイスのI2Cアドレスをどのように指定しますか?以前は、次のようにしていました。
static unsigned short normal_i2c[] = { 0x67, I2C_CLIENT_END };
I2C_CLIENT_INSMOD;
私のバス/デバイスが検出をサポートしていないようです。
答え1
結局、すべてのI2Cデバイスをプラットフォームデバイスとして登録しました。 Boardファイルのエントリは次のとおりです。
static struct i2c_board_info __initdata my_i2c_device = {
I2C_BOARD_INFO("my_i2c_device", 0x60)
};
(ここではI2Cアドレス=0x60)
if (i2c_register_board_info(I2C_MY_BUS_ID, &my_i2c_device, 1) < 0) {
printk(KERN_ERR "i2c_init: cannot register my I2C device\n");
}
バラよりhttp://www.mjmwired.net/kernel/Documentation/driver-model/platform.txt