Lines Matching +full:half +full:- +full:duplex
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
42 { 0, 0, 0 }, /* 10BT Half Duplex */
43 { 1, 0, 0 }, /* 10BT Full Duplex */
44 { 0, 1, 0 }, /* 100BT Half Duplex */
45 { 0, 1, 0 }, /* 100BT Half Duplex */
46 { 1, 1, 0 }, /* 100BT Full Duplex*/
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()
196 /* Configure for gigabit full duplex */ in bcm5400_init()
245 * in the tg3.c driver. -DaveM in bcm5401_init()
260 /* Configure for gigabit full duplex */ 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()
360 /* Select speed & duplex */ 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()
458 /* Enable automatic low-power */ in bcm5421_init()
473 phy->autoneg = 1; in bcm54xx_setup_aneg()
474 phy->speed = SPEED_10; in bcm54xx_setup_aneg()
475 phy->duplex = DUPLEX_HALF; in bcm54xx_setup_aneg()
476 phy->pause = 0; in bcm54xx_setup_aneg()
477 phy->advertising = advertise; in bcm54xx_setup_aneg()
517 phy->autoneg = 0; in bcm54xx_setup_forced()
518 phy->speed = speed; in bcm54xx_setup_forced()
519 phy->duplex = fd; in bcm54xx_setup_forced()
520 phy->pause = 0; in bcm54xx_setup_forced()
528 /* Select speed & duplex */ in bcm54xx_setup_forced()
553 if (phy->autoneg) { in bcm54xx_read_link()
557 phy->duplex = phy_BCM5400_link_table[link_mode][0] ? in bcm54xx_read_link()
559 phy->speed = phy_BCM5400_link_table[link_mode][2] ? in bcm54xx_read_link()
564 phy->pause = (phy->duplex == DUPLEX_FULL) && in bcm54xx_read_link()
567 /* On non-aneg, we assume what we put in BMCR is the speed, in bcm54xx_read_link()
568 * though magic-aneg shouldn't prevent this case from occurring in bcm54xx_read_link()
636 phy->speed = SPEED_1000; in bcm5421_read_link()
638 /* find out whether we are running half- or full duplex */ in bcm5421_read_link()
643 phy->duplex |= DUPLEX_HALF; in bcm5421_read_link()
645 phy->duplex |= DUPLEX_FULL; in bcm5421_read_link()
663 phy->autoneg = autoneg; in bcm5421_enable_fiber()
712 phy->speed = SPEED_1000; in bcm5461_read_link()
714 /* find out whether we are running half- or full duplex */ in bcm5461_read_link()
719 phy->duplex |= DUPLEX_FULL; in bcm5461_read_link()
721 phy->duplex |= DUPLEX_HALF; in bcm5461_read_link()
728 /* select fiber mode, enable 1000 base-X registers */ in bcm5461_enable_fiber()
740 phy->autoneg = autoneg; in bcm5461_enable_fiber()
749 phy->autoneg = 1; in marvell_setup_aneg()
750 phy->speed = SPEED_10; in marvell_setup_aneg()
751 phy->duplex = DUPLEX_HALF; in marvell_setup_aneg()
752 phy->pause = 0; in marvell_setup_aneg()
753 phy->advertising = advertise; in marvell_setup_aneg()
800 phy->autoneg = 0; in marvell_setup_forced()
801 phy->speed = speed; in marvell_setup_forced()
802 phy->duplex = fd; in marvell_setup_forced()
803 phy->pause = 0; in marvell_setup_forced()
809 /* Select speed & duplex */ in marvell_setup_forced()
850 if (phy->autoneg) { in marvell_read_link()
853 return -EAGAIN; in marvell_read_link()
855 phy->speed = SPEED_1000; in marvell_read_link()
857 phy->speed = SPEED_100; in marvell_read_link()
859 phy->speed = SPEED_10; in marvell_read_link()
861 phy->duplex = DUPLEX_FULL; in marvell_read_link()
863 phy->duplex = DUPLEX_HALF; in marvell_read_link()
866 phy->pause = (status & pmask) == pmask; in marvell_read_link()
868 /* On non-aneg, we assume what we put in BMCR is the speed, in marvell_read_link()
869 * though magic-aneg shouldn't prevent this case from occurring in marvell_read_link()
883 * it neither. --BenH.
1022 /* Broadcom BCM 5421 built-in K2 */
1035 .name = "BCM5421-K2",
1060 /* Broadcom BCM 5462 built-in Vesta */
1073 .name = "BCM5462-Vesta",
1168 * may re-probe the PHY regulary in sungem_phy_probe()
1170 phy->mii_id = mii_id; in sungem_phy_probe()
1182 if ((id & def->phy_id_mask) == def->phy_id) in sungem_phy_probe()
1188 phy->def = def; in sungem_phy_probe()
1192 phy->speed = 0; in sungem_phy_probe()
1193 phy->duplex = 0; in sungem_phy_probe()
1194 phy->pause = 0; in sungem_phy_probe()
1195 phy->advertising = 0; in sungem_phy_probe()
1196 return -ENODEV; in sungem_phy_probe()