static void genmii_setup_forced(struct ugeth_mii_info *mii_info) { u16 ctrl; u32 features = mii_info->phyinfo->features; ugphy_vdbg("%s: IN", __FUNCTION__); ctrl = ucc_geth_phy_read(mii_info, MII_BMCR); ctrl &= ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_SPEED1000 | BMCR_ANENABLE); ctrl |= BMCR_RESET; switch (mii_info->speed) { case SPEED_1000: if (features & (SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full)) { ctrl |= BMCR_SPEED1000; break; } mii_info->speed = SPEED_100; case SPEED_100: if (features & (SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full)) { ctrl |= BMCR_SPEED100; break; } mii_info->speed = SPEED_10; case SPEED_10: if (features & (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full)) break; default: /* Unsupported speed! */ ugphy_err("%s: Bad speed!", mii_info->dev->name); break; } ucc_geth_phy_write(mii_info, MII_BMCR, ctrl); }
static void genmii_setup_forced (struct uec_mii_info *mii_info) { u16 ctrl; u32 features = mii_info->phyinfo->features; ctrl = phy_read (mii_info, PHY_BMCR); ctrl &= ~(PHY_BMCR_DPLX | PHY_BMCR_100_MBPS | PHY_BMCR_1000_MBPS | PHY_BMCR_AUTON); ctrl |= PHY_BMCR_RESET; switch (mii_info->speed) { case SPEED_1000: if (features & (SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full)) { ctrl |= PHY_BMCR_1000_MBPS; break; } mii_info->speed = SPEED_100; case SPEED_100: if (features & (SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full)) { ctrl |= PHY_BMCR_100_MBPS; break; } mii_info->speed = SPEED_10; case SPEED_10: if (features & (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full)) break; default: /* Unsupported speed! */ ugphy_err ("%s: Bad speed!", mii_info->dev->name); break; } phy_write (mii_info, PHY_BMCR, ctrl); }