Hi Fabio,
I do believe the problem you're having is that the OV5640 by default
transmits on virtual channel 0, not channel 1 as is given in the
instructions in imx.rst.
But I do agree the instructions are now misleading because of the OV5640
defaults, and probably should be changed for the virtual channel 0 pipeline.
Can you try the virtual channel 0 pipeline:
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':0[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'ipu1_ic_prp':1 -> 'ipu1_ic_prpenc':0[1]"
media-ctl -l "'ipu1_ic_prpenc':1 -> 'ipu1_ic_prpenc capture':0[1]"
media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'imx6-mipi-csi2':1 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prp':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prpenc':0 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prpenc':1 [fmt:AYUV32/640x480]"
vdev=`media-ctl -e "ipu1_ic_prpenc capture"`
v4l2-ctl -d $vdev --set-fmt-video=width=640,height=480
You can also try changing the ov5640 module parameter virtual_channel to
channel 1:
echo "options ov5640 virtual_channel=1" > /etc/modprobe.d/ov5640.conf
then reboot and try the instructions again.
On 4/7/20 11:05 AM, Fabio Estevam wrote:
The current instructions do not lead to functional capture on
a i.MX6Q sabresd board.
Fix the instructions so that users can get the OV5640 camera to
work by default.
Tested by two methods:
1. Using v4l2-ctl:
# v4l2-ctl --stream-mmap -d /dev/video0
2. Using a Gstreamer pipeline that captures from the camera and direct
the image to the display:
# gst-launch-1.0 v4l2src ! kmssink
Signed-off-by: Fabio Estevam <festevam@xxxxxxxxx>
---
Hi Steve,
Were the instructions written based on a i.MX6DL sabresd?
No the instructions are for the i.MX6Q. I have a patch pending that
clarifies that.
Steve
I don't have access to a i.MX6DL sabresd board to confirm if they
are still working, but I noticed that these instructions do not work on
a i.MX6Q sabresd board, so that's why I modified it and now the capture
works fine here.
Please advise.
Thanks
Documentation/media/v4l-drivers/imx.rst | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/Documentation/media/v4l-drivers/imx.rst b/Documentation/media/v4l-drivers/imx.rst
index 1246573c1019..0588060ead27 100644
--- a/Documentation/media/v4l-drivers/imx.rst
+++ b/Documentation/media/v4l-drivers/imx.rst
@@ -645,27 +645,23 @@ The OV5640 module connects to MIPI connector J5 (sorry I don't have the
compatible module part number or URL).
The following example configures a direct conversion pipeline to capture
-from the OV5640, transmitting on MIPI CSI-2 virtual channel 1. $sensorfmt
-can be any format supported by the OV5640. $sensordim is the frame
-dimension part of $sensorfmt (minus the mbus pixel code). $outputfmt can
-be any format supported by the ipu1_ic_prpenc entity at its output pad:
+from the OV5640, transmitting on MIPI CSI-2 virtual channel 1:
.. code-block:: none
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
- media-ctl -l "'imx6-mipi-csi2':2 -> 'ipu1_csi1':0[1]"
- media-ctl -l "'ipu1_csi1':1 -> 'ipu1_ic_prp':0[1]"
- media-ctl -l "'ipu1_ic_prp':1 -> 'ipu1_ic_prpenc':0[1]"
- media-ctl -l "'ipu1_ic_prpenc':1 -> 'ipu1_ic_prpenc capture':0[1]"
+ media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':[1]"
+ media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':[1]"
+ media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
+
# Configure pads
- media-ctl -V "'ov5640 1-003c':0 [fmt:$sensorfmt field:none]"
- media-ctl -V "'imx6-mipi-csi2':2 [fmt:$sensorfmt field:none]"
- media-ctl -V "'ipu1_csi1':1 [fmt:AYUV32/$sensordim field:none]"
- media-ctl -V "'ipu1_ic_prp':1 [fmt:AYUV32/$sensordim field:none]"
- media-ctl -V "'ipu1_ic_prpenc':1 [fmt:$outputfmt field:none]"
+ media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480 field:none]"
+ media-ctl -V "'imx6-mipi-csi2':2 [fmt:UYVY2X8/640x480 field:none]"
+ media-ctl -V "'ipu1_csi0_mux':0[fmt:UYVY2X8/640x480]"
+ media-ctl -V "'ipu1_csi0':0[fmt:UYVY2X8/640x480]"
-Streaming can then begin on "ipu1_ic_prpenc capture" node. The v4l2-ctl
+Streaming can then begin on "ipu1_csi0 capture" node. The v4l2-ctl
tool can be used to select any supported YUV or RGB pixelformat on the
capture device node.