Функция Linux i2c ds1307_probe не вызывается

#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:

Все в вопросе было в порядке. Проблема была вызвана аппаратной проблемой.