public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Guido Classen <classeng@clagi.de>
To: jgarzik@pobox.com, tulip-users@lists.sourceforge.net,
	linux-net@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] drivers/net/tulip/: fix for Lite-On 82c168 PNIC (2.6.11)
Date: Fri, 01 Apr 2005 22:21:44 +0200	[thread overview]
Message-ID: <424DAD58.6080807@clagi.de> (raw)

Hi,

this small patch fixes two issues with the Lite-On 82c168 PNIC adapters.
I've tested it with two cards in different machines both chip rev 17

The first is the wrong register address CSR6 for writing the MII register
which instead is 0xB8 (this may get a symbol too?) (see similar exisiting code
at line 437) in tulip_core.c

At least by my cards, the the bit 31 from the MII register seems to be
somewhat unstable. This results in reading wrong values from the Phy-Registers
und prevents the card from correct initialization. I've added a litte delay
and an second test of the bit. If the bit is stil cleared the read/write
process has definitely finished.

Cheers
   Guido

Signed-off-by: Guido Classen <classeng@clagi.de>

diff -ru linux-2.6.11-org/drivers/net/tulip/tulip_core.c 
linux-2.6.11.2-pentium/drivers/net/tulip/tulip_core.c
--- linux-2.6.11-org/drivers/net/tulip/tulip_core.c	2005-04-01 
22:10:03.000000000 +0200
+++ linux-2.6.11.2-pentium/drivers/net/tulip/tulip_core.c	2005-03-31 
23:14:11.000000000 +0200
@@ -1701,8 +1701,8 @@
  			tp->nwayset = 0;
  			iowrite32(csr6_ttm | csr6_ca, ioaddr + CSR6);
  			iowrite32(0x30, ioaddr + CSR12);
-			iowrite32(0x0001F078, ioaddr + CSR6);
-			iowrite32(0x0201F078, ioaddr + CSR6); /* Turn on autonegotiation. */
+			iowrite32(0x0001F078, ioaddr + 0xB8);
+			iowrite32(0x0201F078, ioaddr + 0xB8); /* Turn on autonegotiation. */
  		}
  		break;
  	case MX98713:
diff -ru linux-2.6.11-org/drivers/net/tulip/media.c 
linux-2.6.11.2-pentium/drivers/net/tulip/media.c
--- linux-2.6.11-org/drivers/net/tulip/media.c	2005-04-01 22:10:03.000000000 
+0200
+++ linux-2.6.11.2-pentium/drivers/net/tulip/media.c	2005-04-01 
22:05:31.000000000 +0200
@@ -74,8 +74,17 @@
  		ioread32(ioaddr + 0xA0);
  		while (--i > 0) {
  			barrier();
-			if ( ! ((retval = ioread32(ioaddr + 0xA0)) & 0x80000000))
-				break;
+			if ( ! ((retval = ioread32(ioaddr + 0xA0))
+                                & 0x80000000)) {
+                                /* bug in 82c168 rev 17?
+                                 * wait a little while and check if
+                                 * bit 31 is still cleared */
+                                udelay(10);
+                                if ( ! ((retval = ioread32(ioaddr + 0xA0))
+                                        & 0x80000000)) {
+                                        break;
+                                }
+                        }
  		}
  		spin_unlock_irqrestore(&tp->mii_lock, flags);
  		return retval & 0xffff;
@@ -153,8 +162,16 @@
  		iowrite32(cmd, ioaddr + 0xA0);
  		do {
  			barrier();
-			if ( ! (ioread32(ioaddr + 0xA0) & 0x80000000))
-				break;
+			if ( ! (ioread32(ioaddr + 0xA0) & 0x80000000)) {
+                                /* bug in 82c168 rev 17?
+                                 * wait a little while and check if
+                                 * bit 31 is still cleared */
+                                udelay(10);
+                                if ( ! (ioread32(ioaddr + 0xA0)
+                                        & 0x80000000)) {
+                                        break;
+                                }
+                        }
  		} while (--i > 0);
  		spin_unlock_irqrestore(&tp->mii_lock, flags);
  		return;

             reply	other threads:[~2005-04-01 20:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-01 20:21 Guido Classen [this message]
     [not found] <45056015.1050205@garzik.org>
2006-12-08  1:58 ` [PATCH] drivers/net/tulip/: fix for Lite-On 82c168 PNIC (2.6.11) Valerie Henson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=424DAD58.6080807@clagi.de \
    --to=classeng@clagi.de \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-net@vger.kernel.org \
    --cc=tulip-users@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox