Kaanapali (SM8850) has two display GDSCs. CORE_GDSC supplies shared MDSS hardware and most of the DPU, while INT2 GDSC supplies the VIG2/VIG3/DMA5 source pipes. Without INT2 GDSC, these source pipes remain inaccessible.
Describe CORE and INT2 as power domains of the DPU device, matching the hardware partitioning. INT2 only supplies DPU-local source pipes, while CORE also remains attached to the parent MDSS device because it supplies shared MDSS hardware. DPU performance-state votes on CORE are propagated through the genpd hierarchy to its parent MMCX domain. Restrict the two-domain schema to the Kaanapali DPU compatible, so other platforms sharing qcom,sm8650-dpu.yaml retain the existing single power-domain constraint. Signed-off-by: Yongxing Mou <[email protected]> --- .../devicetree/bindings/display/msm/dpu-common.yaml | 19 +++++++++++++++++-- .../bindings/display/msm/qcom,kaanapali-mdss.yaml | 4 +++- .../bindings/display/msm/qcom,sm8650-dpu.yaml | 21 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dpu-common.yaml b/Documentation/devicetree/bindings/display/msm/dpu-common.yaml index 3f953aa5e694..19b791a857b5 100644 --- a/Documentation/devicetree/bindings/display/msm/dpu-common.yaml +++ b/Documentation/devicetree/bindings/display/msm/dpu-common.yaml @@ -25,8 +25,7 @@ properties: interrupts: maxItems: 1 - power-domains: - maxItems: 1 + power-domains: true operating-points-v2: true opp-table: @@ -53,4 +52,20 @@ required: - operating-points-v2 - ports +allOf: + - if: + properties: + compatible: + contains: + const: qcom,kaanapali-dpu + then: + properties: + power-domains: + minItems: 2 + maxItems: 2 + else: + properties: + power-domains: + maxItems: 1 + additionalProperties: true diff --git a/Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml index 9f935defd6b1..6d6391970d6b 100644 --- a/Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml +++ b/Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml @@ -125,7 +125,9 @@ examples: operating-points-v2 = <&mdp_opp_table>; - power-domains = <&rpmhpd RPMHPD_MMCX>; + power-domains = <&mdss_gdsc>, + <&mdss_int2_gdsc>; + power-domain-names = "core", "int2"; ports { #address-cells = <1>; diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml index aa0cf0ec5b93..512143402083 100644 --- a/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml +++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml @@ -61,6 +61,27 @@ required: - clocks - clock-names +allOf: + - if: + properties: + compatible: + contains: + const: qcom,kaanapali-dpu + then: + properties: + power-domains: + items: + - description: CORE GDSC power domain + - description: INT2 GDSC power domain + + power-domain-names: + items: + - const: core + - const: int2 + + required: + - power-domain-names + unevaluatedProperties: false examples: -- 2.43.0
