Skip to content

Commit

Permalink
Merge branch 'dt-bindings-ocelot-switches'
Browse files Browse the repository at this point in the history
Colin Foster says

====================
dt-binding preparation for ocelot switches

Ocelot switches have the abilitiy to be used internally via
memory-mapped IO or externally via SPI or PCIe. This brings up issues
for documentation, where the same chip might be accessed internally in a
switchdev manner, or externally in a DSA configuration. This patch set
is perparation to bring DSA functionality to the VSC7512, utilizing as
much as possible with an almost identical VSC7514 chip.

This patch set changed quite a bit from v2, so I'll omit the background
of how those sets came to be. Rob offered a lot of very useful guidance.
My thanks.

At the end of the day, with this patch set, there should be a framework
to document Ocelot switches (and any switch) in scenarios where they can
be controlled internally (ethernet-switch) or externally (dsa-switch).

---

v6 -> v7
  * Add Reviewed / Acked on patch 1
  * Clean up descriptions on Ethernet / DSA switch port bindings

v5 -> v6
  * Rebase so it applies to net-next cleanly.
  * No other changes - during the last submission round I said I'd
    submit v6 with a change to move $dsa-port.yaml to outside the allOf
    list. In retrospect that wasn't the right thing to do, because later
    in the patch series the $dsa-port.yaml is removed outright. So I
    believe the submission in v5 to keep "type: object" was correct.

v4 -> v5
  * Sync DSA maintainers with MAINTAINERS file (new patch 1)
  * Undo move of port description of mediatek,mt7530.yaml (patch 4)
  * Move removal of "^(ethernet-)?switch(@.*)?$" in dsa.yaml from patch 4
    to patch 8
  * Add more consistent capitalization in title lines and better Ethernet
    switch port description. (patch 8)

v3 -> v4
  * Renamed "base" to "ethernet-ports" to avoid confusion with the concept
    of a base class.
  * Squash ("dt-bindings: net: dsa: mediatek,mt7530: fix port description location")
    patch into ("dt-bindings: net: dsa: utilize base definitions for standard dsa
    switches")
  * Corrections to fix confusion about additonalProperties vs unevaluatedProperties.
    See specific patches for details.

v2 -> v3
  * Restructured everything to use a "base" iref for devices that don't
    have additional properties, and simply a "ref" for devices that do.
  * New patches to fix up brcm,sf2, qca8k, and mt7530
  * Fix unevaluatedProperties errors from previous sets (see specific
    patches for more detail)
  * Removed redundant "Device Tree Binding" from titles, where applicable.

v1 -> v2
  * Two MFD patches were brought into the MFD tree, so are dropped
  * Add first patch 1/6 to allow DSA devices to add ports and port
    properties
  * Test qca8k against new dt-bindings and fix warnings. (patch 2/6)
  * Add tags (patch 3/6)
  * Fix vsc7514 refs and properties
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jan 16, 2023
2 parents 87b08a8 + 1f4d4ad commit 86ce04f
Show file tree
Hide file tree
Showing 18 changed files with 145 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Arrow SpeedChips XRS7000 Series Switch

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports

maintainers:
- George McCollister <george.mccollister@gmail.com>
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ required:
- reg

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports
- if:
properties:
compatible:
Expand Down
15 changes: 10 additions & 5 deletions Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,16 @@ properties:
ports:
type: object

properties:
brcm,use-bcm-hdr:
description: if present, indicates that the switch port has Broadcom
tags enabled (per-packet metadata)
type: boolean
patternProperties:
'^port@[0-9a-f]$':
$ref: dsa-port.yaml#
unevaluatedProperties: false

properties:
brcm,use-bcm-hdr:
description: if present, indicates that the switch port has Broadcom
tags enabled (per-packet metadata)
type: boolean

required:
- reg
Expand Down
30 changes: 6 additions & 24 deletions Documentation/devicetree/bindings/net/dsa/dsa-port.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@
$id: http://devicetree.org/schemas/net/dsa/dsa-port.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Ethernet Switch port
title: Generic DSA Switch Port

maintainers:
- Andrew Lunn <andrew@lunn.ch>
- Florian Fainelli <f.fainelli@gmail.com>
- Vivien Didelot <vivien.didelot@gmail.com>
- Vladimir Oltean <olteanv@gmail.com>

description:
Ethernet switch port Description
A DSA switch port is a component of a switch that manages one MAC, and can
pass Ethernet frames. It can act as a stanadard Ethernet switch port, or have
DSA-specific functionality.

allOf:
- $ref: /schemas/net/ethernet-controller.yaml#
$ref: /schemas/net/ethernet-switch-port.yaml#

properties:
reg:
Expand Down Expand Up @@ -58,25 +59,6 @@ properties:
- rtl8_4t
- seville

phy-handle: true

phy-mode: true

fixed-link: true

mac-address: true

sfp: true

managed: true

rx-internal-delay-ps: true

tx-internal-delay-ps: true

required:
- reg

# CPU and DSA ports must have phylink-compatible link descriptions
if:
oneOf:
Expand Down
49 changes: 23 additions & 26 deletions Documentation/devicetree/bindings/net/dsa/dsa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ title: Ethernet Switch
maintainers:
- Andrew Lunn <andrew@lunn.ch>
- Florian Fainelli <f.fainelli@gmail.com>
- Vivien Didelot <vivien.didelot@gmail.com>
- Vladimir Oltean <olteanv@gmail.com>

description:
This binding represents Ethernet Switches which have a dedicated CPU
Expand All @@ -18,10 +18,9 @@ description:

select: false

properties:
$nodename:
pattern: "^(ethernet-)?switch(@.*)?$"
$ref: /schemas/net/ethernet-switch.yaml#

properties:
dsa,member:
minItems: 2
maxItems: 2
Expand All @@ -32,30 +31,28 @@ properties:
(single device hanging off a CPU port) must not specify this property
$ref: /schemas/types.yaml#/definitions/uint32-array

patternProperties:
"^(ethernet-)?ports$":
type: object
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
additionalProperties: true

$defs:
ethernet-ports:
description: A DSA switch without any extra port properties
$ref: '#/'

patternProperties:
"^(ethernet-)?port@[0-9]+$":
"^(ethernet-)?ports$":
type: object
description: Ethernet switch ports

$ref: dsa-port.yaml#

unevaluatedProperties: false

oneOf:
- required:
- ports
- required:
- ethernet-ports

additionalProperties: true
additionalProperties: false

properties:
'#address-cells':
const: 1
'#size-cells':
const: 0

patternProperties:
"^(ethernet-)?port@[0-9]+$":
description: Ethernet switch ports
$ref: dsa-port.yaml#
unevaluatedProperties: false

...
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Hirschmann Hellcreek TSN Switch

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports

maintainers:
- Andrew Lunn <andrew@lunn.ch>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,6 @@ patternProperties:
patternProperties:
"^(ethernet-)?port@[0-9]+$":
type: object
description: Ethernet switch ports

unevaluatedProperties: false

properties:
reg:
Expand All @@ -168,7 +165,6 @@ patternProperties:
for user ports.

allOf:
- $ref: dsa-port.yaml#
- if:
required: [ ethernet ]
then:
Expand Down Expand Up @@ -238,7 +234,7 @@ $defs:
- sgmii

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports
- if:
required:
- mediatek,mcm
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ maintainers:
- Woojung Huh <Woojung.Huh@microchip.com>

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports
- $ref: /schemas/spi/spi-peripheral-props.yaml#

properties:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ maintainers:
- UNGLinuxDriver@microchip.com

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports

properties:
compatible:
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ required:
- reg

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports
- if:
properties:
compatible:
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ description:
depends on the SPI bus master driver.

allOf:
- $ref: "dsa.yaml#"
- $ref: dsa.yaml#/$defs/ethernet-ports
- $ref: /schemas/spi/spi-peripheral-props.yaml#

maintainers:
Expand Down
14 changes: 3 additions & 11 deletions Documentation/devicetree/bindings/net/dsa/qca8k.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,11 @@ properties:
With the legacy mapping the reg corresponding to the internal
mdio is the switch reg with an offset of -1.

$ref: "dsa.yaml#"

patternProperties:
"^(ethernet-)?ports$":
type: object
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0

patternProperties:
"^(ethernet-)?port@[0-6]$":
type: object
Expand Down Expand Up @@ -116,7 +112,7 @@ required:
- compatible
- reg

additionalProperties: true
unevaluatedProperties: false

examples:
- |
Expand Down Expand Up @@ -148,8 +144,6 @@ examples:
switch@10 {
compatible = "qca,qca8337";
#address-cells = <1>;
#size-cells = <0>;
reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
reg = <0x10>;
Expand Down Expand Up @@ -209,8 +203,6 @@ examples:
switch@10 {
compatible = "qca,qca8337";
#address-cells = <1>;
#size-cells = <0>;
reset-gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
reg = <0x10>;
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/net/dsa/realtek.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Realtek switches for unmanaged switches

allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports

maintainers:
- Linus Walleij <linus.walleij@linaro.org>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ description: |
handles 4 ports + 1 CPU management port.
allOf:
- $ref: dsa.yaml#
- $ref: dsa.yaml#/$defs/ethernet-ports

properties:
compatible:
Expand Down
26 changes: 26 additions & 0 deletions Documentation/devicetree/bindings/net/ethernet-switch-port.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ethernet-switch-port.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Generic Ethernet Switch Port

maintainers:
- Andrew Lunn <andrew@lunn.ch>
- Florian Fainelli <f.fainelli@gmail.com>
- Vladimir Oltean <olteanv@gmail.com>

description:
An Ethernet switch port is a component of a switch that manages one MAC, and
can pass Ethernet frames.

$ref: ethernet-controller.yaml#

properties:
reg:
description: Port number

additionalProperties: true

...
62 changes: 62 additions & 0 deletions Documentation/devicetree/bindings/net/ethernet-switch.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ethernet-switch.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Generic Ethernet Switch

maintainers:
- Andrew Lunn <andrew@lunn.ch>
- Florian Fainelli <f.fainelli@gmail.com>
- Vladimir Oltean <olteanv@gmail.com>

description:
Ethernet switches are multi-port Ethernet controllers. Each port has
its own number and is represented as its own Ethernet controller.
The minimum required functionality is to pass packets to software.
They may or may not be able to forward packets automonously between
ports.

select: false

properties:
$nodename:
pattern: "^(ethernet-)?switch(@.*)?$"

patternProperties:
"^(ethernet-)?ports$":
type: object
unevaluatedProperties: false

properties:
'#address-cells':
const: 1
'#size-cells':
const: 0

patternProperties:
"^(ethernet-)?port@[0-9]+$":
type: object
description: Ethernet switch ports

oneOf:
- required:
- ports
- required:
- ethernet-ports

additionalProperties: true

$defs:
base:
description: An ethernet switch without any extra port properties
$ref: '#/'

patternProperties:
"^(ethernet-)?port@[0-9]+$":
description: Ethernet switch ports
$ref: ethernet-switch-port.yaml#
unevaluatedProperties: false

...
Loading

0 comments on commit 86ce04f

Please sign in to comment.