Jetson/FAQ/BSP/Jetson TX2 NX ethernet LED indicators

= Questions =

Jetson TX2
Ethernet chip: BCM89610 When gigabit network cable is connected to ethernet port, the network indicators' behavior is wrong (the data indicator always on and the connection indicator is flashing). When 100m/10m network cable is connected, the network indicators' behavior is right. How to fix gigabit network indicators' behavior?

Jetson NX
Ethernet chip: RTL8211F When gigabit network cable is connected to ethernet port, the network indicators' behavior is right (the connection indicator always on and the data indicator is flashing). When 100m/10m network cable is connected, all of the indicators are turned off. How to set 100m/10m network indicators' behavior same as gigabit network? = Fixes =

Jetson TX2
diff --git a/kernel/kernel-4.9/drivers/net/phy/broadcom.c b/kernel/kernel-4.9/drivers/net/phy/broadcom.c index a1d1a9a71..22894c839 100644 --- a/kernel/kernel-4.9/drivers/net/phy/broadcom.c +++ b/kernel/kernel-4.9/drivers/net/phy/broadcom.c @@ -382,6 +382,53 @@ static int bcm54xx_config_init(struct phy_device *phydev) reg |= BIT(14); /* Enable rx of extended pkts */ bcm89xx_shadow_write(phydev, MII_BCM89XX_SHD_AUX_CONTROL, reg); +      /* +        * LED1 (Orange) -> GBE_LINK_ACT  -> ACTIVITY Function +       * LED3 (Green)  -> GBE_LINK_1000 -> LINKSPD2 Function +       */ + +       /* Read shadow control 1 register and program it to disable lom -led +       * after that configure LEDs as link and activity +       */ + +       /* Disable LOM-LED */ +      reg = bcm_phy_read_shadow(phydev, BCM54XX_SHD_RGMII_MODE); +      reg = reg & ~(1 << 2); +      reg = reg & ~(1 << 5); +      reg = reg & ~(3); +      bcm_phy_write_shadow(phydev, BCM54XX_SHD_RGMII_MODE, reg); + +      /* activity control */ +      reg = bcm_phy_read_shadow(phydev, 0x09); +      reg = reg | (1 << 4); +      bcm_phy_write_shadow(phydev, 0x09, reg); + +      /* Configure activity functionality for LED1 */ +      reg = bcm_phy_read_shadow(phydev, BCM5482_SHD_LEDS1); +      reg = reg & ~(0xf); +      reg = reg | 0x3; +      bcm_phy_write_shadow(phydev, BCM5482_SHD_LEDS1, reg); + +      /* Configure LINKSPD2 functionality for LED3 */ +      reg = bcm_phy_read_shadow(phydev, 0x0e); + +      /* Sets linkspd2 function which means link LED will be on for +       * 1000 and 100 and not for the link speed 10 +       */ +       reg = reg & ~(0xf); +      reg = reg | 0x1; +      /* Selecting below and commenting above means linkspd1 function +       * which means link LED will be on for 1000 and 10 but not for 100 +       */ +       /* reg = reg & ~(0xf); */ + +      bcm_phy_write_shadow(phydev, 0x0e, reg); + +      reg = bcm_phy_read_shadow(phydev, 9); +      /* variable blink rate, it can be 0 for the fixed blink rate */ +      reg = reg | 0x3; +      bcm_phy_write_shadow(phydev, 9, reg); + #ifdef CONFIG_EQOS_DISABLE_EEE /* Disable EEE advertisement. Nvbugs 2678273 */

Jetson NX
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 963cd9b..c38dfa9 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -38,6 +38,8 @@ #define RTL8211F_PHYCR2_REG   0x19 #define RTL8211F_ALDPS_ENABLED 0x4 #define RTL8211F_ALDPS_PLL_OFF 0x2 +#define RTL8211F_LED0_LINK_10 0x1 +#define RTL8211F_LED0_LINK_100 0x2 #define RTL8211F_LED0_LINK_1000   0x8 #define RTL8211F_LED1_LINK_1000   0x100 #define RTL8211F_LED1_LINK_100 0x40 @@ -227,8 +229,9 @@    if (ret) return ret; -  /* Enable all speeds for activity indicator  and LED0 for GBE */ -  reg = RTL8211F_LED0_LINK_1000 | RTL8211F_LED1_LINK_1000 | +  /* Enable all speeds for activity and link indicator */ +  reg = RTL8211F_LED0_LINK_10 | RTL8211F_LED0_LINK_100 | +      RTL8211F_LED0_LINK_1000 | RTL8211F_LED1_LINK_1000 | RTL8211F_LED1_LINK_100 | RTL8211F_LED1_LINK_10 | RTL8211F_LED1_LINK_ACTIVE;