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