我的主控芯片是三星4412,里面有很多组i2c接口,像是i2c-0,i2c-1, i2c-2等等
我的板子有用到HDMI,所以需要注册DDC设备驱动,设备名字是s5p_ddc,在内核中的mach_smdk4x12.c中就有:
static struct i2c_board_info i2c_devs2[] __initdata = {
#ifdef CONFIG_VIDEO_TVOUT
{
I2C_BOARD_INFO("s5p_ddc", (0x74 >> 1)),
},
#endif
};
在smdk4x12_machine_init中有这些代码将i2c设备注册进i2c总线中(不知道表述得对不对):
s3c_i2c0_set_platdata(NULL);
if (samsung_board_rev_is_0_0())
i2c_register_board_info(0, i2c_devs0_rev0,
ARRAY_SIZE(i2c_devs0_rev0));
else
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
s3c_i2c1_set_platdata(NULL);
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
s3c_i2c2_set_platdata(NULL);
i2c_register_board_info(2, i2c_devs2, ARRAY_SIZE(i2c_devs2));
s3c_i2c3_set_platdata(NULL);
i2c_register_board_info(3, i2c_devs3, ARRAY_SIZE(i2c_devs3));
s3c_i2c4_set_platdata(NULL);
i2c_register_board_info(4, i2c_devs4, ARRAY_SIZE(i2c_devs4));
s3c_i2c5_set_platdata(NULL);
i2c_register_board_info(5, i2c_devs5, ARRAY_SIZE(i2c_devs5));
s3c_i2c7_set_platdata(NULL);
i2c_devs7[0].irq = samsung_board_rev_is_0_0() ? IRQ_EINT(15) : IRQ_EINT(22);
i2c_register_board_info(7, i2c_devs7, ARRAY_SIZE(i2c_devs7));
在内核启动的时候,有如下信息输出:
[ 0.335000] s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
[ 0.335000] s3c-i2c s3c2440-i2c.1: i2c-1: S3C I2C adapter
[ 0.335000] s3c-i2c s3c2440-i2c.2: i2c-2: S3C I2C adapter
[ 0.335000] s3c-i2c s3c2440-i2c.3: i2c-3: S3C I2C adapter
[ 0.335000] s3c-i2c s3c2440-i2c.4: i2c-4: S3C I2C adapter
[ 0.340000] s3c-i2c s3c2440-i2c.5: i2c-5: S3C I2C adapter
[ 0.340000] s3c-i2c s3c2440-i2c.6: i2c-6: S3C I2C adapter
[ 0.340000] s3c-i2c s3c2440-i2c.7: i2c-7: S3C I2C adapter
然后我的DDC设备就被注册进去了:
[ 2.848251] i2c i2c-2: attached s5p_ddc into i2c adapter successfully
这里的s5p_ddc被注册进i2c-2里面了。
我烧写了一些别的内核作为对比,有些事注册进i2c-0里面:
[ 3.101493] i2c i2c-0: attached s5p_ddc into i2c adapter successfully
有些就注册进i2c-1里面
难道是随机的吗?或者可以再那里指定设备注册进那个i2c里面的吗?
我的HDMI控制器接的是I2C0组控制器
可能表述不是很清晰。。。因为我对这块还不是很熟悉

------解决方案--------------------
也许你不用太纠结于打印出来的“i2c i2c-2”还是“i2c i2c-0”,该数值也许和你的设备在哪组控制器没有直接联系。
或者,你应该看看打印该信息的地方,看看该数值对应的究竟是什么。