static int uec_init(struct eth_device* dev, bd_t *bd) { uec_private_t *uec; int err; uec = (uec_private_t *)dev->priv; if (uec->the_first_run == 0) { /* Set up the MAC address */ if (dev->enetaddr[0] & 0x01) { printf("%s: MacAddress is multcast address\n", __FUNCTION__); return -EINVAL; } uec_set_mac_address(uec, dev->enetaddr); uec->the_first_run = 1; } err = uec_open(uec, COMM_DIR_RX_AND_TX); if (err) { printf("%s: cannot enable UEC device\n", dev->name); return err; } return 0; }
static int uec_init(struct eth_device* dev, bd_t *bd) { uec_private_t *uec; int err, i; struct phy_info *curphy; uec = (uec_private_t *)dev->priv; if (uec->the_first_run == 0) { err = init_phy(dev); if (err) { printf("%s: Cannot initialize PHY, aborting.\n", dev->name); return err; } curphy = uec->mii_info->phyinfo; if (curphy->config_aneg) { err = curphy->config_aneg(uec->mii_info); if (err) { printf("%s: Can't negotiate PHY\n", dev->name); return err; } } /* Give PHYs up to 5 sec to report a link */ i = 50; do { err = curphy->read_status(uec->mii_info); udelay(100000); } while (((i-- > 0) && !uec->mii_info->link) || err); if (err || i <= 0) printf("warning: %s: timeout on PHY link\n", dev->name); uec->the_first_run = 1; } /* Set up the MAC address */ if (dev->enetaddr[0] & 0x01) { printf("%s: MacAddress is multcast address\n", __FUNCTION__); return -1; } uec_set_mac_address(uec, dev->enetaddr); err = uec_open(uec, COMM_DIR_RX_AND_TX); if (err) { printf("%s: cannot enable UEC device\n", dev->name); return -1; } phy_change(dev); return (uec->mii_info->link ? 0 : -1); }
static int uec_init(struct eth_device* dev, bd_t *bd) { uec_private_t *uec; int err, i; struct phy_info *curphy; #if defined(CONFIG_P1012) || defined(CONFIG_P1021) || defined(CONFIG_P1025) ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); #endif uec = (uec_private_t *)dev->priv; if (uec->the_first_run == 0) { #if defined(CONFIG_P1012) || defined(CONFIG_P1021) || defined(CONFIG_P1025) /* QE9 and QE12 need to be set for enabling QE MII managment signals */ setbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_QE9); setbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_QE12); #endif err = init_phy(dev); if (err) { printf("%s: Cannot initialize PHY, aborting.\n", dev->name); return err; } curphy = uec->mii_info->phyinfo; if (curphy->config_aneg) { err = curphy->config_aneg(uec->mii_info); if (err) { printf("%s: Can't negotiate PHY\n", dev->name); return err; } } /* Give PHYs up to 5 sec to report a link */ i = 50; do { err = curphy->read_status(uec->mii_info); if (!(((i-- > 0) && !uec->mii_info->link) || err)) break; udelay(100000); } while (1); #if defined(CONFIG_P1012) || defined(CONFIG_P1021) || defined(CONFIG_P1025) /* QE12 needs to be released for enabling LBCTL signal*/ clrbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_QE12); #endif if (err || i <= 0) printf("warning: %s: timeout on PHY link\n", dev->name); adjust_link(dev); uec->the_first_run = 1; } /* Set up the MAC address */ if (dev->enetaddr[0] & 0x01) { printf("%s: MacAddress is multcast address\n", __FUNCTION__); return -1; } uec_set_mac_address(uec, dev->enetaddr); err = uec_open(uec, COMM_DIR_RX_AND_TX); if (err) { printf("%s: cannot enable UEC device\n", dev->name); return -1; } phy_change(dev); return (uec->mii_info->link ? 0 : -1); }