AnsweredAssumed Answered

PHY-API in Linux environment T1040 fsl-sdk-v2.0

Question asked by Jörg Hering on Nov 15, 2016
Latest reply on Nov 23, 2016 by Jörg Hering

Hallo NXP Team,
we have designed and built a board with a NXP T1040 processor with following physical network configuration.

 

- 2 RGMII via VSC8502 phy (FMAN4/5)
- 1 SGMII via VSC8211 phy (FMAN3)
- l2switch (QSGMII) via 2 VSC8514 phy's (FMAN1/2)

 

I adapted  the Phy-API for the u-boot source (vitesse.c) for VSC8502 (RX_DELAY/TX_DELAY ...) the VSC8514 and VS8211 was already implemented.
the networking work properly in U-Boot environment.

 

then I adapted the Phy-API for the Linux kernel. Now I wondering the Phy-API in Linux has no effect.
Only the L2switch working properly. It's looks like the Phy-API newer called by FMAN-driver.
But we need additionally initializations  for the RGMII phy's. This issue is referenced with fsl-sdk-v2.0 and
fsl-sdk-v2.0-1609. My kernel config file is adapted like T1040RDB and my DTS see below:

 

Any ideas to solve this issue? Its looks like a little bit to the Stefan Lange issue "T1042 Device Tree Fman RGMII-ID"
But Stefan's (dirty workaround) not matched with fsl-sdk-v2.0.

 

thank you for hints and solutions
and
greetings from Germany biggest island Rügen

 

Jörg Hering

 

 

 


snip  ....

 

CONFIG_FSL_PQ_MDIO=y
CONFIG_FSL_XGMAC_MDIO=y
CONFIG_FSL_SDK_DPAA_ETH=y
CONFIG_FMAN_V3L=y
CONFIG_E1000E=y
CONFIG_REALTEK_PHY=y
CONFIG_VITESSE_PHY=y
CONFIG_FIXED_PHY=y
 
snip  ....

 

and part of my DTS

 

snip  ....
    aliases {
        phy_rgmii_0 = &phy_rgmii_0;
        phy_rgmii_1 = &phy_rgmii_1;
        phy_sgmii_2 = &phy_sgmii_2;
    };
    soc: soc@ffe000000 {
        ranges = <0x00000000 0xf 0xfe000000 0x1000000>;
        reg = <0xf 0xfe000000 0 0x00001000>;
        fman0: fman@400000 {
            rcpm-wakeup = <&rcpm 0x00000008>;

 

            enet0: ethernet@e0000 {
                fixed-link = <30 1 1000 0 0>;
                phy-connection-type = "sgmii";
                rcpm-wakeup = <&rcpm 0x80000000>;
            };

 

            enet1: ethernet@e2000 {
                fixed-link = <31 1 1000 0 0>;
                phy-connection-type = "sgmii";
                rcpm-wakeup = <&rcpm 0x40000000>;
            };

 

            enet2: ethernet@e4000 {
                phy-handle = <&phy_sgmii_2>;
                phy-connection-type = "sgmii";
                rcpm-wakeup = <&rcpm 0x20000000>;
            };

 

            enet3: ethernet@e6000 {
                phy-handle = <&phy_rgmii_0>;
                phy-connection-type = "rgmii-id";
                rcpm-wakeup = <&rcpm 0x10000000>;
            };

 

            enet4: ethernet@e8000 {
                phy-handle = <&phy_rgmii_1>;
                phy-connection-type = "rgmii-id";
                rcpm-wakeup = <&rcpm 0x08000000>;
            };

 

            mdio0: mdio@fc000 {
                compatible = "fsl,fman-mdio";
                phy_sgmii_2: ethernet-phy@01 {
                    compatible = "vitesse,vsc8211";
                    device_type = "ethernet-phy";
                    reg = <0x01>;
                };
                phy_rgmii_0: ethernet-phy@04 {
                    compatible = "vitesse,vsc8502";
                    device_type = "ethernet-phy";
                    reg = <0x02>;
/* zb. Register init                    
                    vitesse,vsc8502-reg-init = <3 0x10 0 0x5777>,
                    <3 0x11 0 0x00aa>,
                    <3 0x12 0 0x4105>,
                    <3 0x13 0 0x0a60>;
*/                    
                };
                phy_rgmii_1: ethernet-phy@05 {
                    compatible = "vitesse,vsc8502";
                    device_type = "ethernet-phy";
                    reg = <0x03>;
                };
                phy_qsgmii_0: ethernet-phy@08 {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x08>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_1: ethernet-phy@09 {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x09>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_2: ethernet-phy@0a {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0a>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_3: ethernet-phy@0b {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0b>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_4: ethernet-phy@0c {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0c>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_5: ethernet-phy@0d {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0d>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_6: ethernet-phy@0e {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0e>;
                    interrupts = <0 1 0 0>;
                };
                phy_qsgmii_7: ethernet-phy@0f {
                    compatible = "vitesse,vsc8514";
                    device_type = "ethernet-phy";
                    reg = <0x0f>;
                    interrupts = <0 1 0 0>;
                };
            };
        };

 

snip  ....

 

 

 


 

Outcomes