作者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
→ WPC001:0x23就是i2c slave address... 09/02 19:37
→ WPC001:某些ic, 可以由硬體去選擇位置 (目的是為了避免位置衝突) 09/02 19:38
→ WPC001:一般會用I2C_BOARD_INFO這個marco來做 09/02 19:41
→ WPC001:不然建議用明式來指定 .addr = 0x23, .type ="alc5623" 09/02 19:41
→ WPC001:如果只寫 "alc5623",0x23, 就要看當初struct是怎麼宣告的 09/02 19:43
→ WPC001:會有混淆的可能, 不是好的程式寫作風格 09/02 19:43