头注释(1-7行)

通路: GC2145 → csi2-dphy2 → mipi1-csi2 → rkcif-mipi-lvds1

摄像头的完整数据流:传感器 → 物理层(DPHY) → 协议解析(CSI2) → 采集(CIF)

2. I2C4 节点(9-41行)

&i2c4 {
    status = "okay";
    clock-frequency = <400000>;          // 400kHz
    pinctrl-0 = <&i2c4m2_xfer>;         // Pin5=SCL, Pin7=SDA
}
  • 开启 I2C4 总线,用 M2 复用(GPIO3_C7=SCL, GPIO3_D0=SDA)
  • 400kHz 是标准快模式

3. GC2145 传感器节点(16-40行)

gc2145@3c {
    compatible = "galaxycore,gc2145";    // 匹配驱动
    reg = <0x3c>;                        // I2C 地址
    clocks = <&cru MCLK_REF_MIPI0>;      // 24MHz 时钟源
    reset-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_LOW>;  // Pin3 复位
    pinctrl-0 = <&mipi_refclk_out0>;     // Pin2 输出24MHz时钟
    rockchip,camera-module-index = <0>;  // 第0个摄像头
    rockchip,camera-module-facing = "back";  // 后置
}

端口连接:

port {
    gc2145_out: endpoint {
        remote-endpoint = <&csi_dphy2_input>;  // 连到 dphy2
        data-lanes = <1 2>;                     // 2-lane MIPI
    };
};

4. CSI DPHY2 物理层(43-78行)

&csi2_dphy_hw { status = "okay"; };      // DPHY 硬件模块

&csi2_dphy2 {                            // 对应 PHY1 (CK1+D2+D3)
    status = "okay";
    port@0 {  // 入口
        csi_dphy2_input: endpoint@2 {    // 来自 GC2145 传感器
            reg = <2>;
            remote-endpoint = <&gc2145_out>;
            data-lanes = <1 2>;
        };
    };
    port@1 {  // 出口
        csi_dphy2_output: endpoint@0 {   // 传给 mipi1_csi2
            remote-endpoint = <&mipi1_csi2_input>;
        };
    };
};
  • 这是 MIPI D-PHY 物理层,把串行数据转成并行
  • DPHY2 对应硬件 PHY1(CK1 + D2/D3 = 引脚 117-122)
  • endpoint@2reg = <2> 是 SoC 固定的硬件映射

5. MIPI CSI-2 协议层(80-110行)

&mipi1_csi2 {
    status = "okay";
    port@0 {  // 入口
        mipi1_csi2_input: endpoint@1 {
            remote-endpoint = <&csi_dphy2_output>;  // 来自 dphy2
        };
    };
    port@1 {  // 出口
        mipi1_csi2_output: endpoint@0 {
            remote-endpoint = <&cif_mipi_in>;       // 传给 CIF
        };
    };
};
  • 解析 MIPI CSI-2 协议(数据包拆分、VC 解复用)
  • 属于 mipi1(RV1106 有 mipi0 和 mipi1,我们接在 mipi1 上)

6. CIF 采集(112-126行)

&rkcif {
    status = "okay";
    pinctrl-0 = <&mipi_pins>;  // 设置所有 MIPI 引脚功能
};

&rkcif_mipi_lvds1 {
    status = "okay";
    port {
        cif_mipi_in: endpoint {
            remote-endpoint = <&mipi1_csi2_output>;  // 来自 mipi1_csi2
        };
    };
};
  • rkcif = CIF 硬件模块,pinctrl 配置全部 MIPI 引脚为功能 2
  • rkcif_mipi_lvds1 = 第二个 CIF 采集接口,接收 mipi1_csi2 解析后的数据

完整数据流

GC2145 传感器
  → 串行 MIPI 信号 (D2/D3 + CK1, 引脚117-122)
  → csi2_dphy2 (物理层, 串行转并行)
  → mipi1_csi2 (协议解析, 拆包)
  → rkcif_mipi_lvds1 (CIF 采集, DMA到内存)
  → /dev/video0