Message ID | 1236730894.7086.29.camel@pasglop (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Benjamin Herrenschmidt wrote: > On Wed, 2009-03-11 at 01:39 +0200, Felix Radensky wrote: > >> Benjamin Herrenschmidt wrote: >> >>> On Wed, 2009-03-11 at 00:14 +0200, Felix Radensky wrote: >>> >>> >>>> Yes, seems logical. U-boot has code to enable and disable loopback clock >>>> for 440SPE, 440EPX,440GRX,405EX, 460EX and 460GT. >>>> >>>> I can test patches on my board. Alternatively, I can try something myself >>>> if you can provide some guidance. I guess you are referring to the code >>>> using >>>> EMAC_FTR_440GX_PHY_CLK_FIX and EMAC_FTR_440EP_PHY_CLK_FIX. >>>> >>>> >>> It would be nice if you could try something as I don't have anything to >>> test here. >>> >>> And yes, it's probably one of those 2 fixes that need to be extended. >>> >>> I'll have a look later today if I can find the 405EXr user manual and >>> give you more precise guidance. >>> > > >From the doc, it looks like it needs the 440 type workaround (and the > 405EX as well). Can you try this patch: > > emac: Fix clock control for 405EX and 405EXr chips > > The EMAC variant in the 405EX and 405EXr chips needs the "440EP" type clock > control workaround to avoid lockups of the Rx side during reset. > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > --- > > Index: linux-work/drivers/net/ibm_newemac/core.c > =================================================================== > --- linux-work.orig/drivers/net/ibm_newemac/core.c 2009-03-11 11:13:37.000000000 +1100 > +++ linux-work/drivers/net/ibm_newemac/core.c 2009-03-11 11:14:00.000000000 +1100 > @@ -2594,6 +2594,9 @@ static int __devinit emac_init_config(st > if (of_device_is_compatible(np, "ibm,emac-460ex") || > of_device_is_compatible(np, "ibm,emac-460gt")) > dev->features |= EMAC_FTR_460EX_PHY_CLK_FIX; > + if (of_device_is_compatible(np, "ibm,emac-405ex") || > + of_device_is_compatible(np, "ibm,emac-405exr")) > + dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX; > } else if (of_device_is_compatible(np, "ibm,emac4")) { > dev->features |= EMAC_FTR_EMAC4; > if (of_device_is_compatible(np, "ibm,emac-440gx")) > > > Hi, Ben This patch fixes a problem for me. Thank you very much for a quick fix. Felix.
From: Felix Radensky <felix@embedded-sol.com> Date: Wed, 11 Mar 2009 10:56:31 +0200 > Benjamin Herrenschmidt wrote: > > emac: Fix clock control for 405EX and 405EXr chips > > > > The EMAC variant in the 405EX and 405EXr chips needs the "440EP" type clock > > control workaround to avoid lockups of the Rx side during reset. > > > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> ... > This patch fixes a problem for me. Thank you very much for a quick fix. Patch applied, thanks everyone.
Index: linux-work/drivers/net/ibm_newemac/core.c =================================================================== --- linux-work.orig/drivers/net/ibm_newemac/core.c 2009-03-11 11:13:37.000000000 +1100 +++ linux-work/drivers/net/ibm_newemac/core.c 2009-03-11 11:14:00.000000000 +1100 @@ -2594,6 +2594,9 @@ static int __devinit emac_init_config(st if (of_device_is_compatible(np, "ibm,emac-460ex") || of_device_is_compatible(np, "ibm,emac-460gt")) dev->features |= EMAC_FTR_460EX_PHY_CLK_FIX; + if (of_device_is_compatible(np, "ibm,emac-405ex") || + of_device_is_compatible(np, "ibm,emac-405exr")) + dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX; } else if (of_device_is_compatible(np, "ibm,emac4")) { dev->features |= EMAC_FTR_EMAC4; if (of_device_is_compatible(np, "ibm,emac-440gx"))