Re: [PATCH v2 6/7] dt-bindings: mfd: syscon: Split and enforce documenting MFD children

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 17, 2024 at 05:44:52PM +0100, Conor Dooley wrote:
> On Sun, Jun 16, 2024 at 03:19:26PM +0200, Krzysztof Kozlowski wrote:
> > Simple syscon nodes can be documented in common syscon.yaml, however
> > devices with simple-mfd compatible, thus with some children, should have
> > their own schema listing these children.  Such listing makes the binding
> > specific, allows better validation (so the incorrect child would not
> > appear in the simple-mfd node) and actually enforces repeated rule for
> > simple-mfd devices:
> > 
> >   "simple-mfd" is only for simple devices, where the children do not
> >   depend on the parent.
> > 
> > Currently the syscon+simple-mfd binding is quite broad and allows
> > any child or property, thus above rule cannot be enforced.
> > 
> > Split the syscon.yaml binding into:
> > 1. Common syscon properties, used potentially by many bindings.
> > 2. Simple syscon devices (NO simple-mfd!).
> > 
> > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
> > 
> > ---
> > 
> > Depends on:
> > 1. Patch in MFD: https://lore.kernel.org/all/171828959006.2643902.8308227314531523435.b4-ty@xxxxxxxxxx/
> > 2. Previous patches in the series.
> > ---
> >  .../devicetree/bindings/mfd/syscon-common.yaml     |  72 +++++
> >  Documentation/devicetree/bindings/mfd/syscon.yaml  | 294 +++++++++++++--------
> >  2 files changed, 251 insertions(+), 115 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/mfd/syscon-common.yaml b/Documentation/devicetree/bindings/mfd/syscon-common.yaml
> > new file mode 100644
> > index 000000000000..c3ff3a7afce3
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/syscon-common.yaml
> > @@ -0,0 +1,72 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/mfd/syscon-common.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: System Controller Registers R/W Common Properties
> > +
> > +description: |
> 
> This | can go, right?
> 
> > +  System controller node represents a register region containing a set
> > +  of miscellaneous registers. The registers are not cohesive enough to
> > +  represent as any specific type of device. The typical use-case is
> > +  for some other node's driver, or platform-specific code, to acquire
> > +  a reference to the syscon node (e.g. by phandle, node path, or
> > +  search using a specific compatible value), interrogate the node (or
> > +  associated OS driver) to determine the location of the registers,
> > +  and access the registers directly.
> > +
> > +maintainers:
> > +  - Lee Jones <lee@xxxxxxxxxx>
> > +
> > +select:
> > +  properties:
> > +    compatible:
> > +      contains:
> > +        enum:
> 
> And this can be const, given it's unlikely to grow?
> 
> > +          - syscon
> > +
> > +  required:
> > +    - compatible
> > +
> > +properties:
> > +  compatible:
> > +    contains:
> > +      const: syscon
> > +    minItems: 2
> > +    maxItems: 5  # Should be enough
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  reg-io-width:
> > +    description: |
> 
> Same with this one.
> 
> > +      The size (in bytes) of the IO accesses that should be performed
> > +      on the device.
> > +    enum: [1, 2, 4, 8]
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +allOf:
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: simple-mfd
> > +    then:
> > +      properties:
> > +        compatible:
> > +          minItems: 3
> > +          maxItems: 5
> > +
> > +additionalProperties: true
> > +
> > +examples:
> > +  - |
> > +    syscon: syscon@1c00000 {
> > +        compatible = "allwinner,sun8i-h3-system-controller", "syscon";
> > +        reg = <0x01c00000 0x1000>;
> > +    };
> > +...
> > diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml
> > index d6fa58c9e4de..d4e9533cf3fe 100644
> > --- a/Documentation/devicetree/bindings/mfd/syscon.yaml
> > +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml
> > @@ -4,7 +4,7 @@
> >  $id: http://devicetree.org/schemas/mfd/syscon.yaml#
> >  $schema: http://devicetree.org/meta-schemas/core.yaml#
> >  
> > -title: System Controller Registers R/W
> > +title: System Controller Devices
> >  
> >  description: |
> >    System controller node represents a register region containing a set
> > @@ -19,123 +19,196 @@ description: |
> >  maintainers:
> >    - Lee Jones <lee@xxxxxxxxxx>
> >  
> > +# Need a select with all compatibles listed for compatibility with older
> > +# dtschema (<2024.02), so this will not be selected for other schemas having
> > +# syscon fallback.
> >  select:
> >    properties:
> >      compatible:
> >        contains:
> >          enum:
> > -          - syscon
> 
> Wow, this is noisy. Is it not possible to achieve something similar by
> making the select check for not: compatible: contains: simple-mfd? Or
> did I misunderstand the intention here?

Ah, you'd match things then like the intel,lgm-syscon, right?

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux