1.MIPI CIS用法
RK3566/RK3568平台仅有一个标准物理mipi csi2 dphy,可以工作在两个模式: full mode 和split mode, 拆分为csi2_dphy0/csi2_dphy1/csi2_dphy2三个逻辑dphy。
2.Full Mode(单摄模式)
- 仅使用csi2_dphy0,csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用;
- data lane最大4 lanes;
- 最大速率2.5Gbps/lane;
- 链接关系: sensor->csi2_dphy0->isp(设备树按这个链接来配)
3.Split Mode(双摄模式)
- 仅使用csi2_dphy1和csi2_dphy2, 与csi2_dphy0互斥,不可同时使用;
- csi2_dphy1和csi2_dphy2可同时使用;
- csi2_dphy1和csi2_dphy2各自的data lane最大是2 lanes;
- csi2_dphy1对应物理dphy的lane0/lane1;
- csi2_dphy2对应物理dphy的lane2/lane3;
- 最大速率2.5Gbps/lane
- 链接关系如下(设备树按这个链接来配):
- sensor1->csi_dphy1->isp_vir0
- sensor2->csi_dphy2->mipi_csi2->vicap->isp_vir1
4.Full Mode(单摄模式)设备树配置例程
&i2c3 {
pinctrl-0 = <&i2c3m1_xfer>;
status = "okay";
gc2053: gc2053@37 {
// 需要与驱动中的匹配字符串一致
compatible = "galaxycore,gc2053";
status = "okay";
// sensor I2C设备地址,7位
reg = <0x37>;
// sensor mclk源配置
//查看硬件配置引脚,特别注意clocks与pinctrl-0一一对应,
//CLK_CAM0_OUT->cam_clkout0, CLK_CAM1_OUT->cam_clkout1, CLK_CIF_OUT->cif_clk, CLK_MIPICSI_OUT->mipicsi_clk0, <&pmucru CLK_WIFI>->refclk_pins
clocks = <&pmucru CLK_WIFI>;
clock-names = "xvclk";
//sensor mclk pinctl设置
pinctrl-names = "default";
pinctrl-0 = <&refclk_pins>;
//sensor 相关电源域使能
power-domains = <&power RK3568_PD_VI>;
// reset管脚分配及有效电平
reset-gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>;
// powerdown管脚分配及有效电平
pwdn-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
//reset pin control by hardware,used this pin switch to mipi input
//1->2LANE(LANE 0&1) FRONT camera, 0->4LANE REAR camera
// 模组编号,该编号不要重复
rockchip,camera-module-index = <0>;
// 模组朝向,有"back"和"front"
rockchip,camera-module-facing = "back";
// 模组名
rockchip,camera-module-name = "default";//default
// lens名
rockchip,camera-module-lens-name = "JX8006";//JX8006
port {
ucam_out1: endpoint {
// csi2 dphy端的port名
remote-endpoint = <&csi_dphy1_in>;
// csi2 dphy lane数,1lane为 <1>, 4lane为 <1 2 3 4>
data-lanes = <1 2>;
};
};
};
};
&csi2_dphy_hw {
status = "okay";
};
//csi2_dphy0不与csi2_dphy1/csi2_dphy2同时使用,互斥
&csi2_dphy0 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
csi_dphy1_in: endpoint@1 {
// sensor端的 port名
remote-endpoint = <&ucam_out1>;
data-lanes = <1 2>;
};
};
port@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
csi_dphy1_out: endpoint@0 {
remote-endpoint = <&isp0_in>;
// data-lanes = <1 2>;
};
};
};
};
&csi2_dphy1 {
status = "disabled";
};
&csi2_dphy2 {
status = "disabled";
};
&rkisp {
status = "okay";
};
&rkisp_mmu {
status = "okay";
};
&rkisp_vir0 {
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
isp0_in: endpoint@0 {
reg = <0>;
remote-endpoint = <&csi_dphy1_out>;
};
};
};
5.注意事项
(1)确认ISP开启,/kernel/arch/arm64/configs/rockchip_linux_defconfig
+CONFIG_VIDEO_ROCKCHIP_ISP=y
(2)menuconfig中GC2053驱动确认打开。