Message ID | 1302126558-1318-13-git-send-email-michael@schwingen.org |
---|---|
State | Superseded |
Delegated to: | Marek Vasut |
Headers | show |
On Wednesday, April 06, 2011 11:49:13 PM Michael Schwingen wrote: > Signed-off-by: Michael Schwingen <michael@schwingen.org> > --- > Changes for V2: > Changes for V3: > - coding style / indentation cleanup > - move config.h changes to AcTux2/AcTux3 board patches > Changes for V4: > - add changelog > > arch/arm/cpu/ixp/npe/npe.c | 67 > +++++++++++++++++++++++++++---------------- 1 files changed, 42 > insertions(+), 25 deletions(-) > > diff --git a/arch/arm/cpu/ixp/npe/npe.c b/arch/arm/cpu/ixp/npe/npe.c > index 6d92c53..f0e02bf 100644 > --- a/arch/arm/cpu/ixp/npe/npe.c > +++ b/arch/arm/cpu/ixp/npe/npe.c > @@ -359,36 +359,53 @@ static int npe_init(struct eth_device *dev, bd_t * > bis) > > debug("%s: 1\n", __FUNCTION__); > > - miiphy_read (dev->name, p_npe->phy_no, MII_BMSR, ®_short); > - > - /* > - * Wait if PHY is capable of autonegotiation and autonegotiation is not > complete - */ > - if ((reg_short & BMSR_ANEGCAPABLE) && !(reg_short & BMSR_ANEGCOMPLETE)) { > - puts ("Waiting for PHY auto negotiation to complete"); > - i = 0; > - while (!(reg_short & BMSR_ANEGCOMPLETE)) { > - /* > - * Timeout reached ? > - */ > - if (i > PHY_AUTONEGOTIATE_TIMEOUT) { > - puts (" TIMEOUT !\n"); > - break; > - } > +#ifdef CONFIG_MII_NPE0_FIXEDLINK > + if (0 == p_npe->eth_id) { > + speed = CONFIG_MII_NPE0_SPEED; > + duplex = CONFIG_MII_NPE0_FULLDUPLEX ? FULL : HALF; > + } else > +#endif > +#ifdef CONFIG_MII_NPE1_FIXEDLINK > + if (1 == p_npe->eth_id) { > + speed = CONFIG_MII_NPE1_SPEED; > + duplex = CONFIG_MII_NPE1_FULLDUPLEX ? FULL : HALF; > + } else > +#endif Maybe you can bend the CPP here a bit to avoid code duplication ? > + { > + miiphy_read(dev->name, p_npe->phy_no, MII_BMSR, ®_short); > + > + /* > + * Wait if PHY is capable of autonegotiation and > + * autonegotiation is not complete > + */ > + if ((reg_short & BMSR_ANEGCAPABLE) && > + !(reg_short & BMSR_ANEGCOMPLETE)) { > + puts("Waiting for PHY auto negotiation to complete"); > + i = 0; > + while (!(reg_short & BMSR_ANEGCOMPLETE)) { > + /* > + * Timeout reached ? > + */ > + if (i > PHY_AUTONEGOTIATE_TIMEOUT) { > + puts(" TIMEOUT !\n"); > + break; > + } > > - if ((i++ % 1000) == 0) { > - putc ('.'); > - miiphy_read (dev->name, p_npe->phy_no, MII_BMSR, ®_short); > + if ((i++ % 1000) == 0) { > + putc('.'); > + miiphy_read(dev->name, p_npe->phy_no, > + MII_BMSR, ®_short); > + } > + udelay(1000); /* 1 ms */ > } > - udelay (1000); /* 1 ms */ > + puts(" done\n"); > + /* another 500 ms (results in faster booting) */ > + udelay(500000); > } > - puts (" done\n"); > - udelay (500000); /* another 500 ms (results in faster booting) */ > + speed = miiphy_speed(dev->name, p_npe->phy_no); > + duplex = miiphy_duplex(dev->name, p_npe->phy_no); > } > > - speed = miiphy_speed (dev->name, p_npe->phy_no); > - duplex = miiphy_duplex (dev->name, p_npe->phy_no); > - > if (p_npe->print_speed) { > p_npe->print_speed = 0; > printf ("ENET Speed is %d Mbps - %s duplex connection\n",
diff --git a/arch/arm/cpu/ixp/npe/npe.c b/arch/arm/cpu/ixp/npe/npe.c index 6d92c53..f0e02bf 100644 --- a/arch/arm/cpu/ixp/npe/npe.c +++ b/arch/arm/cpu/ixp/npe/npe.c @@ -359,36 +359,53 @@ static int npe_init(struct eth_device *dev, bd_t * bis) debug("%s: 1\n", __FUNCTION__); - miiphy_read (dev->name, p_npe->phy_no, MII_BMSR, ®_short); - - /* - * Wait if PHY is capable of autonegotiation and autonegotiation is not complete - */ - if ((reg_short & BMSR_ANEGCAPABLE) && !(reg_short & BMSR_ANEGCOMPLETE)) { - puts ("Waiting for PHY auto negotiation to complete"); - i = 0; - while (!(reg_short & BMSR_ANEGCOMPLETE)) { - /* - * Timeout reached ? - */ - if (i > PHY_AUTONEGOTIATE_TIMEOUT) { - puts (" TIMEOUT !\n"); - break; - } +#ifdef CONFIG_MII_NPE0_FIXEDLINK + if (0 == p_npe->eth_id) { + speed = CONFIG_MII_NPE0_SPEED; + duplex = CONFIG_MII_NPE0_FULLDUPLEX ? FULL : HALF; + } else +#endif +#ifdef CONFIG_MII_NPE1_FIXEDLINK + if (1 == p_npe->eth_id) { + speed = CONFIG_MII_NPE1_SPEED; + duplex = CONFIG_MII_NPE1_FULLDUPLEX ? FULL : HALF; + } else +#endif + { + miiphy_read(dev->name, p_npe->phy_no, MII_BMSR, ®_short); + + /* + * Wait if PHY is capable of autonegotiation and + * autonegotiation is not complete + */ + if ((reg_short & BMSR_ANEGCAPABLE) && + !(reg_short & BMSR_ANEGCOMPLETE)) { + puts("Waiting for PHY auto negotiation to complete"); + i = 0; + while (!(reg_short & BMSR_ANEGCOMPLETE)) { + /* + * Timeout reached ? + */ + if (i > PHY_AUTONEGOTIATE_TIMEOUT) { + puts(" TIMEOUT !\n"); + break; + } - if ((i++ % 1000) == 0) { - putc ('.'); - miiphy_read (dev->name, p_npe->phy_no, MII_BMSR, ®_short); + if ((i++ % 1000) == 0) { + putc('.'); + miiphy_read(dev->name, p_npe->phy_no, + MII_BMSR, ®_short); + } + udelay(1000); /* 1 ms */ } - udelay (1000); /* 1 ms */ + puts(" done\n"); + /* another 500 ms (results in faster booting) */ + udelay(500000); } - puts (" done\n"); - udelay (500000); /* another 500 ms (results in faster booting) */ + speed = miiphy_speed(dev->name, p_npe->phy_no); + duplex = miiphy_duplex(dev->name, p_npe->phy_no); } - speed = miiphy_speed (dev->name, p_npe->phy_no); - duplex = miiphy_duplex (dev->name, p_npe->phy_no); - if (p_npe->print_speed) { p_npe->print_speed = 0; printf ("ENET Speed is %d Mbps - %s duplex connection\n",
Signed-off-by: Michael Schwingen <michael@schwingen.org> --- Changes for V2: Changes for V3: - coding style / indentation cleanup - move config.h changes to AcTux2/AcTux3 board patches Changes for V4: - add changelog arch/arm/cpu/ixp/npe/npe.c | 67 +++++++++++++++++++++++++++---------------- 1 files changed, 42 insertions(+), 25 deletions(-)