279 lines
6.6 KiB
YAML
279 lines
6.6 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only
|
|
# Copyright 2019-2020, The Linux Foundation, All Rights Reserved
|
|
%YAML 1.2
|
|
---
|
|
|
|
$id: http://devicetree.org/schemas/display/msm/gmu.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: GMU attached to certain Adreno GPUs
|
|
|
|
maintainers:
|
|
- Rob Clark <robdclark@gmail.com>
|
|
|
|
description: |
|
|
These bindings describe the Graphics Management Unit (GMU) that is attached
|
|
to members of the Adreno A6xx GPU family. The GMU provides on-device power
|
|
management and support to improve power efficiency and reduce the load on
|
|
the CPU.
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- items:
|
|
- pattern: '^qcom,adreno-gmu-6[0-9][0-9]\.[0-9]$'
|
|
- const: qcom,adreno-gmu
|
|
- const: qcom,adreno-gmu-wrapper
|
|
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 4
|
|
|
|
reg-names:
|
|
minItems: 1
|
|
maxItems: 4
|
|
|
|
clocks:
|
|
minItems: 4
|
|
maxItems: 7
|
|
|
|
clock-names:
|
|
minItems: 4
|
|
maxItems: 7
|
|
|
|
interrupts:
|
|
items:
|
|
- description: GMU HFI interrupt
|
|
- description: GMU interrupt
|
|
|
|
interrupt-names:
|
|
items:
|
|
- const: hfi
|
|
- const: gmu
|
|
|
|
power-domains:
|
|
items:
|
|
- description: CX power domain
|
|
- description: GX power domain
|
|
|
|
power-domain-names:
|
|
items:
|
|
- const: cx
|
|
- const: gx
|
|
|
|
iommus:
|
|
maxItems: 1
|
|
|
|
operating-points-v2: true
|
|
|
|
opp-table:
|
|
type: object
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- reg-names
|
|
- power-domains
|
|
- power-domain-names
|
|
|
|
additionalProperties: false
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,adreno-gmu-618.0
|
|
- qcom,adreno-gmu-630.2
|
|
then:
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Core GMU registers
|
|
- description: GMU PDC registers
|
|
- description: GMU PDC sequence registers
|
|
reg-names:
|
|
items:
|
|
- const: gmu
|
|
- const: gmu_pdc
|
|
- const: gmu_pdc_seq
|
|
clocks:
|
|
items:
|
|
- description: GMU clock
|
|
- description: GPU CX clock
|
|
- description: GPU AXI clock
|
|
- description: GPU MEMNOC clock
|
|
clock-names:
|
|
items:
|
|
- const: gmu
|
|
- const: cxo
|
|
- const: axi
|
|
- const: memnoc
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,adreno-gmu-635.0
|
|
- qcom,adreno-gmu-660.1
|
|
then:
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Core GMU registers
|
|
- description: Resource controller registers
|
|
- description: GMU PDC registers
|
|
reg-names:
|
|
items:
|
|
- const: gmu
|
|
- const: rscc
|
|
- const: gmu_pdc
|
|
clocks:
|
|
items:
|
|
- description: GMU clock
|
|
- description: GPU CX clock
|
|
- description: GPU AXI clock
|
|
- description: GPU MEMNOC clock
|
|
- description: GPU AHB clock
|
|
- description: GPU HUB CX clock
|
|
- description: GPU SMMU vote clock
|
|
clock-names:
|
|
items:
|
|
- const: gmu
|
|
- const: cxo
|
|
- const: axi
|
|
- const: memnoc
|
|
- const: ahb
|
|
- const: hub
|
|
- const: smmu_vote
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,adreno-gmu-640.1
|
|
then:
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Core GMU registers
|
|
- description: GMU PDC registers
|
|
- description: GMU PDC sequence registers
|
|
reg-names:
|
|
items:
|
|
- const: gmu
|
|
- const: gmu_pdc
|
|
- const: gmu_pdc_seq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,adreno-gmu-650.2
|
|
then:
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Core GMU registers
|
|
- description: Resource controller registers
|
|
- description: GMU PDC registers
|
|
- description: GMU PDC sequence registers
|
|
reg-names:
|
|
items:
|
|
- const: gmu
|
|
- const: rscc
|
|
- const: gmu_pdc
|
|
- const: gmu_pdc_seq
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,adreno-gmu-640.1
|
|
- qcom,adreno-gmu-650.2
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: GPU AHB clock
|
|
- description: GMU clock
|
|
- description: GPU CX clock
|
|
- description: GPU AXI clock
|
|
- description: GPU MEMNOC clock
|
|
clock-names:
|
|
items:
|
|
- const: ahb
|
|
- const: gmu
|
|
- const: cxo
|
|
- const: axi
|
|
- 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:
|
|
- |
|
|
#include <dt-bindings/clock/qcom,gpucc-sdm845.h>
|
|
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
gmu: gmu@506a000 {
|
|
compatible = "qcom,adreno-gmu-630.2", "qcom,adreno-gmu";
|
|
|
|
reg = <0x506a000 0x30000>,
|
|
<0xb280000 0x10000>,
|
|
<0xb480000 0x10000>;
|
|
reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq";
|
|
|
|
clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
|
|
<&gpucc GPU_CC_CXO_CLK>,
|
|
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
|
|
<&gcc GCC_GPU_MEMNOC_GFX_CLK>;
|
|
clock-names = "gmu", "cxo", "axi", "memnoc";
|
|
|
|
interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "hfi", "gmu";
|
|
|
|
power-domains = <&gpucc GPU_CX_GDSC>,
|
|
<&gpucc GPU_GX_GDSC>;
|
|
power-domain-names = "cx", "gx";
|
|
|
|
iommus = <&adreno_smmu 5>;
|
|
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";
|
|
};
|