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

From: Vijay Kumar Tumati

Date: Tue Mar 03 2026 - 19:18:44 EST




On 3/3/2026 4:02 PM, Bryan O'Donoghue wrote:
On 03/03/2026 23:50, Vijay Kumar Tumati wrote:
Sure, I was just giving an example. I haven't looked a lot into the IPCAT / clock corners of this target particularly. Someone needs to check the clock plan,

I mean, feel free.

understand which PHYs require which power domains
and add that in the following OPP table and as for scaling you can use the same RPMH levels for all those power domains. Btw, if you had defined the below OPP table for TOP GDSC, I think that is wrong. It only has two perf states (on and off) and doesn't need OPP scaling. If you look at the Iris driver, they link only the mxc and mmcx power domains to the OPP table using 'PD_FLAG_REQUIRED_OPP, not the GDSCs.

+    csiphy_opp_table: opp-table-csiphy {
+        compatible = "operating-points-v2";
+
+        opp-300000000 {
+            opp-hz = /bits/ 64 <300000000>;
+            required-opps = <&rpmhpd_opp_low_svs_d1>;
+        };
+
+        opp-400000000 {
+            opp-hz = /bits/ 64 <400000000>;
+            required-opps = <&rpmhpd_opp_low_svs>;
+        };
+
+        opp-480000000 {
+            opp-hz = /bits/ 64 <480000000>;
+            required-opps = <&rpmhpd_opp_low_svs>;
+        };
+    };

---
bod

Yes, we should scale the MX*, that's incorrect.

csiphy_mxc_opp_table: opp-table-csiphy-mxc {
    compatible = "operating-points-v2";

    opp-300000000 {
        opp-hz = /bits/ 64 <300000000>;
        required-opps = <&rpmhpd_opp_low_svs_d1>,
                        <&rpmhpd_opp_low_svs_d1>;
    };

    opp-400000000 {
        opp-hz = /bits/ 64 <400000000>;
        required-opps = <&rpmhpd_opp_low_svs>,
                        <&rpmhpd_opp_low_svs>;
    };

    opp-480000000 {
        opp-hz = /bits/ 64 <480000000>;
        required-opps = <&rpmhpd_opp_low_svs>,
                        <&rpmhpd_opp_low_svs>;
    };
};

csiphy_mxa_opp_table: opp-table-csiphy-mxa {
    compatible = "operating-points-v2";

    opp-300000000 {
        opp-hz = /bits/ 64 <300000000>;
        required-opps = <&rpmhpd_opp_low_svs_d1>,
                        <&rpmhpd_opp_low_svs_d1>;
    };

    opp-400000000 {
        opp-hz = /bits/ 64 <400000000>;
        required-opps = <&rpmhpd_opp_low_svs>,
                        <&rpmhpd_opp_low_svs>;
    };

    opp-480000000 {
        opp-hz = /bits/ 64 <480000000>;
        required-opps = <&rpmhpd_opp_low_svs>,
                        <&rpmhpd_opp_low_svs>;
    };
};

csiphy0: phy@ace4000 {
    power-domains = <&rpmhpd RPMHPD_MXC>,
                    <&rpmhpd RPMHPD_MMCX>;
    operating-points-v2 = <&csiphy_mxc_opp_table>;
    ...
};

csiphy4: phy@acec000 {
    power-domains = <&rpmhpd RPMHPD_MXA>,
                    <&rpmhpd RPMHPD_MMCX>;
    operating-points-v2 = <&csiphy_mxa_opp_table>;
    ...
};

---
bod
Yes, something like this based on this target architecture. A couple things though.
You will still need to have the GDSC as a power domain and attach to it, just skip that from registering with the OPP framework .

As I mentioned, if the RCG, 'cam_cc_cphy_rx_clk_src' depends on MXA (actually, I just checked for X1E80100 and it seems to require all three), the children of those (all CSIPHY clocks) indirectly depend on all three power domains. Additionally, This is the RCG for CSID and CSID Lite RX clocks as well but we can deal with those when we refactor the CSID nodes.

Thanks,
Vijay.