Lines Matching defs:mii
3 mii.c: MII interface library
34 #include <linux/mii.h>
36 static u32 mii_get_an(struct mii_if_info *mii, u16 addr)
40 advert = mii->mdio_read(mii->dev, mii->phy_id, addr);
47 * @mii: MII interface
55 int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
57 struct net_device *dev = mii->dev;
65 if (mii->supports_gmii)
76 ecmd->phy_address = mii->phy_id;
81 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
82 bmsr = mii->mdio_read(dev, mii->phy_id, MII_BMSR);
83 if (mii->supports_gmii) {
84 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
85 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000);
91 ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE);
92 if (mii->supports_gmii)
97 ecmd->lp_advertising = mii_get_an(mii, MII_LPA);
130 mii->full_duplex = ecmd->duplex;
139 * @mii: MII interface
145 void mii_ethtool_get_link_ksettings(struct mii_if_info *mii,
148 struct net_device *dev = mii->dev;
155 if (mii->supports_gmii)
163 cmd->base.phy_address = mii->phy_id;
168 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
169 bmsr = mii->mdio_read(dev, mii->phy_id, MII_BMSR);
170 if (mii->supports_gmii) {
171 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
172 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000);
178 advertising |= mii_get_an(mii, MII_ADVERTISE);
179 if (mii->supports_gmii)
183 lp_advertising = mii_get_an(mii, MII_LPA);
218 mii->full_duplex = cmd->base.duplex;
232 * @mii: MII interface
237 int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
239 struct net_device *dev = mii->dev;
252 if (ecmd->phy_address != mii->phy_id)
256 if ((speed == SPEED_1000) && (!mii->supports_gmii))
274 advert = mii->mdio_read(dev, mii->phy_id, MII_ADVERTISE);
276 if (mii->supports_gmii) {
277 advert2 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
282 if (mii->supports_gmii)
286 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
287 mii->advertising = tmp;
289 if ((mii->supports_gmii) && (advert2 != tmp2))
290 mii->mdio_write(dev, mii->phy_id, MII_CTRL1000, tmp2);
293 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
295 mii->mdio_write(dev, mii->phy_id, MII_BMCR, bmcr);
297 mii->force_media = 0;
302 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
311 mii->full_duplex = 1;
313 mii->full_duplex = 0;
315 mii->mdio_write(dev, mii->phy_id, MII_BMCR, tmp);
317 mii->force_media = 1;
324 * @mii: MII interfaces
329 int mii_ethtool_set_link_ksettings(struct mii_if_info *mii,
332 struct net_device *dev = mii->dev;
343 if (cmd->base.phy_address != mii->phy_id)
348 if ((speed == SPEED_1000) && (!mii->supports_gmii))
370 advert = mii->mdio_read(dev, mii->phy_id, MII_ADVERTISE);
372 if (mii->supports_gmii) {
373 advert2 = mii->mdio_read(dev, mii->phy_id,
380 if (mii->supports_gmii)
383 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
384 mii->advertising = tmp;
386 if ((mii->supports_gmii) && (advert2 != tmp2))
387 mii->mdio_write(dev, mii->phy_id, MII_CTRL1000, tmp2);
390 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
392 mii->mdio_write(dev, mii->phy_id, MII_BMCR, bmcr);
394 mii->force_media = 0;
399 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
408 mii->full_duplex = 1;
410 mii->full_duplex = 0;
413 mii->mdio_write(dev, mii->phy_id, MII_BMCR, tmp);
415 mii->force_media = 1;
422 * @mii: the MII interface
424 int mii_check_gmii_support(struct mii_if_info *mii)
428 reg = mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR);
430 reg = mii->mdio_read(mii->dev, mii->phy_id, MII_ESTATUS);
440 * @mii: the MII interface
444 int mii_link_ok (struct mii_if_info *mii)
447 mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR);
448 if (mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR) & BMSR_LSTATUS)
455 * @mii: the MII interface
459 int mii_nway_restart (struct mii_if_info *mii)
465 bmcr = mii->mdio_read(mii->dev, mii->phy_id, MII_BMCR);
469 mii->mdio_write(mii->dev, mii->phy_id, MII_BMCR, bmcr);
478 * @mii: MII interface
484 void mii_check_link (struct mii_if_info *mii)
486 int cur_link = mii_link_ok(mii);
487 int prev_link = netif_carrier_ok(mii->dev);
490 netif_carrier_on(mii->dev);
492 netif_carrier_off(mii->dev);
497 * @mii: the MII interface
499 * @init_media: OK to save duplex mode in @mii
504 unsigned int mii_check_media (struct mii_if_info *mii,
513 old_carrier = netif_carrier_ok(mii->dev) ? 1 : 0;
514 new_carrier = (unsigned int) mii_link_ok(mii);
524 netif_carrier_off(mii->dev);
526 netdev_info(mii->dev, "link down\n");
533 netif_carrier_on(mii->dev);
535 if (mii->force_media) {
537 netdev_info(mii->dev, "link up\n");
542 if ((!init_media) && (mii->advertising))
543 advertise = mii->advertising;
545 advertise = mii->mdio_read(mii->dev, mii->phy_id, MII_ADVERTISE);
546 mii->advertising = advertise;
548 lpa = mii->mdio_read(mii->dev, mii->phy_id, MII_LPA);
549 if (mii->supports_gmii)
550 lpa2 = mii->mdio_read(mii->dev, mii->phy_id, MII_STAT1000);
559 netdev_info(mii->dev, "link up, %uMbps, %s-duplex, lpa 0x%04X\n",
566 if ((init_media) || (mii->full_duplex != duplex)) {
567 mii->full_duplex = duplex;