Lines Matching defs:phy

61 static struct phydata *mii_get_valid_phydata(mii_handle_t mac, int phy);
71 static void postreset_ICS1890(mii_handle_t mac, int phy);
72 static void postreset_NS83840(mii_handle_t mac, int phy);
103 * Returns true if PHY at address phy is accessible. This should be
109 mii_probe_phy(mii_handle_t mac, int phy)
114 if (!mac || phy < 0 || phy > 31)
120 mac->mii_read(dip, phy, MII_STATUS);
121 status = mac->mii_read(dip, phy, MII_STATUS);
124 mac->mii_read(dip, phy, MII_CONTROL);
127 mac->mii_read(dip, phy, MII_CONTROL), status);
148 mii_init_phy(mii_handle_t mac, int phy)
154 if ((mac == (mii_handle_t)NULL) || phy < 0 || phy > 31)
159 /* Create a phydata structure for this new phy */
160 if (mac->phys[phy])
163 mac->phys[phy] = phydata = (struct phydata *)
169 phydata->id = (ulong_t)mac->mii_read(dip, phy, MII_PHYIDH) << 16;
170 phydata->id |= (ulong_t)mac->mii_read(dip, phy, MII_PHYIDL);
182 status = mac->mii_read(dip, phy, MII_STATUS);
203 kmem_free(mac->phys[phy], sizeof (struct phydata));
204 mac->phys[phy] = NULL;
278 (void) mii_sync(mac, phy);
281 "dump-phy", 0))
282 (void) mii_dump_phy(mac, phy);
292 mii_reset_phy(mii_handle_t mac, int phy, enum mii_wait_type wait)
297 if (!(phyd = mii_get_valid_phydata(mac, phy)))
301 mac->mii_write(mac->mii_dip, phy, MII_CONTROL,
313 control = mac->mii_read(mac->mii_dip, phy, MII_CONTROL);
324 control = mac->mii_read(mac->mii_dip, phy, MII_CONTROL);
337 (void) mii_sync(mac, phy);
352 mii_sync(mii_handle_t mac, int phy)
354 struct phydata *phyd = mac->phys[phy];
363 cmn_err(CE_NOTE, "mii_sync (phy addr %d)", phy);
372 DDI_PROP_DONTPASS, "phy-registers", (caddr_t)&regprop,
376 mac->mii_write(mac->mii_dip, phy,
386 mac->mii_write(mac->mii_dip, phy, MII_CONTROL, phyd->control);
388 phyd->phy_postreset(mac, phy);
391 (void) mii_fixspeed(mac, phy, phyd->fix_speed,
405 mii_disable_fullduplex(mii_handle_t mac, int phy)
413 if (!(mac->mii_read(dip, phy, MII_STATUS) & MII_STATUS_CANAUTONEG)) {
423 miiadvert = mac->mii_read(dip, phy, MII_AN_ADVERT);
425 mac->mii_write(dip, phy, MII_AN_ADVERT,
430 expansion = mac->mii_read(dip, phy, MII_AN_EXPANSION);
439 return (mii_rsan(mac, phy, mii_wait_none));
449 mii_autoneg_enab(mii_handle_t mac, int phy)
452 if (!(phyd = mii_get_valid_phydata(mac, phy)))
455 mac->mii_write(mac->mii_dip, phy, MII_CONTROL, phyd->control);
463 mii_linkup(mii_handle_t mac, int phy)
471 mac->mii_read(mac->mii_dip, phy, MII_STATUS);
472 status = mac->mii_read(mac->mii_dip, phy, MII_STATUS);
486 mii_getspeed(mii_handle_t mac, int phy, int *speed, int *fulld)
490 if (!(phyd = mii_get_valid_phydata(mac, phy)))
506 return (phyd->phy_getspeed(mac, phy, speed, fulld));
514 mii_fixspeed(mii_handle_t mac, int phy, int speed, int fullduplex)
524 if (!(phyd = mii_get_valid_phydata(mac, phy)))
541 mac->mii_write(mac->mii_dip, phy, MII_CONTROL, phyd->control);
551 mii_isolate(mii_handle_t mac, int phy)
555 if (!(phyd = mii_get_valid_phydata(mac, phy)))
559 mac->mii_write(mac->mii_dip, phy, MII_CONTROL, phyd->control);
567 mii_unisolate(mii_handle_t mac, int phy)
571 if (!(phyd = mii_get_valid_phydata(mac, phy)))
575 mac->mii_write(mac->mii_dip, phy, MII_CONTROL, phyd->control);
584 mii_rsan(mii_handle_t mac, int phy, enum mii_wait_type wait)
591 !(phyd = mii_get_valid_phydata(mac, phy)))
600 mac->mii_write(dip, phy, MII_CONTROL, phyd->control|MII_CONTROL_RSAN);
611 if (mac->mii_read(dip, phy, MII_STATUS) &
627 mii_dump_phy(mii_handle_t mac, int phy)
644 if (!(phydat = mii_get_valid_phydata(mac, phy)))
647 cmn_err(CE_NOTE, "%s: PHY %d, type %s", ddi_get_name(mac->mii_dip), phy,
652 miiregs[i], mac->mii_read(mac->mii_dip, phy, i));
655 phydat->phy_dump((struct mii_info *)mac, phy);
712 * For each initialised phy, see if the link state has changed, and
764 mii_get_valid_phydata(mii_handle_t mac, int phy)
766 if (!mac || phy > 31 || phy < 0 || !mac->phys[phy]) {
770 return (mac->phys[phy]);
778 dump_NS83840(mii_handle_t mac, int phy)
785 mac->mii_read(dip, phy, 0x12));
787 mac->mii_read(dip, phy, 0x13));
789 mac->mii_read(dip, phy, 0x15));
791 mac->mii_read(dip, phy, 0x16));
793 mac->mii_read(dip, phy, 0x17));
796 mac->mii_read(dip, phy, 0x18));
797 cmn_err(CE_NOTE, "Wired phy address: %x",
798 mac->mii_read(dip, phy, 0x19)&0xf);
800 reg = mac->mii_read(dip, phy, 0x1b);
813 getspeed_NS83840(mii_handle_t mac, int phy, int *speed, int *fulld)
815 int exten = mac->mii_read(mac->mii_dip, phy, MII_AN_EXPANSION);
823 lpable = mac->mii_read(mac->mii_dip, phy, MII_AN_LPABLE);
824 anadv = mac->mii_read(mac->mii_dip, phy, MII_AN_ADVERT);
844 int addr = mac->mii_read(mac->mii_dip, phy, MII_83840_ADDR);
857 getspeed_82553(mii_handle_t mac, int phy, int *speed, int *fulld)
859 int ex0 = mac->mii_read(mac->mii_dip, phy, MII_82553_EX0);
870 getspeed_ICS1890(mii_handle_t mac, int phy, int *speed, int *fulld)
872 ushort_t quickpoll = mac->mii_read(mac->mii_dip, phy, ICS_QUICKPOLL);
879 dump_ICS1890(mii_handle_t mac, int phy)
881 ushort_t quickpoll = mac->mii_read(mac->mii_dip, phy, ICS_QUICKPOLL);
889 postreset_NS83840(mii_handle_t mac, int phy)
892 struct phydata *phyd = mac->phys[phy];
902 reg = mac->mii_read(mac->mii_dip, phy, 23) | (1<<10) | (1<<5);
903 mac->mii_write(mac->mii_dip, phy, 23, reg);
922 mac->mii_read(mac->mii_dip, phy, MII_AN_ADVERT));
924 mac->mii_write(mac->mii_dip, phy, MII_AN_ADVERT, 0x1e1);
929 postreset_ICS1890(mii_handle_t mac, int phy)
932 (void) mii_unisolate(mac, phy);
939 getspeed_generic(mii_handle_t mac, int phy, int *speed, int *fulld)
941 int exten = mac->mii_read(mac->mii_dip, phy, MII_AN_EXPANSION);
949 lpable = mac->mii_read(mac->mii_dip, phy, MII_AN_LPABLE);
950 anadv = mac->mii_read(mac->mii_dip, phy, MII_AN_ADVERT);