[PATCH v5 net-next 1/2] dt-bindings: net: airoha: Add EN7581 ethernet controller
Lorenzo Bianconi
lorenzo at kernel.org
Mon Jul 8 15:02:32 PDT 2024
> > On Mon, Jul 8, 2024 at 11:03 AM Lorenzo Bianconi <lorenzo at 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 at 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 at 1fb50000: mac at 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 at 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 at 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 at 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 at 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 at 1 {
> > > reg = <1>;
> > > label = "lan1";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy1>;
> > > };
> > >
> > > gsw_port2: port at 2 {
> > > reg = <2>;
> > > label = "lan2";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy2>;
> > > };
> > >
> > > gsw_port3: port at 3 {
> > > reg = <3>;
> > > label = "lan3";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy3>;
> > > };
> > >
> > > gsw_port4: port at 4 {
> > > reg = <4>;
> > > label = "lan4";
> > > phy-mode = "internal";
> > > phy-handle = <&gsw_phy4>;
> > > };
> > >
> > > port at 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 at 1 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <9>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy2: ethernet-phy at 2 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <10>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy3: ethernet-phy at 3 {
> > > compatible = "ethernet-phy-ieee802.3-c22";
> > > reg = <11>;
> > > phy-mode = "internal";
> > > };
> > >
> > > gsw_phy4: ethernet-phy at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20240709/1f647cf7/attachment.sig>
More information about the linux-arm-kernel
mailing list