Re: [PATCH v5 1/2] dt-bindings: phy: qcom: Add CSI2 C-PHY/DPHY schema

From: Bryan O'Donoghue

Date: Mon Mar 30 2026 - 08:14:19 EST


On 30/03/2026 12:49, Dmitry Baryshkov wrote:
// determined at runtime
csid_n: csid@1000000 {
phys = <&csiphy_0>,
[...]
<&csiphy_n-1>;
};
I think the bigger problem is:

&csid_L: {
phys = <&csiphy_M>;
};

&csid_N: {
phys = <&csiphy_M>;
};

aka split mode.

Depends on how you model it.

It feels like a philosophical as opposed to an engineering debate in a way.

The CSIPHY block is defined as one thing - is split mode one PHY or two ?

You could argue it either way BUT one strong argument for it being one PHY is - voltage rails, input clocks etc power the block.

Sure there is an esoteric mode called split or combo mode but the hardware block itself the thing we usually call the PHY lives as a block diagram as a discreet entity.

So I think split-mode really is more like

&csid_L: {
phys = <&csiphy_0 DPHY>, <&csiphy_1 CPHY>;
};

&csid_M: {
phys = <&csiphy_0 DPHY>, <&csiphy_1 CPHY>;
};

Recall the debate about a mux is because CSID may connect to any CSIPHY.

csiphy_0: {

clocks = <&camcc CAM_CC_CSIPHY0_CLK>,
<&camcc CAM_CC_CSI0PHYTIMER_CLK>;
clock-names = "core",
"timer";

operating-points-v2 = <&csiphy_opp_table>;

interrupts = <GIC_SPI 1 IRQ_TYPE_EDGE_RISING>;

power-domains = <&rpmhpd RPMHPD_MX>,
<&rpmhpd RPMHPD_MMCX>;
power-domain-names = "mx",
"mmcx";

vdda-0p9-supply = <&vreg_xyz_0p8>;
vdda-1p2-supply = <&vreg_qrs_1p2>;

ports {
port@0{};
port@1{};
};
};

csiphy_N: {
clocks = <&camcc CAM_CC_CSIPHY1_CLK>,
<&camcc CAM_CC_CSI1PHYTIMER_CLK>;
clock-names = "core",
"timer";

operating-points-v2 = <&csiphy_opp_table>;

interrupts = <GIC_SPI 2 IRQ_TYPE_EDGE_RISING>;

power-domains = <&rpmhpd RPMHPD_MX>,
<&rpmhpd RPMHPD_MMCX>;
power-domain-names = "mx",
"mmcx";

vdda-0p9-supply = <&vreg_abc_0p8>;
vdda-1p2-supply = <&vreg_def_1p2>;

ports {
port@0{};
};
};

IMO split mode is a special mode of that hardware block, not two individual PHYs.

---
bod