mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-30 13:03:01 +00:00

In some cases, an OPP may have multiple variants to describe the differences in the resources between SKUs. As an example, we may want to vote different peak bandwidths in different SKUs for the same frequency and the OPP node names can have an additional integer suffix to denote this difference like below: opp-666000000-0 { opp-hz = /bits/ 64 <666000000>; opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; opp-peak-kBps = <8171875>; qcom,opp-acd-level = <0xa82d5ffd>; opp-supported-hw = <0xf>; }; /* Only applicable for SKUs which has 666Mhz as Fmax */ opp-666000000-1 { opp-hz = /bits/ 64 <666000000>; opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; opp-peak-kBps = <16500000>; qcom,opp-acd-level = <0xa82d5ffd>; opp-supported-hw = <0x10>; }; Update the regex to allow this usecase. Tested-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Tested-by: Aleksandrs Vinarskis <alex.vinarskis@gmail.com> # x1-26-100 Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/660213/ Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
97 lines
2.8 KiB
YAML
97 lines
2.8 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/opp/opp-v2-qcom-adreno.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm Adreno compatible OPP supply
|
|
|
|
description:
|
|
Adreno GPUs present in Qualcomm's Snapdragon chipsets uses an OPP specific
|
|
ACD related information tailored for the specific chipset. This binding
|
|
provides the information needed to describe such a hardware value.
|
|
|
|
maintainers:
|
|
- Rob Clark <robdclark@gmail.com>
|
|
|
|
allOf:
|
|
- $ref: opp-v2-base.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: operating-points-v2-adreno
|
|
|
|
patternProperties:
|
|
'^opp(-[0-9]+){1,2}$':
|
|
type: object
|
|
additionalProperties: false
|
|
|
|
properties:
|
|
opp-hz: true
|
|
|
|
opp-level: true
|
|
|
|
opp-peak-kBps: true
|
|
|
|
opp-supported-hw: true
|
|
|
|
qcom,opp-acd-level:
|
|
description: |
|
|
A positive value representing the ACD (Adaptive Clock Distribution,
|
|
a fancy name for clk throttling during voltage droop) level associated
|
|
with this OPP node. This value is shared to a co-processor inside GPU
|
|
(called Graphics Management Unit a.k.a GMU) during wake up. It may not
|
|
be present for some OPPs and GMU will disable ACD while transitioning
|
|
to that OPP. This value encodes a voltage threshold, delay cycles &
|
|
calibration margins which are identified by characterization of the
|
|
SoC. So, it doesn't have any unit. This data is passed to GMU firmware
|
|
via 'HFI_H2F_MSG_ACD' packet.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
required:
|
|
- opp-hz
|
|
- opp-level
|
|
|
|
required:
|
|
- compatible
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/power/qcom-rpmpd.h>
|
|
|
|
gpu_opp_table: opp-table {
|
|
compatible = "operating-points-v2-adreno", "operating-points-v2";
|
|
|
|
opp-687000000 {
|
|
opp-hz = /bits/ 64 <687000000>;
|
|
opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
|
|
opp-peak-kBps = <8171875>;
|
|
qcom,opp-acd-level = <0x882e5ffd>;
|
|
};
|
|
|
|
opp-550000000 {
|
|
opp-hz = /bits/ 64 <550000000>;
|
|
opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
|
|
opp-peak-kBps = <6074219>;
|
|
qcom,opp-acd-level = <0xc0285ffd>;
|
|
};
|
|
|
|
opp-390000000 {
|
|
opp-hz = /bits/ 64 <390000000>;
|
|
opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
|
|
opp-peak-kBps = <3000000>;
|
|
qcom,opp-acd-level = <0xc0285ffd>;
|
|
};
|
|
|
|
opp-300000000 {
|
|
opp-hz = /bits/ 64 <300000000>;
|
|
opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
|
|
opp-peak-kBps = <2136719>;
|
|
/* Intentionally left out qcom,opp-acd-level property here */
|
|
};
|
|
|
|
};
|