Home | History | Annotate | Download | only in usb

Lines Matching defs:un

160 #define smsc_warn_printf(un, fmt, args...) \
161 printf("%s: warning: " fmt, device_xname((un)->un_dev), ##args)
163 #define smsc_err_printf(un, fmt, args...) \
164 printf("%s: error: " fmt, device_xname((un)->un_dev), ##args)
208 smsc_readreg(struct usbnet *un, uint32_t off, uint32_t *data)
214 if (usbnet_isdying(un))
223 err = usbd_do_request(un->un_udev, &req, &buf);
225 smsc_warn_printf(un, "Failed to read register 0x%0x\n", off);
233 smsc_writereg(struct usbnet *un, uint32_t off, uint32_t data)
239 if (usbnet_isdying(un))
250 err = usbd_do_request(un->un_udev, &req, &buf);
252 smsc_warn_printf(un, "Failed to write register 0x%0x\n", off);
258 smsc_wait_for_bits(struct usbnet *un, uint32_t reg, uint32_t bits)
264 if (usbnet_isdying(un))
266 if ((err = smsc_readreg(un, reg, &val)) != 0)
277 smsc_uno_miibus_readreg(struct usbnet *un, int phy, int reg, uint16_t *val)
282 if (un->un_phyno != phy) {
287 if (smsc_wait_for_bits(un, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) {
288 smsc_warn_printf(un, "MII is busy\n");
294 smsc_writereg(un, SMSC_MII_ADDR, addr);
296 if (smsc_wait_for_bits(un, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) {
297 smsc_warn_printf(un, "MII read timeout\n");
302 smsc_readreg(un, SMSC_MII_DATA, &data);
309 smsc_uno_miibus_writereg(struct usbnet *un, int phy, int reg, uint16_t val)
313 if (un->un_phyno != phy)
316 if (smsc_wait_for_bits(un, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) {
317 smsc_warn_printf(un, "MII is busy\n");
321 smsc_writereg(un, SMSC_MII_DATA, val);
324 smsc_writereg(un, SMSC_MII_ADDR, addr);
326 if (smsc_wait_for_bits(un, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) {
327 smsc_warn_printf(un, "MII write timeout\n");
338 struct usbnet * const un = ifp->if_softc;
340 if (usbnet_isdying(un))
343 struct smsc_softc * const sc = usbnet_softc(un);
344 struct mii_data * const mii = usbnet_mii(un);
353 usbnet_set_link(un, true);
364 if (!usbnet_havelink(un))
367 int err = smsc_readreg(un, SMSC_AFC_CFG, &afc_cfg);
369 smsc_warn_printf(un, "failed to read initial AFC_CFG, "
398 err = smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr);
399 err += smsc_writereg(un, SMSC_FLOW, flow);
400 err += smsc_writereg(un, SMSC_AFC_CFG, afc_cfg);
403 smsc_warn_printf(un, "media change failed, error %d\n", err);
417 struct usbnet * const un = ifp->if_softc;
418 struct smsc_softc * const sc = usbnet_softc(un);
419 struct ethercom *ec = usbnet_ec(un);
425 if (usbnet_isdying(un))
428 if (usbnet_ispromisc(un)) {
436 smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr);
467 smsc_writereg(un, SMSC_HASHH, hashtbl[1]);
468 smsc_writereg(un, SMSC_HASHL, hashtbl[0]);
469 smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr);
473 smsc_setoe_locked(struct usbnet *un)
475 struct smsc_softc * const sc = usbnet_softc(un);
476 struct ifnet * const ifp = usbnet_ifp(un);
482 err = smsc_readreg(un, SMSC_COE_CTRL, &val);
484 smsc_warn_printf(un, "failed to read SMSC_COE_CTRL (err=%d)\n",
503 err = smsc_writereg(un, SMSC_COE_CTRL, val);
505 smsc_warn_printf(un, "failed to write SMSC_COE_CTRL (err=%d)\n",
514 smsc_setmacaddress(struct usbnet *un, const uint8_t *addr)
527 if ((err = smsc_writereg(un, SMSC_MAC_ADDRL, val)) != 0)
531 err = smsc_writereg(un, SMSC_MAC_ADDRH, val);
540 struct usbnet * const un = &sc->smsc_un;
542 if (usbnet_isdying(un))
549 smsc_chip_init(un);
555 struct usbnet * const un = ifp->if_softc;
556 struct smsc_softc * const sc = usbnet_softc(un);
562 smsc_setoe_locked(un);
570 struct usbnet * const un = ifp->if_softc;
571 struct smsc_softc * const sc = usbnet_softc(un);
578 smsc_chip_init(struct usbnet *un)
580 struct smsc_softc * const sc = usbnet_softc(un);
586 smsc_writereg(un, SMSC_HW_CFG, SMSC_HW_CFG_LRST);
588 if ((err = smsc_wait_for_bits(un, SMSC_HW_CFG,
590 smsc_warn_printf(un, "timed-out waiting for reset to "
596 smsc_writereg(un, SMSC_PM_CTRL, SMSC_PM_CTRL_PHY_RST);
598 if ((err = smsc_wait_for_bits(un, SMSC_PM_CTRL,
600 smsc_warn_printf(un, "timed-out waiting for phy reset to "
604 usbd_delay_ms(un->un_udev, 40);
607 struct ifnet * const ifp = usbnet_ifp(un);
609 if ((err = smsc_setmacaddress(un, eaddr)) != 0) {
610 smsc_warn_printf(un, "failed to set the MAC address\n");
618 if ((err = smsc_readreg(un, SMSC_HW_CFG, &reg_val)) != 0) {
619 smsc_warn_printf(un, "failed to read HW_CFG: %d\n", err);
623 smsc_writereg(un, SMSC_HW_CFG, reg_val);
640 if (un->un_udev->ud_speed == USB_SPEED_HIGH)
645 smsc_writereg(un, SMSC_BURST_CAP, burst_cap);
648 smsc_writereg(un, SMSC_BULK_IN_DLY, 0x00002000);
653 if ((err = smsc_readreg(un, SMSC_HW_CFG, &reg_val)) < 0) {
654 smsc_warn_printf(un, "failed to read HW_CFG: (err = %d)\n",
671 smsc_writereg(un, SMSC_HW_CFG, reg_val);
674 smsc_writereg(un, SMSC_INTR_STATUS, 0xffffffff);
677 if ((err = smsc_readreg(un, SMSC_ID_REV, &sc->sc_rev_id)) < 0) {
678 smsc_warn_printf(un, "failed to read ID_REV (err = %d)\n", err);
685 smsc_writereg(un, SMSC_LED_GPIO_CFG, reg_val);
690 smsc_writereg(un, SMSC_FLOW, 0);
692 smsc_writereg(un, SMSC_AFC_CFG, AFC_CFG_DEFAULT);
695 if ((err = smsc_readreg(un, SMSC_MAC_CSR, &sc->sc_mac_csr)) < 0) {
696 smsc_warn_printf(un, "failed to read MAC_CSR (err=%d)\n", err);
704 smsc_writereg(un, SMSC_VLAN1, (uint32_t)ETHERTYPE_VLAN);
710 smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr);
711 smsc_writereg(un, SMSC_TX_CFG, SMSC_TX_CFG_ON);
717 smsc_writereg(un, SMSC_MAC_CSR, sc->sc_mac_csr);
722 smsc_err_printf(un, "smsc_chip_init failed (err=%d)\n", err);
729 struct usbnet * const un = ifp->if_softc;
733 smsc_setoe_locked(un);
756 struct usbnet * const un = &sc->smsc_un;
766 KASSERT((void *)sc == un);
771 un->un_dev = self;
772 un->un_udev = dev;
773 un->un_sc = sc;
774 un->un_ops = &smsc_ops;
775 un->un_rx_xfer_flags = USBD_SHORT_XFER_OK;
776 un->un_tx_xfer_flags = USBD_FORCE_SHORT_XFER;
777 un->un_rx_list_cnt = SMSC_RX_LIST_CNT;
778 un->un_tx_list_cnt = SMSC_TX_LIST_CNT;
780 devinfop = usbd_devinfo_alloc(un->un_udev, 0);
792 err = usbd_device2interface_handle(dev, SMSC_IFACE_IDX, &un->un_iface);
798 id = usbd_get_interface_descriptor(un->un_iface);
805 un->un_rx_bufsz = bufsz;
806 un->un_tx_bufsz = bufsz;
810 ed = usbd_interface2endpoint_descriptor(un->un_iface, i);
817 un->un_ed[USBNET_ENDPT_RX] = ed->bEndpointAddress;
820 un->un_ed[USBNET_ENDPT_TX] = ed->bEndpointAddress;
824 un->un_ed[USBNET_ENDPT_INTR] = ed->bEndpointAddress;
829 usbnet_attach(un);
835 struct ifnet *ifp = usbnet_ifp(un);
841 struct ethercom *ec = usbnet_ec(un);
845 un->un_phyno = 1;
852 memset(un->un_eaddr, 0xff, ETHER_ADDR_LEN);
860 memcpy(un->un_eaddr, prop_data_value(eaprop),
864 if ((smsc_readreg(un, SMSC_MAC_ADDRL, &mac_l) == 0) &&
865 (smsc_readreg(un, SMSC_MAC_ADDRH, &mac_h) == 0)) {
866 un->un_eaddr[5] = (uint8_t)((mac_h >> 8) & 0xff);
867 un->un_eaddr[4] = (uint8_t)((mac_h) & 0xff);
868 un->un_eaddr[3] = (uint8_t)((mac_l >> 24) & 0xff);
869 un->un_eaddr[2] = (uint8_t)((mac_l >> 16) & 0xff);
870 un->un_eaddr[1] = (uint8_t)((mac_l >> 8) & 0xff);
871 un->un_eaddr[0] = (uint8_t)((mac_l) & 0xff);
875 usbnet_attach_ifp(un, IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST,
880 smsc_uno_rx_loop(struct usbnet *un, struct usbnet_chain *c, uint32_t total_len)
883 struct smsc_softc * const sc = usbnet_softc(un);
884 struct ifnet *ifp = usbnet_ifp(un);
1007 usbnet_enqueue(un, pktbuf, buflen, csum_flags, csum_data,
1014 rnd_add_uint32(usbnet_rndsrc(un), count);
1018 smsc_uno_tx_prepare(struct usbnet *un, struct mbuf *m, struct usbnet_chain *c)
1025 if ((unsigned)m->m_pkthdr.len > un->un_tx_bufsz - hdrsz)