Message ID | 20220208155027.891055-1-jeanmichel.hautbois@ideasonboard.com (mailing list archive) |
---|---|
Headers | show |
Series | Add support for BCM2835 camera interface (unicam) | expand |
Hi Jean-Michel, Am 08.02.22 um 16:50 schrieb Jean-Michel Hautbois: > Hello ! > > ... > > In order to properly configure the media pipeline, it is needed to call > the usual ioctls, and configure routing in order to send the embedded > data from the sensor to the "unicam-embedded" device node : > > ``` > media=0 > media-ctl -d${media} -l "'imx219 2-0010':0->'unicam-subdev':0 [1]" > media-ctl -d${media} -l "'unicam-subdev':1->'unicam-image':0 [1]" > media-ctl -d${media} -v -R "'unicam-subdev' [0/0->1/0[1],0/1->2/0[1]]" > media-ctl -d${media} -V "'imx219 2-0010':0/0 [fmt:SRGGB10_1X10/3280x2464 field:none]" > v4l2-ctl -d0 --set-fmt-video width=3280,height=2464,pixelformat='pRAA',field=none > media-ctl -d${media} -v -V "'imx219 2-0010':0/1 [fmt:METADATA_8/16384x1 field:none]" > media-ctl -d${media} -p > ``` i tried to test the unicam driver on a Raspberry Pi 4 with the imx219 camera (based on 5.17-rc4). The unicam & imx219 driver probes and /dev/video0 is created. If a execute the first media-ctl command, it complains with invalid argument 22. Is there a more fool-proof variant to configure this (a script or something else)? I never used the unicam driver before. Here is the output of $ mediactl -d0 -p Media controller API version 5.17.0 Media device information ------------------------ driver unicam model unicam serial bus info platform:fe801000.csi hw revision 0x0 driver version 5.17.0 Device topology - entity 1: unicam-subdev (3 pads, 3 links, 2 routes) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 routes: 0/0 -> 1/0 [ACTIVE] 0/1 -> 2/0 [ACTIVE] pad0: Sink [stream:0 fmt:unknown/0x0] [stream:1 fmt:unknown/0x0] <- "imx219 5-0010":0 [ENABLED,IMMUTABLE] pad1: Source [stream:0 fmt:unknown/0x0] -> "unicam-image":0 [ENABLED,IMMUTABLE] pad2: Source [stream:0 fmt:unknown/0x0] -> "unicam-embedded":0 [ENABLED,IMMUTABLE] - entity 5: imx219 5-0010 (1 pad, 1 link, 2 routes) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev1 routes: 0/0 -> 0/0 [ACTIVE, IMMUTABLE, SOURCE] 0/0 -> 0/1 [ACTIVE, SOURCE] pad0: Source [stream:0 fmt:SRGGB10_1X10/3280x2464 field:none colorspace:raw crop.bounds:(8,8)/3280x2464 crop:(8,8)/3280x2464] [stream:1 fmt:METADATA_8/16384x1 field:none crop.bounds:(8,8)/3280x2464 crop:(8,8)/3280x2464] -> "unicam-subdev":0 [ENABLED,IMMUTABLE] - entity 9: unicam-image (1 pad, 1 link, 0 route) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "unicam-subdev":1 [ENABLED,IMMUTABLE] - entity 15: unicam-embedded (1 pad, 1 link, 0 route) type Node subtype V4L flags 0 device node name /dev/video1 pad0: Sink <- "unicam-subdev":2 [ENABLED,IMMUTABLE]
Hi Stefan, On 16/02/2022 21:57, Stefan Wahren wrote: > Hi Jean-Michel, > > Am 08.02.22 um 16:50 schrieb Jean-Michel Hautbois: >> Hello ! >> >> ... >> >> In order to properly configure the media pipeline, it is needed to call >> the usual ioctls, and configure routing in order to send the embedded >> data from the sensor to the "unicam-embedded" device node : >> >> ``` >> media=0 >> media-ctl -d${media} -l "'imx219 2-0010':0->'unicam-subdev':0 [1]" >> media-ctl -d${media} -l "'unicam-subdev':1->'unicam-image':0 [1]" >> media-ctl -d${media} -v -R "'unicam-subdev' [0/0->1/0[1],0/1->2/0[1]]" >> media-ctl -d${media} -V "'imx219 2-0010':0/0 [fmt:SRGGB10_1X10/3280x2464 field:none]" >> v4l2-ctl -d0 --set-fmt-video width=3280,height=2464,pixelformat='pRAA',field=none >> media-ctl -d${media} -v -V "'imx219 2-0010':0/1 [fmt:METADATA_8/16384x1 field:none]" >> media-ctl -d${media} -p >> ``` > > i tried to test the unicam driver on a Raspberry Pi 4 with the imx219 > camera (based on 5.17-rc4). The unicam & imx219 driver probes and > /dev/video0 is created. > > If a execute the first media-ctl command, it complains with invalid > argument 22. Is there a more fool-proof variant to configure this (a > script or something else)? I never used the unicam driver before. > > Here is the output of > > $ mediactl -d0 -p > Based on your output, I suppose the issue is the naming of the imx219 media entity ('imx219 2-0010' vs 'imx219 5-0010'). You could add a '-v' in the line to help you I suppose. A more bullet-proof version of the commands is certainly doable, not sure how though as I would not like to rewrite a libcamera-like command ;-). > Media controller API version 5.17.0 > > Media device information > ------------------------ > driver unicam > model unicam > serial > bus info platform:fe801000.csi > hw revision 0x0 > driver version 5.17.0 > > Device topology > - entity 1: unicam-subdev (3 pads, 3 links, 2 routes) > type V4L2 subdev subtype Unknown flags 0 > device node name /dev/v4l-subdev0 > routes: > 0/0 -> 1/0 [ACTIVE] > 0/1 -> 2/0 [ACTIVE] > pad0: Sink > [stream:0 fmt:unknown/0x0] > [stream:1 fmt:unknown/0x0] > <- "imx219 5-0010":0 [ENABLED,IMMUTABLE] > pad1: Source > [stream:0 fmt:unknown/0x0] > -> "unicam-image":0 [ENABLED,IMMUTABLE] > pad2: Source > [stream:0 fmt:unknown/0x0] > -> "unicam-embedded":0 [ENABLED,IMMUTABLE] > > - entity 5: imx219 5-0010 (1 pad, 1 link, 2 routes) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev1 > routes: > 0/0 -> 0/0 [ACTIVE, IMMUTABLE, SOURCE] > 0/0 -> 0/1 [ACTIVE, SOURCE] > pad0: Source > [stream:0 fmt:SRGGB10_1X10/3280x2464 field:none colorspace:raw > crop.bounds:(8,8)/3280x2464 > crop:(8,8)/3280x2464] > [stream:1 fmt:METADATA_8/16384x1 field:none > crop.bounds:(8,8)/3280x2464 > crop:(8,8)/3280x2464] > -> "unicam-subdev":0 [ENABLED,IMMUTABLE] > > - entity 9: unicam-image (1 pad, 1 link, 0 route) > type Node subtype V4L flags 1 > device node name /dev/video0 > pad0: Sink > <- "unicam-subdev":1 [ENABLED,IMMUTABLE] > > - entity 15: unicam-embedded (1 pad, 1 link, 0 route) > type Node subtype V4L flags 0 > device node name /dev/video1 > pad0: Sink > <- "unicam-subdev":2 [ENABLED,IMMUTABLE] >
Hi Jean-Michel, Am 20.02.22 um 15:30 schrieb Jean-Michel Hautbois: > Hi Stefan, > > On 16/02/2022 21:57, Stefan Wahren wrote: >> Hi Jean-Michel, >> >> Am 08.02.22 um 16:50 schrieb Jean-Michel Hautbois: >>> Hello ! >>> >>> ... >>> >>> In order to properly configure the media pipeline, it is needed to call >>> the usual ioctls, and configure routing in order to send the embedded >>> data from the sensor to the "unicam-embedded" device node : >>> >>> ``` >>> media=0 >>> media-ctl -d${media} -l "'imx219 2-0010':0->'unicam-subdev':0 [1]" >>> media-ctl -d${media} -l "'unicam-subdev':1->'unicam-image':0 [1]" >>> media-ctl -d${media} -v -R "'unicam-subdev' [0/0->1/0[1],0/1->2/0[1]]" >>> media-ctl -d${media} -V "'imx219 2-0010':0/0 >>> [fmt:SRGGB10_1X10/3280x2464 field:none]" >>> v4l2-ctl -d0 --set-fmt-video >>> width=3280,height=2464,pixelformat='pRAA',field=none >>> media-ctl -d${media} -v -V "'imx219 2-0010':0/1 >>> [fmt:METADATA_8/16384x1 field:none]" >>> media-ctl -d${media} -p >>> ``` >> >> i tried to test the unicam driver on a Raspberry Pi 4 with the imx219 >> camera (based on 5.17-rc4). The unicam & imx219 driver probes and >> /dev/video0 is created. >> >> If a execute the first media-ctl command, it complains with invalid >> argument 22. Is there a more fool-proof variant to configure this (a >> script or something else)? I never used the unicam driver before. >> >> Here is the output of >> >> $ mediactl -d0 -p >> > > Based on your output, I suppose the issue is the naming of the imx219 > media entity ('imx219 2-0010' vs 'imx219 5-0010'). > You could add a '-v' in the line to help you I suppose. > > A more bullet-proof version of the commands is certainly doable, not > sure how though as I would not like to rewrite a libcamera-like > command ;-). Today i had a little bit time and manage to get the commands working. After running the yavta command, the kernel put the following: [ 405.908674] cma: cma_alloc: linux,cma: alloc failed, req-size: 2484 pages, ret: -12 [ 405.908695] unicam fe801000.csi: dma alloc of size 10174464 failed As per default the CMA size with mainline DTB is 64 MB. After that i increase the value to 256 MB and the issue disappeared. Maybe this is something which could be integrated into the overlay. But at least a note about this in the cover letter of the next version of this series would be nice. Best regards