diff mbox series

[v4,1/4] dt-bindings: power: reset: Convert mode-.* properties to array

Message ID 20240611-arm-psci-system_reset2-vendor-reboots-v4-1-98f55aa74ae8@quicinc.com (mailing list archive)
State New
Headers show
Series Implement vendor resets for PSCI SYSTEM_RESET2 | expand

Commit Message

Elliot Berman June 11, 2024, 3:35 p.m. UTC
PSCI reboot mode will map a mode name to multiple magic values instead
of just one. Convert the mode-.* property to an array. Users of the
reboot-mode schema will need to specify the maxItems of the mode-.*
properties. Existing users will all be 1.

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
---
 .../devicetree/bindings/power/reset/nvmem-reboot-mode.yaml        | 5 +++++
 Documentation/devicetree/bindings/power/reset/qcom,pon.yaml       | 8 ++++++++
 Documentation/devicetree/bindings/power/reset/reboot-mode.yaml    | 4 ++--
 .../devicetree/bindings/power/reset/syscon-reboot-mode.yaml       | 5 +++++
 4 files changed, 20 insertions(+), 2 deletions(-)

Comments

Rob Herring (Arm) June 11, 2024, 8:40 p.m. UTC | #1
On Tue, Jun 11, 2024 at 08:35:13AM -0700, Elliot Berman wrote:
> PSCI reboot mode will map a mode name to multiple magic values instead
> of just one. Convert the mode-.* property to an array. Users of the
> reboot-mode schema will need to specify the maxItems of the mode-.*
> properties. Existing users will all be 1.
> 
> Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
> ---
>  .../devicetree/bindings/power/reset/nvmem-reboot-mode.yaml        | 5 +++++
>  Documentation/devicetree/bindings/power/reset/qcom,pon.yaml       | 8 ++++++++
>  Documentation/devicetree/bindings/power/reset/reboot-mode.yaml    | 4 ++--
>  .../devicetree/bindings/power/reset/syscon-reboot-mode.yaml       | 5 +++++
>  4 files changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> index 627f8a6078c2..9b9bbc0f29e7 100644
> --- a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> +++ b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> @@ -31,6 +31,11 @@ properties:
>  allOf:
>    - $ref: reboot-mode.yaml#
>  
> +patternProperties:
> +  "^mode-.*$":
> +    items:
> +      maxItems: 1

Drop 'items'. Otherwise, you are defining constraints of a matrix.

> +
>  required:
>    - compatible
>    - nvmem-cells
> diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> index fc8105a7b9b2..4c87ff5ecc9a 100644
> --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> @@ -54,6 +54,11 @@ required:
>    - compatible
>    - reg
>  
> +patternProperties:
> +  "^mode-.*$":
> +    items:
> +      maxItems: 1
> +
>  unevaluatedProperties: false
>  
>  allOf:
> @@ -75,6 +80,9 @@ allOf:
>          reg-names:
>            items:
>              - const: pon
> +    else:
> +      patternProperties:
> +        "^mode-.*$": false
>  
>      # Special case for pm8941, which doesn't store reset mode
>    - if:
> diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
> index ad0a0b95cec1..523602fb82d2 100644
> --- a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
> +++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
> @@ -28,13 +28,13 @@ description: |
>  
>  properties:
>    mode-normal:
> -    $ref: /schemas/types.yaml#/definitions/uint32
> +    $ref: "#/patternProperties/^mode-.*$"

No need for this. The pattern schema will be applied already. Also, a 
$ref to a regex is fragile as it won't work for some regex patterns.

>      description:
>        Default value to set on a reboot if no command was provided.
>  
>  patternProperties:
>    "^mode-.*$":
> -    $ref: /schemas/types.yaml#/definitions/uint32
> +    $ref: /schemas/types.yaml#/definitions/uint32-array
>  
>  additionalProperties: true
>  
> diff --git a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
> index b6acff199cde..e9d2e3b27885 100644
> --- a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
> +++ b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
> @@ -32,6 +32,11 @@ properties:
>  allOf:
>    - $ref: reboot-mode.yaml#
>  
> +patternProperties:
> +  "^mode-.*$":
> +    items:
> +      maxItems: 1
> +
>  unevaluatedProperties: false
>  
>  required:
> 
> -- 
> 2.34.1
>
Elliot Berman June 11, 2024, 11:23 p.m. UTC | #2
On Tue, Jun 11, 2024 at 02:40:01PM -0600, Rob Herring wrote:
> On Tue, Jun 11, 2024 at 08:35:13AM -0700, Elliot Berman wrote:
> > PSCI reboot mode will map a mode name to multiple magic values instead
> > of just one. Convert the mode-.* property to an array. Users of the
> > reboot-mode schema will need to specify the maxItems of the mode-.*
> > properties. Existing users will all be 1.
> > 
> > Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
> > ---
> >  .../devicetree/bindings/power/reset/nvmem-reboot-mode.yaml        | 5 +++++
> >  Documentation/devicetree/bindings/power/reset/qcom,pon.yaml       | 8 ++++++++
> >  Documentation/devicetree/bindings/power/reset/reboot-mode.yaml    | 4 ++--
> >  .../devicetree/bindings/power/reset/syscon-reboot-mode.yaml       | 5 +++++
> >  4 files changed, 20 insertions(+), 2 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > index 627f8a6078c2..9b9bbc0f29e7 100644
> > --- a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > +++ b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > @@ -31,6 +31,11 @@ properties:
> >  allOf:
> >    - $ref: reboot-mode.yaml#
> >  
> > +patternProperties:
> > +  "^mode-.*$":
> > +    items:
> > +      maxItems: 1
> 
> Drop 'items'. Otherwise, you are defining constraints of a matrix.
> 

If I do this, I also have to add $ref: .../uint32-array as well so
the property can be picked up as an array type. Let me know if this isn't
right, otherwise I'll send out a fixed version in a few days.

Thanks,
Elliot
Rob Herring (Arm) June 13, 2024, 5:35 p.m. UTC | #3
On Tue, Jun 11, 2024 at 04:23:00PM -0700, Elliot Berman wrote:
> On Tue, Jun 11, 2024 at 02:40:01PM -0600, Rob Herring wrote:
> > On Tue, Jun 11, 2024 at 08:35:13AM -0700, Elliot Berman wrote:
> > > PSCI reboot mode will map a mode name to multiple magic values instead
> > > of just one. Convert the mode-.* property to an array. Users of the
> > > reboot-mode schema will need to specify the maxItems of the mode-.*
> > > properties. Existing users will all be 1.
> > > 
> > > Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
> > > ---
> > >  .../devicetree/bindings/power/reset/nvmem-reboot-mode.yaml        | 5 +++++
> > >  Documentation/devicetree/bindings/power/reset/qcom,pon.yaml       | 8 ++++++++
> > >  Documentation/devicetree/bindings/power/reset/reboot-mode.yaml    | 4 ++--
> > >  .../devicetree/bindings/power/reset/syscon-reboot-mode.yaml       | 5 +++++
> > >  4 files changed, 20 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > > index 627f8a6078c2..9b9bbc0f29e7 100644
> > > --- a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > > +++ b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
> > > @@ -31,6 +31,11 @@ properties:
> > >  allOf:
> > >    - $ref: reboot-mode.yaml#
> > >  
> > > +patternProperties:
> > > +  "^mode-.*$":
> > > +    items:
> > > +      maxItems: 1
> > 
> > Drop 'items'. Otherwise, you are defining constraints of a matrix.
> > 
> 
> If I do this, I also have to add $ref: .../uint32-array as well so
> the property can be picked up as an array type. Let me know if this isn't
> right, otherwise I'll send out a fixed version in a few days.

Ah, I suppose the tools get confused with what to do here. That's an 
issue I'm working on addressing. The issue is everything is a matrix 
because without other information for a property we don't know how to 
decode them. But with the schemas being fairly complete now and the move 
away from DTB->YAML decoding, we can decode properties to the right 
type. One issue to switch over is places where this 'everything is a 
matrix' crept into schemas. I've been fixing these. The above is an 
example of this.

So for now, just drop 'items'. It won't enforce anything, but once we 
switch over it will.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
index 627f8a6078c2..9b9bbc0f29e7 100644
--- a/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
+++ b/Documentation/devicetree/bindings/power/reset/nvmem-reboot-mode.yaml
@@ -31,6 +31,11 @@  properties:
 allOf:
   - $ref: reboot-mode.yaml#
 
+patternProperties:
+  "^mode-.*$":
+    items:
+      maxItems: 1
+
 required:
   - compatible
   - nvmem-cells
diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
index fc8105a7b9b2..4c87ff5ecc9a 100644
--- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
+++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
@@ -54,6 +54,11 @@  required:
   - compatible
   - reg
 
+patternProperties:
+  "^mode-.*$":
+    items:
+      maxItems: 1
+
 unevaluatedProperties: false
 
 allOf:
@@ -75,6 +80,9 @@  allOf:
         reg-names:
           items:
             - const: pon
+    else:
+      patternProperties:
+        "^mode-.*$": false
 
     # Special case for pm8941, which doesn't store reset mode
   - if:
diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
index ad0a0b95cec1..523602fb82d2 100644
--- a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
+++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
@@ -28,13 +28,13 @@  description: |
 
 properties:
   mode-normal:
-    $ref: /schemas/types.yaml#/definitions/uint32
+    $ref: "#/patternProperties/^mode-.*$"
     description:
       Default value to set on a reboot if no command was provided.
 
 patternProperties:
   "^mode-.*$":
-    $ref: /schemas/types.yaml#/definitions/uint32
+    $ref: /schemas/types.yaml#/definitions/uint32-array
 
 additionalProperties: true
 
diff --git a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
index b6acff199cde..e9d2e3b27885 100644
--- a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
+++ b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.yaml
@@ -32,6 +32,11 @@  properties:
 allOf:
   - $ref: reboot-mode.yaml#
 
+patternProperties:
+  "^mode-.*$":
+    items:
+      maxItems: 1
+
 unevaluatedProperties: false
 
 required: