From: Lorenzo Bianconi <lorenzo@kernel•org>
To: Rob Herring <robh@kernel•org>
Cc: netdev@vger•kernel.org, nbd@nbd•name,
lorenzo.bianconi83@gmail•com, davem@davemloft•net,
edumazet@google•com, kuba@kernel•org, pabeni@redhat•com,
conor@kernel•org, linux-arm-kernel@lists•infradead.org,
krzysztof.kozlowski+dt@linaro•org, conor+dt@kernel•org,
devicetree@vger•kernel.org, catalin.marinas@arm•com,
will@kernel•org, upstream@airoha•com,
angelogioacchino.delregno@collabora•com,
benjamin.larsson@genexis•eu, rkannoth@marvell•com,
sgoutham@marvell•com, andrew@lunn•ch, arnd@arndb•de,
horms@kernel•org
Subject: Re: [PATCH v5 net-next 1/2] dt-bindings: net: airoha: Add EN7581 ethernet controller
Date: Tue, 9 Jul 2024 00:02:32 +0200 [thread overview]
Message-ID: <Zoxh-GBdoIiPr775@lore-desk> (raw)
In-Reply-To: <ZoxV45hyccLHAm1P@lore-desk>
[-- Attachment #1: Type: text/plain, Size: 9892 bytes --]
> > On Mon, Jul 8, 2024 at 11:03 AM Lorenzo Bianconi <lorenzo@kernel•org> wrote:
> > >
> > > > On Thu, Jul 04, 2024 at 10:08:10AM +0200, Lorenzo Bianconi wrote:
> > > > > Introduce device-tree binding documentation for Airoha EN7581 ethernet
> > > > > mac controller.
> > > > >
> > > > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel•org>
> > > > > ---
> > > > > .../bindings/net/airoha,en7581-eth.yaml | 146 ++++++++++++++++++
> > > > > 1 file changed, 146 insertions(+)
> > > > > create mode 100644 Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml b/Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml
> > > > > new file mode 100644
> > > > > index 000000000000..f4b1f8afddd0
> > > > > --- /dev/null
> > > > > +++ b/Documentation/devicetree/bindings/net/airoha,en7581-eth.yaml
> > > > > @@ -0,0 +1,146 @@
> > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > > +%YAML 1.2
> > > > > +---
> > > > > +$id: http://devicetree.org/schemas/net/airoha,en7581-eth.yaml#
> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > +
> > > > > +title: Airoha EN7581 Frame Engine Ethernet controller
> > > > > +
> > > > > +allOf:
> > > > > + - $ref: ethernet-controller.yaml#
> > > >
> > > > Again, to rephrase, what are you using from this binding? It does not
> > > > make sense for the parent and child both to use it.
> > >
> > > Below I reported the ethernet dts node I am using (I have not posted the dts
> > > changes yet):
> >
> > What happens when you remove this $ref? Nothing, because you use 0
> > properties from it. If none of the properties apply, then don't
> > reference it. It is that simple.
>
> if I get rid of "$ref: ethernet-controller.yaml#" here I get the following error using
> en7581-evb.dts (not posted upstream yet):
>
> $make CHECK_DTBS=y DT_SCHEMA_FILES=airoha airoha/en7581-evb.dtb
> UPD include/config/kernel.release
> DTC_CHK arch/arm64/boot/dts/airoha/en7581-evb.dtb
> /home/lorenzo/workspace/linux-mediatek/arch/arm64/boot/dts/airoha/en7581-evb.dtb: ethernet@1fb50000: mac@1: Unevaluated properties are not allowed ('fixed-link', 'phy-mode' were unexpected)
> from schema $id: http://devicetree.org/schemas/net/airoha,en7581-eth.yaml#
actually I confused the parent "$ref: ethernet-controller.yaml#" with the child
one. Please ignore the error above.
Regards
Lorenzo
>
> >
> > >
> > > eth0: ethernet@1fb50000 {
> > > compatible = "airoha,en7581-eth";
> > > reg = <0 0x1fb50000 0 0x2600>,
> > > <0 0x1fb54000 0 0x2000>,
> > > <0 0x1fb56000 0 0x2000>;
> > > reg-names = "fe", "qdma0", "qdma1";
> > >
> > > resets = <&scuclk EN7581_FE_RST>,
> > > <&scuclk EN7581_FE_PDMA_RST>,
> > > <&scuclk EN7581_FE_QDMA_RST>,
> > > <&scuclk EN7581_XSI_MAC_RST>,
> > > <&scuclk EN7581_DUAL_HSI0_MAC_RST>,
> > > <&scuclk EN7581_DUAL_HSI1_MAC_RST>,
> > > <&scuclk EN7581_HSI_MAC_RST>,
> > > <&scuclk EN7581_XFP_MAC_RST>;
> > > reset-names = "fe", "pdma", "qdma", "xsi-mac",
> > > "hsi0-mac", "hsi1-mac", "hsi-mac",
> > > "xfp-mac";
> > >
> > > interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
> > > <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
> > >
> > > status = "disabled";
> > >
> > > #address-cells = <1>;
> > > #size-cells = <0>;
> > >
> > > gdm1: mac@1 {
> > > compatible = "airoha,eth-mac";
> > > reg = <1>;
> > > phy-mode = "internal";
> > > status = "disabled";
> > >
> > > fixed-link {
> > > speed = <1000>;
> > > full-duplex;
> > > pause;
> > > };
> > > };
> > > };
> > >
> > > I am using phy related binding for gdm1:mac@1 node.
> >
> > Right, so you should reference ethernet-controller.yaml for the mac
> > node because you use properties from the schema.
>
> ack. So, IIUC what you mean here, I need to get rid of "$ref: ethernet-controller.yaml#"
> in the parent node and just use in the mac node. Correct?
>
> >
> > > gdm1 is the GMAC port used
> > > as cpu port by the mt7530 dsa switch
> >
> > That has nothing to do with *this* binding...
> >
> > >
> > > switch: switch@1fb58000 {
> > > compatible = "airoha,en7581-switch";
> > > reg = <0 0x1fb58000 0 0x8000>;
> > > resets = <&scuclk EN7581_GSW_RST>;
> > >
> > > interrupt-controller;
> > > #interrupt-cells = <1>;
> > > interrupt-parent = <&gic>;
> > > interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
> > >
> > > status = "disabled";
> > >
> > > #address-cells = <1>;
> > > #size-cells = <1>;
> > >
> > > ports {
> > > #address-cells = <1>;
> > > #size-cells = <0>;
> > >
> > > gsw_port1: port@1 {
> > > reg = <1>;
> > > label = "lan1";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy1>;
> > > };
> > >
> > > gsw_port2: port@2 {
> > > reg = <2>;
> > > label = "lan2";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy2>;
> > > };
> > >
> > > gsw_port3: port@3 {
> > > reg = <3>;
> > > label = "lan3";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy3>;
> > > };
> > >
> > > gsw_port4: port@4 {
> > > reg = <4>;
> > > label = "lan4";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy4>;
> > > };
> > >
> > > port@6 {
> > > reg = <6>;
> > > label = "cpu";
> > > ethernet = <&gdm1>;
> > > phy-mode = "internal";
> > >
> > > fixed-link {
> > > speed = <1000>;
> > > full-duplex;
> > > pause;
> > > };
> > > };
> > > };
> > >
> > > mdio {
> > > #address-cells = <1>;
> > > #size-cells = <0>;
> > >
> > > gsw_phy1: ethernet-phy@1 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <9>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy2: ethernet-phy@2 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <10>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy3: ethernet-phy@3 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <11>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy4: ethernet-phy@4 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <12>;
> > > phy-mode = "internal";
> > > };
> > > };
> > > };
> >
> > None of this is relevant.
> >
> > > > > +patternProperties:
> > > > > + "^mac@[1-4]$":
> > > >
> > > > 'ethernet' is the defined node name for users of
> > > > ethernet-controller.yaml.
> > >
> > > Looking at the dts above, ethernet is already used by the parent node.
> >
> > So? Not really any reason a node named foo can't have a child named foo, too.
>
> ack, fine. I will fix it in the next revision.
>
> >
> > An 'ethernet' node should implement an ethernet interface. It is the
> > child nodes that implement the ethernet interface(s). Whether you use
> > 'ethernet' on the parent or not, I don't care too much.
>
> ack, I will use "$ref: ethernet-controller.yaml#" just for the child in this case.
>
> Regards,
> Lorenzo
>
> >
> > > This approach has been already used here [0],[1],[2]. Is it fine to reuse it?
> >
> > That one appears to be wrong too with the parent referencing
> > ethernet-controller.yaml.
> >
> > Rob
> >
> > > Regards,
> > > Lorenzo
> > >
> > > [0] https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/mediatek/mt7622.dtsi#L964
> > > [1] https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts#L136
> > > [2] https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/net/mediatek%2Cnet.yaml#L370
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2024-07-08 22:02 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-04 8:08 [PATCH v5 net-next 0/2] Introduce EN7581 ethernet support Lorenzo Bianconi
2024-07-04 8:08 ` [PATCH v5 net-next 1/2] dt-bindings: net: airoha: Add EN7581 ethernet controller Lorenzo Bianconi
2024-07-08 16:37 ` Rob Herring
2024-07-08 17:03 ` Lorenzo Bianconi
2024-07-08 20:19 ` Rob Herring
2024-07-08 20:48 ` Andrew Lunn
2024-07-08 21:16 ` Lorenzo Bianconi
2024-07-08 21:10 ` Lorenzo Bianconi
2024-07-08 22:02 ` Lorenzo Bianconi [this message]
2024-07-04 8:08 ` [PATCH v5 net-next 2/2] net: airoha: Introduce ethernet support for EN7581 SoC Lorenzo Bianconi
2024-07-05 19:06 ` Simon Horman
2024-07-06 8:27 ` Lorenzo Bianconi
2024-07-06 12:27 ` Simon Horman
2024-07-06 12:58 ` Lorenzo Bianconi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zoxh-GBdoIiPr775@lore-desk \
--to=lorenzo@kernel$(echo .)org \
--cc=andrew@lunn$(echo .)ch \
--cc=angelogioacchino.delregno@collabora$(echo .)com \
--cc=arnd@arndb$(echo .)de \
--cc=benjamin.larsson@genexis$(echo .)eu \
--cc=catalin.marinas@arm$(echo .)com \
--cc=conor+dt@kernel$(echo .)org \
--cc=conor@kernel$(echo .)org \
--cc=davem@davemloft$(echo .)net \
--cc=devicetree@vger$(echo .)kernel.org \
--cc=edumazet@google$(echo .)com \
--cc=horms@kernel$(echo .)org \
--cc=krzysztof.kozlowski+dt@linaro$(echo .)org \
--cc=kuba@kernel$(echo .)org \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=lorenzo.bianconi83@gmail$(echo .)com \
--cc=nbd@nbd$(echo .)name \
--cc=netdev@vger$(echo .)kernel.org \
--cc=pabeni@redhat$(echo .)com \
--cc=rkannoth@marvell$(echo .)com \
--cc=robh@kernel$(echo .)org \
--cc=sgoutham@marvell$(echo .)com \
--cc=upstream@airoha$(echo .)com \
--cc=will@kernel$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox