作者eleghost (eleghost)
看板LinuxDev
标题Re: [问题] 关於 I2C_BOARD_INFO 和 id_table 的关联
时间Sun Aug 26 23:11:53 2012
据我所知一般都是用 i2c_board_info去指定platform data,
除非你另外指定了 .detect 来指定i2c addr.
此外通常i2c_table[]都是
{"dev-name", 0}
而 0 并不代表i2c address的意思, 可以查看此stuct的内容便可知道.
所以你文中的 {"alc5623", 0x23},
0x23 不是i2c address. 可以请教0x23这资讯是要做什麽的吗?thanks!
※ 引述《SweepingMonk ((((((((((()))))))))))》之铭言:
: 请教各位大大
: kernel sourece 中
: 在 arch/arm/mach-omap2/board-xxxx.c 的 I2C_BOARD_INFO
: 还有 sound/soc/codec/somecard.c 中的 id_table
: 好像都有提到 i2c 的 chip address
: 但是小弟一直搞不懂它们有什麽关系
: 例如:
: /* sound/soc/codec/alc5632.c */
: static const struct i2c_device_id alc5623_i2c_table[] = {
: {"alc5621", 0x21},
: {"alc5622", 0x22},
: {"alc5623", 0x23},
: {}
: };
: /* arch/arm/mach-tegra/board-harmony.c */
: static struct i2c_board_info __initdata harmony_i2c_bus1_board_info[] = {
: {
: I2C_BOARD_INFO("alc5623", 0x1a),
: .platform_data = &adam_alc5623_pdata,
: },
: };
: 我以为 chip id 既然是固定的,但是这两个位置
: 的值好像都不会一样
: 请问这两个地方的值分别是什麽意义呢?
: 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.35.209.216
1F:→ WPC001:0x23就是i2c slave address... 09/02 19:37
2F:→ WPC001:某些ic, 可以由硬体去选择位置 (目的是为了避免位置冲突) 09/02 19:38
3F:→ WPC001:一般会用I2C_BOARD_INFO这个marco来做 09/02 19:41
4F:→ WPC001:不然建议用明式来指定 .addr = 0x23, .type ="alc5623" 09/02 19:41
5F:→ WPC001:如果只写 "alc5623",0x23, 就要看当初struct是怎麽宣告的 09/02 19:43
6F:→ WPC001:会有混淆的可能, 不是好的程式写作风格 09/02 19:43