[PATCH 1/2] ibm_newemac: PowerPC 440GX EMAC PHY clock workaround

Previous thread: [PATCH 2/2] ibm_newemac: PowerPC 440EP/440GR EMAC PHY clock workaround by Valentine Barshak on Thursday, March 27, 2008 - 7:42 am. (1 message)

Next thread: Re: kernel 2.6.25-rc7 highly unstable on high load by Eric Dumazet on Thursday, March 27, 2008 - 9:07 am. (19 messages)
From: Valentine Barshak
Date: Thursday, March 27, 2008 - 7:40 am

The PowerPC 440GX Taishan board fails to reset EMAC3 (reset timeout error)
if there's no link. Because of that it fails to find PHY chip. The older ibm_emac
driver had a workaround for that: the EMAC_CLK_INTERNAL/EMAC_CLK_EXTERNAL macros,
which toggle the Ethernet Clock Select bit in the SDR0_MFR register. This patch
does the same for "ibm,emac-440gx" compatible chips. The workaround forces
clock on -all- EMACs, so we select clock under global emac_phy_map_lock.

Signed-off-by: Valentine Barshak <vbarshak@ru.mvista.com>
---
 drivers/net/ibm_newemac/core.c |   16 +++++++++++++++-
 drivers/net/ibm_newemac/core.h |    8 ++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff -pruN linux-2.6.orig/drivers/net/ibm_newemac/core.c linux-2.6/drivers/net/ibm_newemac/core.c
--- linux-2.6.orig/drivers/net/ibm_newemac/core.c	2008-02-22 19:56:26.000000000 +0300
+++ linux-2.6/drivers/net/ibm_newemac/core.c	2008-02-22 20:38:47.000000000 +0300
@@ -43,6 +43,8 @@
 #include <asm/io.h>
 #include <asm/dma.h>
 #include <asm/uaccess.h>
+#include <asm/dcr.h>
+#include <asm/dcr-regs.h>
 
 #include "core.h"
 
@@ -2323,6 +2325,10 @@ static int __devinit emac_init_phy(struc
 	dev->phy.mdio_read = emac_mdio_read;
 	dev->phy.mdio_write = emac_mdio_write;
 
+	/* Enable internal clock source */
+	if (emac_has_feature(dev, EMAC_FTR_440GX_PHY_CLK_FIX))
+		dcri_clrset(SDR0, SDR0_MFR, 0, SDR0_MFR_ECS);
+
 	/* Configure EMAC with defaults so we can at least use MDIO
 	 * This is needed mostly for 440GX
 	 */
@@ -2355,6 +2361,11 @@ static int __devinit emac_init_phy(struc
 			if (!emac_mii_phy_probe(&dev->phy, i))
 				break;
 		}
+
+	/* Enable external clock source */
+	if (emac_has_feature(dev, EMAC_FTR_440GX_PHY_CLK_FIX))
+		dcri_clrset(SDR0, SDR0_MFR, SDR0_MFR_ECS, 0);
+
 	mutex_unlock(&emac_phy_map_lock);
 	if (i == 0x20) {
 		printk(KERN_WARNING "%s: can't find PHY!\n", np->full_name);
@@ -2480,8 +2491,11 @@ static int __devinit emac_init_config(st
 	}
 
 	/* Check EMAC version ...
From: Jeff Garzik
Date: Friday, March 28, 2008 - 7:18 pm

is this for 2.6.25-rc?


--

From: Josh Boyer
Date: Friday, March 28, 2008 - 8:30 pm

On Fri, 28 Mar 2008 22:18:25 -0400

No.  This, and patch 2/2, are for 2.6.26 and depend on a patch in my
tree.  These are the two Ben asked about going through the powerpc tree
but naturally we wanted an Ack from you first.

thx,
josh 
--

From: Benjamin Herrenschmidt
Date: Friday, March 28, 2008 - 8:28 pm

Nah, too late imho.

Ben.


--

From: Josh Boyer
Date: Friday, April 11, 2008 - 7:24 am

On Fri, 28 Mar 2008 22:18:25 -0400

Jeff, can I get an ack from you on this patch, and patch 2 in this
set?  They depend on a patch in my tree and I'd like to include them in
my next push to Paul for 2.6.26.

josh
--

From: Jeff Garzik
Date: Saturday, April 12, 2008 - 1:28 pm

ACK

I had queried the status of these patches, and didn't receive any reply 
initially from my query...


--

From: Josh Boyer
Date: Saturday, April 12, 2008 - 1:47 pm

Erm...  you did.

http://ozlabs.org/pipermail/linuxppc-dev/2008-March/053737.html

No worries though.  I lose email all the time.

josh

--

From: Jeff Garzik
Date: Saturday, April 12, 2008 - 2:13 pm

Whoops, sorry about that!

	Jeff



--

Previous thread: [PATCH 2/2] ibm_newemac: PowerPC 440EP/440GR EMAC PHY clock workaround by Valentine Barshak on Thursday, March 27, 2008 - 7:42 am. (1 message)

Next thread: Re: kernel 2.6.25-rc7 highly unstable on high load by Eric Dumazet on Thursday, March 27, 2008 - 9:07 am. (19 messages)