[4/6] dt-bindings: net: marvell,prestera: Describe PCI devices of the prestera family

Message ID 20221117215557.1277033-5-miquel.raynal@bootlin.com
State New
Headers
Series Marvell nvmem mac addresses support |

Commit Message

Miquel Raynal Nov. 17, 2022, 9:55 p.m. UTC
  Even though the devices have very little in common beside the name and
the main "switch" feature, Marvell Prestera switch family is also
composed of PCI-only devices which can receive additional static
properties, like nvmem cells to point at MAC addresses, for
instance. Let's describe them.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 .../bindings/net/marvell,prestera.yaml        | 55 ++++++++++++++++---
 1 file changed, 48 insertions(+), 7 deletions(-)
  

Comments

Rob Herring Nov. 23, 2022, 10:13 p.m. UTC | #1
On Thu, Nov 17, 2022 at 10:55:55PM +0100, Miquel Raynal wrote:
> Even though the devices have very little in common beside the name and
> the main "switch" feature, Marvell Prestera switch family is also
> composed of PCI-only devices which can receive additional static
> properties, like nvmem cells to point at MAC addresses, for
> instance. Let's describe them.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
>  .../bindings/net/marvell,prestera.yaml        | 55 ++++++++++++++++---
>  1 file changed, 48 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/marvell,prestera.yaml b/Documentation/devicetree/bindings/net/marvell,prestera.yaml
> index b0a3ecca406e..f159fadf86ec 100644
> --- a/Documentation/devicetree/bindings/net/marvell,prestera.yaml
> +++ b/Documentation/devicetree/bindings/net/marvell,prestera.yaml
> @@ -4,19 +4,24 @@
>  $id: http://devicetree.org/schemas/net/marvell,prestera.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
> -title: Marvell Prestera AlleyCat3 switch
> +title: Marvell Prestera switch family
>  
>  maintainers:
>    - Miquel Raynal <miquel.raynal@bootlin.com>
>  
>  properties:
>    compatible:
> -    items:
> +    oneOf:
> +      - items:
> +          - enum:
> +              - marvell,prestera-98dx3236
> +              - marvell,prestera-98dx3336
> +              - marvell,prestera-98dx4251
> +          - const: marvell,prestera
>        - enum:
> -          - marvell,prestera-98dx3236
> -          - marvell,prestera-98dx3336
> -          - marvell,prestera-98dx4251
> -      - const: marvell,prestera
> +          - pci11ab,c804
> +          - pci11ab,c80c
> +          - pci11ab,cc1e
>  
>    reg:
>      maxItems: 1
> @@ -28,10 +33,33 @@ properties:
>      description: Reference to the DFX Server bus node.
>      $ref: /schemas/types.yaml#/definitions/phandle
>  
> +  nvmem-cells: true
> +
> +  nvmem-cell-names: true
> +
> +if:
> +  properties:
> +    compatible:
> +      contains:
> +        const: marvell,prestera
> +
> +# Memory mapped AlleyCat3 family
> +then:
> +  properties:
> +    nvmem-cells: false
> +    nvmem-cell-names: false
> +  required:
> +    - interrupts
> +
> +# PCI Aldrin family
> +else:
> +  properties:
> +    interrupts: false
> +    dfx: false
> +
>  required:
>    - compatible
>    - reg
> -  - interrupts
>  
>  additionalProperties: false
>  
> @@ -43,3 +71,16 @@ examples:
>          interrupts = <33>, <34>, <35>;
>          dfx = <&dfx>;
>      };
> +
> +  - |
> +    pcie {
> +        #address-cells = <3>;
> +        #size-cells = <2>;

           ranges;
           device_type = "pci";

With that,

Reviewed-by: Rob Herring <robh@kernel.org>

> +
> +        switch@0,0 {
> +            reg = <0x0 0x0 0x0 0x0 0x0>;
> +            compatible = "pci11ab,c80c";
> +            nvmem-cells = <&mac_address 0>;
> +            nvmem-cell-names = "mac-address";
> +        };
> +    };
> -- 
> 2.34.1
> 
>
  

Patch

diff --git a/Documentation/devicetree/bindings/net/marvell,prestera.yaml b/Documentation/devicetree/bindings/net/marvell,prestera.yaml
index b0a3ecca406e..f159fadf86ec 100644
--- a/Documentation/devicetree/bindings/net/marvell,prestera.yaml
+++ b/Documentation/devicetree/bindings/net/marvell,prestera.yaml
@@ -4,19 +4,24 @@ 
 $id: http://devicetree.org/schemas/net/marvell,prestera.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Marvell Prestera AlleyCat3 switch
+title: Marvell Prestera switch family
 
 maintainers:
   - Miquel Raynal <miquel.raynal@bootlin.com>
 
 properties:
   compatible:
-    items:
+    oneOf:
+      - items:
+          - enum:
+              - marvell,prestera-98dx3236
+              - marvell,prestera-98dx3336
+              - marvell,prestera-98dx4251
+          - const: marvell,prestera
       - enum:
-          - marvell,prestera-98dx3236
-          - marvell,prestera-98dx3336
-          - marvell,prestera-98dx4251
-      - const: marvell,prestera
+          - pci11ab,c804
+          - pci11ab,c80c
+          - pci11ab,cc1e
 
   reg:
     maxItems: 1
@@ -28,10 +33,33 @@  properties:
     description: Reference to the DFX Server bus node.
     $ref: /schemas/types.yaml#/definitions/phandle
 
+  nvmem-cells: true
+
+  nvmem-cell-names: true
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: marvell,prestera
+
+# Memory mapped AlleyCat3 family
+then:
+  properties:
+    nvmem-cells: false
+    nvmem-cell-names: false
+  required:
+    - interrupts
+
+# PCI Aldrin family
+else:
+  properties:
+    interrupts: false
+    dfx: false
+
 required:
   - compatible
   - reg
-  - interrupts
 
 additionalProperties: false
 
@@ -43,3 +71,16 @@  examples:
         interrupts = <33>, <34>, <35>;
         dfx = <&dfx>;
     };
+
+  - |
+    pcie {
+        #address-cells = <3>;
+        #size-cells = <2>;
+
+        switch@0,0 {
+            reg = <0x0 0x0 0x0 0x0 0x0>;
+            compatible = "pci11ab,c80c";
+            nvmem-cells = <&mac_address 0>;
+            nvmem-cell-names = "mac-address";
+        };
+    };