RV1126新增驱动IMX415 SENSOR,实现v4l2抓图

发布时间 2023-07-05 18:04:53作者: 阿风小子

RV1126新增驱动IMX415 SENSOR,实现v4l2抓图。

1:内核dts修改

 

&csi_dphy0 {

status = "okay";

ports {

#address-cells = <1>;

#size-cells = <0>;

port@0 {

reg = <0>;

#address-cells = <1>;

#size-cells = <0>;

mipi_in_ucam0: endpoint@1 {

reg = <1>;

remote-endpoint = <&ucam_out0>;

data-lanes = <1 2 3 4>;

};

};

port@1 {

reg = <1>;

#address-cells = <1>;

#size-cells = <0>;

csidphy0_out: endpoint@0 {

reg = <0>;

remote-endpoint = <&mipi_csi2_input>;

};

};

};

};

 

&i2c1 {

status = "okay";

clock-frequency = <400000>;

imx415: imx415@1a {

compatible = "sony,imx415";

reg = <0x1a>;

clocks = <&cru CLK_MIPICSI_OUT>;

clock-names = "xvclk";

power-domains = <&power RV1126_PD_VI>;

pinctrl-names = "rockchip,camera_default";

pinctrl-0 = <&mipicsi_clk0>;

avdd-supply = <&vcc3v3_sys>;

dovdd-supply = <&vcc_1v8>;

dvdd-supply = <&vcc_dvdd>;

/* reset is always pulled high in v10 */

reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;

rockchip,camera-module-index = <1>;

rockchip,camera-module-facing = "front";

rockchip,camera-module-name = "YT10092";

rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";

ir-cut = <&cam_ircut0>;

flash-leds = <&flash_ir>;

port {

ucam_out0: endpoint {

remote-endpoint = <&mipi_in_ucam0>;

data-lanes = <1 2 3 4>;

};

};

};

};

2:Makefile修改

obj-$(CONFIG_VIDEO_IMX415)+= imx415.o

 

3:Kconfig修改

config VIDEO_IMX415

4:驱动对应的宏开关打开

 

以上修改后,重新编译内核。重新总体编译。

 

5:单板启动注册成功

 

[root@RV1126_RV1109:/]

Media controllerAPI version 4.19.111

 

Media deviceinformation

------------------------

driver rkcif

model rkcif_mipi_lvds

serial

bus info

hw revision 0x0

driverversion 4.19.111

 

Device topology

- entity 1:stream_cif_mipi_id0 (1 pad, 4 links)

type Node subtype V4L flags 0

device node name /dev/video0

pad0: Sink

<-"rockchip-mipi-csi2":1 [ENABLED]

<-"rockchip-mipi-csi2":2 []

<-"rockchip-mipi-csi2":3 []

<-"rockchip-mipi-csi2":4 []

 

- entity 5:stream_cif_mipi_id1 (1 pad, 4 links)

type Node subtype V4L flags 0

device node name /dev/video1

pad0: Sink

<-"rockchip-mipi-csi2":1 []

<- "rockchip-mipi-csi2":2[ENABLED]

<-"rockchip-mipi-csi2":3 []

<-"rockchip-mipi-csi2":4 []

 

- entity 9:stream_cif_mipi_id2 (1 pad, 4 links)

type Node subtype V4L flags 0

device node name /dev/video2

pad0: Sink

<-"rockchip-mipi-csi2":1 []

<-"rockchip-mipi-csi2":2 []

<-"rockchip-mipi-csi2":3 [ENABLED]

<-"rockchip-mipi-csi2":4 []

 

- entity 13:stream_cif_mipi_id3 (1 pad, 4 links)

type Node subtype V4L flags 0

device node name /dev/video3

pad0: Sink

<-"rockchip-mipi-csi2":1 []

<-"rockchip-mipi-csi2":2 []

<-"rockchip-mipi-csi2":3 []

<-"rockchip-mipi-csi2":4 [ENABLED]

 

- entity 17:rockchip-mipi-csi2 (5 pads, 17 links)

type V4L2 subdev subtype Unknownflags 0

device node name /dev/v4l-subdev1

pad0: Sink

[fmt:SGBRG10_1X10/3864x2192field:none

crop.bounds:(12,16)/3840x2160

crop:(12,16)/3840x2160]

<-"rockchip-mipi-dphy-rx":1 [ENABLED]

pad1: Source

[fmt:SGBRG10_1X10/3864x2192field:none

crop.bounds:(12,16)/3840x2160

crop:(12,16)/3840x2160]

->"stream_cif_mipi_id0":0 [ENABLED]

->"stream_cif_mipi_id1":0 []

-> "stream_cif_mipi_id2":0 []

->"stream_cif_mipi_id3":0 []

pad2: Source

[fmt:SGBRG10_1X10/3864x2192field:none

crop.bounds:(12,16)/3840x2160

crop:(12,16)/3840x2160]

-> "stream_cif_mipi_id0":0 []

->"stream_cif_mipi_id1":0 [ENABLED]

->"stream_cif_mipi_id2":0 []

->"stream_cif_mipi_id3":0 []

pad3: Source

[fmt:SGBRG10_1X10/3864x2192field:none

crop.bounds:(12,16)/3840x2160

crop:(12,16)/3840x2160]

->"stream_cif_mipi_id0":0 []

->"stream_cif_mipi_id1":0 []

->"stream_cif_mipi_id2":0 [ENABLED]

-> "stream_cif_mipi_id3":0[]

pad4: Source

[fmt:SGBRG10_1X10/3864x2192field:none

crop.bounds:(12,16)/3840x2160

crop:(12,16)/3840x2160]

->"stream_cif_mipi_id0":0 []

-> "stream_cif_mipi_id1":0[]

->"stream_cif_mipi_id2":0 []

->"stream_cif_mipi_id3":0 [ENABLED]

 

- entity 23:rockchip-mipi-dphy-rx (2 pads, 2 links)

type V4L2 subdev subtype Unknownflags 0

device node name /dev/v4l-subdev2

pad0: Sink

[fmt:SGBRG10_1X10/3864x2192@10000/300000 field:none

crop.bounds:(12,16)/3840x2160]

<- "m01_f_imx4151-001a":0 [ENABLED]

pad1: Source

[fmt:SGBRG10_1X10/3864x2192@10000/300000field:none

crop.bounds:(12,16)/3840x2160]

->"rockchip-mipi-csi2":0 [ENABLED]

 

- entity 28:rkcif-mipi-luma (0 pad, 0 link)

type Node subtype V4L flags 0

device node name /dev/video4

 

- entity 31:m01_f_imx415 1-001a (1 pad, 1 link)

type V4L2 subdev subtype Sensorflags 0

device node name /dev/v4l-subdev3

pad0: Source

[fmt:SGBRG10_1X10/3864x2192@10000/300000 field:none

crop.bounds:(12,16)/3840x2160]

->"rockchip-mipi-dphy-rx":0 [ENABLED]

 

- entity 35:m01_f_ircut (0 pad, 0 link)

type V4L2 subdev subtype Lens flags1

device node name /dev/v4l-subdev4

 

 

[root@RV1126_RV1109:/]#

ioctl:VIDIOC_ENUM_FMT

Type: Video Capture Multiplanar

 

[0]: 'NV16' (Y/CbCr 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[1]: 'NV61' (Y/CrCb 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[2]: 'NV12' (Y/CbCr 4:2:0)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[3]: 'NV21' (Y/CrCb 4:2:0)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[4]: 'YUYV' (YUYV 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[5]: 'YVYU' (YVYU 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[6]: 'UYVY' (UYVY 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[7]: 'VYUY' (VYUY 4:2:2)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[8]: 'RGB3' (24-bit RGB 8-8-8)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[9]: 'RGBP' (16-bit RGB 5-6-5)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[10]: 'BGRH' (18-bit BGRX 6-6-6-14)

Size: Stepwise 64x64 - 3864x2192 withstep 8/8

[11]: 'RGGB' (8-bit Bayer RGRG/GBGB)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[12]: 'GRBG' (8-bit Bayer GRGR/BGBG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[13]: 'GBRG' (8-bit Bayer GBGB/RGRG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[14]: 'BA81' (8-bit Bayer BGBG/GRGR)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[15]: 'RG10' (10-bit Bayer RGRG/GBGB)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[16]: 'BA10' (10-bit Bayer GRGR/BGBG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[17]: 'GB10' (10-bit Bayer GBGB/RGRG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[18]: 'BG10' (10-bit Bayer BGBG/GRGR)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[19]: 'RG12' (12-bit Bayer RGRG/GBGB)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[20]: 'BA12' (12-bit Bayer GRGR/BGBG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[21]: 'GB12' (12-bit Bayer GBGB/RGRG)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[22]: 'BG12' (12-bit Bayer BGBG/GRGR)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[23]: 'BYR2' (16-bit Bayer BGBG/GRGR)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[24]: 'Y16 ' (16-bit Greyscale)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[25]: 'GREY' (8-bit Greyscale)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[26]: 'EBD8' (Embedded data 8-bit,compressed)

Size: Stepwise 64x64 -3864x2192 with step 8/8

[27]: 'SPD6' (Shield pix data 16-bit,compressed)

Size: Stepwise 64x64 -3864x2192 with step 8/8

 

 

6:v4l2抓图成功

 

[root@RV1126_RV1109:/]#v4l2-ctl -d /dev/video0 --set-fmt-video=width=3840,heigh

t=2160,pixelformat=SGBRG10_1X10\--stream-mmap=3 \--stream-skip=3 \--stream-to=/

tmp/cif888.out\--stream-count=1 \--stream-poll

[ 216.222320] rkcif_mipi_lvds: stream[0] startstreaming

[ 216.222446] rockchip-mipi-csi2ffb10000.mipi-csi2: stream on, src_sd: d2dfee3b, sd_name:rockchip-mipi-dphy-rx

[ 216.222457] rockchip-mipi-csi2ffb10000.mipi-csi2: stream ON

[ 216.222484] rockchip-mipi-dphy-rxff4b0000.csi-dphy: stream on:1

[ 216.222500] rockchip-mipi-dphy-rx:data_rate_mbps 892

[ 216.223557] rockchip-mipi-dphy-rxff4b0000.csi-dphy: stream on:1

<<<[ 216.473292] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.506625] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.539958] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.573304] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.606626] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.639971] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.673278] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.706639] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.739943] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.773291] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.806637] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.839973] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.873305] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.906639] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.939971] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

[ 216.973304] rkcif_mipi_lvds: not activebuffer, skip current frame, mipi/lvds stream[0]

<[ 216.987827] rkcif_mipi_lvds: stream[0] startstopping

[ 217.006837] rockchip-mipi-csi2ffb10000.mipi-csi2: stream off, src_sd: d2dfee3b, sd_name:rockchip-mipi-dphy-rx

[ 217.006906] rockchip-mipi-csi2ffb10000.mipi-csi2: stream OFF

[ 217.006944] rockchip-mipi-dphy-rxff4b0000.csi-dphy: stream on:0

[ 217.008102] rockchip-mipi-dphy-rxff4b0000.csi-dphy: stream on:0

[ 217.009920] rkcif_mipi_lvds: stream[0]stopping finished

 

7:抓图文件查看

[root@RV1126_RV1109:/tmp]#ls -l

total 16512

drwxr-xr-x 2 avahiavahi 40 Jan 1 00:00 avahi-autoipd

-rw-r--r-- 1root root 16588800 Jan 1 00:03 cif888.out

-rw-r--r-- 1root root 66024 Jan 1 00:00 cl_viv_vx_ext.h

drwxr-xr-x 2root root 60 Jan 1 00:00 dbus

-rw-r--r-- 1root root 0 Jan 1 00:00 dnsmasq.leases

---------- 1root root 6 Jan 1 00:00 loglevel

-rw-r--r-- 1root root 25687 Jan 1 00:04 messages

-rw-r--r-- 1root root 204896 Jan 1 00:03 messages.0

-rw-r--r-- 1root root 1349 Jan 1 00:00 mountall.log

drwxr-xr-x 7root root 180 Jan 1 00:00 nginx

-rw-r--r-- 1root root 55 Jan 1 00:00 resolv.conf

drwxr-xr-x 2root root 60 Jan 1 00:00 subsys

drwx------ 2root root 40 Jan 1 00:00 tmp.4soNzzu8dM