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
53 void mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
55 struct net_device *dev = mii->dev;
63 if (mii->supports_gmii)
74 ecmd->phy_address = mii->phy_id;
79 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
80 bmsr = mii->mdio_read(dev, mii->phy_id, MII_BMSR);
81 if (mii->supports_gmii) {
82 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
83 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000);
86 ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE);
87 if (mii->supports_gmii)
96 ecmd->lp_advertising = mii_get_an(mii, MII_LPA);
129 mii->full_duplex = ecmd->duplex;
136 * @mii: MII interface
142 void mii_ethtool_get_link_ksettings(struct mii_if_info *mii,
145 struct net_device *dev = mii->dev;
152 if (mii->supports_gmii)
160 cmd->base.phy_address = mii->phy_id;
165 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
166 bmsr = mii->mdio_read(dev, mii->phy_id, MII_BMSR);
167 if (mii->supports_gmii) {
168 ctrl1000 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
169 stat1000 = mii->mdio_read(dev, mii->phy_id, MII_STAT1000);
172 advertising |= mii_get_an(mii, MII_ADVERTISE);
173 if (mii->supports_gmii)
181 lp_advertising = mii_get_an(mii, MII_LPA);
216 mii->full_duplex = cmd->base.duplex;
230 * @mii: MII interface
235 int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
237 struct net_device *dev = mii->dev;
250 if (ecmd->phy_address != mii->phy_id)
254 if ((speed == SPEED_1000) && (!mii->supports_gmii))
272 advert = mii->mdio_read(dev, mii->phy_id, MII_ADVERTISE);
274 if (mii->supports_gmii) {
275 advert2 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
280 if (mii->supports_gmii)
284 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
285 mii->advertising = tmp;
287 if ((mii->supports_gmii) && (advert2 != tmp2))
288 mii->mdio_write(dev, mii->phy_id, MII_CTRL1000, tmp2);
291 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
293 mii->mdio_write(dev, mii->phy_id, MII_BMCR, bmcr);
295 mii->force_media = 0;
300 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
309 mii->full_duplex = 1;
311 mii->full_duplex = 0;
313 mii->mdio_write(dev, mii->phy_id, MII_BMCR, tmp);
315 mii->force_media = 1;
322 * @mii: MII interfaces
327 int mii_ethtool_set_link_ksettings(struct mii_if_info *mii,
330 struct net_device *dev = mii->dev;
341 if (cmd->base.phy_address != mii->phy_id)
346 if ((speed == SPEED_1000) && (!mii->supports_gmii))
368 advert = mii->mdio_read(dev, mii->phy_id, MII_ADVERTISE);
370 if (mii->supports_gmii) {
371 advert2 = mii->mdio_read(dev, mii->phy_id,
378 if (mii->supports_gmii)
381 mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
382 mii->advertising = tmp;
384 if ((mii->supports_gmii) && (advert2 != tmp2))
385 mii->mdio_write(dev, mii->phy_id, MII_CTRL1000, tmp2);
388 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
390 mii->mdio_write(dev, mii->phy_id, MII_BMCR, bmcr);
392 mii->force_media = 0;
397 bmcr = mii->mdio_read(dev, mii->phy_id, MII_BMCR);
406 mii->full_duplex = 1;
408 mii->full_duplex = 0;
411 mii->mdio_write(dev, mii->phy_id, MII_BMCR, tmp);
413 mii->force_media = 1;
420 * @mii: the MII interface
422 int mii_check_gmii_support(struct mii_if_info *mii)
426 reg = mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR);
428 reg = mii->mdio_read(mii->dev, mii->phy_id, MII_ESTATUS);
438 * @mii: the MII interface
442 int mii_link_ok (struct mii_if_info *mii)
445 mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR);
446 if (mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR) & BMSR_LSTATUS)
453 * @mii: the MII interface
457 int mii_nway_restart (struct mii_if_info *mii)
463 bmcr = mii->mdio_read(mii->dev, mii->phy_id, MII_BMCR);
467 mii->mdio_write(mii->dev, mii->phy_id, MII_BMCR, bmcr);
476 * @mii: MII interface
482 void mii_check_link (struct mii_if_info *mii)
484 int cur_link = mii_link_ok(mii);
485 int prev_link = netif_carrier_ok(mii->dev);
488 netif_carrier_on(mii->dev);
490 netif_carrier_off(mii->dev);
495 * @mii: the MII interface
497 * @init_media: OK to save duplex mode in @mii
502 unsigned int mii_check_media (struct mii_if_info *mii,
511 old_carrier = netif_carrier_ok(mii->dev) ? 1 : 0;
512 new_carrier = (unsigned int) mii_link_ok(mii);
522 netif_carrier_off(mii->dev);
524 netdev_info(mii->dev, "link down\n");
531 netif_carrier_on(mii->dev);
533 if (mii->force_media) {
535 netdev_info(mii->dev, "link up\n");
540 if ((!init_media) && (mii->advertising))
541 advertise = mii->advertising;
543 advertise = mii->mdio_read(mii->dev, mii->phy_id, MII_ADVERTISE);
544 mii->advertising = advertise;
546 lpa = mii->mdio_read(mii->dev, mii->phy_id, MII_LPA);
547 if (mii->supports_gmii)
548 lpa2 = mii->mdio_read(mii->dev, mii->phy_id, MII_STAT1000);
557 netdev_info(mii->dev, "link up, %uMbps, %s-duplex, lpa 0x%04X\n",
564 if ((init_media) || (mii->full_duplex != duplex)) {
565 mii->full_duplex = duplex;