bootcmd=fatload mmc 1:1 0x63000000 sama7g5ek.itb; bootm 0x63000000#kernel_dtb#imx274The important part is adding the #imx274 after all the other overlays that U-boot is applying , at the bootm command. If the overlay was applied successfully, at boot time we will notice:
## Loading fdt from FIT Image at 63000000 ... Using 'imx274' configuration Trying 'fdt_isc_imx274' fdt subimage Description: Device Tree blob ISC IMX274 overlay Type: Flat Device Tree Compression: uncompressed Data Start: 0x6347cd18 Data Size: 2534 Bytes = 2.5 KiB Architecture: ARM Load Address: 0x61500000 Hash algo: crc32 Hash value: e5a3177c Hash algo: sha1 Hash value: 0400b15999df1192dd9289b77faf8a25c228290a Verifying Hash Integrity ... crc32+ sha1+ OK Loading fdt from 0x6347cd18 to 0x61500000 Booting using the fdt blob at 0x61000000 Loading Kernel Image Loading Device Tree to 7fb70000, end 7fb79f93 ... OK Starting kernel ...
Media controller API version 5.17.0 Media device information ------------------------ driver atmel_isc_commo model microchip,sama7g5-isc serial bus info platform:microchip-sama7g5-xisc hw revision 0x220 driver version 5.17.0 Device topology - entity 1: atmel_isc_scaler (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb crop.bounds:(0,0)/3840x2160 crop:(0,0)/3264x2160] <- "csi2dc":1 [ENABLED,IMMUTABLE] pad1: Source [fmt:SRGGB10_1X10/3264x2160 field:none colorspace:srgb] -> "atmel_isc_common":0 [ENABLED,IMMUTABLE] - entity 4: csi2dc (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb] <- "dw-csi.0":1 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb] -> "atmel_isc_scaler":0 [ENABLED,IMMUTABLE] - entity 7: dw-csi.0 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB10_1X10/3840x2160] <- "IMX274 1-001a":0 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/3840x2160] -> "csi2dc":0 [ENABLED] - entity 12: IMX274 1-001a (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source [fmt:SRGGB10_1X10/3840x2160@9/87 field:none crop.bounds:(0,0)/3840x2160 crop:(0,0)/3840x2160 compose.bounds:(0,0)/3840x2160 compose:(0,0)/3840x2160] -> "dw-csi.0":0 [ENABLED] - entity 24: atmel_isc_common (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "atmel_isc_scaler":1 [ENABLED,IMMUTABLE]The topology can be also represented by a graph:
media-ctl -d /dev/media0 --set-v4l2 '"IMX274 1-001a":0[fmt:SRGGB10_1X10/1280x540@1/30]' media-ctl -d /dev/media0 --set-v4l2 '"dw-csi.0":0[fmt:SRGGB10_1X10/1280x540]' media-ctl -d /dev/media0 --set-v4l2 '"csi2dc":0[fmt:SRGGB10_1X10/1280x540]' media-ctl -d /dev/media0 --set-v4l2 '"atmel_isc_scaler":0[fmt:SRGGB10_1X10/1280x540]' v4l2-ctl -v pixelformat=YUYV,height=540,width=1280 fswebcam -p YUYV -r 1280x540 -S 20 tinyYUYV.pngPay attention to the IMX274 requested frame rate. IMX274 trims the frame size if the requested frame rate is too high, thus handing out incomplete frames.
media-ctl -d /dev/media0 --set-v4l2 '"IMX274 1-001a":0[fmt:SRGGB10_1X10/1280x720@1/20]' media-ctl -d /dev/media0 --set-v4l2 '"dw-csi.0":0[fmt:SRGGB10_1X10/1280x720]' media-ctl -d /dev/media0 --set-v4l2 '"csi2dc":0[fmt:SRGGB10_1X10/1280x720]' media-ctl -d /dev/media0 --set-v4l2 '"atmel_isc_scaler":0[fmt:SRGGB10_1X10/1280x720]' v4l2-ctl -v pixelformat=YUYV,height=720,width=1280 fswebcam -p YUYV -r 1280x720 -S 20 smallYUYV.pngPay attention to the IMX274 requested frame rate. IMX274 trims the frame size if the requested frame rate is too high, thus handing out incomplete frames.
media-ctl -d /dev/media0 --set-v4l2 '"IMX274 1-001a":0[fmt:SRGGB10_1X10/1920x1080@9/171]' media-ctl -d /dev/media0 --set-v4l2 '"dw-csi.0":0[fmt:SRGGB10_1X10/1920x1080]' media-ctl -d /dev/media0 --set-v4l2 '"csi2dc":0[fmt:SRGGB10_1X10/1920x1080]' media-ctl -d /dev/media0 --set-v4l2 '"atmel_isc_scaler":0[fmt:SRGGB10_1X10/1920x1080]' v4l2-ctl -v pixelformat=YUYV,height=1080,width=1920 fswebcam -p YUYV -r 1920x1080 -S 20 fullYUYV.pngPay attention to the IMX274 requested frame rate. IMX274 trims the frame size if the requested frame rate is too high, thus handing out incomplete frames. The computed 9/171 is the maximum possible before frame is cropped.
media-ctl -d /dev/media0 --set-v4l2 '"IMX274 1-001a":0[fmt:SRGGB10_1X10/3840x2160@9/87]' media-ctl -d /dev/media0 --set-v4l2 '"dw-csi.0":0[fmt:SRGGB10_1X10/3840x2160]' media-ctl -d /dev/media0 --set-v4l2 '"csi2dc":0[fmt:SRGGB10_1X10/3840x2160]' media-ctl -d /dev/media0 --set-v4l2 '"atmel_isc_scaler":0[fmt:SRGGB10_1X10/3264x2160]' v4l2-ctl -v pixelformat=YUYV,height=2160,width=3264 fswebcam -p YUYV -r 3264x2160 -S 20 hugeYUYV.pngPay attention to the IMX274 requested frame rate. IMX274 trims the frame size if the requested frame rate is too high, thus handing out incomplete frames. The computed 9/87 is the maximum possible before frame is cropped. The sensor has a longer width than the maximum supported by the XISC. Thus, the frame is cropped by the atmel_isc_scaler to 3264 width maximum The resulting resolution is 3264x2160, less than 8 Mpix, because of the width limitation.
v4l2-ctl -L -d /dev/v4l-subdev3 User Controls exposure 0x00980911 (int) : min=14 max=50000 step=1 default=50000 value=14 gain 0x00980913 (int) : min=256 max=46088 step=1 default=5120 value=5120 vertical_flip 0x00980915 (bool) : default=0 value=0 Image Processing Controls test_pattern 0x009f0903 (menu) : min=0 max=12 default=0 value=0 (Disabled) 0: Disabled 1: All 000h Pattern 2: All FFFh Pattern 3: All 555h Pattern 4: All AAAh Pattern 5: Vertical Stripe (555h / AAAh) 6: Vertical Stripe (AAAh / 555h) 7: Vertical Stripe (000h / 555h) 8: Vertical Stripe (555h / 000h) 9: Vertical Stripe (000h / FFFh) 10: Vertical Stripe (FFFh / 000h) 11: Vertical Color Bars 12: Horizontal Color Bars
v4l2-ctl -d /dev/v4l-subdev3 --set-ctrl=test_pattern=11
# ls -la video-capture-at91/imx274/ total 40 drwxr-xr-x 2 root root 4096 Feb 17 2022 . drwxr-xr-x 4 root root 4096 Feb 16 2022 .. -rwxr-xr-x 1 root root 375 Feb 16 2022 1280x540.sh -rwxr-xr-x 1 root root 375 Feb 16 2022 1280x720.sh -rwxr-xr-x 1 root root 381 Feb 16 2022 1920x1080.sh -rwxr-xr-x 1 root root 380 Feb 16 2022 3264x2160.sh -rwxr-xr-x 1 root root 824 Feb 16 2022 fswebcam_1280x540.sh -rwxr-xr-x 1 root root 832 Feb 16 2022 fswebcam_1280x720.sh -rwxr-xr-x 1 root root 840 Feb 16 2022 fswebcam_1920x1080.sh -rwxr-xr-x 1 root root 832 Feb 16 2022 fswebcam_3264x2160.sh #Using the configuration scripts, you can have the media controller pipeline ready:
# ./video-capture-at91/imx274/1280x540.sh Ready to capture at 1280x540 # media-ctl -p Media controller API version 5.17.0 Media device information ------------------------ driver atmel_isc_commo model microchip,sama7g5-isc serial bus info platform:microchip-sama7g5-xisc hw revision 0x220 driver version 5.17.0 Device topology - entity 1: atmel_isc_scaler (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SRGGB10_1X10/1280x540 field:none colorspace:srgb crop.bounds:(0,0)/1280x540 crop:(0,0)/1280x540] <- "csi2dc":1 [ENABLED,IMMUTABLE] pad1: Source [fmt:SRGGB10_1X10/1280x540 field:none colorspace:srgb] -> "atmel_isc_common":0 [ENABLED,IMMUTABLE] - entity 4: csi2dc (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SRGGB10_1X10/1280x540 field:none colorspace:srgb] <- "dw-csi.0":1 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/1280x540 field:none colorspace:srgb] -> "atmel_isc_scaler":0 [ENABLED,IMMUTABLE] - entity 7: dw-csi.0 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB10_1X10/1280x540] <- "IMX274 1-001a":0 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/1280x540] -> "csi2dc":0 [ENABLED] - entity 12: IMX274 1-001a (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source [fmt:SRGGB10_1X10/1280x540@1/30 field:none crop.bounds:(0,0)/3840x2160 crop:(0,0)/3840x2160 compose.bounds:(0,0)/3840x2160 compose:(0,0)/1280x540] -> "dw-csi.0":0 [ENABLED] - entity 24: atmel_isc_common (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "atmel_isc_scaler":1 [ENABLED,IMMUTABLE] # ./video-capture-at91/imx274/3264x2160.sh Ready to capture at 3264x2160 # media-ctl -p Media controller API version 5.17.0 Media device information ------------------------ driver atmel_isc_commo model microchip,sama7g5-isc serial bus info platform:microchip-sama7g5-xisc hw revision 0x220 driver version 5.17.0 Device topology - entity 1: atmel_isc_scaler (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb crop.bounds:(0,0)/3840x2160 crop:(0,0)/3264x2160] <- "csi2dc":1 [ENABLED,IMMUTABLE] pad1: Source [fmt:SRGGB10_1X10/3264x2160 field:none colorspace:srgb] -> "atmel_isc_common":0 [ENABLED,IMMUTABLE] - entity 4: csi2dc (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb] <- "dw-csi.0":1 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/3840x2160 field:none colorspace:srgb] -> "atmel_isc_scaler":0 [ENABLED,IMMUTABLE] - entity 7: dw-csi.0 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB10_1X10/3840x2160] <- "IMX274 1-001a":0 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/3840x2160] -> "csi2dc":0 [ENABLED] - entity 12: IMX274 1-001a (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source [fmt:SRGGB10_1X10/3840x2160@9/87 field:none crop.bounds:(0,0)/3840x2160 crop:(0,0)/3840x2160 compose.bounds:(0,0)/3840x2160 compose:(0,0)/3840x2160] -> "dw-csi.0":0 [ENABLED] - entity 24: atmel_isc_common (1 pad, 1 link) type Node subtype V4L flags 1 device node name /dev/video0 pad0: Sink <- "atmel_isc_scaler":1 [ENABLED,IMMUTABLE] #One can then use the fswebcam_*.sh scripts to perform basic captures using fswebcam tool. The scripts reside in a repository on our github
WebFaqBaseForm | |
---|---|
Boards | Sama7g5-ek |
Components | linux-5.15-mchp, linux-6.1-mchp |
Summary | using Sony IMX274 sensor with sama7g5 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
Microchip and others, are registered trademarks or trademarks of Microchip Technology Inc. and its subsidiaries.
Arm® and others are registered trademarks or trademarks of Arm Limited (or its affiliates). Other terms and product names may be trademarks of others.
Ideas, requests, contributions ? Connect to LinksToCommunities page.