On Sat, Mar 13, 2021 at 1:42 PM Niklas Söderlund <niklas.soderlund@xxxxxxxxxxxx> wrote: > > Hi Adam, > > Thanks for reporting your results. > > On 2021-03-13 11:47:16 -0600, Adam Ford wrote: > > On Fri, Mar 12, 2021 at 8:52 AM Niklas Söderlund > > <niklas.soderlund@xxxxxxxxxxxx> wrote: > > > > > > Hi Adam, > > > > > > There are many possibility's that result in an -EPIPE when validating > > > formats and unfortunately V4L2 is not always as very helpfull when > > > diagnosing the problem. What I usually do is to, > > > > > > 1. Inspect rvin_mc_validate_format() in > > > drivers/media/platform/rcar-vin/rcar-dma.c > > > > > > This will give you a clear view of how the format between the CSI-2 > > > and VIN is validated. > > > > > > 2. Increase the log level for drivers/media/v4l2-core/v4l2-subdev.c > > > specially for v4l2_subdev_link_validate_default(). > > > > > > This will give you insight into all formats from the CSI-2 receiver > > > towards the camera. > > > > > > By doing these two things you will see in the system log which part of > > > the format validation that is missmatched. > > > > Thanks for the suggestion. It turns out the camera sensor is not > > capable of UYVY, and the RZ/G2M doesn't appear to support RAW10 or > > RAW12 over CSI2. > > If I *tried* to create patches to add support for RAW10 would you be > able to test them? I have no video source to test RAW formats with so > maybe we can solve this together. I would love to test them, but looking at the datasheet for the RZ/G2 N/M/H, it doesn't appear as if RAW10 supported at all, and RAW12 looks like it may only be supported over digital pins and not CSI2. If you have thoughts, I'm willing to discuss it and try. adam > > > > > adam > > > > > > > > There is also a wiki page for capture using R-Car VIN that may be > > > helpful for you. > > > > > > https://elinux.org/R-Car/Tests:rcar-vin > > > > > > On 2021-03-12 08:28:41 -0600, Adam Ford wrote: > > > > I have an IMX290 camera connected to an RZ/G2M SoC via the 4-channel CSI. > > > > > > > > &csi40 { > > > > status = "okay"; > > > > > > > > ports { > > > > port@0 { > > > > reg = <0>; > > > > csi40_in: endpoint { > > > > clock-lanes = <0>; > > > > data-lanes = <1 2 3 4>; > > > > remote-endpoint = <&imx290_ep>; > > > > }; > > > > }; > > > > }; > > > > }; > > > > > > > > On the I2C bus, I have > > > > > > > > imx290: camera-sensor@1a { > > > > compatible = "sony,imx290"; > > > > reg = <0x1a>; > > > > reset-gpios = <&gpio_exp2 0 GPIO_ACTIVE_LOW>; > > > > clocks = <&versaclock6_bb 1>; > > > > clock-names = "xclk"; > > > > clock-frequency = <37125000>; > > > > vdddo-supply = <®_cam0_en0>; > > > > vdda-supply = <®_cam0_en1>; > > > > vddd-supply = <®_cam0_en0>; > > > > > > > > port { > > > > imx290_ep: endpoint { > > > > data-lanes = <1 2 3 4>; > > > > link-frequencies = /bits/ 64 <148500000 222750000>; > > > > remote-endpoint = <&csi40_in>; > > > > }; > > > > }; > > > > }; > > > > > > > > I configure the pipeline with: > > > > > > > > media-ctl -l "'rcar_csi2 feaa0000.csi2':1 -> 'VIN0 output':0[1]" > > > > > > > > I also have tried configuring the video formats in several different ways > > > > > > > > media-ctl --set-v4l2 "'imx290 2-001a':0[fmt:SRGGB12_1X12/1920x1080 field:none]" > > > > media-ctl --set-v4l2 "'rcar_csi2 > > > > feaa0000.csi2':0[fmt:SRGGB12_1X12/1920x1080 field:none]" > > > > media-ctl --set-v4l2 "'rcar_csi2 > > > > feaa0000.csi2':1[fmt:SRGGB12_1X12/1920x1080 field:none]" > > > > > > > > or > > > > > > > > media-ctl --set-v4l2 "'rcar_csi2 > > > > feaa0000.csi2':0[fmt:UYVY8_2X8/1920x1080 field:none]" > > > > media-ctl --set-v4l2 "'rcar_csi2 > > > > feaa0000.csi2':1[fmt:UYVY8_2X8/1920x1080 field:none]" > > > > media-ctl --set-v4l2 "'imx290 2-001a':0[fmt:UYVY8_2X8/1920x1080 field:non > > > > > > > > but no matter what I do when I attempt to stream, I get a broken pipe, > > > > even when I use fakesink as the target. > > > > > > > > root@beacon-rzg2h:~# GST_DEBUG=2 gst-launch-1.0 -v v4l2src > > > > device=/dev/video1 ! video/x-raw,width=1920,height=1080 ! fakesink > > > > Setting pipeline to PAUSED ... > > > > Pipeline is live and does not need PREROLL ... > > > > Setting pipeline to PLAYING ... > > > > New clock: GstSystemClock > > > > 0:00:03.727500390 501 0x10efd4f0 ERROR v4l2src > > > > gstv4l2src.c:337:gst_v4l2src_get_input_size_info:<v4l2src0> Cropcap > > > > fail, CROPCAP has not supported > > > > /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = > > > > video/x-raw, width=(int)1920, height=(int)1080, format=(string)YUY2, > > > > framerate=(fraction)100/1, interlace-mode=(s1 > > > > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = > > > > video/x-raw, width=(int)1920, height=(int)1080, format=(string)YUY2, > > > > framerate=(fraction)100/1, interlace-m1 > > > > /GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = > > > > video/x-raw, width=(int)1920, height=(int)1080, format=(string)YUY2, > > > > framerate=(fraction)100/1, interlace-mode1 > > > > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = > > > > video/x-raw, width=(int)1920, height=(int)1080, format=(string)YUY2, > > > > framerate=(fraction)100/1, interlace-1 > > > > 0:00:03.737388309 501 0x10efd4f0 WARN v4l2bufferpool > > > > gstv4l2bufferpool.c:870:gst_v4l2_buffer_pool_start:<v4l2src0:pool:src> > > > > Uncertain or not enough buffers, enad > > > > 0:00:03.740266641 501 0x10efd4f0 ERROR v4l2bufferpool > > > > gstv4l2bufferpool.c:757:gst_v4l2_buffer_pool_streamon:<v4l2src0:pool:src> > > > > error with STREAMON 32 (Broken pi) > > > > 0:00:03.740474842 501 0x10efd4f0 WARN v4l2bufferpool > > > > gstv4l2bufferpool.c:1188:gst_v4l2_buffer_pool_poll:<v4l2src0> error: > > > > poll error 1: Broken pipe (32) > > > > 0:00:03.740693123 501 0x10efd4f0 WARN v4l2src > > > > gstv4l2src.c:1020:gst_v4l2src_create:<v4l2src0> error: Failed to > > > > allocate a buffer > > > > 0:00:03.740791643 501 0x10efd4f0 WARN basesrc > > > > gstbasesrc.c:2939:gst_base_src_loop:<v4l2src0> error: Internal data > > > > stream error. > > > > 0:00:03.740822843 501 0x10efd4f0 WARN basesrc > > > > gstbasesrc.c:2939:gst_base_src_loop:<v4l2src0> error: streaming > > > > stopped, reason error (-5) > > > > ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could > > > > not read from resource. > > > > Additional debug info: > > > > ../../../git/sys/v4l2/gstv4l2bufferpool.c(1188): > > > > gst_v4l2_buffer_pool_poll (): > > > > /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: > > > > poll error 1: Broken pipe (32) > > > > Execution ended after 0:00:00.013644415 > > > > Setting pipeline to PAUSED ... > > > > Setting pipeline to READY ... > > > > 0:00:03.741392965 501 0x10ec96c0 WARN v4l2bufferpool > > > > gstv4l2bufferpool.c:1042:gst_v4l2_buffer_pool_stop:<v4l2src0:pool:src> > > > > some buffers are still outstanding > > > > 0:00:03.741428005 501 0x10ec96c0 WARN bufferpool > > > > gstbufferpool.c:567:gst_buffer_pool_set_active:<v4l2src0:pool:src> > > > > stop failed > > > > 0:00:03.743868095 501 0x10ec96c0 ERROR v4l2bufferpool > > > > gstv4l2bufferpool.c:757:gst_v4l2_buffer_pool_streamon:<v4l2src0:pool:src> > > > > error with STREAMON 32 (Broken pi) > > > > 0:00:03.744090576 501 0x10ec96c0 WARN v4l2bufferpool > > > > gstv4l2bufferpool.c:1042:gst_v4l2_buffer_pool_stop:<v4l2src0:pool:src> > > > > some buffers are still outstanding > > > > 0:00:03.744123936 501 0x10ec96c0 WARN bufferpool > > > > gstbufferpool.c:567:gst_buffer_pool_set_active:<v4l2src0:pool:src> > > > > stop failed > > > > 0:00:03.744152376 501 0x10ec96c0 WARN v4l2bufferpool > > > > gstv4l2bufferpool.c:1042:gst_v4l2_buffer_pool_stop:<v4l2src0:pool:src> > > > > some buffers are still outstanding > > > > 0:00:03.744178296 501 0x10ec96c0 WARN bufferpool > > > > gstbufferpool.c:567:gst_buffer_pool_set_active:<v4l2src0:pool:src> > > > > stop failed > > > > Setting pipeline to NULL ... > > > > Total time: 0.013650 seconds > > > > Freeing pipeline ... > > > > > > > > > > > > I was hoping someone might have a suggestion as to what I might be missing. > > > > Ideally, I'd like to get two IMX290 cameras operational with one in > > > > 4-lane mode and one in 2-lane mode. > > > > > > > > Might anyone have any suggestions? According to the media-ctl > > > > --print-dot, the pipeline appears correct, but there is clearly > > > > something I am missing. > > > > > > > > thanks for any suggestions, > > > > > > > > adam > > > > > > -- > > > Regards, > > > Niklas Söderlund > > -- > Regards, > Niklas Söderlund