#driver #i2c #probe
#драйвер #i2c #проверка
Вопрос:
Я использую Linux-4.9.67 с устройством ARM с совместимым с ds1307 контроллером RTC на шине i2c. Добавлено в конфигурацию ядра
CONFIG_RTC_DRV_DS1307=y
Добавлен узел в дереве устройств
amp;i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <amp;pinctrl_i2c4>;
status = "okay";
ds1307: rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};
Я вижу это в списке устройств
root@csb:~# i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Однако проблема в том, что драйвер устройства не загружен и ds1307_probe()
никогда не вызывается.
Есть идеи по этому поводу? Спасибо
Комментарии:
1. Отличная статья по аналогичной проблеме здесь programmer.group /…
2. Включите
initcall_debug ignore_loglevel
в командной строке вашего ядра и посмотрите, что он говорит.
Ответ №1:
Все в вопросе было в порядке. Проблема была вызвана аппаратной проблемой.