Конфигурация регулятора для резервного аккумулятора RT C в i.MX6 PMIC - PullRequest
2 голосов
/ 07 февраля 2020

Я переключаюсь с сома phycore i.MX6 с комплекта разработчика phyte c на собственную плату. Руководства пользователя для сома и devkit можно найти на странице phyte c . Теперь я хочу настроить RT c, чтобы сохранить время при перезагрузке и отключении питания.

Батарея (в моем случае суперкап) подключена к выводу VDD_BAT сома phycore i.MX6 (стр. 10) . внутренний PMI C - это da9062, подключенный через шину i2 c, который сконфигурирован в файле som dtsi как rtc1.

imx6qdl-phytec-phycore-som.dtsi:

...
aliases {
    rtc1 = &da9062_rtc;
};
...
&i2c3 {
    pmic@58 {
         da9062_rtc: rtc {
             compatible = "dlg,da9062-rtc";
         };
    };
};

Этот файл я вообще не трогал.

Далее я велел ядру взять его время hwclock и systime из rtc1 вместо rtc0:

CONFIG_RTC_HCTOSYS_DEVICE="rtc1"
CONFIG_RTC_SYSTOHC_DEVICE="rtc1"

Драйвер загружается правильно, насколько я могу судить:

dmesg | grep rtc
[    2.489836] da9063-rtc da9062-rtc: rtc core: registered da9063-rtc as rtc1
[    2.499713] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-rtc-lp as rtc2
[    3.260348] da9063-rtc da9062-rtc: setting system clock to 2000-01-01 02:37:55 UTC (946694275)

и

cat /sys/class/rtc/rtc1/name 
da9063-rtc da9062-rtc

Теперь я могу установить время по дате и перенести его на часы. через

hwclock --systohc

.

После перезагрузки системы hwclock устанавливается на ранее установленную дату, что вполне нормально. После отключения питания часы сбрасываются.

Я измерил напряжение суперкап, которое составляет около 220 мВ. Таблица da9062 говорит мне, что у чипа есть регулятор для батареи, который необходимо настроить (Таблица 127: BBAT_CONT (0x0C5)).

Насколько я понимаю ядро / rt c подсистема, драйвер для rt c должен позаботиться о зарядке батареи или предоставить интерфейс пользовательского пространства, чтобы я мог сделать это сам. Но я ничего не могу найти в этой топи c.

Я использую yocto для сборки ядра / образа для моей платы.

Есть что-то, что я пропускаю или я нужно самому залатать драйвер, чтобы зарядить суперкап? Может быть, в devicetree есть возможность установить зарядное напряжение и ток для крышки?

Я ценю любые идеи и предложения, спасибо.

1 Ответ

0 голосов
/ 13 февраля 2020

Судя по всему, драйвер не поддерживает зарядку аккумулятора / суперкапа из коробки и обладает исключительными правами доступа к адресу устройства i2 c, что предотвращает доступ пользовательских приложений к устройству.

Мое решение для эта проблема заключается в том, чтобы установить эти значения до того, как драйвер вступит во владение: поскольку эта шина i2 c уже настроена в моем устройстве devboxet для barebox, я могу получить к нему доступ до загрузки ядра (при условии, что barebox скомпилирован с включенной подсистемой i2 c). в menuconfig). Здесь я могу запустить скрипт, который устанавливает регистры BBAT и PD для включения зарядки суперкап.

Хотя более чистым решением было бы расширить драйвер и предоставить интерфейс пользовательского пространства для этой функции.

Другим возможным решением, которое я не исследовал, было бы проверить, можно ли скомпилировать драйвер как модуль, чтобы я мог выгрузить модуль, установить регистры и загрузить его снова.

...