Lines Matching refs:dp

81 #define	AX88172(dp)	\  argument
82 (((struct axf_dev *)(dp)->private)->chip->type == CHIP_TYPE_AX88172)
84 #define AX88772(dp) \ argument
85 (((struct axf_dev *)(dp)->private)->chip->type == CHIP_TYPE_AX88772)
292 #define OUT(dp, req, val, ix, len, buf, errp, label) \ argument
293 if ((*(errp) = usbgem_ctrl_out((dp), \
303 #define IN(dp, req, val, ix, len, buf, errp, label) \ argument
304 if ((*(errp) = usbgem_ctrl_in((dp), \
321 axf_reset_phy(struct usbgem_dev *dp) in axf_reset_phy() argument
326 struct axf_dev *lp = dp->private; in axf_reset_phy()
328 DPRINTF(2, (CE_CONT, "!%s: %s: called", dp->name, __func__)); in axf_reset_phy()
330 if (AX88172(dp)) { in axf_reset_phy()
332 IN(dp, VCMD_READ_GPIO, 0, 0, 1, &val8, &err, usberr); in axf_reset_phy()
335 dp->name, __func__, val8, GPIO_BITS)); in axf_reset_phy()
339 | lp->chip->gpio_speed[dp->speed] in axf_reset_phy()
340 | lp->chip->gpio_duplex[dp->full_duplex]; in axf_reset_phy()
342 OUT(dp, VCMD_WRITE_GPIO, in axf_reset_phy()
347 | lp->chip->gpio_speed[dp->speed] in axf_reset_phy()
348 | lp->chip->gpio_duplex[dp->full_duplex]; in axf_reset_phy()
350 OUT(dp, VCMD_WRITE_GPIO, in axf_reset_phy()
355 OUT(dp, VCMD_WRITE_GPIO, lp->gpio, 0, in axf_reset_phy()
359 OUT(dp, VCMD_WRITE_PHY_SELECT_88772, in axf_reset_phy()
360 dp->mii_phy_addr == 16 ? 1 : 0, 0, 0, NULL, &err, usberr); in axf_reset_phy()
362 OUT(dp, VCMD_SOFTWARE_RESET_88772, in axf_reset_phy()
365 OUT(dp, VCMD_SOFTWARE_RESET_88772, in axf_reset_phy()
368 OUT(dp, VCMD_SOFTWARE_RESET_88772, in axf_reset_phy()
369 dp->mii_phy_addr == 16 ? SWRST_IPRL : SWRST_PRTE, in axf_reset_phy()
382 axf_reset_chip(struct usbgem_dev *dp) in axf_reset_chip() argument
386 if (AX88172(dp)) { in axf_reset_chip()
391 OUT(dp, VCMD_SOFTWARE_RESET_88772, in axf_reset_chip()
393 OUT(dp, VCMD_SOFTWARE_RESET_88772, in axf_reset_chip()
404 axf_init_chip(struct usbgem_dev *dp) in axf_init_chip() argument
412 struct axf_dev *lp = dp->private; in axf_init_chip()
414 DPRINTF(2, (CE_CONT, "!%s: %s: called", dp->name, __func__)); in axf_init_chip()
417 if (!AX88172(dp)) { in axf_init_chip()
419 OUT(dp, VCMD_WRITE_RXCTRL, 0, 0, 0, NULL, &err, usberr); in axf_init_chip()
422 IN(dp, VCMD_READ_RXCTRL, 0, 0, 2, buf, &err, usberr); in axf_init_chip()
425 dp->name, __func__, lp->rcr, RCR_BITS)); in axf_init_chip()
430 if (AX88172(dp)) { in axf_init_chip()
440 dp->name, __func__, lp->msr, MSR_BITS)); in axf_init_chip()
441 err = axf_set_media(dp); in axf_init_chip()
445 if (AX88172(dp)) { in axf_init_chip()
446 OUT(dp, VCMD_WRITE_IPG, lp->ipg[0], 0, 0, NULL, &err, usberr); in axf_init_chip()
447 OUT(dp, VCMD_WRITE_IPG1, lp->ipg[1], 0, 0, NULL, &err, usberr); in axf_init_chip()
448 OUT(dp, VCMD_WRITE_IPG2, lp->ipg[2], 0, 0, NULL, &err, usberr); in axf_init_chip()
455 OUT(dp, VCMD_WRITE_RXCTRL, lp->rcr, 0, 0, NULL, &err, usberr); in axf_init_chip()
459 dp->name, __func__, in axf_init_chip()
465 axf_start_chip(struct usbgem_dev *dp) in axf_start_chip() argument
468 struct axf_dev *lp = dp->private; in axf_start_chip()
472 OUT(dp, VCMD_WRITE_RXCTRL, lp->rcr, 0, 0, NULL, &err, usberr); in axf_start_chip()
476 dp->name, __func__, in axf_start_chip()
483 axf_stop_chip(struct usbgem_dev *dp) in axf_stop_chip() argument
486 struct axf_dev *lp = dp->private; in axf_stop_chip()
490 OUT(dp, VCMD_WRITE_RXCTRL, lp->rcr, 0, 0, NULL, &err, usberr); in axf_stop_chip()
496 if (!AX88172(dp) && in axf_stop_chip()
497 bcmp(dp->dev_addr.ether_addr_octet, in axf_stop_chip()
498 dp->cur_addr.ether_addr_octet, in axf_stop_chip()
500 OUT(dp, VCMD_WRITE_NODE_ID_88772, 0, 0, in axf_stop_chip()
501 ETHERADDRL, dp->cur_addr.ether_addr_octet, &err, usberr); in axf_stop_chip()
504 return (axf_reset_chip(dp)); in axf_stop_chip()
508 axf_get_stats(struct usbgem_dev *dp) in axf_get_stats() argument
515 axf_mcast_hash(struct usbgem_dev *dp, const uint8_t *addr) in axf_mcast_hash() argument
521 axf_set_rx_filter(struct usbgem_dev *dp) in axf_set_rx_filter() argument
529 struct axf_dev *lp = dp->private; in axf_set_rx_filter()
532 dp->name, __func__, dp->rxmode)); in axf_set_rx_filter()
536 OUT(dp, VCMD_WRITE_RXCTRL, in axf_set_rx_filter()
545 if (dp->rxmode & RXMODE_PROMISC) { in axf_set_rx_filter()
548 } else if ((dp->rxmode & RXMODE_ALLMULTI) || dp->mc_count > 32) { in axf_set_rx_filter()
551 } else if (dp->mc_count > 0) { in axf_set_rx_filter()
557 for (i = 0; i < dp->mc_count; i++) { in axf_set_rx_filter()
558 h = dp->mc_list[i].hash; in axf_set_rx_filter()
562 if (AX88172(dp)) { in axf_set_rx_filter()
563 if (bcmp(dp->dev_addr.ether_addr_octet, in axf_set_rx_filter()
564 dp->cur_addr.ether_addr_octet, ETHERADDRL) != 0) { in axf_set_rx_filter()
572 OUT(dp, VCMD_WRITE_NODE_ID_88772, 0, 0, in axf_set_rx_filter()
573 ETHERADDRL, dp->cur_addr.ether_addr_octet, &err, usberr); in axf_set_rx_filter()
580 OUT(dp, VCMD_WRITE_MCAST_FILTER, 0, 0, in axf_set_rx_filter()
585 OUT(dp, VCMD_WRITE_RXCTRL, lp->rcr, 0, in axf_set_rx_filter()
590 IN(dp, VCMD_READ_RXCTRL, 0, 0, 2, buf, &err, usberr); in axf_set_rx_filter()
592 dp->name, __func__, LE16P(buf), RCR_BITS); in axf_set_rx_filter()
596 dp->name, __func__, in axf_set_rx_filter()
602 axf_set_media(struct usbgem_dev *dp) in axf_set_media() argument
609 struct axf_dev *lp = dp->private; in axf_set_media()
611 IN(dp, VCMD_READ_GPIO, 0, 0, 1, &gpio, &err, usberr); in axf_set_media()
614 dp->name, __func__, gpio, GPIO_BITS)); in axf_set_media()
621 if (AX88172(dp)) { in axf_set_media()
626 switch (dp->speed) { in axf_set_media()
639 gpio |= lp->chip->gpio_speed[dp->speed == USBGEM_SPD_100 ? 1 : 0]; in axf_set_media()
643 if (dp->full_duplex) { in axf_set_media()
647 if (AX88172(dp)) { in axf_set_media()
649 switch (dp->flow_control) { in axf_set_media()
658 switch (dp->flow_control) { in axf_set_media()
673 gpio |= lp->chip->gpio_duplex[dp->full_duplex ? 1 : 0]; in axf_set_media()
677 OUT(dp, VCMD_WRITE_MEDIUM_STATUS, lp->msr, 0, in axf_set_media()
682 OUT(dp, VCMD_WRITE_GPIO, in axf_set_media()
688 dp->name, __func__, in axf_set_media()
706 axf_tx_make_packet(struct usbgem_dev *dp, mblk_t *mp) in axf_tx_make_packet() argument
721 if (AX88172(dp)) { in axf_tx_make_packet()
794 axf_dump_packet(struct usbgem_dev *dp, uint8_t *bp, int n) in axf_dump_packet() argument
806 axf_rx_make_packet(struct usbgem_dev *dp, mblk_t *mp) in axf_rx_make_packet() argument
811 if (AX88172(dp)) { in axf_rx_make_packet()
839 dp->name, __func__, len, cksum); in axf_rx_make_packet()
846 dp->name, __func__, len); in axf_rx_make_packet()
868 axf_dump_packet(dp, tp->b_wptr, 18); in axf_rx_make_packet()
883 axf_mii_read(struct usbgem_dev *dp, uint_t index, int *errp) in axf_mii_read() argument
889 dp->name, __func__, index)); in axf_mii_read()
892 OUT(dp, VCMD_SOFTWARE_MII_OP, 0, 0, 0, NULL, errp, usberr); in axf_mii_read()
895 IN(dp, VCMD_READ_MII_REG, dp->mii_phy_addr, index, in axf_mii_read()
899 OUT(dp, VCMD_HARDWARE_MII_OP, 0, 0, 0, NULL, errp, usberr); in axf_mii_read()
905 "!%s: %s: usberr(%d) detected", dp->name, __func__, *errp); in axf_mii_read()
910 axf_mii_write(struct usbgem_dev *dp, uint_t index, uint16_t val, int *errp) in axf_mii_write() argument
915 dp->name, __func__, index, val)); in axf_mii_write()
918 OUT(dp, VCMD_SOFTWARE_MII_OP, 0, 0, 0, NULL, errp, usberr); in axf_mii_write()
923 OUT(dp, VCMD_WRITE_MII_REG, dp->mii_phy_addr, index, in axf_mii_write()
927 OUT(dp, VCMD_HARDWARE_MII_OP, 0, 0, 0, NULL, errp, usberr); in axf_mii_write()
934 axf_interrupt(struct usbgem_dev *dp, mblk_t *mp) in axf_interrupt() argument
937 struct axf_dev *lp = dp->private; in axf_interrupt()
943 dp->name, __func__, mp->b_wptr - mp->b_rptr, in axf_interrupt()
947 usbgem_mii_update_link(dp); in axf_interrupt()
960 axf_eeprom_dump(struct usbgem_dev *dp, int size) in axf_eeprom_dump() argument
966 cmn_err(CE_CONT, "!%s: eeprom dump:", dp->name); in axf_eeprom_dump()
971 IN(dp, VCMD_READ_SROM, i + 0, 0, 2, w0, &err, usberr); in axf_eeprom_dump()
972 IN(dp, VCMD_READ_SROM, i + 1, 0, 2, w1, &err, usberr); in axf_eeprom_dump()
973 IN(dp, VCMD_READ_SROM, i + 2, 0, 2, w2, &err, usberr); in axf_eeprom_dump()
974 IN(dp, VCMD_READ_SROM, i + 3, 0, 2, w3, &err, usberr); in axf_eeprom_dump()
988 axf_attach_chip(struct usbgem_dev *dp) in axf_attach_chip() argument
1001 struct axf_dev *lp = dp->private; in axf_attach_chip()
1003 DPRINTF(0, (CE_CONT, "!%s: %s enter", dp->name, __func__)); in axf_attach_chip()
1009 vcmd = AX88172(dp) ? VCMD_READ_NODE_ID : VCMD_READ_NODE_ID_88772; in axf_attach_chip()
1010 IN(dp, vcmd, 0, 0, in axf_attach_chip()
1011 ETHERADDRL, dp->dev_addr.ether_addr_octet, &err, usberr); in axf_attach_chip()
1031 OUT(dp, VCMD_WRITE_SROM_ENABLE, 0, 0, 0, NULL, &err, usberr); in axf_attach_chip()
1032 OUT(dp, VCMD_WRITE_SROM, 0x11, 0xe004, 0, NULL, &err, usberr); in axf_attach_chip()
1033 OUT(dp, VCMD_WRITE_SROM_DISABLE, 0, 0, 0, NULL, &err, usberr); in axf_attach_chip()
1036 if (AX88172(dp)) { in axf_attach_chip()
1037 IN(dp, VCMD_READ_PHY_IDS, 0, 0, 2, &phys, &err, usberr); in axf_attach_chip()
1038 dp->mii_phy_addr = phys[1]; in axf_attach_chip()
1040 dp->name, __func__, phys[0], phys[1])); in axf_attach_chip()
1043 dp->mii_phy_addr = 0x10; in axf_attach_chip()
1046 dp->misc_flag |= USBGEM_VLAN; in axf_attach_chip()
1048 if (AX88172(dp) || AX88772(dp)) { in axf_attach_chip()
1050 IN(dp, VCMD_READ_SROM, 0x10, 0, 2, maxpktsize, &err, usberr); in axf_attach_chip()
1057 dp->name, __func__, in axf_attach_chip()
1059 OUT(dp, VCMD_WRITE_SROM_ENABLE, in axf_attach_chip()
1061 OUT(dp, VCMD_WRITE_SROM, 0x10, in axf_attach_chip()
1063 OUT(dp, VCMD_WRITE_SROM_DISABLE, in axf_attach_chip()
1072 IN(dp, VCMD_READ_GPIO, 0, 0, 1, &val8, &err, usberr); in axf_attach_chip()
1075 dp->name, __func__, lp->ipg[0], lp->ipg[1], lp->ipg[2], in axf_attach_chip()
1079 if (!AX88172(dp)) { in axf_attach_chip()
1080 dp->rx_buf_len = 2048; in axf_attach_chip()
1084 axf_eeprom_dump(dp, 0x20); in axf_attach_chip()
1090 dp->name, __func__, err); in axf_attach_chip()
1095 axf_scan_phy(struct usbgem_dev *dp) in axf_scan_phy() argument
1101 struct axf_dev *lp = dp->private; in axf_scan_phy()
1103 DPRINTF(0, (CE_CONT, "!%s: %s: called", dp->name, __func__)); in axf_scan_phy()
1105 phy_addr_saved = dp->mii_phy_addr; in axf_scan_phy()
1115 dp->mii_phy_addr = i; in axf_scan_phy()
1116 axf_mii_write(dp, MII_AN_ADVERT, 0, &err); in axf_scan_phy()
1120 val = axf_mii_read(dp, MII_AN_ADVERT, &err); in axf_scan_phy()
1126 dp->name, __func__, i, val, MII_ABILITY_BITS)); in axf_scan_phy()
1130 axf_mii_write(dp, MII_AN_ADVERT, PROBE_PAT, &err); in axf_scan_phy()
1134 val = axf_mii_read(dp, MII_AN_ADVERT, &err); in axf_scan_phy()
1141 dp->name, __func__, i, in axf_scan_phy()
1147 dp->mii_phy_addr = phy_addr_saved; in axf_scan_phy()
1153 dp->name, __func__); in axf_scan_phy()
1156 dp->name, __func__); in axf_scan_phy()
1158 dp->mii_phy_addr = phy_addr_saved; in axf_scan_phy()
1163 axf_mii_probe(struct usbgem_dev *dp) in axf_mii_probe() argument
1169 struct axf_dev *lp = dp->private; in axf_mii_probe()
1171 DPRINTF(0, (CE_CONT, "!%s: %s: called", dp->name, __func__)); in axf_mii_probe()
1172 (void) axf_reset_phy(dp); in axf_mii_probe()
1175 if (AX88172(dp)) { in axf_mii_probe()
1176 my_guess = axf_scan_phy(dp); in axf_mii_probe()
1178 my_guess != dp->mii_phy_addr) { in axf_mii_probe()
1182 IN(dp, VCMD_READ_SROM, in axf_mii_probe()
1188 OUT(dp, VCMD_WRITE_SROM_ENABLE, in axf_mii_probe()
1190 OUT(dp, VCMD_WRITE_SROM, in axf_mii_probe()
1192 OUT(dp, VCMD_WRITE_SROM_DISABLE, in axf_mii_probe()
1197 IN(dp, VCMD_READ_SROM, in axf_mii_probe()
1202 dp->name, __func__, in axf_mii_probe()
1209 dp->name, __func__, LE16P(old_11th)); in axf_mii_probe()
1213 return (usbgem_mii_probe_default(dp)); in axf_mii_probe()
1217 axf_mii_init(struct usbgem_dev *dp) in axf_mii_init() argument
1219 struct axf_dev *lp = dp->private; in axf_mii_init()
1221 DPRINTF(2, (CE_CONT, "!%s: %s: called", dp->name, __func__)); in axf_mii_init()
1224 (void) axf_reset_phy(dp); in axf_mii_init()
1246 struct usbgem_dev *dp; in axfattach() local
1368 dp = usbgem_do_attach(dip, ugcp, lp, sizeof (struct axf_dev)); in axfattach()
1372 if (dp != NULL) { in axfattach()