lkml.org 
[lkml]   [2020]   [Feb]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 net-next/devicetree 4/5] arm64: dts: fsl: ls1028a: add node for Felix switch
    Date
    From: Claudiu Manoil <claudiu.manoil@nxp.com>

    Add the switch device node, available on PF5, so that the switch port
    sub-nodes (net devices) can be linked to corresponding board specific
    phy nodes (external ports) or have their link mode defined (internal
    ports).

    The switch device features 6 ports, 4 with external links and 2
    internally facing to the LS1028A SoC and connected via fixed links to 2
    internal ENETC Ethernet controller ports.

    Add the corresponding ENETC host port device nodes, mapped to PF2 and
    PF6 PCIe functions. Since the switch only supports tagging on one CPU
    port, only one port pair (swp4, eno2) is enabled by default and the
    other, lower speed, port pair is disabled to prevent the PCI core from
    probing them. If enabled, swp5 will be a fixed-link slave port.

    DSA tagging can also be moved from the swp4-eno2 2.5G port pair to the
    1G swp5-eno3 pair by changing the ethernet = <&enetc_port2> phandle to
    <&enetc_port3> and moving it under port5, but in that case enetc_port2
    should not be disabled, because it is the hardware owner of the Felix
    PCS and disabling its memory would result in access faults in the Felix
    DSA driver.

    All ports are disabled by default, except one CPU port.

    The switch's INTB interrupt line signals:
    - PTP timestamp ready in timestamp FIFO
    - TSN Frame Preemption

    And don't forget to enable the 4MB BAR4 in the root complex ECAM space,
    where the switch registers are mapped.

    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
    Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    ---
    Changes in v2:
    Adapted phy-mode = "gmii" to phy-mode = "internal".

    .../arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 84 ++++++++++++++++++-
    1 file changed, 83 insertions(+), 1 deletion(-)

    diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    index dfead691e509..a6b9c6d1eb5e 100644
    --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    @@ -700,7 +700,9 @@
    /* PF1: VF0-1 BAR0 - non-prefetchable memory */
    0x82000000 0x0 0x00000000 0x1 0xf8210000 0x0 0x020000
    /* PF1: VF0-1 BAR2 - prefetchable memory */
    - 0xc2000000 0x0 0x00000000 0x1 0xf8230000 0x0 0x020000>;
    + 0xc2000000 0x0 0x00000000 0x1 0xf8230000 0x0 0x020000
    + /* BAR4 (PF5) - non-prefetchable memory */
    + 0x82000000 0x0 0x00000000 0x1 0xfc000000 0x0 0x400000>;

    enetc_port0: ethernet@0,0 {
    compatible = "fsl,enetc";
    @@ -710,6 +712,18 @@
    compatible = "fsl,enetc";
    reg = <0x000100 0 0 0 0>;
    };
    +
    + enetc_port2: ethernet@0,2 {
    + compatible = "fsl,enetc";
    + reg = <0x000200 0 0 0 0>;
    + phy-mode = "gmii";
    +
    + fixed-link {
    + speed = <1000>;
    + full-duplex;
    + };
    + };
    +
    enetc_mdio_pf3: mdio@0,3 {
    compatible = "fsl,enetc-mdio";
    reg = <0x000300 0 0 0 0>;
    @@ -722,6 +736,74 @@
    clocks = <&clockgen 4 0>;
    little-endian;
    };
    +
    + ethernet-switch@0,5 {
    + reg = <0x000500 0 0 0 0>;
    + /* IEP INT_B */
    + interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
    +
    + ports {
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + /* external ports */
    + mscc_felix_port0: port@0 {
    + reg = <0>;
    + status = "disabled";
    + };
    +
    + mscc_felix_port1: port@1 {
    + reg = <1>;
    + status = "disabled";
    + };
    +
    + mscc_felix_port2: port@2 {
    + reg = <2>;
    + status = "disabled";
    + };
    +
    + mscc_felix_port3: port@3 {
    + reg = <3>;
    + status = "disabled";
    + };
    +
    + /* Internal port with DSA tagging */
    + mscc_felix_port4: port@4 {
    + reg = <4>;
    + phy-mode = "internal";
    + ethernet = <&enetc_port2>;
    +
    + fixed-link {
    + speed = <2500>;
    + full-duplex;
    + };
    + };
    +
    + /* Internal port without DSA tagging */
    + mscc_felix_port5: port@5 {
    + reg = <5>;
    + phy-mode = "internal";
    + status = "disabled";
    +
    + fixed-link {
    + speed = <1000>;
    + full-duplex;
    + };
    + };
    + };
    + };
    +
    + enetc_port3: ethernet@0,6 {
    + compatible = "fsl,enetc";
    + reg = <0x000600 0 0 0 0>;
    + status = "disabled";
    + phy-mode = "gmii";
    +
    + fixed-link {
    + speed = <1000>;
    + full-duplex;
    + };
    + };
    };
    };

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-02-19 16:13    [W:4.449 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site