mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 23:03:57 -04:00
Samsung Exynos SoC reuses several devices from older designs, thus historically we kept the old (block's) compatible only. This works fine and there is no bug here, however guidelines expressed in Documentation/devicetree/bindings/writing-bindings.rst state that: 1. Compatibles should be specific. 2. We should add new compatibles in case of bugs or features. Add compatibles specific to each SoC in front of all old-SoC-like compatibles. Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> Acked-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20231108104343.24192-10-krzysztof.kozlowski@linaro.org Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
203 lines
4.4 KiB
YAML
203 lines
4.4 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/gpu/arm,mali-midgard.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: ARM Mali Midgard GPU
|
|
|
|
maintainers:
|
|
- Rob Herring <robh@kernel.org>
|
|
|
|
properties:
|
|
$nodename:
|
|
pattern: '^gpu@[a-f0-9]+$'
|
|
compatible:
|
|
oneOf:
|
|
- items:
|
|
- enum:
|
|
- samsung,exynos5250-mali
|
|
- const: arm,mali-t604
|
|
- items:
|
|
- enum:
|
|
- samsung,exynos5420-mali
|
|
- const: arm,mali-t628
|
|
- items:
|
|
- enum:
|
|
- allwinner,sun50i-h6-mali
|
|
- const: arm,mali-t720
|
|
- items:
|
|
- enum:
|
|
- amlogic,meson-gxm-mali
|
|
- realtek,rtd1295-mali
|
|
- const: arm,mali-t820
|
|
- items:
|
|
- enum:
|
|
- arm,juno-mali
|
|
- const: arm,mali-t624
|
|
- items:
|
|
- enum:
|
|
- rockchip,rk3288-mali
|
|
- samsung,exynos5433-mali
|
|
- const: arm,mali-t760
|
|
- items:
|
|
- enum:
|
|
- samsung,exynos7-mali
|
|
- const: samsung,exynos5433-mali
|
|
- const: arm,mali-t760
|
|
- items:
|
|
- enum:
|
|
- rockchip,rk3399-mali
|
|
- const: arm,mali-t860
|
|
|
|
# "arm,mali-t830"
|
|
# "arm,mali-t880"
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
items:
|
|
- description: Job interrupt
|
|
- description: MMU interrupt
|
|
- description: GPU interrupt
|
|
|
|
interrupt-names:
|
|
items:
|
|
- const: job
|
|
- const: mmu
|
|
- const: gpu
|
|
|
|
clocks:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
clock-names:
|
|
minItems: 1
|
|
items:
|
|
- const: core
|
|
- const: bus
|
|
|
|
mali-supply: true
|
|
opp-table:
|
|
type: object
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
operating-points-v2: true
|
|
|
|
"#cooling-cells":
|
|
const: 2
|
|
|
|
dma-coherent: true
|
|
|
|
dynamic-power-coefficient:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
A u32 value that represents the running time dynamic
|
|
power coefficient in units of uW/MHz/V^2. The
|
|
coefficient can either be calculated from power
|
|
measurements or derived by analysis.
|
|
|
|
The dynamic power consumption of the GPU is
|
|
proportional to the square of the Voltage (V) and
|
|
the clock frequency (f). The coefficient is used to
|
|
calculate the dynamic power as below -
|
|
|
|
Pdyn = dynamic-power-coefficient * V^2 * f
|
|
|
|
where voltage is in V, frequency is in MHz.
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- interrupt-names
|
|
- clocks
|
|
|
|
additionalProperties: false
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: allwinner,sun50i-h6-mali
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 2
|
|
required:
|
|
- clock-names
|
|
- resets
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: amlogic,meson-gxm-mali
|
|
then:
|
|
properties:
|
|
resets:
|
|
minItems: 2
|
|
required:
|
|
- resets
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
gpu@ffa30000 {
|
|
compatible = "rockchip,rk3288-mali", "arm,mali-t760";
|
|
reg = <0xffa30000 0x10000>;
|
|
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "job", "mmu", "gpu";
|
|
clocks = <&cru 0>;
|
|
mali-supply = <&vdd_gpu>;
|
|
operating-points-v2 = <&gpu_opp_table>;
|
|
power-domains = <&power 0>;
|
|
#cooling-cells = <2>;
|
|
};
|
|
|
|
gpu_opp_table: opp-table {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-533000000 {
|
|
opp-hz = /bits/ 64 <533000000>;
|
|
opp-microvolt = <1250000>;
|
|
};
|
|
opp-450000000 {
|
|
opp-hz = /bits/ 64 <450000000>;
|
|
opp-microvolt = <1150000>;
|
|
};
|
|
opp-400000000 {
|
|
opp-hz = /bits/ 64 <400000000>;
|
|
opp-microvolt = <1125000>;
|
|
};
|
|
opp-350000000 {
|
|
opp-hz = /bits/ 64 <350000000>;
|
|
opp-microvolt = <1075000>;
|
|
};
|
|
opp-266000000 {
|
|
opp-hz = /bits/ 64 <266000000>;
|
|
opp-microvolt = <1025000>;
|
|
};
|
|
opp-160000000 {
|
|
opp-hz = /bits/ 64 <160000000>;
|
|
opp-microvolt = <925000>;
|
|
};
|
|
opp-100000000 {
|
|
opp-hz = /bits/ 64 <100000000>;
|
|
opp-microvolt = <912500>;
|
|
};
|
|
};
|
|
|
|
...
|