[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220913191051.vx7leo6c4qbcuyns@builder.lan>
Date: Tue, 13 Sep 2022 14:10:51 -0500
From: Bjorn Andersson <andersson@...nel.org>
To: Bhupesh Sharma <bhupesh.sharma@...aro.org>
Cc: linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org,
devicetree@...r.kernel.org, agross@...nel.org,
linux-arm-msm@...r.kernel.org, daniel.lezcano@...aro.org,
robh@...nel.org, rafael@...nel.org, bhupesh.linux@...il.com
Subject: Re: [PATCH 3/4] dt-bindings: thermal: Add qcom,qmi-tmd-device and
qcom,tmd-device yaml bindings
On Mon, Sep 12, 2022 at 02:20:48PM +0530, Bhupesh Sharma wrote:
> Add qcom,qmi-tmd-device and qcom,tmd-device yaml bindings.
Looks like a duplicate of $subject.
>
> Qualcomm QMI based TMD cooling device(s) are used for various
What is "TMD" an abbreviation of?
> mitigations for remote subsystem(s) including remote processor
> mitigation, rail voltage restriction etc.
>
> Each child node represents one remote subsystem and each child
> of this subsystem in-turn represents separate TMD cooling device.
>
> Cc: daniel.lezcano@...aro.org
> Cc: rafael@...nel.org
> Cc: andersson@...nel.org
> Cc: robh@...nel.org
> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@...aro.org>
> ---
> .../bindings/thermal/qcom,qmi-tmd-device.yaml | 78 +++++++++++
> .../bindings/thermal/qcom,tmd-device.yaml | 122 ++++++++++++++++++
> include/dt-bindings/thermal/qcom,tmd.h | 14 ++
> 3 files changed, 214 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/thermal/qcom,qmi-tmd-device.yaml
> create mode 100644 Documentation/devicetree/bindings/thermal/qcom,tmd-device.yaml
> create mode 100644 include/dt-bindings/thermal/qcom,tmd.h
>
> diff --git a/Documentation/devicetree/bindings/thermal/qcom,qmi-tmd-device.yaml b/Documentation/devicetree/bindings/thermal/qcom,qmi-tmd-device.yaml
> new file mode 100644
> index 000000000000..dfda5b611a93
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/thermal/qcom,qmi-tmd-device.yaml
> @@ -0,0 +1,78 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/thermal/qcom,qmi-tmd-device.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Qualcomm QMI based thermal mitigation (TMD) cooling devices.
> +
> +maintainers:
> + - Bhupesh Sharma <bhupesh.sharma@...aro.org>
> +
> +description:
> + Qualcomm QMI based TMD cooling device(s) are used for various
> + mitigations for remote subsystem(s) including remote processor
> + mitigation, rail voltage restriction etc.
> +
> +properties:
> + $nodename:
> + const: qmi-tmd-devices
> +
> + compatible:
> + items:
> + - const: qcom,qmi-tmd-devices
> +
> + modem0:
> + $ref: /schemas/thermal/qcom,tmd-device.yaml#
> +
> + adsp:
> + $ref: /schemas/thermal/qcom,tmd-device.yaml#
> +
> + cdsp:
> + $ref: /schemas/thermal/qcom,tmd-device.yaml#
> +
> + slpi:
> + $ref: /schemas/thermal/qcom,tmd-device.yaml#
> +
> +required:
> + - compatible
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/thermal/qcom,tmd.h>
> + qmi-tmd-devices {
Looking at the implementation I see no relationship between the
individual instances (i.e. between the children of this node).
My suggestion is that you drop this top-level node and just list out
modem, adsp etc individually - which would mean that you can remove one
layer of indirection in the driver, as each instance would just need a
list of cooling-devices.
> + compatible = "qcom,qmi-tmd-devices";
> +
> + modem0 {
So you would move the compatible here.
> + qcom,instance-id = <MODEM0_INSTANCE_ID>;
> +
> + modem0_pa: tmd-device0 {
> + label = "pa";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_proc: tmd-device1 {
> + label = "modem";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_current: tmd-device2 {
> + label = "modem_current";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_skin: tmd-device3 {
> + label = "modem_skin";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_vdd: tmd-device4 {
> + label = "cpuv_restriction_cold";
> + #cooling-cells = <2>;
> + };
> + };
> + };
> +...
> diff --git a/Documentation/devicetree/bindings/thermal/qcom,tmd-device.yaml b/Documentation/devicetree/bindings/thermal/qcom,tmd-device.yaml
> new file mode 100644
> index 000000000000..38ac62f03376
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/thermal/qcom,tmd-device.yaml
> @@ -0,0 +1,122 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/thermal/qcom,tmd-device.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
I see no reason for splitting this into a separate binding.
> +title: Qualcomm thermal mitigation (TMD) cooling devices
> +
> +maintainers:
> + - Bhupesh Sharma <bhupesh.sharma@...aro.org>
> +
> +description:
> + Qualcomm thermal mitigation (TMD) cooling devices. Each child node
> + represents one remote subsystem and each child of this subsystem in-turn
> + represents separate cooling devices.
> +
> +properties:
> + $nodename:
> + pattern: "^(modem|adsp|cdsp|slpi[0-9])?$"
> +
> + qcom,instance-id:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Remote subsystem QMI server instance id to be used for communicating with QMI.
> +
> +patternProperties:
> + "^tmd-device[0-9]?$":
So max 10 cooling devices per remote?
> + type: object
> + description:
> + Subnodes indicating tmd cooling device of a specific category.
> + properties:
> + label:
> + maxItems: 1
> + description: |
> + Remote subsystem device identifier. Acceptable device names -
> + "pa" -> for pa cooling device,
> + "cpuv_restriction_cold" -> for vdd restriction,
> + "cx_vdd_limit" -> for vdd limit,
> + "modem" -> for processor passive cooling device,
> + "modem_current" -> for current limiting device,
> + "modem_bw" -> for bus bandwidth limiting device,
> + "cpr_cold" -> for cpr restriction.
Afaict there are about 50 valid cooling devices listed in the driver.
Why limit this to these 7 here?
> +
> + "#cooling-cells":
> + const: 2
> +
> + required:
> + - label
> + - "#cooling-cells"
> +
> + additionalProperties: false
> +
> +required:
> + - qcom,instance-id
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/thermal/qcom,tmd.h>
> + modem0 {
As written here this example is incomplete, as these nodes can't live on
their own.
But this is actually what I propose above.
> + qcom,instance-id = <MODEM0_INSTANCE_ID>;
> +
> + modem0_pa: tmd-device0 {
> + label = "pa";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_proc: tmd-device1 {
> + label = "modem";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_current: tmd-device2 {
> + label = "modem_current";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_skin: tmd-device3 {
> + label = "modem_skin";
> + #cooling-cells = <2>;
> + };
> +
> + modem0_vdd: tmd-device4 {
> + label = "cpuv_restriction_cold";
> + #cooling-cells = <2>;
> + };
> + };
> +
> + - |
> + #include <dt-bindings/thermal/qcom,tmd.h>
> + adsp {
> + qcom,instance-id = <ADSP_INSTANCE_ID>;
> +
> + adsp_vdd: tmd-device1 {
> + label = "cpuv_restriction_cold";
> + #cooling-cells = <2>;
> + };
> + };
> +
> + - |
> + #include <dt-bindings/thermal/qcom,tmd.h>
> + cdsp {
> + qcom,instance-id = <CDSP_INSTANCE_ID>;
> +
> + cdsp_vdd: tmd-device1 {
> + label = "cpuv_restriction_cold";
> + #cooling-cells = <2>;
> + };
> + };
> +
> + - |
> + #include <dt-bindings/thermal/qcom,tmd.h>
> + slpi {
> + qcom,instance-id = <SLPI_INSTANCE_ID>;
> +
> + slpi_vdd: tmd-device1 {
> + label = "cpuv_restriction_cold";
> + #cooling-cells = <2>;
> + };
> + };
> diff --git a/include/dt-bindings/thermal/qcom,tmd.h b/include/dt-bindings/thermal/qcom,tmd.h
> new file mode 100644
> index 000000000000..5ede4422e04e
> --- /dev/null
> +++ b/include/dt-bindings/thermal/qcom,tmd.h
This is a quite generic name, how about qcom,qmi-cooling.h?
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This header provides constants for the Qualcomm TMD instances.
> + */
> +
> +#ifndef _DT_BINDINGS_THERMAL_QCOM_TMD_H_
> +#define _DT_BINDINGS_THERMAL_QCOM_TMD_H_
> +
> +#define MODEM0_INSTANCE_ID 0x0
> +#define ADSP_INSTANCE_ID 0x1
> +#define CDSP_INSTANCE_ID 0x43
> +#define SLPI_INSTANCE_ID 0x53
QMI cooling isn't the only thing dealing with "instance id" and all of
them would deal with instances ids of type modem, adsp, cdsp, slpi etc.
As such I think these are too generic, how about
QMI_COOLING_ADSP etc?
Regards,
Bjorn
> +
> +#endif
> --
> 2.37.1
>
Powered by blists - more mailing lists