From patchwork Fri Jan 14 13:02:41 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Hellstrom X-Patchwork-Id: 78895 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 061F6B70D5 for ; Sat, 15 Jan 2011 00:03:25 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757467Ab1ANNDF (ORCPT ); Fri, 14 Jan 2011 08:03:05 -0500 Received: from mail175c2.megamailservers.com ([69.49.111.75]:57044 "EHLO mail175c2.megamailservers.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757157Ab1ANNC5 (ORCPT ); Fri, 14 Jan 2011 08:02:57 -0500 X-POP-User: sandi@gaisler.com Received: from localhost.localdomain (static-92-33-28-242.sme.bredbandsbolaget.se [92.33.28.242]) by mail175c2.megamailservers.com (8.13.6/8.13.1) with ESMTP id p0ED2mBr016470; Fri, 14 Jan 2011 08:02:54 -0500 From: Daniel Hellstrom To: davem@davemloft.net Cc: netdev@vger.kernel.org, kristoffer@gaisler.com Subject: [PATCH 5/7 v2] GRETH: avoid writing bad speed/duplex when setting transfer mode Date: Fri, 14 Jan 2011 14:02:41 +0100 Message-Id: <1295010163-2585-5-git-send-email-daniel@gaisler.com> X-Mailer: git-send-email 1.5.4 In-Reply-To: <1295010163-2585-1-git-send-email-daniel@gaisler.com> References: <1295010163-2585-1-git-send-email-daniel@gaisler.com> X-CSC: 0 X-CHA: v=1.1 cv=0J/+zcfpZqnYLmiDeyIFo++f7xpDbu+58lrGJvU/+0Q= c=1 sm=1 a=Z79fgfHnz5UA:10 a=jXKJviUpWSOlMmIvGrHOfw==:17 a=ebG-ZW-8AAAA:8 a=7WktfnKofpD9OdwqoD8A:9 a=5oIjmv9Q7UjdAmlRWzsrdt9MzDoA:4 a=cCYF7-FHeg4A:10 a=jXKJviUpWSOlMmIvGrHOfw==:117 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Daniel Hellstrom --- drivers/net/greth.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/net/greth.c b/drivers/net/greth.c index 9386bce..e48d182 100644 --- a/drivers/net/greth.c +++ b/drivers/net/greth.c @@ -1232,29 +1232,26 @@ static void greth_link_change(struct net_device *dev) struct greth_private *greth = netdev_priv(dev); struct phy_device *phydev = greth->phy; unsigned long flags; - int status_change = 0; + u32 ctrl; spin_lock_irqsave(&greth->devlock, flags); if (phydev->link) { if ((greth->speed != phydev->speed) || (greth->duplex != phydev->duplex)) { - - GRETH_REGANDIN(greth->regs->control, - ~(GRETH_CTRL_FD | GRETH_CTRL_SP | GRETH_CTRL_GB)); + ctrl = GRETH_REGLOAD(greth->regs->control) & + ~(GRETH_CTRL_FD | GRETH_CTRL_SP | GRETH_CTRL_GB); if (phydev->duplex) - GRETH_REGORIN(greth->regs->control, GRETH_CTRL_FD); - - if (phydev->speed == SPEED_100) { - - GRETH_REGORIN(greth->regs->control, GRETH_CTRL_SP); - } + ctrl |= GRETH_CTRL_FD; + if (phydev->speed == SPEED_100) + ctrl |= GRETH_CTRL_SP; else if (phydev->speed == SPEED_1000) - GRETH_REGORIN(greth->regs->control, GRETH_CTRL_GB); + ctrl |= GRETH_CTRL_GB; + GRETH_REGSAVE(greth->regs->control, ctrl); greth->speed = phydev->speed; greth->duplex = phydev->duplex; status_change = 1;