All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: Rob Herring <robh@kernel.org>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Cristian Marussi <cristian.marussi@arm.com>,
	Kevin Hilman <khilman@baylibre.com>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Jerome Brunet <jbrunet@baylibre.com>
Subject: Re: [PATCH v2 6/8] dt-bindings: firmware: arm,scpi: Convert to json schema
Date: Wed, 2 Jun 2021 17:05:57 +0100	[thread overview]
Message-ID: <20210602160557.xxdnrpk467dui363@bogus> (raw)
In-Reply-To: <20210602155800.GA3425929@robh.at.kernel.org>

On Wed, Jun 02, 2021 at 10:58:00AM -0500, Rob Herring wrote:
> On Tue, Jun 01, 2021 at 11:49:02PM +0100, Sudeep Holla wrote:
> > Convert the old text format binding for System Control and Power Interface
> > (SCPI) Message Protocol into the new and shiny YAML format.
> > 
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Kevin Hilman <khilman@baylibre.com>
> > Cc: Neil Armstrong <narmstrong@baylibre.com>
> > Cc: Jerome Brunet <jbrunet@baylibre.com>
> > Cc: Viresh Kumar <viresh.kumar@linaro.org
> > Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> > ---
> >  .../devicetree/bindings/arm/arm,scpi.txt      | 204 -------------
> >  .../bindings/firmware/arm,scpi.yaml           | 285 ++++++++++++++++++
> >  MAINTAINERS                                   |   2 +-
> >  3 files changed, 286 insertions(+), 205 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/arm/arm,scpi.txt
> >  create mode 100644 Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> 
> [...]
> 
> > diff --git a/Documentation/devicetree/bindings/firmware/arm,scpi.yaml b/Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> > new file mode 100644
> > index 000000000000..b44a5a7040fc
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> > @@ -0,0 +1,285 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright 2021 ARM Ltd.
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/firmware/arm,scpi.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: System Control and Power Interface (SCPI) Message Protocol bindings
> > +
> > +maintainers:
> > +  - Sudeep Holla <sudeep.holla@arm.com>
> > +
> > +description: |
> > +  Firmware implementing the SCPI described in ARM document number ARM DUI
> > +  0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be
> > +  used by Linux to initiate various system control and power operations.
> > +
> > +  This binding is intended to define the interface the firmware implementing
> > +  the SCPI provide for OSPM in the device tree.
> > +
> > +  [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
> > +
> > +properties:
> > +  $nodename:
> > +    const: scpi
> > +
> > +  compatible:
> > +    description: |
> > +      SCPI compliant firmware complying to SCPI v1.0 and above OR
> > +      SCPI compliant firmware complying to all unversioned releases
> > +      prior to SCPI v1.0
> > +    oneOf:
> > +      - const: arm,scpi               # SCPI v1.0 and above
> > +      - const: arm,scpi-pre-1.0       # Unversioned SCPI before v1.0
> > +
> > +  mboxes:
> > +    description: |
> > +      List of phandle and mailbox channel specifiers. All the channels reserved
> > +      by remote SCP firmware for use by SCPI message protocol should be
> > +      specified in any order.
> > +    minItems: 1
> > +
> > +  shmem:
> > +    description: |
> > +      List of phandle pointing to the shared memory(SHM) area between the
> > +      processors using these mailboxes for IPC, one for each mailbox SHM can
> > +      be any memory reserved for the purpose of this communication between the
> > +      processors.
> > +    minItems: 1
> > +
> > +additionalProperties:
> > +  type: object
> > +
> > +patternProperties:
> > +  "^(sensors|power-domains)(-[0-9a-f]+)?$":
> 
> AFAICT, we only ever have 1 sensor and 1 power-domains node, so we don't 
> need the numbering.
>

Right, I initially had clock too there and didn't notice the above 2 doesn't
need the numbering, will drop it.

> Also, these should each be their own entry rather that having the 
> if/then schema mess below. You need an 'additionalProperties: false' in 
> here too.
>

OK that sounds cleaner.

> > +    type: object
> > +    description: |
> > +      Each sub-node represents one of the controller - power domains or sensors.
> > +
> > +    properties:
> > +      compatible:
> > +        oneOf:
> > +          - const: arm,scpi-sensors
> > +          - const: arm,scpi-power-domains
> > +
> > +  "^clocks(-[0-9a-f]+)?$":
> > +    type: object
> > +    description: |
> > +      "arm,scpi-clocks" - This is the container node. Each sub-node
> > +      represents one of the types of clock controller - indexed or full range.
> > +
> > +      "arm,scpi-dvfs-clocks" - all the clocks that are variable and index
> > +      based. These clocks don't provide an entire range of values
> > +      between the limits but only discrete points within the range. The
> > +      firmware provides the mapping for each such operating frequency
> > +      and the index associated with it. The firmware also manages the
> > +      voltage scaling appropriately with the clock scaling.
> > +
> > +      "arm,scpi-variable-clocks" - all the clocks that are variable and
> > +      provide full range within the specified range. The firmware
> > +      provides the range of values within a specified range.
> > +
> > +    properties:
> > +      compatible:
> > +        oneOf:
> > +          - const: arm,scpi-clocks
> > +          - const: arm,scpi-dvfs-clocks
> > +          - const: arm,scpi-variable-clocks
> 
> This doesn't make sense. The first one is the parent node and the last 2 
> are child nodes under it. The child nodes need to be defined in yet 
> another level.
>

Agreed, I did that for SCMI regulators, will follow that here too.

> > +
> > +required:
> > +  - compatible
> > +  - mboxes
> > +  - shmem
> > +
> > +allOf:
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: arm,scpi-sensors
> > +    then:
> > +      properties:
> > +        '#thermal-sensor-cells':
> > +          const: 1
> > +
> > +      required:
> > +        - '#thermal-sensor-cells'
> > +
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: arm,scpi-power-domains
> > +    then:
> > +      properties:
> > +        '#power-domain-cells':
> > +          const: 1
> > +
> > +        num-domains:
> > +          $ref: /schemas/types.yaml#/definitions/uint32
> > +          description: |
> > +            Total number of power domains provided by SCPI. This is needed as
> > +            the SCPI message protocol lacks a mechanism to query this
> > +            information at runtime.
> > +
> > +      required:
> > +        - '#power-domain-cells'
> > +        - num-domains
> > +
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            enum:
> > +              - arm,scpi-dvfs-clocks
> > +              - arm,scpi-variable-clocks
> 
> This would never be true unless you removed the container 'clocks' node.
>

Understood. I should have tested removing properties in the example like
I did for SCMI. I must have show less interest for SCPI as it is old and
almost deprecated 😁. I will fix it.

-- 
Regards,
Sudeep

WARNING: multiple messages have this Message-ID (diff)
From: Sudeep Holla <sudeep.holla@arm.com>
To: Rob Herring <robh@kernel.org>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Cristian Marussi <cristian.marussi@arm.com>,
	Kevin Hilman <khilman@baylibre.com>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Jerome Brunet <jbrunet@baylibre.com>
Subject: Re: [PATCH v2 6/8] dt-bindings: firmware: arm,scpi: Convert to json schema
Date: Wed, 2 Jun 2021 17:05:57 +0100	[thread overview]
Message-ID: <20210602160557.xxdnrpk467dui363@bogus> (raw)
In-Reply-To: <20210602155800.GA3425929@robh.at.kernel.org>

On Wed, Jun 02, 2021 at 10:58:00AM -0500, Rob Herring wrote:
> On Tue, Jun 01, 2021 at 11:49:02PM +0100, Sudeep Holla wrote:
> > Convert the old text format binding for System Control and Power Interface
> > (SCPI) Message Protocol into the new and shiny YAML format.
> > 
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Kevin Hilman <khilman@baylibre.com>
> > Cc: Neil Armstrong <narmstrong@baylibre.com>
> > Cc: Jerome Brunet <jbrunet@baylibre.com>
> > Cc: Viresh Kumar <viresh.kumar@linaro.org
> > Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> > ---
> >  .../devicetree/bindings/arm/arm,scpi.txt      | 204 -------------
> >  .../bindings/firmware/arm,scpi.yaml           | 285 ++++++++++++++++++
> >  MAINTAINERS                                   |   2 +-
> >  3 files changed, 286 insertions(+), 205 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/arm/arm,scpi.txt
> >  create mode 100644 Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> 
> [...]
> 
> > diff --git a/Documentation/devicetree/bindings/firmware/arm,scpi.yaml b/Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> > new file mode 100644
> > index 000000000000..b44a5a7040fc
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/firmware/arm,scpi.yaml
> > @@ -0,0 +1,285 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright 2021 ARM Ltd.
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/firmware/arm,scpi.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: System Control and Power Interface (SCPI) Message Protocol bindings
> > +
> > +maintainers:
> > +  - Sudeep Holla <sudeep.holla@arm.com>
> > +
> > +description: |
> > +  Firmware implementing the SCPI described in ARM document number ARM DUI
> > +  0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be
> > +  used by Linux to initiate various system control and power operations.
> > +
> > +  This binding is intended to define the interface the firmware implementing
> > +  the SCPI provide for OSPM in the device tree.
> > +
> > +  [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
> > +
> > +properties:
> > +  $nodename:
> > +    const: scpi
> > +
> > +  compatible:
> > +    description: |
> > +      SCPI compliant firmware complying to SCPI v1.0 and above OR
> > +      SCPI compliant firmware complying to all unversioned releases
> > +      prior to SCPI v1.0
> > +    oneOf:
> > +      - const: arm,scpi               # SCPI v1.0 and above
> > +      - const: arm,scpi-pre-1.0       # Unversioned SCPI before v1.0
> > +
> > +  mboxes:
> > +    description: |
> > +      List of phandle and mailbox channel specifiers. All the channels reserved
> > +      by remote SCP firmware for use by SCPI message protocol should be
> > +      specified in any order.
> > +    minItems: 1
> > +
> > +  shmem:
> > +    description: |
> > +      List of phandle pointing to the shared memory(SHM) area between the
> > +      processors using these mailboxes for IPC, one for each mailbox SHM can
> > +      be any memory reserved for the purpose of this communication between the
> > +      processors.
> > +    minItems: 1
> > +
> > +additionalProperties:
> > +  type: object
> > +
> > +patternProperties:
> > +  "^(sensors|power-domains)(-[0-9a-f]+)?$":
> 
> AFAICT, we only ever have 1 sensor and 1 power-domains node, so we don't 
> need the numbering.
>

Right, I initially had clock too there and didn't notice the above 2 doesn't
need the numbering, will drop it.

> Also, these should each be their own entry rather that having the 
> if/then schema mess below. You need an 'additionalProperties: false' in 
> here too.
>

OK that sounds cleaner.

> > +    type: object
> > +    description: |
> > +      Each sub-node represents one of the controller - power domains or sensors.
> > +
> > +    properties:
> > +      compatible:
> > +        oneOf:
> > +          - const: arm,scpi-sensors
> > +          - const: arm,scpi-power-domains
> > +
> > +  "^clocks(-[0-9a-f]+)?$":
> > +    type: object
> > +    description: |
> > +      "arm,scpi-clocks" - This is the container node. Each sub-node
> > +      represents one of the types of clock controller - indexed or full range.
> > +
> > +      "arm,scpi-dvfs-clocks" - all the clocks that are variable and index
> > +      based. These clocks don't provide an entire range of values
> > +      between the limits but only discrete points within the range. The
> > +      firmware provides the mapping for each such operating frequency
> > +      and the index associated with it. The firmware also manages the
> > +      voltage scaling appropriately with the clock scaling.
> > +
> > +      "arm,scpi-variable-clocks" - all the clocks that are variable and
> > +      provide full range within the specified range. The firmware
> > +      provides the range of values within a specified range.
> > +
> > +    properties:
> > +      compatible:
> > +        oneOf:
> > +          - const: arm,scpi-clocks
> > +          - const: arm,scpi-dvfs-clocks
> > +          - const: arm,scpi-variable-clocks
> 
> This doesn't make sense. The first one is the parent node and the last 2 
> are child nodes under it. The child nodes need to be defined in yet 
> another level.
>

Agreed, I did that for SCMI regulators, will follow that here too.

> > +
> > +required:
> > +  - compatible
> > +  - mboxes
> > +  - shmem
> > +
> > +allOf:
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: arm,scpi-sensors
> > +    then:
> > +      properties:
> > +        '#thermal-sensor-cells':
> > +          const: 1
> > +
> > +      required:
> > +        - '#thermal-sensor-cells'
> > +
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: arm,scpi-power-domains
> > +    then:
> > +      properties:
> > +        '#power-domain-cells':
> > +          const: 1
> > +
> > +        num-domains:
> > +          $ref: /schemas/types.yaml#/definitions/uint32
> > +          description: |
> > +            Total number of power domains provided by SCPI. This is needed as
> > +            the SCPI message protocol lacks a mechanism to query this
> > +            information at runtime.
> > +
> > +      required:
> > +        - '#power-domain-cells'
> > +        - num-domains
> > +
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            enum:
> > +              - arm,scpi-dvfs-clocks
> > +              - arm,scpi-variable-clocks
> 
> This would never be true unless you removed the container 'clocks' node.
>

Understood. I should have tested removing properties in the example like
I did for SCMI. I must have show less interest for SCPI as it is old and
almost deprecated 😁. I will fix it.

-- 
Regards,
Sudeep

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-06-02 16:06 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-01 22:48 [PATCH v2 0/8] dt-bindings: firmware: Convert SCPI and SCMI to json schema Sudeep Holla
2021-06-01 22:48 ` Sudeep Holla
2021-06-01 22:48 ` [PATCH v2 1/8] dt-bindings: firmware: arm,scpi: Move arm,scp-shmem " Sudeep Holla
2021-06-01 22:48   ` [PATCH v2 1/8] dt-bindings: firmware: arm, scpi: Move arm, scp-shmem " Sudeep Holla
2021-06-02 15:41   ` [PATCH v2 1/8] dt-bindings: firmware: arm,scpi: Move arm,scp-shmem " Rob Herring
2021-06-02 15:41     ` Rob Herring
2021-06-01 22:48 ` [PATCH v2 2/8] dt-bindings: firmware: arm,scmi: Move arm,scmi-shmem " Sudeep Holla
2021-06-01 22:48   ` [PATCH v2 2/8] dt-bindings: firmware: arm, scmi: Move arm, scmi-shmem " Sudeep Holla
2021-06-02 15:41   ` [PATCH v2 2/8] dt-bindings: firmware: arm,scmi: Move arm,scmi-shmem " Rob Herring
2021-06-02 15:41     ` Rob Herring
2021-06-01 22:48 ` [PATCH v2 3/8] dt-bindings: firmware: juno,scpi: Move to sram.yaml " Sudeep Holla
2021-06-01 22:48   ` [PATCH v2 3/8] dt-bindings: firmware: juno, scpi: " Sudeep Holla
2021-06-02 15:42   ` [PATCH v2 3/8] dt-bindings: firmware: juno,scpi: " Rob Herring
2021-06-02 15:42     ` Rob Herring
2021-06-01 22:49 ` [PATCH v2 4/8] dt-bindings: firmware: amlogic,scpi: Move arm,scpi-shmem to " Sudeep Holla
2021-06-01 22:49   ` [PATCH v2 4/8] dt-bindings: firmware: amlogic, scpi: Move arm, scpi-shmem " Sudeep Holla
2021-06-02 15:42   ` [PATCH v2 4/8] dt-bindings: firmware: amlogic,scpi: Move arm,scpi-shmem " Rob Herring
2021-06-02 15:42     ` Rob Herring
2021-06-01 22:49 ` [PATCH v2 5/8] dt-bindings: mailbox : arm,mhu: Fix arm,scpi example used here Sudeep Holla
2021-06-01 22:49   ` [PATCH v2 5/8] dt-bindings: mailbox : arm, mhu: Fix arm, scpi " Sudeep Holla
2021-06-01 22:49 ` [PATCH v2 6/8] dt-bindings: firmware: arm,scpi: Convert to json schema Sudeep Holla
2021-06-01 22:49   ` [PATCH v2 6/8] dt-bindings: firmware: arm, scpi: " Sudeep Holla
2021-06-02 15:58   ` [PATCH v2 6/8] dt-bindings: firmware: arm,scpi: " Rob Herring
2021-06-02 15:58     ` Rob Herring
2021-06-02 16:05     ` Sudeep Holla [this message]
2021-06-02 16:05       ` Sudeep Holla
2021-06-01 22:49 ` [PATCH v2 7/8] dt-bindings: firmware: amlogic,scpi: " Sudeep Holla
2021-06-01 22:49   ` [PATCH v2 7/8] dt-bindings: firmware: amlogic, scpi: " Sudeep Holla
2021-06-01 22:49 ` [PATCH v2 8/8] dt-bindings: firmware: arm,scmi: " Sudeep Holla
2021-06-01 22:49   ` [PATCH v2 8/8] dt-bindings: firmware: arm, scmi: " Sudeep Holla
2021-06-02 16:16   ` [PATCH v2 8/8] dt-bindings: firmware: arm,scmi: " Rob Herring
2021-06-02 16:16     ` Rob Herring

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=20210602160557.xxdnrpk467dui363@bogus \
    --to=sudeep.holla@arm.com \
    --cc=cristian.marussi@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jbrunet@baylibre.com \
    --cc=khilman@baylibre.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=narmstrong@baylibre.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.