linux/drivers/net/ethernet/ibm/emac
Petri Gynther 23fbb5a87c emac: Fix EMAC soft reset on 460EX/GT
Fix EMAC soft reset on 460EX/GT to select the right PHY clock source
before and after the soft reset.

EMAC with PHY should use the clock from PHY during soft reset.
EMAC without PHY should use the internal clock during soft reset.

PPC460EX/GT Embedded Processor Advanced User's Manual
section 28.10.1 Mode Register 0 (EMACx_MR0) states:
Note: The PHY must provide a TX Clk in order to perform a soft reset
of the EMAC. If none is present, select the internal clock
(SDR0_ETH_CFG[EMACx_PHY_CLK] = 1).
After a soft reset, select the external clock.

Without the fix, 460EX/GT-based boards with RGMII PHYs attached to
EMACs experience EMAC interrupt storm and system watchdog reset when
issuing "ifconfig eth0 down" + "ifconfig eth0 up" a few times.
The system enters endless loop of serving emac_irq() with EMACx_ISR
register stuck at value 0x10000000 (Rx parity error).

With the fix, the above issue is no longer observed.

Signed-off-by: Petri Gynther <pgynther@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-05-11 17:40:14 -07:00
..
Kconfig
Makefile net: fix IBM EMAC driver after rename. 2011-08-18 21:33:49 -07:00
core.c emac: Fix EMAC soft reset on 460EX/GT 2013-05-11 17:40:14 -07:00
core.h powerpc/44x: Add more changes for APM821XX EMAC driver 2012-03-06 17:07:42 -05:00
debug.c ethernet/emac/sysrq: fix inconstistent help message of sysrq key 2013-04-30 17:04:10 -07:00
debug.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
emac.h powerpc/44x: Add more changes for APM821XX EMAC driver 2012-03-06 17:07:42 -05:00
mal.c drivers:net: dma_alloc_coherent: use __GFP_ZERO instead of memset(, 0) 2013-03-17 12:50:24 -04:00
mal.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
phy.c drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
phy.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
rgmii.c ibm/emac: remove __dev* attributes 2012-12-03 11:16:43 -08:00
rgmii.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
tah.c ibm/emac: remove __dev* attributes 2012-12-03 11:16:43 -08:00
tah.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
zmii.c ibm/emac: remove __dev* attributes 2012-12-03 11:16:43 -08:00
zmii.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00