1. подцепил ADV7181 на CSI1. Работает при изменении в соответствующих секциях DTS номера CSI. А как сделать одновременно два устройства с разными CSI. Пытался в DTS сделать по две секции типа
v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
...
};
v4l2_cap_1 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <1>;
...
};
В /dev устройство video1 появляется, но при запуске видеоввода работает только на нем, при работе с video0 пишет не найден slave. Как правильно описать второй канал ?
2. Как повысить уровень вывода отладочной информации , в частности получить вывод от функции pr_debug ?
1. reg = <0x21>;
у вас на разных интерфейчах I2C они подключены - по куску DTS непонятно ? если на одной шине то надо на разные адреса садить и естественно не только програмно но и аппартно - смотреть в даташите как сконфигурировать
pinctrl-0 = <&pinctrl_ipu1_csi_sodimm>;
про это я предуждал ранее - надо дописывать инит пинов для второго CSI и указывать соотвественно для каждого CSI свою группу - не могут они на одних и тех же пинах жить.
locks = <&clks 201>;
clock-names = "csi_mclk";
тут наверно можно одинаковые оставить - я не видел в коде adv7180.c чтобы информация о клоке из DTS использовалась.
Пины конечно прописаны.
pinctrl-0 = <&pinctrl_ipu1_csi_sodimm>; тут ошибка в посте была, на самом деле для второго канала pinctrl-0 = <&pinctrl_ipu1_csi1_sodimm>;
Ацп подключен один , выход распараллелен на два CSI
по отдельности оба канала работают если прописать соответствующий <csi_id> и группу пинов.
то при загрузке имеем
# udevd[168]: worker [173] /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0021 is taking a long time
udevd[168]: worker [170] /devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-0021 is taking a long time
udevd[168]: worker [177] /devices/soc0/v4l2_cap_0 is taking a long time
udevd[168]: worker [179] /devices/soc0/v4l2_cap_1 is taking a long time
# udevd[168]: worker [173] /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0021 timeout; kill it
udevd[168]: seq 1284 '/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0021' killed
udevd[168]: worker [170] /devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-0021 timeout; kill it
udevd[168]: seq 1296 '/devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-0021' killed
udevd[168]: worker [177] /devices/soc0/v4l2_cap_0 timeout; kill it
udevd[168]: seq 1319 '/devices/soc0/v4l2_cap_0' killed
udevd[168]: worker [179] /devices/soc0/v4l2_cap_1 timeout; kill it
udevd[168]: seq 1320 '/devices/soc0/v4l2_cap_1' killed
udevd[168]: worker [170] terminated by signal 9 (Killed)
udevd[168]: worker [170] failed while handling '/devices/soc0/soc/2100000.aips-bus/21f8000.i2c/i2c-3/3-0021'
udevd[168]: worker [177] terminated by signal 9 (Killed)
udevd[168]: worker [177] failed while handling '/devices/soc0/v4l2_cap_0'
и /dev/video0 и 1 не создается.
Обмен по шине I2c в обоих случаях аппаратно (проводником ) отключен АЦП при этом работает при настройках по умолчанию. В первом случае ошибок не возникает.
надо переписать с выделением памяти динамически и в коде еще много надо править - во многих местах эта структура напрямую используется и это надо переписывать всё
Здравствуйте! После долгой паузы и сборки кастомной платы с двумя csi вернулся таки к вопросу.
ad7180 по отдельности описанные в dts работают на обоих csi, Если описать сразу два, то второй не работает
Возможно я неправильно dts пишу для второго
DBG sensor data is at 8853f810
DBG sensor data is at 8853fc10
первый канал запускается
При запуске второго канала ругается
# ./v1.sh 9
Setting pipeline to PAUSED ...
ERROR: v4l2 capture: slave not found!
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
gstbasesrc.c(3354): gst_base_src_start (): /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0:
Failed to start
Setting pipeline to NULL ...
Freeing pipeline ...