Commit 63204be2 authored by Konrad Dybcio's avatar Konrad Dybcio Committed by Rob Clark

dt-bindings: display/msm/gmu: Add GMU wrapper

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.

To sum it all up, the GMU wrapper is essentially a register space within
the GPU, which Linux sees as a dumbed-down regular GMU: there's no clocks,
interrupts, multiple reg spaces, iommus and OPP. Document it.
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/542750/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
parent a770dc61
...@@ -19,16 +19,18 @@ description: | ...@@ -19,16 +19,18 @@ description: |
properties: properties:
compatible: compatible:
items: oneOf:
- pattern: '^qcom,adreno-gmu-6[0-9][0-9]\.[0-9]$' - items:
- const: qcom,adreno-gmu - pattern: '^qcom,adreno-gmu-6[0-9][0-9]\.[0-9]$'
- const: qcom,adreno-gmu
- const: qcom,adreno-gmu-wrapper
reg: reg:
minItems: 3 minItems: 1
maxItems: 4 maxItems: 4
reg-names: reg-names:
minItems: 3 minItems: 1
maxItems: 4 maxItems: 4
clocks: clocks:
...@@ -44,7 +46,6 @@ properties: ...@@ -44,7 +46,6 @@ properties:
- description: GMU HFI interrupt - description: GMU HFI interrupt
- description: GMU interrupt - description: GMU interrupt
interrupt-names: interrupt-names:
items: items:
- const: hfi - const: hfi
...@@ -72,14 +73,8 @@ required: ...@@ -72,14 +73,8 @@ required:
- compatible - compatible
- reg - reg
- reg-names - reg-names
- clocks
- clock-names
- interrupts
- interrupt-names
- power-domains - power-domains
- power-domain-names - power-domain-names
- iommus
- operating-points-v2
additionalProperties: false additionalProperties: false
...@@ -218,6 +213,28 @@ allOf: ...@@ -218,6 +213,28 @@ allOf:
- const: axi - const: axi
- const: memnoc - const: memnoc
- if:
properties:
compatible:
contains:
const: qcom,adreno-gmu-wrapper
then:
properties:
reg:
items:
- description: GMU wrapper register space
reg-names:
items:
- const: gmu
else:
required:
- clocks
- clock-names
- interrupts
- interrupt-names
- iommus
- operating-points-v2
examples: examples:
- | - |
#include <dt-bindings/clock/qcom,gpucc-sdm845.h> #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
...@@ -250,3 +267,12 @@ examples: ...@@ -250,3 +267,12 @@ examples:
iommus = <&adreno_smmu 5>; iommus = <&adreno_smmu 5>;
operating-points-v2 = <&gmu_opp_table>; operating-points-v2 = <&gmu_opp_table>;
}; };
gmu_wrapper: gmu@596a000 {
compatible = "qcom,adreno-gmu-wrapper";
reg = <0x0596a000 0x30000>;
reg-names = "gmu";
power-domains = <&gpucc GPU_CX_GDSC>,
<&gpucc GPU_GX_GDSC>;
power-domain-names = "cx", "gx";
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment