Lines Matching +full:asym +full:- +full:pause
1 // SPDX-License-Identifier: GPL-2.0-only
7 * (c) 2002-2007, Benjamin Herrenscmidt (benh@kernel.crashing.org)
10 * - Add support for PHYs that provide an IRQ line
11 * - Eventually moved the entire polling state machine in
14 * - On LXT971 & BCM5201, Apple uses some chip specific regs
17 * - Apple has some additional power management code for some
53 return phy->mdio_read(phy->dev, id, reg); in __sungem_phy_read()
58 phy->mdio_write(phy->dev, id, reg, val); in __sungem_phy_write()
63 return phy->mdio_read(phy->dev, phy->mii_id, reg); in sungem_phy_read()
68 phy->mdio_write(phy->dev, phy->mii_id, reg, val); in sungem_phy_write()
83 while (--limit) { in reset_one_mii_phy()
245 * in the tg3.c driver. -DaveM in bcm5401_init()
318 phy->autoneg = 1; in genmii_setup_aneg()
319 phy->speed = SPEED_10; in genmii_setup_aneg()
320 phy->duplex = DUPLEX_HALF; in genmii_setup_aneg()
321 phy->pause = 0; in genmii_setup_aneg()
322 phy->advertising = advertise; in genmii_setup_aneg()
349 phy->autoneg = 0; in genmii_setup_forced()
350 phy->speed = speed; in genmii_setup_forced()
351 phy->duplex = fd; in genmii_setup_forced()
352 phy->pause = 0; in genmii_setup_forced()
369 return -EINVAL; in genmii_setup_forced()
386 if (phy->autoneg && !(status & BMSR_ANEGCOMPLETE)) in genmii_poll_link()
395 if (phy->autoneg) { in genmii_read_link()
399 phy->duplex = DUPLEX_FULL; in genmii_read_link()
401 phy->duplex = DUPLEX_HALF; in genmii_read_link()
403 phy->speed = SPEED_100; in genmii_read_link()
405 phy->speed = SPEED_10; in genmii_read_link()
406 phy->pause = 0; in genmii_read_link()
408 /* On non-aneg, we assume what we put in BMCR is the speed, in genmii_read_link()
409 * though magic-aneg shouldn't prevent this case from occurring in genmii_read_link()
452 if (phy->platform_data) { in bcm5421_init()
453 struct device_node *np = of_get_parent(phy->platform_data); in bcm5421_init()
455 if (np == NULL || of_get_property(np, "no-autolowpower", NULL)) in bcm5421_init()
459 /* Enable automatic low-power */ in bcm5421_init()
474 phy->autoneg = 1; in bcm54xx_setup_aneg()
475 phy->speed = SPEED_10; in bcm54xx_setup_aneg()
476 phy->duplex = DUPLEX_HALF; in bcm54xx_setup_aneg()
477 phy->pause = 0; in bcm54xx_setup_aneg()
478 phy->advertising = advertise; in bcm54xx_setup_aneg()
518 phy->autoneg = 0; in bcm54xx_setup_forced()
519 phy->speed = speed; in bcm54xx_setup_forced()
520 phy->duplex = fd; in bcm54xx_setup_forced()
521 phy->pause = 0; in bcm54xx_setup_forced()
554 if (phy->autoneg) { in bcm54xx_read_link()
558 phy->duplex = phy_BCM5400_link_table[link_mode][0] ? in bcm54xx_read_link()
560 phy->speed = phy_BCM5400_link_table[link_mode][2] ? in bcm54xx_read_link()
565 phy->pause = (phy->duplex == DUPLEX_FULL) && in bcm54xx_read_link()
568 /* On non-aneg, we assume what we put in BMCR is the speed, in bcm54xx_read_link()
569 * though magic-aneg shouldn't prevent this case from occurring in bcm54xx_read_link()
637 phy->speed = SPEED_1000; in bcm5421_read_link()
639 /* find out whether we are running half- or full duplex */ in bcm5421_read_link()
644 phy->duplex |= DUPLEX_HALF; in bcm5421_read_link()
646 phy->duplex |= DUPLEX_FULL; in bcm5421_read_link()
664 phy->autoneg = autoneg; in bcm5421_enable_fiber()
713 phy->speed = SPEED_1000; in bcm5461_read_link()
715 /* find out whether we are running half- or full duplex */ in bcm5461_read_link()
720 phy->duplex |= DUPLEX_FULL; in bcm5461_read_link()
722 phy->duplex |= DUPLEX_HALF; in bcm5461_read_link()
729 /* select fiber mode, enable 1000 base-X registers */ in bcm5461_enable_fiber()
741 phy->autoneg = autoneg; in bcm5461_enable_fiber()
750 phy->autoneg = 1; in marvell_setup_aneg()
751 phy->speed = SPEED_10; in marvell_setup_aneg()
752 phy->duplex = DUPLEX_HALF; in marvell_setup_aneg()
753 phy->pause = 0; in marvell_setup_aneg()
754 phy->advertising = advertise; in marvell_setup_aneg()
801 phy->autoneg = 0; in marvell_setup_forced()
802 phy->speed = speed; in marvell_setup_forced()
803 phy->duplex = fd; in marvell_setup_forced()
804 phy->pause = 0; in marvell_setup_forced()
851 if (phy->autoneg) { in marvell_read_link()
854 return -EAGAIN; in marvell_read_link()
856 phy->speed = SPEED_1000; in marvell_read_link()
858 phy->speed = SPEED_100; in marvell_read_link()
860 phy->speed = SPEED_10; in marvell_read_link()
862 phy->duplex = DUPLEX_FULL; in marvell_read_link()
864 phy->duplex = DUPLEX_HALF; in marvell_read_link()
867 phy->pause = (status & pmask) == pmask; in marvell_read_link()
869 /* On non-aneg, we assume what we put in BMCR is the speed, in marvell_read_link()
870 * though magic-aneg shouldn't prevent this case from occurring in marvell_read_link()
882 /* On gigabit capable PHYs, we advertise Pause support but not asym pause
884 * it neither. --BenH.
1023 /* Broadcom BCM 5421 built-in K2 */
1036 .name = "BCM5421-K2",
1061 /* Broadcom BCM 5462 built-in Vesta */
1074 .name = "BCM5462-Vesta",
1169 * may re-probe the PHY regulary in sungem_phy_probe()
1171 phy->mii_id = mii_id; in sungem_phy_probe()
1183 if ((id & def->phy_id_mask) == def->phy_id) in sungem_phy_probe()
1189 phy->def = def; in sungem_phy_probe()
1193 phy->speed = 0; in sungem_phy_probe()
1194 phy->duplex = 0; in sungem_phy_probe()
1195 phy->pause = 0; in sungem_phy_probe()
1196 phy->advertising = 0; in sungem_phy_probe()
1197 return -ENODEV; in sungem_phy_probe()