|
@@ -10422,6 +10422,28 @@ static void bnx2x_848xx_set_link_led(struct bnx2x_phy *phy,
|
|
|
MDIO_PMA_DEVAD,
|
|
|
MDIO_PMA_REG_8481_LED1_MASK,
|
|
|
0x0);
|
|
|
+ if (phy->type ==
|
|
|
+ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84834) {
|
|
|
+ /* Disable MI_INT interrupt before setting LED4
|
|
|
+ * source to constant off.
|
|
|
+ */
|
|
|
+ if (REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 +
|
|
|
+ params->port*4) &
|
|
|
+ NIG_MASK_MI_INT) {
|
|
|
+ params->link_flags |=
|
|
|
+ LINK_FLAGS_INT_DISABLED;
|
|
|
+
|
|
|
+ bnx2x_bits_dis(
|
|
|
+ bp,
|
|
|
+ NIG_REG_MASK_INTERRUPT_PORT0 +
|
|
|
+ params->port*4,
|
|
|
+ NIG_MASK_MI_INT);
|
|
|
+ }
|
|
|
+ bnx2x_cl45_write(bp, phy,
|
|
|
+ MDIO_PMA_DEVAD,
|
|
|
+ MDIO_PMA_REG_8481_SIGNAL_MASK,
|
|
|
+ 0x0);
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case LED_MODE_ON:
|
|
@@ -10468,6 +10490,28 @@ static void bnx2x_848xx_set_link_led(struct bnx2x_phy *phy,
|
|
|
MDIO_PMA_DEVAD,
|
|
|
MDIO_PMA_REG_8481_LED1_MASK,
|
|
|
0x20);
|
|
|
+ if (phy->type ==
|
|
|
+ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84834) {
|
|
|
+ /* Disable MI_INT interrupt before setting LED4
|
|
|
+ * source to constant on.
|
|
|
+ */
|
|
|
+ if (REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 +
|
|
|
+ params->port*4) &
|
|
|
+ NIG_MASK_MI_INT) {
|
|
|
+ params->link_flags |=
|
|
|
+ LINK_FLAGS_INT_DISABLED;
|
|
|
+
|
|
|
+ bnx2x_bits_dis(
|
|
|
+ bp,
|
|
|
+ NIG_REG_MASK_INTERRUPT_PORT0 +
|
|
|
+ params->port*4,
|
|
|
+ NIG_MASK_MI_INT);
|
|
|
+ }
|
|
|
+ bnx2x_cl45_write(bp, phy,
|
|
|
+ MDIO_PMA_DEVAD,
|
|
|
+ MDIO_PMA_REG_8481_SIGNAL_MASK,
|
|
|
+ 0x20);
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -10532,6 +10576,22 @@ static void bnx2x_848xx_set_link_led(struct bnx2x_phy *phy,
|
|
|
MDIO_PMA_DEVAD,
|
|
|
MDIO_PMA_REG_8481_LINK_SIGNAL,
|
|
|
val);
|
|
|
+ if (phy->type ==
|
|
|
+ PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM84834) {
|
|
|
+ /* Restore LED4 source to external link,
|
|
|
+ * and re-enable interrupts.
|
|
|
+ */
|
|
|
+ bnx2x_cl45_write(bp, phy,
|
|
|
+ MDIO_PMA_DEVAD,
|
|
|
+ MDIO_PMA_REG_8481_SIGNAL_MASK,
|
|
|
+ 0x40);
|
|
|
+ if (params->link_flags &
|
|
|
+ LINK_FLAGS_INT_DISABLED) {
|
|
|
+ bnx2x_link_int_enable(params);
|
|
|
+ params->link_flags &=
|
|
|
+ ~LINK_FLAGS_INT_DISABLED;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
}
|