Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
有網友用了一顆名為lt8631的IC,告訴我設定位址為0x94,然後開機出現錯誤:
<3>[ 0.551181] i2c i2c-2: Invalid 7-bit I2C address 0x94
<3>[ 0.551195] i2c i2c-2: of_i2c: Failure registering /[email protected]/[email protected]
事實上他是用錯了,因為0x94包含了讀寫bit了。
0x94是最終寫位址,0x95是讀位址,驅動中會将最後一個bit位添加進去和i2c裝置通信。
是以我們隻要寫左邊7位位址就可以了,也就是
0x94 /2 = 0x4A
再看一個例子,産品中用了一顆rtc晶片RX8010:
那麼在dts中隻要設定位址為0x32即可:
&i2c1 {
status = "okay";
rx8010: rx801@32 {
compatible = "epson,rx8010";
reg = <>;
status = "okay";
};
};