Lines Matching defs:un
114 #define URL_SETBIT(un, reg, x) \
115 url_csr_write_1(un, reg, url_csr_read_1(un, reg) | (x))
117 #define URL_SETBIT2(un, reg, x) \
118 url_csr_write_2(un, reg, url_csr_read_2(un, reg) | (x))
120 #define URL_CLRBIT(un, reg, x) \
121 url_csr_write_1(un, reg, url_csr_read_1(un, reg) & ~(x))
123 #define URL_CLRBIT2(un, reg, x) \
124 url_csr_write_2(un, reg, url_csr_read_2(un, reg) & ~(x))
159 struct usbnet * const un = device_private(self);
175 un->un_dev = self;
176 un->un_udev = dev;
177 un->un_sc = un;
178 un->un_ops = &url_ops;
179 un->un_rx_xfer_flags = USBD_SHORT_XFER_OK;
180 un->un_tx_xfer_flags = USBD_FORCE_SHORT_XFER;
181 un->un_rx_list_cnt = URL_RX_LIST_CNT;
182 un->un_tx_list_cnt = URL_TX_LIST_CNT;
183 un->un_rx_bufsz = URL_BUFSZ;
184 un->un_tx_bufsz = URL_BUFSZ;
202 un->un_iface = iface;
203 un->un_flags = url_lookup(uaa->uaa_vendor, uaa->uaa_product)->url_flags;
205 if (un->un_flags & URL_EXT_PHY) {
206 un->un_read_reg_cb = url_ext_mii_read_reg;
207 un->un_write_reg_cb = url_ext_mii_write_reg;
212 id = usbd_get_interface_descriptor(un->un_iface);
215 un->un_ed[USBNET_ENDPT_RX] = un->un_ed[USBNET_ENDPT_TX] =
216 un->un_ed[USBNET_ENDPT_INTR] = 0;
218 ed = usbd_interface2endpoint_descriptor(un->un_iface, i);
226 un->un_ed[USBNET_ENDPT_RX] = ed->bEndpointAddress;
229 un->un_ed[USBNET_ENDPT_TX] = ed->bEndpointAddress;
232 un->un_ed[USBNET_ENDPT_INTR] = ed->bEndpointAddress;
235 if (un->un_ed[USBNET_ENDPT_RX] == 0 ||
236 un->un_ed[USBNET_ENDPT_TX] == 0 ||
237 un->un_ed[USBNET_ENDPT_INTR] == 0) {
243 usbnet_attach(un);
246 url_reset(un);
249 err = url_mem(un, URL_CMD_READMEM, URL_IDR0, (void *)un->un_eaddr,
257 usbnet_attach_ifp(un, IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST,
263 url_mem(struct usbnet *un, int cmd, int offset, void *buf, int len)
269 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
271 if (usbnet_isdying(un)) {
286 err = usbd_do_request(un->un_udev, &req, buf);
289 device_xname(un->un_dev),
301 url_csr_read_1(struct usbnet *un, int reg)
306 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
308 return url_mem(un, URL_CMD_READMEM, reg, &val, 1) ? 0 : val;
313 url_csr_read_2(struct usbnet *un, int reg)
318 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
321 return url_mem(un, URL_CMD_READMEM, reg, &val, 2) ? 0 : UGETW(val);
326 url_csr_write_1(struct usbnet *un, int reg, int aval)
331 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
333 return url_mem(un, URL_CMD_WRITEMEM, reg, &val, 1) ? -1 : 0;
338 url_csr_write_2(struct usbnet *un, int reg, int aval)
343 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
347 return url_mem(un, URL_CMD_WRITEMEM, reg, &val, 2) ? -1 : 0;
352 url_csr_write_4(struct usbnet *un, int reg, int aval)
357 ("%s: %s: enter\n", device_xname(un->un_dev), __func__));
361 return url_mem(un, URL_CMD_WRITEMEM, reg, &val, 4) ? -1 : 0;
367 struct usbnet * const un = ifp->if_softc;
371 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev), __func__));
373 url_reset(un);
377 url_csr_write_1(un, URL_IDR0 + i, eaddr[i]);
380 URL_CLRBIT(un, URL_TCR,
386 URL_SETBIT2(un, URL_RCR, URL_RCR_TAIL | URL_RCR_AD | URL_RCR_AB);
389 URL_SETBIT(un, URL_CR, URL_CR_TE | URL_CR_RE);
395 url_reset(struct usbnet *un)
399 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev), __func__));
401 if (usbnet_isdying(un))
404 URL_SETBIT(un, URL_CR, URL_CR_SOFT_RST);
407 if (usbnet_isdying(un))
409 if (!(url_csr_read_1(un, URL_CR) & URL_CR_SOFT_RST))
420 struct usbnet * const un = ifp->if_softc;
421 struct ethercom *ec = usbnet_ec(un);
427 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev), __func__));
429 if (usbnet_isdying(un))
432 rcr = url_csr_read_2(un, URL_RCR);
436 if (usbnet_ispromisc(un)) {
462 url_csr_write_4(un, URL_MAR0, mchash[0]);
463 url_csr_write_4(un, URL_MAR4, mchash[1]);
465 url_csr_write_2(un, URL_RCR, rcr);
469 url_uno_tx_prepare(struct usbnet *un, struct mbuf *m, struct usbnet_chain *c)
473 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev),__func__));
475 KASSERT(un->un_tx_bufsz >= URL_MIN_FRAME_LEN);
476 if ((unsigned)m->m_pkthdr.len > un->un_tx_bufsz)
489 DPRINTF(("%s: %s: send %d bytes\n", device_xname(un->un_dev),
496 url_uno_rx_loop(struct usbnet *un, struct usbnet_chain *c, uint32_t total_len)
498 struct ifnet *ifp = usbnet_ifp(un);
501 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev),__func__));
511 device_xname(un->un_dev),
525 DPRINTF(("%s: %s: deliver %d\n", device_xname(un->un_dev),
527 usbnet_enqueue(un, c->unc_buf, total_len, 0, 0, 0);
540 struct usbnet * const un = ifp->if_softc;
542 DPRINTF(("%s: %s: enter\n", device_xname(un->un_dev), __func__));
544 url_reset(un);
548 url_uno_mii_read_reg(struct usbnet *un, int phy, int reg, uint16_t *val)
554 device_xname(un->un_dev), __func__, phy, reg));
559 device_xname(un->un_dev), __func__, phy));
587 device_xname(un->un_dev), __func__, reg);
592 data = url_csr_read_1(un, reg);
594 data = url_csr_read_2(un, reg);
599 device_xname(un->un_dev), __func__, phy, reg, *val));
605 url_uno_mii_write_reg(struct usbnet *un, int phy, int reg, uint16_t val)
609 device_xname(un->un_dev), __func__, phy, reg, val));
614 device_xname(un->un_dev), __func__, phy));
639 device_xname(un->un_dev), __func__, reg);
644 url_csr_write_1(un, reg, val);
646 url_csr_write_2(un, reg, val);
654 struct usbnet * const un = ifp->if_softc;
659 usbnet_set_link(un, true);
667 url_ext_mii_read_reg(struct usbnet *un, int phy, int reg)
672 device_xname(un->un_dev), __func__, phy, reg));
674 url_csr_write_1(un, URL_PHYADD, phy & URL_PHYADD_MASK);
680 url_csr_write_1(un, URL_PHYCNT,
683 if ((url_csr_read_1(un, URL_PHYCNT) & URL_PHYCNT_PHYOWN) == 0)
687 printf("%s: MII read timed out\n", device_xname(un->un_dev));
690 val = url_csr_read_2(un, URL_PHYDAT);
693 device_xname(un->un_dev), __func__, phy, reg, val));
699 url_ext_mii_write_reg(struct usbnet *un, int phy, int reg, int data)
703 device_xname(un->un_dev), __func__, phy, reg, data));
705 url_csr_write_2(un, URL_PHYDAT, data);
706 url_csr_write_1(un, URL_PHYADD, phy);
707 url_csr_write_1(un, URL_PHYCNT, reg | URL_PHYCNT_RWCR); /* Write */
710 if (url_csr_read_1(un, URL_PHYCNT) & URL_PHYCNT_PHYOWN)
716 device_xname(un->un_dev));