Lines Matching refs:ngep

50 static uint16_t nge_mii_access(nge_t *ngep, nge_regno_t regno,
55 nge_mii_access(nge_t *ngep, nge_regno_t regno, uint16_t data, uint32_t cmd) in nge_mii_access() argument
63 (void *)ngep, regno, data, cmd)); in nge_mii_access()
68 intr_src.src_val = nge_reg_get8(ngep, NGE_MINTR_SRC); in nge_mii_access()
69 nge_reg_put8(ngep, NGE_MINTR_SRC, intr_src.src_val); in nge_mii_access()
74 mdio_adr.adr_val = nge_reg_get16(ngep, NGE_MDIO_ADR); in nge_mii_access()
79 mdio_adr.adr_val = nge_reg_get16(ngep, NGE_MDIO_ADR); in nge_mii_access()
88 nge_reg_put16(ngep, NGE_MDIO_ADR, mdio_adr.adr_val); in nge_mii_access()
96 mdio_adr.adr_bits.phy_adr = ngep->phy_xmii_addr; in nge_mii_access()
101 nge_reg_put16(ngep, NGE_MDIO_DATA, data); in nge_mii_access()
103 nge_reg_put16(ngep, NGE_MDIO_ADR, mdio_adr.adr_val); in nge_mii_access()
110 mdio_adr.adr_val = nge_reg_get16(ngep, NGE_MDIO_ADR); in nge_mii_access()
121 mdio_data = nge_reg_get16(ngep, NGE_MDIO_DATA); in nge_mii_access()
126 intr_src.src_val = nge_reg_get8(ngep, NGE_MINTR_SRC); in nge_mii_access()
127 nge_reg_put8(ngep, NGE_MINTR_SRC, intr_src.src_val); in nge_mii_access()
134 uint16_t nge_mii_get16(nge_t *ngep, nge_regno_t regno);
138 nge_mii_get16(nge_t *ngep, nge_regno_t regno) in nge_mii_get16() argument
141 return (nge_mii_access(ngep, regno, 0, NGE_MDIO_READ)); in nge_mii_get16()
144 void nge_mii_put16(nge_t *ngep, nge_regno_t regno, uint16_t data);
148 nge_mii_put16(nge_t *ngep, nge_regno_t regno, uint16_t data) in nge_mii_put16() argument
151 (void) nge_mii_access(ngep, regno, data, NGE_MDIO_WRITE); in nge_mii_put16()
160 nge_phy_probe(nge_t *ngep) in nge_phy_probe() argument
167 NGE_TRACE(("nge_phy_probe($%p)", (void *)ngep)); in nge_phy_probe()
176 ngep->phy_xmii_addr = i; in nge_phy_probe()
182 phy_status = nge_mii_get16(ngep, MII_STATUS); in nge_phy_probe()
183 phy_status = nge_mii_get16(ngep, MII_STATUS); in nge_phy_probe()
185 phyidh = nge_mii_get16(ngep, MII_PHYIDH); in nge_phy_probe()
186 phyidl = nge_mii_get16(ngep, MII_PHYIDL); in nge_phy_probe()
187 ngep->phy_id = in nge_phy_probe()
190 phy_status, ngep->phy_id)); in nge_phy_probe()
205 nge_phy_recover(nge_t *ngep) in nge_phy_recover() argument
210 NGE_TRACE(("nge_phy_recover($%p)", (void *)ngep)); in nge_phy_recover()
211 control = nge_mii_get16(ngep, MII_CONTROL); in nge_phy_recover()
213 nge_mii_put16(ngep, MII_CONTROL, control); in nge_phy_recover()
216 control = nge_mii_get16(ngep, MII_CONTROL); in nge_phy_recover()
230 nge_phy_reset(nge_t *ngep) in nge_phy_reset() argument
235 NGE_TRACE(("nge_phy_reset($%p)", (void *)ngep)); in nge_phy_reset()
237 ASSERT(mutex_owned(ngep->genlock)); in nge_phy_reset()
242 control = nge_mii_get16(ngep, MII_CONTROL); in nge_phy_reset()
244 nge_mii_put16(ngep, MII_CONTROL, control); in nge_phy_reset()
249 control = nge_mii_get16(ngep, MII_CONTROL); in nge_phy_reset()
259 nge_phy_restart(nge_t *ngep) in nge_phy_restart() argument
263 if (!nge_phy_recover(ngep)) in nge_phy_restart()
265 if (!nge_phy_reset(ngep)) in nge_phy_restart()
268 if (MII_PHY_MFG(ngep->phy_id) == MII_ID_CICADA) { in nge_phy_restart()
269 if (ngep->phy_mode == RGMII_IN) { in nge_phy_restart()
270 mii_reg = nge_mii_get16(ngep, in nge_phy_restart()
276 nge_mii_put16(ngep, MII_CICADA_EXT_CONTROL, mii_reg); in nge_phy_restart()
278 mii_reg = nge_mii_get16(ngep, in nge_phy_restart()
281 nge_mii_put16(ngep, MII_CICADA_AUXCTRL_STATUS, in nge_phy_restart()
284 mii_reg = nge_mii_get16(ngep, in nge_phy_restart()
287 nge_mii_put16(ngep, in nge_phy_restart()
290 mii_reg = nge_mii_get16(ngep, in nge_phy_restart()
293 nge_mii_put16(ngep, MII_CICADA_BYPASS_CONTROL, mii_reg); in nge_phy_restart()
314 nge_update_copper(nge_t *ngep) in nge_update_copper() argument
328 NGE_TRACE(("nge_update_copper($%p)", (void *)ngep)); in nge_update_copper()
330 ASSERT(mutex_owned(ngep->genlock)); in nge_update_copper()
337 ngep->param_adv_autoneg, in nge_update_copper()
338 ngep->param_adv_pause, ngep->param_adv_asym_pause, in nge_update_copper()
339 ngep->param_adv_1000fdx, in nge_update_copper()
340 ngep->param_adv_100fdx, ngep->param_adv_100hdx, in nge_update_copper()
341 ngep->param_adv_10fdx, ngep->param_adv_10hdx)); in nge_update_copper()
354 switch (ngep->param_loop_mode) { in nge_update_copper()
357 adv_pause = ngep->param_adv_pause; in nge_update_copper()
358 adv_autoneg = ngep->param_adv_autoneg; in nge_update_copper()
359 adv_asym_pause = ngep->param_adv_asym_pause; in nge_update_copper()
360 if (ngep->phy_mode == MII_IN) { in nge_update_copper()
361 adv_1000fdx = ngep->param_adv_1000fdx = B_FALSE; in nge_update_copper()
363 adv_1000fdx = ngep->param_adv_1000fdx; in nge_update_copper()
364 adv_100fdx = ngep->param_adv_100fdx; in nge_update_copper()
365 adv_100hdx = ngep->param_adv_100hdx; in nge_update_copper()
366 adv_10fdx = ngep->param_adv_10fdx; in nge_update_copper()
367 adv_10hdx = ngep->param_adv_10hdx; in nge_update_copper()
377 ngep->param_link_duplex = LINK_DUPLEX_FULL; in nge_update_copper()
379 switch (ngep->param_loop_mode) { in nge_update_copper()
381 ngep->param_link_speed = 100; in nge_update_copper()
386 ngep->param_link_speed = 10; in nge_update_copper()
391 ngep->param_link_speed = 1000; in nge_update_copper()
464 nge_mii_put16(ngep, MII_AN_ADVERT, anar); in nge_update_copper()
465 nge_mii_put16(ngep, MII_CONTROL, control); in nge_update_copper()
466 nge_mii_put16(ngep, MII_1000BASE_T_CONTROL, gigctrl); in nge_update_copper()
467 if (!nge_phy_restart(ngep)) in nge_update_copper()
468 nge_error(ngep, "nge_update_copper: failed to restart phy"); in nge_update_copper()
473 if (ngep->param_loop_mode == NGE_LOOP_INTERNAL_PHY) { in nge_update_copper()
474 control = nge_mii_get16(ngep, MII_CONTROL); in nge_update_copper()
476 nge_mii_put16(ngep, MII_CONTROL, control); in nge_update_copper()
481 nge_check_copper(nge_t *ngep) in nge_check_copper() argument
501 mii_status = nge_mii_get16(ngep, MII_STATUS); in nge_check_copper()
502 mii_cs.cs_val = nge_reg_get32(ngep, NGE_MII_CS); in nge_check_copper()
503 mintr_src.src_val = nge_reg_get32(ngep, NGE_MINTR_SRC); in nge_check_copper()
504 nge_reg_put32(ngep, NGE_MINTR_SRC, mintr_src.src_val); in nge_check_copper()
507 "(was 0x%x)", ngep->link_state, in nge_check_copper()
508 UPORDOWN(ngep->param_link_up), mii_status, in nge_check_copper()
509 ngep->phy_gen_status)); in nge_check_copper()
515 switch (ngep->phy_mode) { in nge_check_copper()
523 mii_excontrol = nge_mii_get16(ngep, in nge_check_copper()
525 mii_exstatus = nge_mii_get16(ngep, in nge_check_copper()
532 anar = nge_mii_get16(ngep, MII_AN_ADVERT); in nge_check_copper()
533 lpan = nge_mii_get16(ngep, MII_AN_LPABLE); in nge_check_copper()
552 anar = nge_mii_get16(ngep, MII_AN_ADVERT); in nge_check_copper()
553 lpan = nge_mii_get16(ngep, MII_AN_LPABLE); in nge_check_copper()
587 ngep->phy_gen_status = mii_status; in nge_check_copper()
588 mii_status = nge_mii_get16(ngep, MII_STATUS); in nge_check_copper()
589 } while (mii_status != ngep->phy_gen_status); in nge_check_copper()
592 mii_exstatus = nge_mii_get16(ngep, MII_1000BASE_T_STATUS); in nge_check_copper()
593 lpan = nge_mii_get16(ngep, MII_AN_LPABLE); in nge_check_copper()
595 ngep->param_lp_autoneg = B_TRUE; in nge_check_copper()
596 ngep->param_link_autoneg = B_TRUE; in nge_check_copper()
597 ngep->param_lp_1000fdx = B_TRUE; in nge_check_copper()
600 ngep->param_lp_autoneg = B_TRUE; in nge_check_copper()
601 ngep->param_link_autoneg = B_TRUE; in nge_check_copper()
602 ngep->param_lp_1000hdx = B_TRUE; in nge_check_copper()
605 ngep->param_lp_100fdx = B_TRUE; in nge_check_copper()
607 ngep->param_lp_100hdx = B_TRUE; in nge_check_copper()
609 ngep->param_lp_10fdx = B_TRUE; in nge_check_copper()
611 ngep->param_lp_10hdx = B_TRUE; in nge_check_copper()
613 ngep->param_lp_asym_pause = B_TRUE; in nge_check_copper()
615 ngep->param_lp_pause = B_TRUE; in nge_check_copper()
617 ngep->param_link_up = linkup; in nge_check_copper()
618 ngep->param_link_speed = nge_copper_link_speed[speed]; in nge_check_copper()
619 ngep->param_link_duplex = nge_copper_link_duplex[duplex]; in nge_check_copper()
621 ngep->param_link_up = B_FALSE; in nge_check_copper()
622 ngep->param_link_speed = 0; in nge_check_copper()
623 ngep->param_link_duplex = LINK_DUPLEX_UNKNOWN; in nge_check_copper()
626 UPORDOWN(ngep->param_link_up), in nge_check_copper()
627 ngep->param_link_speed, in nge_check_copper()
628 ngep->param_link_duplex)); in nge_check_copper()
652 nge_phys_init(nge_t *ngep) in nge_phys_init() argument
655 NGE_TRACE(("nge_phys_init($%p)", (void *)ngep)); in nge_phys_init()
658 m2p.m2p_val = nge_reg_get32(ngep, NGE_MAC2PHY); in nge_phys_init()
659 ngep->phy_mode = m2p.m2p_bits.in_type; in nge_phys_init()
660 if ((ngep->phy_mode != RGMII_IN) && (ngep->phy_mode != MII_IN)) { in nge_phys_init()
661 ngep->phy_mode = RGMII_IN; in nge_phys_init()
663 nge_reg_put32(ngep, NGE_MAC2PHY, m2p.m2p_val); in nge_phys_init()
669 ngep->phy_xmii_addr = 1; in nge_phys_init()
670 (void) nge_phy_probe(ngep); in nge_phys_init()
671 ngep->chipinfo.flags |= CHIP_FLAG_COPPER; in nge_phys_init()
672 ngep->physops = &copper_ops; in nge_phys_init()
673 (*(ngep->physops->phys_restart))(ngep); in nge_phys_init()