From patchwork Sat Oct 11 21:13:30 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 4037 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 1BD41DDE06 for ; Sun, 12 Oct 2008 08:13:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754796AbYJKVNa (ORCPT ); Sat, 11 Oct 2008 17:13:30 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754032AbYJKVNa (ORCPT ); Sat, 11 Oct 2008 17:13:30 -0400 Received: from mail.gmx.net ([213.165.64.20]:41787 "HELO mail.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1753851AbYJKVNa (ORCPT ); Sat, 11 Oct 2008 17:13:30 -0400 Received: (qmail invoked by alias); 11 Oct 2008 21:13:23 -0000 Received: from p57BD2073.dip0.t-ipconnect.de (EHLO axis700.grange) [87.189.32.115] by mail.gmx.net (mp035) with SMTP; 11 Oct 2008 23:13:23 +0200 X-Authenticated: #20450766 X-Provags-ID: V01U2FsdGVkX1/6SmlprtX6+mvvYte7iskHZd+kzM6o0QsFDjgNux SsJ/bTx7Z6/bM5 Received: from lyakh (helo=localhost) by axis700.grange with local-esmtp (Exim 4.63) (envelope-from ) id 1KolmE-0001wQ-JW; Sat, 11 Oct 2008 23:13:30 +0200 Date: Sat, 11 Oct 2008 23:13:30 +0200 (CEST) From: Guennadi Liakhovetski X-X-Sender: lyakh@axis700.grange To: Peter Korsgaard cc: Steve.Glendinning@smsc.com, netdev@vger.kernel.org, Ian.Saturley@smsc.com Subject: [PATCH] smc911x: Add support for LAN921{5,7,8} chips from SMSC In-Reply-To: <87k5cfoz7b.fsf@macbook.be.48ers.dk> Message-ID: References: <87vdx5gjzo.fsf@macbook.be.48ers.dk> <871vynr3yb.fsf@macbook.be.48ers.dk> <87k5cfoz7b.fsf@macbook.be.48ers.dk> MIME-Version: 1.0 X-Y-GMX-Trusted: 0 X-FuHaFi: 0.44 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org LAN92{5,7,8} chips from SMSC are register compatible with LAN911{5,6,7,8} controllers, and only add support for HP Auto-MDIX. LAN9218 doesn't have an external MII interface. Also fixes a couple of minor style issues. Signed-off-by: Guennadi Liakhovetski --- against 2.6.27 drivers/net/smc911x.c | 15 +++++++-------- drivers/net/smc911x.h | 14 ++++++++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c index dbc51e9..428b852 100644 --- a/drivers/net/smc911x.c +++ b/drivers/net/smc911x.c @@ -685,8 +685,10 @@ static void smc911x_phy_detect(struct net_device *dev) * PHY#1 to PHY#31, and then PHY#0 last. */ switch(lp->version) { - case 0x115: - case 0x117: + case CHIP_9115: + case CHIP_9117: + case CHIP_9215: + case CHIP_9217: cfg = SMC_GET_HW_CFG(lp); if (cfg & HW_CFG_EXT_PHY_DET_) { cfg &= ~HW_CFG_PHY_CLK_SEL_; @@ -995,7 +997,7 @@ static void smc911x_phy_interrupt(struct net_device *dev) smc911x_phy_check_media(dev, 0); /* read to clear status bits */ - SMC_GET_PHY_INT_SRC(lp, phyaddr,status); + SMC_GET_PHY_INT_SRC(lp, phyaddr, status); DBG(SMC_DEBUG_MISC, "%s: PHY interrupt status 0x%04x\n", dev->name, status & 0xffff); DBG(SMC_DEBUG_MISC, "%s: AFC_CFG 0x%08x\n", @@ -1033,7 +1035,6 @@ static irqreturn_t smc911x_interrupt(int irq, void *dev_id) /* set a timeout value, so I don't stay here forever */ timeout = 8; - do { status = SMC_GET_INT(lp); @@ -1172,12 +1173,10 @@ static irqreturn_t smc911x_interrupt(int irq, void *dev_id) /* restore mask state */ SMC_SET_INT_EN(lp, mask); - DBG(SMC_DEBUG_MISC, "%s: Interrupt done (%d loops)\n", - dev->name, 8-timeout); - spin_unlock_irqrestore(&lp->lock, flags); - DBG(3, "%s: Interrupt done (%d loops)\n", dev->name, 8-timeout); + DBG(SMC_DEBUG_MISC, "%s: Interrupt done (%d loops)\n", + dev->name, 8-timeout); return IRQ_HANDLED; } diff --git a/drivers/net/smc911x.h b/drivers/net/smc911x.h index 2abfc28..bf6240f 100644 --- a/drivers/net/smc911x.h +++ b/drivers/net/smc911x.h @@ -666,10 +666,13 @@ smc_pxa_dma_outsl(struct smc911x_local *lp, u_long physaddr, #define LAN911X_INTERNAL_PHY_ID (0x0007C000) /* Chip ID values */ -#define CHIP_9115 0x115 -#define CHIP_9116 0x116 -#define CHIP_9117 0x117 -#define CHIP_9118 0x118 +#define CHIP_9115 0x0115 +#define CHIP_9116 0x0116 +#define CHIP_9117 0x0117 +#define CHIP_9118 0x0118 +#define CHIP_9215 0x115A +#define CHIP_9217 0x117A +#define CHIP_9218 0x118A struct chip_id { u16 id; @@ -681,6 +684,9 @@ static const struct chip_id chip_ids[] = { { CHIP_9116, "LAN9116" }, { CHIP_9117, "LAN9117" }, { CHIP_9118, "LAN9118" }, + { CHIP_9215, "LAN9215" }, + { CHIP_9217, "LAN9217" }, + { CHIP_9218, "LAN9218" }, { 0, NULL }, };