LUCKFOX_driver
约 4206 字大约 14 分钟
2026-08-30
LUCKFOX 驱动开发
Luckfox Pico Mini B M
开发环境构建
基于docker的开发环境
(base) hao@hao-CVN-B760I-A-FROZEN-WIFI:/media/hao/WorkSpace/EventCamDev/build_luckfox_docker/compile$ sudo docker run -it --rm --name luckdocker -v $(pwd):/app luckfox /bin/bash默认密码
# Buildroot
Login: root
Password: luckfox
Static IP: 172.32.0.93
# Ubuntu
Login: pico
Password: luckfox
Static IP: 172.32.0.70在 Linux 环境下进行烧录(x86_64 平台)
upgrade_tool 是一款专为 Linux 设计的工具,用于烧录原厂固件、RK 固件和分区镜像到 eMMC。它是由 Rockchip 提供的闭源命令行工具。该工具仅支持使用 SPI NAND 闪存进行烧录。
SPI 烧录
cd /media/hao/WorkSpace/EventCamDev/build_luckfox_docker/upgrade_tool_v2.17/upgrade_tool_v2.17_for_linux
./upgrade_tols -la /media/hao/WorkSpace/EventCamDev/build_luckfox_docker/compile
ol uf ../../compile/luckfox-pico/output/image/update.img驱动移植
设备树修改
完成
rv1103-luckfox-pico-ipc.dtsi
修改makefile
.MK文件
BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk
同级有一个 overlay
没有找到sc3336 dtsi 使用的地方
- drv_sc3336.c
- drv_sc3336p.c
.rv1103g-luckfox-pico-mini.dtb.dts.tmp 似乎只有一个 dts ,被自动汇总了
BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk 加载了
export RK_KERNEL_DTS=rv1103g-luckfox-pico-mini.dtsrv1103g-luckfox-pico-mini.dts 包含了 rv1103-luckfox-pico-ipc.dtsi
ISP 部分
只需要摘出来
对于一般的相机 需要提供一个IQ(Image Quality)file ,CAC calibration bin files(色差校准二进制文件)
- CAC(Chromatic Aberration Correction)
hpmcu
不知道 hpmcu 对我读取有什么影响
假设我们不考虑 hpmcu
相机驱动移植
rv1106使用的是 5.10的kernel,
编译驱动的指令是
rv1106 和rv1103 几乎共用设备树
minib mipi接口的I2c是 i2c4: i2c@ff470000
[root@luckfox device-tree]# cd i2c@ff470000/
[root@luckfox i2c@ff470000]# ls
#address-cells clock-frequency clocks interrupts pinctrl-0 reg sc4336@30 status
#size-cells clock-names compatible name pinctrl-names sc3336@30 sc530ai@30我们在
sysdrv/source/kernel/drivers/media/i2c
增加 genx320的驱动
/media/hao/WorkSpace/EventCamDev/build_luckfox_docker/compile/luckfox-pico
pi5
:/media/hao/WorkSpace/raspberryPi_manual_build/linux/drivers/media/i2c$
局部修改
# 修改驱动为了生成 ko文件 ,需要
./build.sh driver
# 更改了设备树必须
./build.sh kernel
# build driver 生成的ko文件最终需要存储在 oem文件夹中, 更新到oem 文件夹需要
./build.sh firmware
# 想升级固件必须
./build.sh updateimg
# 实在不知道怎么办
./build.sh all驱动需要手动加载
没有加载其他设备的原因是 没有ko
在 Buildroot 或一些嵌入式系统中,你可能看不到 modprobe,可能因为:
- 模块用
insmod手动加载; - 模块被静态编译进内核;
- 系统太精简,没有引入
kmod包。
rv1103提供了 一个输出时钟的引脚,在i2c的驱动中控制其开始和结束
进入系统
ssh root@172.32.0.93
# Buildroot Password: luckfox
ssh-keygen -f "/home/hao/.ssh/known_hosts" -R "172.32.0.93"- entity 63: genx320 4-003c (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev2 pad0: Source [fmt:unknown/320x320 field:none colorspace:raw xfer:none] -> "rockchip-csi2-dphy0":0 [ENABLED]
读到了
这是一个好消息
mipi驱动的位置
查找生成的设备树.rv1103g-luckfox-pico-mini.dtb.dts.tmp
寻找和Mipi 0有关的设备树
csi2_dphy0: csi2-dphy0 {
compatible = "rockchip,rv1106-csi2-dphy";
rockchip,hw = <&csi2_dphy_hw>;
status = "disabled";
};
mipi0_csi2: mipi0-csi2 {
compatible = "rockchip,rv1106-mipi-csi2";
rockchip,hw = <&mipi0_csi2_hw>, <&mipi1_csi2_hw>;
status = "disabled";
};
rkcif_mipi_lvds: rkcif-mipi-lvds {
compatible = "rockchip,rkcif-mipi-lvds";
rockchip,hw = <&rkcif>;
status = "disabled";
};
rkcif_mipi_lvds_sditf: rkcif-mipi-lvds-sditf {
compatible = "rockchip,rkcif-sditf";
rockchip,cif = <&rkcif_mipi_lvds>;
status = "disabled";
};
rkcif_mipi_lvds1: rkcif-mipi-lvds1 {
compatible = "rockchip,rkcif-mipi-lvds";
rockchip,hw = <&rkcif>;
status = "disabled";
};
mipi0_csi2_hw: mipi-csi2-hw@ffa20000 {
compatible = "rockchip,rv1106-mipi-csi2-hw";
reg = <0xffa20000 0x10000>;
reg-names = "csihost_regs";
interrupts = <0 99 4>,
<0 100 4>;
interrupt-names = "csi-intr1", "csi-intr2";
clocks = <&cru 221>, <&cru 222>;
clock-names = "pclk_csi2host", "clk_rxbyte_hs";
resets = <&cru 327700>;
reset-names = "srst_csihost_p";
status = "okay";
};rockchip,rv1106-mipi-csi2-hw → mipi-csi2.h
给内核打patch
v4l2-utils 在 media/libv4l 中 ,可以看看patch如何生效
其他
media-ctl --known-mbus-fmts对于 buildroot中的package 我还是需要删掉已经下载好的package ,才能重新编译
如何制作patch
对于一个没有通过git 管理的仓库
git init
git add .
git commit -m "original"
nano somefile.c # 再次修改
git diff > ~/v4l-utils-feature.patch对于 buildroot 只要在 buildroot-XXXXXX/package/<pkg-name>/ 下添加 .patch文件,就会自动生效
尝试设置
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":1 -> "rockchip-mipi-csi2":0[1]' # 启动 link
media-ctl -d /dev/media0 -V "'stream_cif_mipi_id0':0[fmt:PSEE_EVT21/320x320]"
# close link
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":1 -> "stream_cif_mipi_id0":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":2 -> "stream_cif_mipi_id1":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":3 -> "stream_cif_mipi_id2":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":4 -> "stream_cif_mipi_id3":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":5 -> "rkcif_scale_ch0":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":6 -> "rkcif_scale_ch1":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":7 -> "rkcif_scale_ch2":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":8 -> "rkcif_scale_ch3":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":9 -> "rkcif_tools_id0":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":10 -> "rkcif_tools_id1":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":11 -> "rkcif_tools_id2":0[0]'
media-ctl -d /dev/media0 -l '"rockchip-mipi-csi2":1 -> "stream_cif_mipi_id0":0[1]'- Mipi-csi.c
- cif/dev.c rkcif stream_cif
- genx320.c
ENOIOCTLCMD 515 指没有 ioctl cmd
[ 417.359069] stream_cif_mipi_id0: open video, entity use_count 3
[ 417.359079] rkcif_fh_open, ret 0
[ 417.366729] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 972 pages, ret: -12
[ 417.366776] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[ 417.369039] rkcif-mipi-lvds: stream[0] start streaming
[ 417.511792] rkcif-mipi-lvds: stream[0] start stopping, total mode 0x3, cur 0x1
[ 417.574547] rkcif-mipi-lvds: stream[0] stopping finished, dma_en 0x0
[ 417.580941] stream_cif_mipi_id0: close video, entity use_count 2
[ 417.580968] rkcif_fh_release, ret 0以上是正常的sc3336
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=320,height=320,pixelformat=PSE2
v4l2-ctl --device=/dev/video0 --stream-mmap --stream-count=1 --stream-to=frame.raw 74.989063] rkcif-mipi-lvds: remote sensor mbus code not supported
[ 74.995257] 8<--- cut here ---
[ 74.998312] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 75.006431] pgd = 81ddb24e
[ 75.009136] [00000000] *pgd=00000000
[ 75.012714] Internal error: Oops - BUG: 5 [#2] THUMB2
[ 75.017765] Modules linked in: phy_rockchip_csi2_dphy phy_rockchip_csi2_dphy_hw video_rkisp video_rkcif genx320_driver rk_dvbm [last unloaded: mis5001]
[ 75.031338] CPU: 0 PID: 621 Comm: v4l2-ctl Tainted: G D 5.10.160 #3
[ 75.038894] Hardware name: Rockchip (Device Tree)
[ 75.043733] PC is at rkcif_output_fmt_check+0xc/0x2a4 [video_rkcif]
[ 75.050041] LR is at rkcif_enum_fmt_vid_cap_mplane+0x85/0xd8 [video_rkcif]
[ 75.056912] pc : [<af820a2c>] lr : [<af824a41>] psr: 00000033
[ 75.063170] sp : b1a53d98 ip : 00000000 fp : b16418a0
[ 75.068389] r10: af835fdc r9 : 0000001c r8 : 00000000
[ 75.073611] r7 : af835c3c r6 : b16503f8 r5 : b1650010 r4 : 00000000
[ 75.080133] r3 : 00000000 r2 : 00000280 r1 : af835fdc r0 : b16503f8
[ 75.086657] Flags: nzcv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment user
[ 75.093961] Control: 50c53c7d Table: 01a44059 DAC: 00000055
[ 75.099702] Process v4l2-ctl (pid: 621, stack limit = 0x4f337e32)
[ 75.105794] Stack: (0xb1a53d98 to 0xb1a54000)
[ 75.110150] 3d80: b1650010 b1a53e8c
[ 75.118325] 3da0: b16503f8 b16418a0 af8364b4 00000001 b1a53e8c af824a41 00000000 00000000
[ 75.126499] 3dc0: 00000280 000001e0 b1a64180 00000000 b1a53e8c b16418a0 af8364b4 b16505d0
[ 75.134672] 3de0: b041a350 b02cd5d1 b1a53e8c 00000040 00000003 b1a53e8c 00000040 00000000
[ 75.142846] 3e00: b16505d0 00000000 b02cd537 c0405602 b16505c4 b02cf63f b13b5a54 2af36d2e
[ 75.151020] 3e20: b0701b80 b1a53e8c af8364b4 b16418a0 00000000 b1a64180 b0701b80 00000000
[ 75.159194] 3e40: 00000000 00000000 b1648900 b00734cd b02cfc73 00000000 c0405602 b02cf4a5
[ 75.167367] 3e60: 00000000 00000000 b1a53e8c 00000000 c0405602 b02cfd87 00000000 ae9c43e4
[ 75.175540] 3e80: b1a64180 00000000 00000000 00000000 00000009 00000000 00000000 00000000
[ 75.183712] 3ea0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 75.191886] 3ec0: 00000000 00000000 00000000 b13b9478 00000000 00000000 b1a7d1c0 0000001f
[ 75.200059] 3ee0: 00000274 b1a653c0 b1a7d1c0 00000010 00000274 b1a7d200 00000000 b006122d
[ 75.208234] 3f00: 000a801d b0fd9770 b0b9fc10 2af36d2e 01100cca b15359c0 c0405602 ae9c43e4
[ 75.216407] 3f20: b1a64180 00000003 b1a52000 b1a64180 00000000 b0081541 00002000 b0081b2b
[ 75.224581] 3f40: 00000875 0000018f b1a53fb0 b1a653c0 004c13b8 b1a7d1c0 00000017 b1a53fb0
[ 75.232755] 3f60: b000fa11 00000017 b05f9078 004c13b8 b1a53fb0 50c53c7d ae9c45d0 ae9c45e8
[ 75.240930] 3f80: 00000000 ae9c43e4 ae9c43e4 00000003 00000036 b0008424 b1a52000 00000036
[ 75.249104] 3fa0: 00000000 b0008201 ae9c43e4 ae9c43e4 00000003 c0405602 ae9c43e4 00000000
[ 75.257277] 3fc0: ae9c43e4 ae9c43e4 00000003 00000036 a6fd2ec4 00000001 0053ad60 00000000
[ 75.265451] 3fe0: 0052ede4 ae9c43b8 004bab64 a6d45558 60000010 00000003 00000000 00000000
[ 75.273732] [<af820a2c>] (rkcif_output_fmt_check [video_rkcif]) from [<af824a41>] (rkcif_enum_fmt_vid_cap_mplane+0x85/0xd8 [video_rkcif])
[ 75.286117] [<af824a41>] (rkcif_enum_fmt_vid_cap_mplane [video_rkcif]) from [<b02cd5d1>] (v4l_enum_fmt+0x9b/0x14d2)
[ 75.296554] [<b02cd5d1>] (v4l_enum_fmt) from [<b02cf63f>] (__video_do_ioctl+0x19b/0x278)
[ 75.304647] [<b02cf63f>] (__video_do_ioctl) from [<b02cfd87>] (video_usercopy+0x173/0x258)
[ 75.312912] [<b02cfd87>] (video_usercopy) from [<b0081541>] (vfs_ioctl+0x11/0x1c)
[ 75.320394] [<b0081541>] (vfs_ioctl) from [<b0081b2b>] (sys_ioctl+0x73/0x47c)
[ 75.327527] [<b0081b2b>] (sys_ioctl) from [<b0008201>] (ret_fast_syscall+0x1/0x58)
[ 75.335084] Exception stack(0xb1a53fa8 to 0xb1a53ff0)
[ 75.340138] 3fa0: ae9c43e4 ae9c43e4 00000003 c0405602 ae9c43e4 00000000
[ 75.348312] 3fc0: ae9c43e4 ae9c43e4 00000003 00000036 a6fd2ec4 00000001 0053ad60 00000000
[ 75.356483] 3fe0: 0052ede4 ae9c43b8 004bab64 a6d45558
[ 75.361540] Code: f8d0 3588 7804 6845 (681a) f243
[ 75.366402] ---[ end trace 2bc91cb93f65103b ]---增加了一些 格式
[ 97.476499] stream_cif_mipi_id0: open video, entity use_count 1
[ 97.476512] rkcif_fh_open, ret 0
[ 97.482883] 8<--- cut here ---
[ 97.502467] Unable to handle kernel NULL pointer dereference at virtual address 00000015
[ 97.510583] pgd = a5bb5a52
[ 97.513287] [00000015] *pgd=00000000
[ 97.516875] Internal error: Oops - BUG: 5 [#1] THUMB2
[ 97.521925] Modules linked in: rve rockit(O) rknpu mpp_vcodec(O) rga3 phy_rockchip_csi2_dphy phy_rockchip_csi2_dphy_hw video_rkisp video_rkcif genx320_driver rk_dvbm [last unloaded: mis5001]
[ 97.538896] CPU: 0 PID: 726 Comm: v4l2-ctl Tainted: G O 5.10.160 #3
[ 97.546462] Hardware name: Rockchip (Device Tree)
[ 97.551294] PC is at rkcif_queue_setup+0x1c/0xcc [video_rkcif]
[ 97.557140] LR is at vb2_core_reqbufs+0x169/0x22c
[ 97.561844] pc : [<af820ce0>] lr : [<b02dbc01>] psr: a0000033
[ 97.568112] sp : b1103d60 ip : b1650460 fp : b1650984
[ 97.573330] r10: b1103db8 r9 : b1650400 r8 : b1103db0
[ 97.578552] r7 : b1650010 r6 : 00000001 r5 : af820cc5 r4 : b16503f8
[ 97.585073] r3 : 00000000 r2 : b1103db4 r1 : af835d00 r0 : b1650400
[ 97.591598] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment user
[ 97.598901] Control: 50c53c7d Table: 01a44059 DAC: 00000055
[ 97.604643] Process v4l2-ctl (pid: 726, stack limit = 0x75f0bbf1)
[ 97.610734] Stack: (0xb1103d60 to 0xb1104000)
[ 97.615092] 3d60: 00000000 00000b91 00000275 20000022 b0747000 9f168449 b1103dac b0747000
[ 97.623266] 3d80: 00000000 b1650400 af820cc5 00000001 b1650460 b1103db8 b1103e8c b1650440
[ 97.631439] 3da0: b1b83300 b02dbc01 b1650440 b1103e0c 00000004 00000000 00000000 00000000
[ 97.639612] 3dc0: 00000000 00000000 00000000 00000000 00000000 00000000 b1088000 00000000
[ 97.647785] 3de0: b1103e8c b16505d0 b1667540 c0145608 b16505c4 b041a3c8 b1b83300 b02dcdd9
[ 97.655958] 3e00: b02dcd9b 00000000 b16505d0 00000000 b02cf1b3 b02cf63f b13e2834 9f168449
[ 97.664131] 3e20: 00020000 b1103e8c af8364e8 b1b83300 00000000 b1667540 00000254 b13e2830
[ 97.672306] 3e40: 0000002b b0126b5f 66500000 b0052729 b27bb740 00000000 c0145608 b02cf4a5
[ 97.680478] 3e60: 00000000 00000000 b1103e8c 00000000 c0145608 b02cfd87 00000000 ae9473b0
[ 97.688651] 3e80: b1667540 00000000 00000000 00000004 00000009 00000001 00000055 00000000
[ 97.696824] 3ea0: b27bb720 00000000 0000002f b1098240 b13e2830 b004ce5f 00000100 0000002b
[ 97.704997] 3ec0: b13e2834 00000030 00100000 b13c73a8 00000000 00000000 b10b6a80 0000002f
[ 97.713171] 3ee0: 00000274 b10917e0 b10b6a80 00000020 00000274 b10b6ac0 00000000 b006122d
[ 97.721344] 3f00: 0000866c b0772000 00000000 9f168449 01100cca b15379c0 c0145608 ae9473b0
[ 97.729517] 3f20: b1667540 00000003 b1102000 b1667540 0047ed10 b0081541 00002000 b0081b2b
[ 97.737690] 3f40: 00000875 0000018f b1103fb0 b10917e0 00422628 b10b6a80 80000007 b1103fb0
[ 97.745864] 3f60: b000fa11 00000007 b05f9278 00422628 b1103fb0 50c53c7d 00000000 ae949450
[ 97.754036] 3f80: 0047ed10 a6ff2ec4 ae9473b0 00000009 00000036 b0008424 b1102000 00000036
[ 97.762209] 3fa0: 0047ed10 b0008201 a6ff2ec4 ae9473b0 00000003 c0145608 ae9473b0 00000000
[ 97.770382] 3fc0: a6ff2ec4 ae9473b0 00000009 00000036 a6ff2ec4 00000000 ae949450 0047ed10
[ 97.778555] 3fe0: 0047ede4 ae947360 00406544 a6d65558 60000010 00000003 00000000 00000000
[ 97.786807] [<af820ce0>] (rkcif_queue_setup [video_rkcif]) from [<b02dbc01>] (vb2_core_reqbufs+0x169/0x22c)
[ 97.796547] [<b02dbc01>] (vb2_core_reqbufs) from [<b02dcdd9>] (vb2_ioctl_reqbufs+0x3f/0x5e)
[ 97.804898] [<b02dcdd9>] (vb2_ioctl_reqbufs) from [<b02cf63f>] (__video_do_ioctl+0x19b/0x278)
[ 97.813424] [<b02cf63f>] (__video_do_ioctl) from [<b02cfd87>] (video_usercopy+0x173/0x258)
[ 97.821688] [<b02cfd87>] (video_usercopy) from [<b0081541>] (vfs_ioctl+0x11/0x1c)
[ 97.829170] [<b0081541>] (vfs_ioctl) from [<b0081b2b>] (sys_ioctl+0x73/0x47c)
[ 97.836311] [<b0081b2b>] (sys_ioctl) from [<b0008201>] (ret_fast_syscall+0x1/0x58)
[ 97.843867] Exception stack(0xb1103fa8 to 0xb1103ff0)
[ 97.848921] 3fa0: a6ff2ec4 ae9473b0 00000003 c0145608 ae9473b0 00000000
[ 97.857093] 3fc0: a6ff2ec4 ae9473b0 00000009 00000036 a6ff2ec4 00000000 ae949450 0047ed10
[ 97.865263] 3fe0: 0047ede4 ae947360 00406544 a6d65558
[ 97.870319] Code: 3584 6867 f8d4 1588 (7d58) 9305
[ 97.875151] ---[ end trace a23d36d799d6c643 ]---上面的bug告诉我们是 rkcif_queue_setup 出的问题
[ 97.551294] PC is at rkcif_queue_setup+0x1c/0xcc [video_rkcif]
[ 97.557140] LR is at vb2_core_reqbufs+0x169/0x22c[ 57.031693] pixm = 64feaef2,cif_fmt = 00000000
[ 57.031703] in_fmt = 5d96f513
[ 57.031722] rkcif_queue_setup
[ 57.031742] 8<--- cut here ---
[ 57.061518] Unable to handle kernelcif_fmt = 000000 这不合理
这个其实是
cif_fmt_out 在(vb2_queue) queue->drv_priv 中
rkcif_set_fmt 中会赋值
rkcif_set_fmt在rkcif_set_default_fmt 中使用
rkcif_set_fmt在rkcif_s_fmt_vid_cap_mplane 中使用
rkcif_set_fmt在rkcif_try_fmt_vid_cap_mplane 中使用
rkcif_set_fmt在 rkcif_stream_init中使用
为什么 cif_fmt 是空指针
重新创建镜像
media-ctl 对不对
- entity 63: genx320 4-003c (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev2
pad0: Source
[fmt:PSEE_EVT21/320x320 field:none colorspace:raw xfer:none]
-> "rockchip-csi2-dphy0":0 [ENABLED]
- entity 58: rockchip-csi2-dphy0 (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
[fmt:PSEE_EVT21/320x320 field:none colorspace:raw xfer:none]
<- "genx320 4-003c":0 [ENABLED]
pad1: Source
-> "rockchip-mipi-csi2":0 [ENABLED]
- entity 45: rockchip-mipi-csi2 (12 pads, 122 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:PSEE_EVT21/320x320 field:none colorspace:raw xfer:none
crop.bounds:(0,0)/320x320
crop:(0,0)/320x320]
<- "rockchip-csi2-dphy0":1 [ENABLED]
pad1: Source
-> "stream_cif_mipi_id0":0 [ENABLED]
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad2: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 [ENABLED]
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad3: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 [ENABLED]
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad4: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 [ENABLED]
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad5: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 [ENABLED]
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad6: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 [ENABLED]
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad7: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 [ENABLED]
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad8: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 [ENABLED]
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad9: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 [ENABLED]
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad10: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 [ENABLED]
-> "rkcif_tools_id2":0 []
pad11: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 [ENABLED]
# 从哪里触发video设备的注册
video_register_devicemedia 设备的注册
media_device_registermedia-ctl
[root@luckfox root]# media-ctl -p
Media controller API version 5.10.160
Media device information
------------------------
driver rkcif
model rkcif-mipi-lvds
serial
bus info
hw revision 0x0
driver version 5.10.160
Device topology
- entity 1: stream_cif_mipi_id0 (1 pad, 11 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 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 5: stream_cif_mipi_id1 (1 pad, 11 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 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 9: stream_cif_mipi_id2 (1 pad, 11 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 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 13: stream_cif_mipi_id3 (1 pad, 11 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]
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 17: rkcif_scale_ch0 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video4
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 [ENABLED]
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 21: rkcif_scale_ch1 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video5
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 [ENABLED]
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 25: rkcif_scale_ch2 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video6
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 [ENABLED]
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 29: rkcif_scale_ch3 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video7
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 [ENABLED]
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 33: rkcif_tools_id0 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video8
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 [ENABLED]
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 []
- entity 37: rkcif_tools_id1 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video9
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 [ENABLED]
<- "rockchip-mipi-csi2":11 []
- entity 41: rkcif_tools_id2 (1 pad, 11 links)
type Node subtype V4L flags 0
device node name /dev/video10
pad0: Sink
<- "rockchip-mipi-csi2":1 []
<- "rockchip-mipi-csi2":2 []
<- "rockchip-mipi-csi2":3 []
<- "rockchip-mipi-csi2":4 []
<- "rockchip-mipi-csi2":5 []
<- "rockchip-mipi-csi2":6 []
<- "rockchip-mipi-csi2":7 []
<- "rockchip-mipi-csi2":8 []
<- "rockchip-mipi-csi2":9 []
<- "rockchip-mipi-csi2":10 []
<- "rockchip-mipi-csi2":11 [ENABLED]
- entity 45: rockchip-mipi-csi2 (12 pads, 122 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:SBGGR10_1X10/2304x1296 field:none
crop.bounds:(0,0)/2304x1296
crop:(0,0)/2304x1296]
<- "rockchip-csi2-dphy0":1 [ENABLED]
pad1: Source
-> "stream_cif_mipi_id0":0 [ENABLED]
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad2: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 [ENABLED]
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad3: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 [ENABLED]
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad4: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 [ENABLED]
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad5: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 [ENABLED]
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad6: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 [ENABLED]
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad7: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 [ENABLED]
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad8: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 [ENABLED]
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad9: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 [ENABLED]
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad10: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 [ENABLED]
-> "rkcif_tools_id2":0 []
pad11: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 [ENABLED]
- entity 58: rockchip-csi2-dphy0 (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
[fmt:SBGGR10_1X10/2304x1296@10000/250000 field:none]
<- "m00_b_sc3336 4-0030":0 [ENABLED]
pad1: Source
-> "rockchip-mipi-csi2":0 [ENABLED]
- entity 63: m00_b_sc3336 4-0030 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev2
pad0: Source
[fmt:SBGGR10_1X10/2304x1296@10000/250000 field:none]
-> "rockchip-csi2-dphy0":0 [ENABLED] pad2: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 [ENABLED]
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad3: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 [ENABLED]
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad4: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 [ENABLED]
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad5: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 [ENABLED]
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad6: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 [ENABLED]
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad7: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 [ENABLED]
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad8: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 [ENABLED]
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad9: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 [ENABLED]
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 []
pad10: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 [ENABLED]
-> "rkcif_tools_id2":0 []
pad11: Source
-> "stream_cif_mipi_id0":0 []
-> "stream_cif_mipi_id1":0 []
-> "stream_cif_mipi_id2":0 []
-> "stream_cif_mipi_id3":0 []
-> "rkcif_scale_ch0":0 []
-> "rkcif_scale_ch1":0 []
-> "rkcif_scale_ch2":0 []
-> "rkcif_scale_ch3":0 []
-> "rkcif_tools_id0":0 []
-> "rkcif_tools_id1":0 []
-> "rkcif_tools_id2":0 [ENABLED]
- entity 58: rockchip-csi2-dphy0 (2 pads, 1 link)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
pad1: Source
-> "rockchip-mipi-csi2":0 [ENABLED]RK based Module
找到 rkcif 内存对齐的参数
/* cif memory mode
* 0: raw12/raw10/raw8 8bit memory compact
* 1: raw12/raw10 16bit memory one pixel
* low align for rv1126/rv1109/rk356x
* |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
* | -| -| -| -|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
* 2: raw12/raw10 16bit memory one pixel
* high align for rv1126/rv1109/rk356x
* |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
* |11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| -| -| -| -|
*
* note: rv1109/rv1126/rk356x dvp only support uncompact mode,
* and can be set low align or high align
*/
enum cif_csi_lvds_memory {
CSI_LVDS_MEM_COMPACT = 0,
CSI_LVDS_MEM_WORD_LOW_ALIGN = 1,
CSI_LVDS_MEM_WORD_HIGH_ALIGN = 2,
};不知道有没有什么用处