lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220927202600.hy5dr2s6j4jnmfpg@skbuf>
Date:   Tue, 27 Sep 2022 23:26:00 +0300
From:   Vladimir Oltean <olteanv@...il.com>
To:     Colin Foster <colin.foster@...advantage.com>
Cc:     linux-gpio@...r.kernel.org, linux-kernel@...r.kernel.org,
        devicetree@...r.kernel.org, netdev@...r.kernel.org,
        Russell King <linux@...linux.org.uk>,
        Linus Walleij <linus.walleij@...aro.org>,
        UNGLinuxDriver@...rochip.com,
        Alexandre Belloni <alexandre.belloni@...tlin.com>,
        Claudiu Manoil <claudiu.manoil@....com>,
        Lee Jones <lee@...nel.org>,
        Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
        Rob Herring <robh+dt@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Eric Dumazet <edumazet@...gle.com>,
        "David S. Miller" <davem@...emloft.net>,
        Florian Fainelli <f.fainelli@...il.com>,
        Vivien Didelot <vivien.didelot@...il.com>,
        Andrew Lunn <andrew@...n.ch>
Subject: Re: [PATCH v3 net-next 12/14] dt-bindings: net: dsa: ocelot: add
 ocelot-ext documentation

On Sun, Sep 25, 2022 at 05:29:26PM -0700, Colin Foster wrote:
> ---
>  .../bindings/net/dsa/mscc,ocelot.yaml         | 59 +++++++++++++++++++
>  1 file changed, 59 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
> index 8d93ed9c172c..49450a04e589 100644
> --- a/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
> +++ b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
> @@ -54,9 +54,22 @@ description: |
>        - phy-mode = "1000base-x": on ports 0, 1, 2, 3
>        - phy-mode = "2500base-x": on ports 0, 1, 2, 3
>  
> +  VSC7412 (Ocelot-Ext):

VSC7512

> +
> +    The Ocelot family consists of four devices, the VSC7511, VSC7512, VSC7513,
> +    and the VSC7514. The VSC7513 and VSC7514 both have an internal MIPS
> +    processor that natively support Linux. Additionally, all four devices
> +    support control over external interfaces, SPI and PCIe. The Ocelot-Ext
> +    driver is for the external control portion.
> +
> +    The following PHY interface types are supported:
> +
> +      - phy-mode = "internal": on ports 0, 1, 2, 3

More PHY interface types are supported. Please document them all.
It doesn't matter what the driver supports. Drivers and device tree
blobs should be able to have different lifetimes. A driver which doesn't
support the SERDES ports should work with a device tree that defines
them, and a driver that supports the SERDES ports should work with a
device tree that doesn't.

Similar for the other stuff which isn't documented (interrupts, SERDES
PHY handles etc). Since there is already an example with vsc7514, you
know how they need to look, even if they don't work yet on your
hardware, no?

> +
>  properties:
>    compatible:
>      enum:
> +      - mscc,vsc7512-switch
>        - mscc,vsc9953-switch
>        - pci1957,eef0
>  
> @@ -258,3 +271,49 @@ examples:
>              };
>          };
>      };
> +  # Ocelot-ext VSC7512
> +  - |
> +    spi {
> +        soc@0 {
> +            compatible = "mscc,vsc7512";
> +            #address-cells = <1>;
> +            #size-cells = <1>;
> +
> +            ethernet-switch@0 {
> +                compatible = "mscc,vsc7512-switch";
> +                reg = <0 0>;

What is the idea behind reg = <0 0> here? I would expect this driver to
follow the same conventions as Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml.
The hardware is mostly the same, so the switch portion of the DT bindings
should be mostly plug and play between the switchdev and the DSA variant.
So you can pick the "sys" target as the one giving the address of the
node, and define all targets via "reg" and "reg-names" here.

Like so:

      reg = <0x71010000 0x00010000>,
            <0x71030000 0x00010000>,
            <0x71080000 0x00000100>,
            <0x710e0000 0x00010000>,
            <0x711e0000 0x00000100>,
            <0x711f0000 0x00000100>,
            <0x71200000 0x00000100>,
            <0x71210000 0x00000100>,
            <0x71220000 0x00000100>,
            <0x71230000 0x00000100>,
            <0x71240000 0x00000100>,
            <0x71250000 0x00000100>,
            <0x71260000 0x00000100>,
            <0x71270000 0x00000100>,
            <0x71280000 0x00000100>,
            <0x71800000 0x00080000>,
            <0x71880000 0x00010000>,
            <0x71040000 0x00010000>,
            <0x71050000 0x00010000>,
            <0x71060000 0x00010000>;
      reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
            "port2", "port3", "port4", "port5", "port6",
            "port7", "port8", "port9", "port10", "qsys",
            "ana", "s0", "s1", "s2";

The mfd driver can use these resources or can choose to ignore them, but
I don't see a reason why the dt-bindings should diverge from vsc7514,
its closest cousin.

> +
> +                ethernet-ports {
> +                    #address-cells = <1>;
> +                    #size-cells = <0>;
> +
> +                    port@0 {
> +                        reg = <0>;
> +                        label = "cpu";

label = "cpu" is not used, please remove.

> +                        ethernet = <&mac_sw>;
> +                        phy-handle = <&phy0>;
> +                        phy-mode = "internal";
> +                    };
> +
> +                    port@1 {
> +                        reg = <1>;
> +                        label = "swp1";
> +                        phy-mode = "internal";
> +                        phy-handle = <&phy1>;
> +                    };
> +
> +                    port@2 {
> +                        reg = <2>;
> +                        phy-mode = "internal";
> +                        phy-handle = <&phy2>;
> +                    };
> +
> +                    port@3 {
> +                        reg = <3>;
> +                        phy-mode = "internal";
> +                        phy-handle = <&phy3>;
> +                    };
> +                };
> +            };
> +        };
> +    };
> -- 
> 2.25.1
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ