On Thu, Apr 27, 2023 at 10:16 AM Rob Herring <robh@xxxxxxxxxx> wrote: > > 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. > v2.1 is not compatible with v2.0 unfortunately. So no, a client/OS that only understands v2.0 will not work with v2.1 h/w. > > + > > + 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? > Technically it is not a switch. But it might work... If we use port to reference the unimac and reg to reference the ethernet channel. I rather not though, just cause it is not a switch, so calling it an ethernet-switch is confusing. > > + 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? > Port refers to the unimac. In our case we currently have a maximum of 2. Channel refers to the ethernet hardware channel proper, in which we have many. So yes, you can have a port correlate to any channel. > > + > > + 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. Ack, will fix. Thanks for the review, Justin > > > + 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 > >