i2c_register_board_info & i2c_board_info
你可以在 /sys/bus/i2c/devices/ 下看到下面兩個
0-0049
0-0068
表示你的i2c bus 有這兩個 device.
要如何註冊呢?
i2c_register_board_info() 便可以將你要的裝置加入 i2c bus 中.
1.
先建立 i2c_board_info, 填入你的 device 和 address .
static struct i2c_board_info __initdata
ts02_i2c[] =
{
{
I2C_BOARD_INFO("lm75a",
0x49),
},
{
I2C_BOARD_INFO("ds1338",
0x68),
}
};
2.
i2c_register_board_info(0,
ts02_i2c, ARRAY_SIZE(ts02_i2c));
這樣就可以了, 當然 driver 在 menuconfig 要記得勾選.
開機後, 你可以看到下面資訊表示註冊成功.
i2c /dev entries driver
rtc-ds1307 0-0068: rtc core: registered ds1338 as rtc0
rtc-ds1307 0-0068: 56 bytes nvram
i2c-gpio i2c-gpio.0: using pins 36 (SDA) and 37 (SCL)
lm75 0-0049: hwmon1: sensor 'lm75a'
開機後, 你可以看到下面資訊表示註冊成功.
i2c /dev entries driver
rtc-ds1307 0-0068: rtc core: registered ds1338 as rtc0
rtc-ds1307 0-0068: 56 bytes nvram
i2c-gpio i2c-gpio.0: using pins 36 (SDA) and 37 (SCL)
lm75 0-0049: hwmon1: sensor 'lm75a'
※
要注意的是 I2C_BOARD_INFO("ds1338",
0x68) 裡的 “ds1338” 需要和 id_table 相同, 不然會有問題.
※
#define
I2C_BOARD_INFO(dev_type, dev_addr) \
.type = dev_type, .addr =
(dev_addr)
所以
{
I2C_BOARD_INFO("ds1338",
0x68),
}
也可以改成
{
.type = "ds1338",
.addr = 0x68,
}
Refernence:
留言
張貼留言