On Wed, Apr 26, 2023 at 11:54:28AM -0700, Justin Chen wrote: > From: Florian Fainelli <f.fainelli@xxxxxxxxx> > > Add a binding document for the Broadcom ASP 2.0 Ethernet > controller. > > Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx> > Signed-off-by: Justin Chen <justinpopo6@xxxxxxxxx> > --- > .../devicetree/bindings/net/brcm,asp-v2.0.yaml | 145 +++++++++++++++++++++ > 1 file changed, 145 insertions(+) > create mode 100644 Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > > diff --git a/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > new file mode 100644 > index 000000000000..818d91692e6e > --- /dev/null > +++ b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > @@ -0,0 +1,145 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/net/brcm,asp-v2.0.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Broadcom ASP 2.0 Ethernet controller > + > +maintainers: > + - Justin Chen <justinpopo6@xxxxxxxxx> > + - Florian Fainelli <f.fainelli@xxxxxxxxx> > + > +description: Broadcom Ethernet controller first introduced with 72165 > + > +properties: > + '#address-cells': > + const: 1 > + '#size-cells': > + const: 1 > + > + compatible: > + enum: > + - brcm,asp-v2.0 > + - brcm,bcm72165-asp-v2.0 > + - brcm,asp-v2.1 > + - brcm,bcm74165-asp-v2.1 You have 1 SoC per version, so what's the point of versions? If you have more coming, then fine, but I'd expect it to be something like this: compatible = "brcm,bcm74165-asp-v2.1", "brcm,asp-v2.1"; Also, the version in the SoC specific compatible is redundant. Just "brcm,bcm74165-asp" is enough. v2.1 is not compatible with v2.0? What that means is would a client/OS that only understands what v2.0 is work with v2.1 h/w? If so, you should have fallback compatible. > + > + reg: > + maxItems: 1 > + > + ranges: true > + > + interrupts: > + minItems: 1 > + items: > + - description: RX/TX interrupt > + - description: Port 0 Wake-on-LAN > + - description: Port 1 Wake-on-LAN > + > + clocks: > + maxItems: 1 > + > + ethernet-ports: The ethernet-switch.yaml schema doesn't work for you? > + type: object > + properties: > + '#address-cells': > + const: 1 > + '#size-cells': > + const: 0 > + > + patternProperties: > + "^port@[0-9]+$": > + type: object > + > + $ref: ethernet-controller.yaml# > + > + properties: > + reg: > + maxItems: 1 > + description: Port number > + > + channel: > + maxItems: 1 > + description: ASP channel number Not a standard property, so it needs a type and vendor prefix. However, what's the difference between channel and port? Can the port numbers correspond to the channels? > + > + required: > + - reg > + - channel > + > + additionalProperties: false > + > +patternProperties: > + "^mdio@[0-9a-f]+$": > + type: object > + $ref: "brcm,unimac-mdio.yaml" Drop quotes. > + > + description: > + ASP internal UniMAC MDIO bus > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - ranges > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + > + ethernet@9c00000 { > + compatible = "brcm,asp-v2.0"; > + reg = <0x9c00000 0x1fff14>; > + interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; > + ranges; > + clocks = <&scmi 14>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + mdio@c614 { > + compatible = "brcm,asp-v2.0-mdio"; > + reg = <0xc614 0x8>; You have 1:1 ranges, is that really what you want? That means 0xc614 is an absolute address. > + reg-names = "mdio"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + phy0: ethernet-phy@1 { > + reg = <1>; > + }; > + }; > + > + mdio@ce14 { > + compatible = "brcm,asp-v2.0-mdio"; > + reg = <0xce14 0x8>; > + reg-names = "mdio"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + phy1: ethernet-phy@1 { > + reg = <1>; > + }; > + }; > + > + ethernet-ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + channel = <8>; > + phy-mode = "rgmii"; > + phy-handle = <&phy0>; > + }; > + > + port@1 { > + reg = <1>; > + channel = <9>; > + phy-mode = "rgmii"; > + phy-handle = <&phy1>; > + }; > + }; > + }; > -- > 2.7.4 >