The GM20B on Tegra210 often fails to initialize unless the fuse clock is running while the GPU is powered, and the GPUs on the other Tegra generations are expected to have the same requirement. Tegra194 already describes the fuse clock for its GV11B.
Make the fuse clock required for all of them, and list the exact clocks for each GPU instead of allowing either the reference or the fuse clock as the third one: GM20B takes the fuse clock after its reference clock, the others take it after the GPU and power clocks. The nouveau driver keeps treating the fuse clock as optional, so device trees that lack it continue to work as before. Assisted-by: LLM Signed-off-by: Sasha Levin <[email protected]> --- .../devicetree/bindings/gpu/nvidia,gk20a.yaml | 52 ++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/Documentation/devicetree/bindings/gpu/nvidia,gk20a.yaml b/Documentation/devicetree/bindings/gpu/nvidia,gk20a.yaml index 4d856a8b674c5..af0ada6e02557 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,gk20a.yaml +++ b/Documentation/devicetree/bindings/gpu/nvidia,gk20a.yaml @@ -39,18 +39,12 @@ properties: Regulator for GPU supply voltage clocks: - minItems: 2 - items: - - description: GPU clock - - description: Power clock - - description: Reference or fuse clock + minItems: 3 + maxItems: 4 clock-names: - minItems: 2 - items: - - const: gpu - - const: pwr - - enum: [ ref, fuse ] + minItems: 3 + maxItems: 4 resets: maxItems: 1 @@ -86,6 +80,39 @@ required: - reset-names allOf: + - if: + properties: + compatible: + contains: + const: nvidia,gm20b + then: + properties: + clocks: + items: + - description: GPU clock + - description: Power clock + - description: Reference clock + - description: Fuse clock + + clock-names: + items: + - const: gpu + - const: pwr + - const: ref + - const: fuse + else: + properties: + clocks: + items: + - description: GPU clock + - description: Power clock + - description: Fuse clock + + clock-names: + items: + - const: gpu + - const: pwr + - const: fuse - if: properties: compatible: @@ -163,8 +190,9 @@ examples: interrupt-names = "stall", "nonstall"; vdd-supply = <&vdd_gpu>; clocks = <&tegra_car TEGRA124_CLK_GPU>, - <&tegra_car TEGRA124_CLK_PLL_P_OUT5>; - clock-names = "gpu", "pwr"; + <&tegra_car TEGRA124_CLK_PLL_P_OUT5>, + <&tegra_car TEGRA124_CLK_FUSE>; + clock-names = "gpu", "pwr", "fuse"; resets = <&tegra_car 184>; reset-names = "gpu"; iommus = <&mc TEGRA_SWGROUP_GPU>; -- 2.53.0
