From patchwork Wed Oct 26 09:40:36 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yaniv Rosner X-Patchwork-Id: 121850 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 701C3B6F97 for ; Wed, 26 Oct 2011 18:43:22 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932110Ab1JZHlR (ORCPT ); Wed, 26 Oct 2011 03:41:17 -0400 Received: from mms3.broadcom.com ([216.31.210.19]:2937 "EHLO MMS3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754672Ab1JZHlP (ORCPT ); Wed, 26 Oct 2011 03:41:15 -0400 Received: from [10.9.200.131] by MMS3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.3.2)); Wed, 26 Oct 2011 00:47:37 -0700 X-Server-Uuid: B55A25B1-5D7D-41F8-BC53-C57E7AD3C201 Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB01.corp.ad.broadcom.com (10.9.200.131) with Microsoft SMTP Server id 8.2.247.2; Wed, 26 Oct 2011 00:41:03 -0700 Received: from lb-tlvb-yanivr.il.broadcom.com ( lb-tlvb-yanivr.il.broadcom.com [10.185.7.25]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 0E213BC39C; Wed, 26 Oct 2011 00:41:01 -0700 (PDT) From: "Yaniv Rosner" To: "David Miller" cc: netdev , "Yaniv Rosner" , "Eilon Greenstein" Subject: [net 4/7] bnx2x: Fix 54618se LED behavior Date: Wed, 26 Oct 2011 11:40:36 +0200 Message-ID: <1319622039-10553-5-git-send-email-yanivr@broadcom.com> X-Mailer: git-send-email 1.7.7.1 In-Reply-To: <1319622039-10553-1-git-send-email-yanivr@broadcom.com> References: <1319622039-10553-1-git-send-email-yanivr@broadcom.com> MIME-Version: 1.0 X-WSS-ID: 62B964930EG4837128-02-01 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Yaniv Rosner Signed-off-by: Eilon Greenstein --- drivers/net/bnx2x/bnx2x_link.c | 44 ++++++++++++++++++++------------------- 1 files changed, 23 insertions(+), 21 deletions(-) diff --git a/drivers/net/bnx2x/bnx2x_link.c b/drivers/net/bnx2x/bnx2x_link.c index ea2a11d..5acf274 100644 --- a/drivers/net/bnx2x/bnx2x_link.c +++ b/drivers/net/bnx2x/bnx2x_link.c @@ -5993,7 +5993,13 @@ int bnx2x_set_led(struct link_params *params, SHARED_HW_CFG_LED_MAC1); tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); - EMAC_WR(bp, EMAC_REG_EMAC_LED, (tmp | EMAC_LED_OVERRIDE)); + if (params->phy[EXT_PHY1].type == + PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE) + EMAC_WR(bp, EMAC_REG_EMAC_LED, tmp & 0xfff1); + else { + EMAC_WR(bp, EMAC_REG_EMAC_LED, + (tmp | EMAC_LED_OVERRIDE)); + } break; case LED_MODE_OPER: @@ -6046,8 +6052,15 @@ int bnx2x_set_led(struct link_params *params, else REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, hw_led_mode); + } else if ((params->phy[EXT_PHY1].type == + PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE) && + (mode != LED_MODE_OPER)) { + REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, 0); + tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); + EMAC_WR(bp, EMAC_REG_EMAC_LED, tmp | 0x3); } else - REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, hw_led_mode); + REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, + hw_led_mode); REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 + port*4, 0); /* Set blinking rate to ~15.9Hz */ @@ -6059,8 +6072,13 @@ int bnx2x_set_led(struct link_params *params, LED_BLINK_RATE_VAL_E1X_E2); REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_RATE_ENA_P0 + port*4, 1); - tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); - EMAC_WR(bp, EMAC_REG_EMAC_LED, (tmp & (~EMAC_LED_OVERRIDE))); + if ((params->phy[EXT_PHY1].type != + PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM54618SE) && + (mode != LED_MODE_OPER)) { + tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED); + EMAC_WR(bp, EMAC_REG_EMAC_LED, + (tmp & (~EMAC_LED_OVERRIDE))); + } if (CHIP_IS_E1(bp) && ((speed == SPEED_2500) || @@ -10304,22 +10322,6 @@ static int bnx2x_54618se_config_init(struct bnx2x_phy *phy, return 0; } -static void bnx2x_54618se_set_link_led(struct bnx2x_phy *phy, - struct link_params *params, u8 mode) -{ - struct bnx2x *bp = params->bp; - DP(NETIF_MSG_LINK, "54618SE set link led (mode=%x)\n", mode); - switch (mode) { - case LED_MODE_FRONT_PANEL_OFF: - case LED_MODE_OFF: - case LED_MODE_OPER: - case LED_MODE_ON: - default: - break; - } - return; -} - static void bnx2x_54618se_link_reset(struct bnx2x_phy *phy, struct link_params *params) { @@ -11095,7 +11097,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)bnx2x_54618se_set_link_led, + .set_link_led = (set_link_led_t)NULL, .phy_specific_func = (phy_specific_func_t)NULL }; /*****************************************************************/