From patchwork Sat Oct 10 15:58:14 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manfred Spraul X-Patchwork-Id: 35668 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.176.167]) by ozlabs.org (Postfix) with ESMTP id C7DB5B7B86 for ; Sun, 11 Oct 2009 03:10:51 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761944AbZJJP6k (ORCPT ); Sat, 10 Oct 2009 11:58:40 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1761926AbZJJP6i (ORCPT ); Sat, 10 Oct 2009 11:58:38 -0400 Received: from mail-fx0-f227.google.com ([209.85.220.227]:44125 "EHLO mail-fx0-f227.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761897AbZJJP6f (ORCPT ); Sat, 10 Oct 2009 11:58:35 -0400 Received: by fxm27 with SMTP id 27so7279425fxm.17 for ; Sat, 10 Oct 2009 08:57:58 -0700 (PDT) Received: by 10.103.126.27 with SMTP id d27mr1663705mun.56.1255190278688; Sat, 10 Oct 2009 08:57:58 -0700 (PDT) Received: from localhost.localdomain (port-92-202-69-84.dynamic.qsc.de [92.202.69.84]) by mx.google.com with ESMTPS id 12sm4355132muq.18.2009.10.10.08.57.57 (version=SSLv3 cipher=RC4-MD5); Sat, 10 Oct 2009 08:57:57 -0700 (PDT) From: Manfred Spraul To: aabdulla@nvidia.com Cc: netdev@vger.kernel.org, davem@davemloft.net, Manfred Spraul Subject: [PATCH 3/3] drivers/net/forcedeth.c: add support for Broadcom AC131 Date: Sat, 10 Oct 2009 17:58:14 +0200 Message-Id: <1255190294-4121-4-git-send-email-manfred@colorfullife.com> X-Mailer: git-send-email 1.6.2.5 In-Reply-To: <1255190294-4121-3-git-send-email-manfred@colorfullife.com> References: <1255190294-4121-1-git-send-email-manfred@colorfullife.com> <1255190294-4121-2-git-send-email-manfred@colorfullife.com> <1255190294-4121-3-git-send-email-manfred@colorfullife.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds an errata/update for the Broadcom AC131 PHY to forcedeth.c The changes where written by Ayaz, I added meaningful names from drivers/net/phy/broadcom.c. Ayaz: The change is similar to brcm_fet_config_init(), except that you only enable auto power down. Is that sufficient? Please double check that. --- Manfred --- drivers/net/forcedeth.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index ccb9543..1595b2c 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -598,6 +598,12 @@ union ring_type { #define PHY_BCM54XX_SHD_WRITE 0x8000 #define PHY_BCM54XX_SHD_REG3 0x0c00 /* shadow reg 3 - unknown */ +/* AC131: */ +#define PHY_BCM_AC131_BRCMTEST 0x1f /* Brcm test register */ +#define PHY_BCM_AC131_BRCMTEST_SRE 0x0080 /* Shadow register enable */ +#define PHY_BCM_AC131_SHDW_AUXSTAT2 0x1b /* Auxiliary status 2 */ +#define PHY_BCM_AC131_SHDW_AUXSTAT2_APDE 0x0020 /* Auto power down enable */ + #define PHY_GIGABIT 0x0100 #define PHY_TIMEOUT 0x1 @@ -1415,6 +1421,23 @@ static int phy_init(struct net_device *dev) } if (np->phy_oui == PHY_OUI_BROADCOM) { + if (np->driver_data & DEV_NEED_PHY_INIT_FIX) { + if (np->phy_model == PHY_MODEL_BROADCOM_AC131) { + phy_reserved = mii_rw(dev, np->phyaddr, PHY_BCM_AC131_BRCMTEST, MII_READ); + phy_reserved |= PHY_BCM_AC131_BRCMTEST_SRE; + if (mii_rw(dev, np->phyaddr, PHY_BCM_AC131_BRCMTEST,phy_reserved)) { + printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev)); + return PHY_ERROR; + } + + phy_reserved = mii_rw(dev, np->phyaddr, PHY_BCM_AC131_SHDW_AUXSTAT2, MII_READ); + phy_reserved |= PHY_BCM_AC131_SHDW_AUXSTAT2_APDE; + if (mii_rw(dev, np->phyaddr, PHY_BCM_AC131_SHDW_AUXSTAT2,phy_reserved)) { + printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev)); + return PHY_ERROR; + } + } + } if (np->phy_model == PHY_MODEL_BROADCOM_50610) { if (mii_rw(dev, np->phyaddr, PHY_BCM54XX_SHD, PHY_BCM54XX_SHD_WRITE|| PHY_BCM54XX_SHD_REG3|0)) {