Lines Matching +full:10 +full:- +full:gigabit

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Driver for PowerPC 4xx on-chip ethernet controller, PHY support.
18 * (c) 2004-2005, Eugene Surovegin <ebs@ebshome.net>
37 return phy->mdio_read(phy->dev, phy->address, reg); in _phy_read()
42 phy->mdio_write(phy->dev, phy->address, reg, val); in _phy_write()
47 return phy->mdio_read(phy->dev, phy->gpcs_address, reg); in gpcs_phy_read()
52 phy->mdio_write(phy->dev, phy->gpcs_address, reg, val); in gpcs_phy_write()
67 while (--limit) { in emac_mii_reset_phy()
71 udelay(10); in emac_mii_reset_phy()
91 while (--limit) { in emac_mii_reset_gpcs()
95 udelay(10); in emac_mii_reset_gpcs()
100 if (limit > 0 && phy->mode == PHY_INTERFACE_MODE_SGMII) { in emac_mii_reset_gpcs()
114 phy->autoneg = AUTONEG_ENABLE; in genmii_setup_aneg()
115 phy->speed = SPEED_10; in genmii_setup_aneg()
116 phy->duplex = DUPLEX_HALF; in genmii_setup_aneg()
117 phy->pause = phy->asym_pause = 0; in genmii_setup_aneg()
118 phy->advertising = advertise; in genmii_setup_aneg()
148 if (phy->features & in genmii_setup_aneg()
173 phy->autoneg = AUTONEG_DISABLE; in genmii_setup_forced()
174 phy->speed = speed; in genmii_setup_forced()
175 phy->duplex = fd; in genmii_setup_forced()
176 phy->pause = phy->asym_pause = 0; in genmii_setup_forced()
197 return -EINVAL; in genmii_setup_forced()
215 if (phy->autoneg == AUTONEG_ENABLE && !(status & BMSR_ANEGCOMPLETE)) in genmii_poll_link()
222 if (phy->autoneg == AUTONEG_ENABLE) { in genmii_read_link()
228 if (phy->features & in genmii_read_link()
239 phy->speed = SPEED_10; in genmii_read_link()
240 phy->duplex = DUPLEX_HALF; in genmii_read_link()
241 phy->pause = phy->asym_pause = 0; in genmii_read_link()
244 phy->speed = SPEED_1000; in genmii_read_link()
246 phy->duplex = DUPLEX_FULL; in genmii_read_link()
248 phy->speed = SPEED_100; in genmii_read_link()
250 phy->duplex = DUPLEX_FULL; in genmii_read_link()
252 phy->duplex = DUPLEX_FULL; in genmii_read_link()
254 if (phy->duplex == DUPLEX_FULL) { in genmii_read_link()
255 phy->pause = lpa & LPA_PAUSE_CAP ? 1 : 0; in genmii_read_link()
256 phy->asym_pause = lpa & LPA_PAUSE_ASYM ? 1 : 0; in genmii_read_link()
264 phy->duplex = DUPLEX_FULL; in genmii_read_link()
266 phy->duplex = DUPLEX_HALF; in genmii_read_link()
268 phy->speed = SPEED_1000; in genmii_read_link()
270 phy->speed = SPEED_100; in genmii_read_link()
272 phy->speed = SPEED_10; in genmii_read_link()
274 phy->pause = phy->asym_pause = 0; in genmii_read_link()
279 /* Generic implementation for most 10/100/1000 PHYs */
316 switch (phy->mode) { in cis8201_init()
337 /* Disable TX_EN -> CRS echo mode, otherwise 10/HDX doesn't work */ in cis8201_init()
355 .name = "CIS8201 Gigabit Ethernet",
363 .name = "BCM5248 10/100 SMII Ethernet",
397 reg_short |= 0x8000; /* bypass Auto-Negotiation */ in m88e1112_init()
435 .name = "ET1011C Gigabit Ethernet",
477 phy_write(phy, 0x1e, 0x2d47); /* Value copied from u-boot */ in ar8035_init()
479 phy_write(phy, 0x1e, 0xbc20); /* Value copied from u-boot */ in ar8035_init()
495 .name = "Atheros 8035 Gigabit Ethernet",
516 phy->autoneg = AUTONEG_DISABLE; in emac_mii_phy_probe()
517 phy->advertising = 0; in emac_mii_phy_probe()
518 phy->address = address; in emac_mii_phy_probe()
519 phy->speed = SPEED_10; in emac_mii_phy_probe()
520 phy->duplex = DUPLEX_HALF; in emac_mii_phy_probe()
521 phy->pause = phy->asym_pause = 0; in emac_mii_phy_probe()
525 return -ENODEV; in emac_mii_phy_probe()
530 if ((id & def->phy_id_mask) == def->phy_id) in emac_mii_phy_probe()
534 return -ENODEV; in emac_mii_phy_probe()
536 phy->def = def; in emac_mii_phy_probe()
539 phy->features = def->features; in emac_mii_phy_probe()
540 if (!phy->features) { in emac_mii_phy_probe()
543 phy->features |= SUPPORTED_Autoneg; in emac_mii_phy_probe()
545 phy->features |= SUPPORTED_10baseT_Half; in emac_mii_phy_probe()
547 phy->features |= SUPPORTED_10baseT_Full; in emac_mii_phy_probe()
549 phy->features |= SUPPORTED_100baseT_Half; in emac_mii_phy_probe()
551 phy->features |= SUPPORTED_100baseT_Full; in emac_mii_phy_probe()
555 phy->features |= SUPPORTED_1000baseT_Full; in emac_mii_phy_probe()
557 phy->features |= SUPPORTED_1000baseT_Half; in emac_mii_phy_probe()
559 phy->features |= SUPPORTED_MII; in emac_mii_phy_probe()
563 phy->advertising = phy->features; in emac_mii_phy_probe()