Я пытаюсь добавить поддержку ADV7282-m в сборку ядра linux с помощью Yocto. Однако я не могу заставить его работать. Я получил модуль для загрузки и обнаружения чипа. Драйвер полностью проходит через probe
, но устройство v4l не создано.
Плата, на которой я пытаюсь его запустить, - VAR-SOM-DUAL ,с процессором IMX6. Я вручную добавил ADV7282-m (исходя из примеров, найденных с помощью Google) в дерево устройств, но я не уверен, что это правильно, потому что я не очень знаком с деревом устройств:
...
v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mclk_source = <0>;
mipi_camera = <1>;
status = "okay";
};
...
adv7182: adv7182@20 {
compatible = "adi,adv7282-m";
pinctrl-names = "default";
reg = <0x20>;
clocks = <&clks 200>;
clock-names = "csi_mclk";
csi_id = <0>;
cvbs = <1>;
mipi_camera = <1>;
mclk = <24000000>;
mclk_source = <0>;
ipu_id = <0>;
status = "okay";
};
...
&mipi_csi {
status = "okay";
ipu_id = <0>;
csi_id = <0>;
v_channel = <1>;
lanes = <1>;
};
...
Глядя на таблицу данных платы и на то, как физически подключен ADV, кажется, все в порядке.
Тогда у меня возникла пара проблем при попытке включить модуль ядра для ADV7282-m. Когда я включаю Autoselect ancillary driver
, модуль не включается в сборку. Глядя на документацию, он выбирается STA2X11_VIP
, однако я не могу включить его, поскольку он зависит от VIRT_TO_BUS
, который, по-видимому, устарел (или не поддерживается для моей платформы).
Когда я отключаю Autoselect ancillary driver
Я могу вручную включить модуль ADV7180
(который поддерживает ADV7282-m). Но после компиляции ядра при загрузке модуля в нем отсутствуют символы V4L, и я не могу найти то, чего не хватает в настройке конфигурации V4L.
В итоге я скопировал скомпилированный модуль в мою локальную систему, перекомпилировал ядрос помощью Autoselect ancillary driver
и скопируйте драйвер ADV7180
обратно для загрузки.
При этом модуль загружается правильно и печатает:
adv7180 0-0020: chip found @ 0x20 (21a0000.i2c)
, и все, устройство v4l не создаетсяи больше ошибок не отображается. Чтобы проверить, я добавил несколько дополнительных распечаток к коду модуля, но это делает его к окончательному возвращению без проблем.
В настоящий момент я застрял в поиске решения, может кто-то может указать мне правильное направление? Или, возможно, даже видите ошибку в моей конфигурации?
Если вам нужна дополнительная информация, не стесняйтесь спрашивать!
Заранее спасибо.