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:Yes, something like this based on this target architecture. A couple things though.
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
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.