diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-03-21 09:38:46 -0400 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-04-04 22:37:39 +0200 |
commit | f5cf2ef2ad2a8bf321712ab460ed846120163d74 (patch) | |
tree | c0df481aadf91d347cd41327206be64e866706c7 | |
parent | 5f58f8d20f97deaf4dde7eb3886efa3e5a3715ee (diff) |
mpc52xx phy: initialize only when needed
Do not initialize phy on startup, instead initialize it
when we actually need it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/net/mpc5xxx_fec.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/mpc5xxx_fec.c b/drivers/net/mpc5xxx_fec.c index 0f1d1af0ea..1876b7684b 100644 --- a/drivers/net/mpc5xxx_fec.c +++ b/drivers/net/mpc5xxx_fec.c @@ -42,6 +42,8 @@ typedef struct { int fec5xxx_miiphy_read(char *devname, uint8 phyAddr, uint8 regAddr, uint16 * retVal); int fec5xxx_miiphy_write(char *devname, uint8 phyAddr, uint8 regAddr, uint16 data); +static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis); + /********************************************************************/ #if (DEBUG & 0x2) static void mpc5xxx_fec_phydump (char *devname) @@ -249,6 +251,8 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis) printf ("mpc5xxx_fec_init... Begin\n"); #endif + mpc5xxx_fec_init_phy(dev, bis); + /* * Initialize RxBD/TxBD rings */ @@ -387,6 +391,11 @@ static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis) { mpc5xxx_fec_priv *fec = (mpc5xxx_fec_priv *)dev->priv; const uint8 phyAddr = CONFIG_PHY_ADDR; /* Only one PHY */ + static int initialized = 0; + + if(initialized) + return 0; + initialized = 1; #if (DEBUG & 0x1) printf ("mpc5xxx_fec_init_phy... Begin\n"); @@ -937,8 +946,6 @@ int mpc5xxx_fec_initialize(bd_t * bis) mpc5xxx_fec_set_hwaddr(fec, env_enetaddr); } - mpc5xxx_fec_init_phy(dev, bis); - return 1; } |