mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Bjorn Andersson <andersson@kernel.org>
To: Bhupesh Sharma <bhupesh.sharma@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
	devicetree@vger.kernel.org, agross@kernel.org,
	linux-arm-msm@vger.kernel.org, daniel.lezcano@linaro.org,
	robh@kernel.org, rafael@kernel.org, bhupesh.linux@gmail.com
Subject: Re: [PATCH 3/4] dt-bindings: thermal: Add qcom,qmi-tmd-device and qcom,tmd-device yaml bindings
Date: Tue, 13 Sep 2022 14:10:51 -0500	[thread overview]
Message-ID: <20220913191051.vx7leo6c4qbcuyns@builder.lan> (raw)
In-Reply-To: <20220912085049.3517140-4-bhupesh.sharma@linaro.org>

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@linaro.org
> Cc: rafael@kernel.org
> Cc: andersson@kernel.org
> Cc: robh@kernel.org
> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.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@linaro.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@linaro.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
> 

  parent reply	other threads:[~2022-09-13 19:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-12  8:50 [PATCH 0/4] thermal: Introduce Qualcomm Cooling Driver suppport Bhupesh Sharma
2022-09-12  8:50 ` [PATCH 1/4] thermal: qcom: qmi_cooling: Add skeletal qmi cooling driver Bhupesh Sharma
2022-09-12 21:23   ` Jeff Johnson
2022-09-13 15:39     ` Bjorn Andersson
2022-09-13 18:42   ` Bjorn Andersson
2022-09-12  8:50 ` [PATCH 2/4] thermal: qcom: Add Kconfig entry & compilation support for " Bhupesh Sharma
2022-09-13 18:53   ` Bjorn Andersson
2022-09-12  8:50 ` [PATCH 3/4] dt-bindings: thermal: Add qcom,qmi-tmd-device and qcom,tmd-device yaml bindings Bhupesh Sharma
2022-09-12 15:38   ` Rob Herring
2022-09-12 15:58   ` Rob Herring
2022-09-13 19:10   ` Bjorn Andersson [this message]
2022-10-28 16:58   ` Krzysztof Kozlowski
2022-09-12  8:50 ` [PATCH 4/4] MAINTAINERS: Add entry for Qualcomm Cooling Driver Bhupesh Sharma

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220913191051.vx7leo6c4qbcuyns@builder.lan \
    --to=andersson@kernel.org \
    --cc=agross@kernel.org \
    --cc=bhupesh.linux@gmail.com \
    --cc=bhupesh.sharma@linaro.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®