From aae0794ecfaba2fa3cfbaef0a27377378297c623 Mon Sep 17 00:00:00 2001 From: Yaniv Rosner Date: Wed, 23 Nov 2011 03:54:08 +0000 Subject: [PATCH] --- yaml --- r: 276223 b: refs/heads/master c: 1d125bd52e1e1b9810a2d5a32a76147912fa4133 h: refs/heads/master i: 276221: 8e8eeef60131a225b8a12648d32eb89e70911f5d 276219: c19678ed417861253dce43c84cd58f144a84832c 276215: 5fbdaa718652b8c8dd8c62429d72dea2174909db 276207: fc43b18b14a661d5541761ef394d9726953ce8ba 276191: c8c78a61758c2f4b8b649d7fa6105118cd53687a 276159: c9355d9efc64563789a23ed503cc237b80bebbfa 276095: 541e6d2cbeff43a4ffd10f7f22c7c642fa3e5db6 275967: 4665482de4227e1a9af127f0134a4110973a876d v: v3 --- [refs] | 2 +- .../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 39 ++++++++++++++++++- .../net/ethernet/broadcom/bnx2x/bnx2x_reg.h | 1 + 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 4d2bd55b27da..558fd71d59b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 685f94e6db8496399c881218018166515445a914 +refs/heads/master: 1d125bd52e1e1b9810a2d5a32a76147912fa4133 diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c index bce203fa4b9e..882f48f0a03c 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c @@ -10327,6 +10327,43 @@ static int bnx2x_54618se_config_init(struct bnx2x_phy *phy, return 0; } + +static void bnx2x_5461x_set_link_led(struct bnx2x_phy *phy, + struct link_params *params, u8 mode) +{ + struct bnx2x *bp = params->bp; + u16 temp; + + bnx2x_cl22_write(bp, phy, + MDIO_REG_GPHY_SHADOW, + MDIO_REG_GPHY_SHADOW_LED_SEL1); + bnx2x_cl22_read(bp, phy, + MDIO_REG_GPHY_SHADOW, + &temp); + temp &= 0xff00; + + DP(NETIF_MSG_LINK, "54618x set link led (mode=%x)\n", mode); + switch (mode) { + case LED_MODE_FRONT_PANEL_OFF: + case LED_MODE_OFF: + temp |= 0x00ee; + break; + case LED_MODE_OPER: + temp |= 0x0001; + break; + case LED_MODE_ON: + temp |= 0x00ff; + break; + default: + break; + } + bnx2x_cl22_write(bp, phy, + MDIO_REG_GPHY_SHADOW, + MDIO_REG_GPHY_SHADOW_WR_ENA | temp); + return; +} + + static void bnx2x_54618se_link_reset(struct bnx2x_phy *phy, struct link_params *params) { @@ -11103,7 +11140,7 @@ static struct bnx2x_phy phy_54618se = { .config_loopback = (config_loopback_t)bnx2x_54618se_config_loopback, .format_fw_ver = (format_fw_ver_t)NULL, .hw_reset = (hw_reset_t)NULL, - .set_link_led = (set_link_led_t)NULL, + .set_link_led = (set_link_led_t)bnx2x_5461x_set_link_led, .phy_specific_func = (phy_specific_func_t)NULL }; /*****************************************************************/ diff --git a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h index fc7bd0f23c0b..e58073ef33b4 100644 --- a/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h +++ b/trunk/drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h @@ -6990,6 +6990,7 @@ Theotherbitsarereservedandshouldbezero*/ #define MDIO_REG_INTR_MASK 0x1b #define MDIO_REG_INTR_MASK_LINK_STATUS (0x1 << 1) #define MDIO_REG_GPHY_SHADOW 0x1c +#define MDIO_REG_GPHY_SHADOW_LED_SEL1 (0x0d << 10) #define MDIO_REG_GPHY_SHADOW_LED_SEL2 (0x0e << 10) #define MDIO_REG_GPHY_SHADOW_WR_ENA (0x1 << 15) #define MDIO_REG_GPHY_SHADOW_AUTO_DET_MED (0x1e << 10)