Subject: Re: [PATCH v3 net-next 2/8] dt-bindings: net: mediatek: add WED RX binding for MT7986 eth driver

From: Lorenzo Bianconi <[email-masked]>
Date: Thu, 3 Nov 2022 19:29:46 +0100

> On 03/11/2022 13:51, Lorenzo Bianconi wrote:
> >>> diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-boot.yaml b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-boot.yaml
> >>> new file mode 100644
> >>> index 000000000000..6c3c514c48ef
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-boot.yaml

Regarding "mediatek,mt7986-wed" compatible string it has been added to
mt7986a.dtsi in the commit below:

commit 00b9903996b3e1e287c748928606d738944e45de
Author: Lorenzo Bianconi <[email-masked]>
Date:   Tue Sep 20 12:11:13 2022 +0200

arm64: dts: mediatek: mt7986: add support for Wireless Ethernet Dispatch

> >>
> >> arm is only for top-level stuff. Choose appropriate subsystem, soc as
> >> last resort.
> > 
> > these chips are used only for networking so is net folder fine?
> 
> So this is some MMIO and no actual device? Then rather soc.

ack, I will move them there

> 
> > 
> >>
> >>> @@ -0,0 +1,47 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> >>> +%YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/arm/mediatek/mediatek,mt7986-wo-boot.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title:
> >>> +  MediaTek Wireless Ethernet Dispatch WO boot controller interface for MT7986
> >>> +
> >>> +maintainers:
> >>> +  - Lorenzo Bianconi <[email-masked]>
> >>> +  - Felix Fietkau <[email-masked]>
> >>> +
> >>> +description:
> >>> +  The mediatek wo-boot provides a configuration interface for WED WO
> >>> +  boot controller on MT7986 soc.
> >>
> >> And what is "WED WO boot controller?
> > 
> > WED WO is a chip used for networking packet processing offloaded to the Soc
> > (e.g. packet reordering). WED WO boot is the memory used to store start address
> > of wo firmware. Anyway I will let Sujuan comment on this.
> 
> A bit more should be in description.

I will let Sujuan adding more details (since I do not have them :))

> 
> > 
> >>
> >>> +
> >>> +properties:
> >>> +  compatible:
> >>> +    items:
> >>> +      - enum:
> >>> +          - mediatek,mt7986-wo-boot
> >>> +      - const: syscon
> >>> +
> >>> +  reg:
> >>> +    maxItems: 1
> >>> +
> >>> +  interrupts:
> >>> +    maxItems: 1
> >>> +
> >>> +required:
> >>> +  - compatible
> >>> +  - reg
> >>> +
> >>> +additionalProperties: false
> >>> +
> >>> +examples:
> >>> +  - |
> >>> +    soc {
> >>> +      #address-cells = <2>;
> >>> +      #size-cells = <2>;
> >>> +
> >>> +      wo_boot: syscon@15194000 {
> >>> +        compatible = "mediatek,mt7986-wo-boot", "syscon";
> >>> +        reg = <0 0x15194000 0 0x1000>;
> >>> +      };
> >>> +    };
> >>> diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-ccif.yaml b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-ccif.yaml
> >>> new file mode 100644
> >>> index 000000000000..6357a206587a
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-ccif.yaml
> >>> @@ -0,0 +1,50 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> >>> +%YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/arm/mediatek/mediatek,mt7986-wo-ccif.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title: MediaTek Wireless Ethernet Dispatch WO controller interface for MT7986
> >>> +
> >>> +maintainers:
> >>> +  - Lorenzo Bianconi <[email-masked]>
> >>> +  - Felix Fietkau <[email-masked]>
> >>> +
> >>> +description:
> >>> +  The mediatek wo-ccif provides a configuration interface for WED WO
> >>> +  controller on MT7986 soc.
> >>
> >> All previous comments apply.
> >>
> >>> +
> >>> +properties:
> >>> +  compatible:
> >>> +    items:
> >>> +      - enum:
> >>> +          - mediatek,mt7986-wo-ccif
> >>> +      - const: syscon
> >>> +
> >>> +  reg:
> >>> +    maxItems: 1
> >>> +
> >>> +  interrupts:
> >>> +    maxItems: 1
> >>> +
> >>> +required:
> >>> +  - compatible
> >>> +  - reg
> >>> +  - interrupts
> >>> +
> >>> +additionalProperties: false
> >>> +
> >>> +examples:
> >>> +  - |
> >>> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> >>> +    #include <dt-bindings/interrupt-controller/irq.h>
> >>> +    soc {
> >>> +      #address-cells = <2>;
> >>> +      #size-cells = <2>;
> >>> +
> >>> +      wo_ccif0: syscon@151a5000 {
> >>> +        compatible = "mediatek,mt7986-wo-ccif", "syscon";
> >>> +        reg = <0 0x151a5000 0 0x1000>;
> >>> +        interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
> >>> +      };
> >>> +    };
> >>> diff --git a/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-dlm.yaml b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-dlm.yaml
> >>> new file mode 100644
> >>> index 000000000000..a499956d9e07
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/arm/mediatek/mediatek,mt7986-wo-dlm.yaml
> >>> @@ -0,0 +1,50 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> >>> +%YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/arm/mediatek/mediatek,mt7986-wo-dlm.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title: MediaTek Wireless Ethernet Dispatch WO hw rx ring interface for MT7986
> >>> +
> >>> +maintainers:
> >>> +  - Lorenzo Bianconi <[email-masked]>
> >>> +  - Felix Fietkau <[email-masked]>
> >>> +
> >>> +description:
> >>> +  The mediatek wo-dlm provides a configuration interface for WED WO
> >>> +  rx ring on MT7986 soc.
> >>> +
> >>> +properties:
> >>> +  compatible:
> >>> +    const: mediatek,mt7986-wo-dlm
> >>> +
> >>> +  reg:
> >>> +    maxItems: 1
> >>> +
> >>> +  resets:
> >>> +    maxItems: 1
> >>> +
> >>> +  reset-names:
> >>> +    maxItems: 1
> >>> +
> >>> +required:
> >>> +  - compatible
> >>> +  - reg
> >>> +  - resets
> >>> +  - reset-names
> >>> +
> >>> +additionalProperties: false
> >>> +
> >>> +examples:
> >>> +  - |
> >>> +    soc {
> >>> +      #address-cells = <2>;
> >>> +      #size-cells = <2>;
> >>> +
> >>> +      wo_dlm0: wo-dlm@151e8000 {
> >>
> >> Node names should be generic.
> >> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
> > 
> > DLM is a chip used to store the data rx ring of wo firmware. I do not have a
> > better node name (naming is always hard). Can you please suggest a better name?
> 
> The problem is that you added three new devices which seem to be for the
> same device - WED. It looks like some hacky way of avoid proper hardware
> description - let's model everything as MMIO and syscons...

is it fine to use syscon as node name even if we do not declare it in compatible
string for dlm?

Regards,
Lorenzo

> 
> For such model - register addresses exposed as separate devices - I do
> not have appropriate name, but the real problem is not in the name. It's
> in the hardware description.
> 
> 
> Best regards,
> Krzysztof
>