Re: [PATCH v4 01/14] dt-bindings: display/msm: gpu: Document GMU wrapper-equipped A6xx

From: Krzysztof Kozlowski
Date: Thu Mar 16 2023 - 02:59:38 EST


On 14/03/2023 16:28, Konrad Dybcio wrote:
> The "GMU Wrapper" is Qualcomm's name for "let's treat the GPU blocks
> we'd normally assign to the GMU as if they were a part of the GMU, even
> though they are not". It's a (good) software representation of the GMU_CX
> and GMU_GX register spaces within the GPUSS that helps us programatically
> treat these de-facto GMU-less parts in a way that's very similar to their
> GMU-equipped cousins, massively saving up on code duplication.
>
> The "wrapper" register space was specifically designed to mimic the layout
> of a real GMU, though it rather obviously does not have the M3 core et al.
>
> GMU wrapper-equipped A6xx GPUs require clocks and clock-names to be
> specified under the GPU node, just like their older cousins. Account
> for that.
>
> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
> ---
> .../devicetree/bindings/display/msm/gpu.yaml | 57 ++++++++++++++++++----
> 1 file changed, 48 insertions(+), 9 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/display/msm/gpu.yaml b/Documentation/devicetree/bindings/display/msm/gpu.yaml
> index d4191cca71fb..ac1a9bce2042 100644
> --- a/Documentation/devicetree/bindings/display/msm/gpu.yaml
> +++ b/Documentation/devicetree/bindings/display/msm/gpu.yaml
> @@ -36,10 +36,7 @@ properties:
>
> reg-names:
> minItems: 1
> - items:
> - - const: kgsl_3d0_reg_memory
> - - const: cx_mem
> - - const: cx_dbgc
> + maxItems: 3
>
> interrupts:
> maxItems: 1
> @@ -157,16 +154,58 @@ allOf:
> required:
> - clocks
> - clock-names
> +
> - if:
> properties:
> compatible:
> contains:
> - pattern: '^qcom,adreno-6[0-9][0-9]\.[0-9]$'
> -
> - then: # Since Adreno 6xx series clocks should be defined in GMU
> + enum:
> + - qcom,adreno-610.0
> + - qcom,adreno-619.1
> + then:
> properties:
> - clocks: false
> - clock-names: false
> + clock-names:
> + items:
> + - const: core
> + description: GPU Core clock
> + - const: iface
> + description: GPU Interface clock
> + - const: mem_iface
> + description: GPU Memory Interface clock
> + - const: alt_mem_iface
> + description: GPU Alternative Memory Interface clock
> + - const: gmu
> + description: CX GMU clock
> + - const: xo
> + description: GPUCC clocksource clock

Since you require fixed number of clocks, you also need:

clocks:
minItems: 6
maxItems: 6

Best regards,
Krzysztof