Я нахожусь в процессе перехода с Linux 3.10 на немного более новую версию, Linux 4.4.8. После миграции кажется, что i2c больше не может видеть часть моего оборудования. Само оборудование не изменилось и работает нормально в предыдущей версии Linux (3.10).
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мои команды i2c больше не работают.
При попыткедля записи на устройство я получаю ошибку записи.
[]# i2cset -y 0 0x70 0 1 b
Error: Write failed
Затем я решил запустить i2cdetect, чтобы определить, что можно увидеть, и это вывод, который я получаю
В Linux:
[]# i2cdetect -y -a 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
В U-Boot:
[u-boot]# i2c probe
Valid chip addresses: 20 21 64 70
По какой причине я вижу свое устройство в U-Boot, но не вижу свое устройство в Linux?
Я подозреваю, что дерево устройств может потребоваться изменить? Но я проверил старые файлы dtsi, и между i2c0 в двух версиях Linux ничего не изменилось ...
i2cdump выдает все X для вывода
[]# i2cdump -y 0 0x70
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX...
хост-контроллер i2c:linux-4-4-8 / drivers / i2c / busses / i2c-mv64xxx.c
Устройства
0x20, 0x21: Расширители портов ввода-вывода PCA9555
0x70: PCA9548A i2c Multiplexer