Lines Matching refs:sc
45 static void axge_miibus_statchg(struct axge_softc *sc, uint8_t link_status);
148 axge_write_mem(struct axge_softc *sc, uint8_t cmd, uint16_t index,
159 if (uether_do_request(&sc->sc_ue, &req, buf, 1000)) {
165 axge_write_cmd_1(struct axge_softc *sc, uint8_t cmd, uint16_t reg, uint8_t val)
167 axge_write_mem(sc, cmd, 1, reg, &val, 1);
171 axge_write_cmd_2(struct axge_softc *sc, uint8_t cmd, uint16_t index,
177 axge_write_mem(sc, cmd, index, reg, &temp, 2);
182 axge_read_mem(struct axge_softc *sc, uint8_t cmd, uint16_t index,
187 AXGE_LOCK_ASSERT(sc, MA_OWNED);
195 return (uether_do_request(&sc->sc_ue, &req, buf, 1000));
199 axge_read_cmd_1(struct axge_softc *sc, uint8_t cmd, uint16_t reg)
203 (void)axge_read_mem(sc, cmd, 1, reg, &val, 1);
208 axge_read_cmd_2(struct axge_softc *sc, uint8_t cmd, uint16_t index, uint16_t reg)
212 (void)axge_read_mem(sc, cmd, index, reg, &val, 2);
217 axge_chip_init(struct axge_softc *sc)
220 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_EPPRCR, 0);
221 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_EPPRCR, EPPRCR_IPRL);
222 (void)uether_pause(&sc->sc_ue, hz / 4);
223 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_CLK_SELECT,
225 (void)uether_pause(&sc->sc_ue, hz / 10);
231 struct axge_softc *sc = ue->ue_sc;
236 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_CTCR, csum);
240 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_CRCR, csum);
246 struct axge_softc *sc = ue->ue_sc;
250 rxmode = axge_read_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR);
253 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR, rxmode);
258 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR, rxmode);
264 struct axge_softc *sc = uether_getsc(ue);
268 rxmode = axge_read_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR);
275 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR, rxmode);
282 struct axge_softc *sc = uether_getsc(ue);
285 AXGE_LOCK_ASSERT(sc, MA_OWNED);
287 link_status = axge_read_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_PLSR);
289 if (sc->sc_link_status != (link_status & AXGE_LINK_MASK)) {
290 axge_miibus_statchg(sc, link_status);
291 sc->sc_link_status = link_status & AXGE_LINK_MASK;
296 axge_reset(struct axge_softc *sc)
301 cd = usbd_get_config_descriptor(sc->sc_ue.ue_udev);
303 err = usbd_req_set_config(sc->sc_ue.ue_udev, &sc->sc_mtx,
309 (void)uether_pause(&sc->sc_ue, hz / 100);
311 axge_chip_init(sc);
317 struct axge_softc *sc = uether_getsc(ue);
320 axge_chip_init(sc);
321 (void)axge_read_mem(sc, AXGE_ACCESS_MAC, NETIF_MAX_HWADDR_LEN, AXGE_NIDR,
350 struct axge_softc *sc = device_get_softc(dev);
351 struct usb_ether *ue = &sc->sc_ue;
354 sc->sc_flags = USB_GET_DRIVER_INFO(uaa);
355 sc->sc_link_status = AXGE_LINK_MASK;
358 mtx_init(&sc->sc_mtx, device_get_nameunit(dev), NULL, MTX_RECURSE);
361 error = usbd_transfer_setup(uaa->device, &iface_index, sc->sc_xfer,
362 axge_config, AXGE_N_TRANSFER, sc, &sc->sc_mtx);
367 ue->ue_sc = sc;
370 ue->ue_mtx = &sc->sc_mtx;
387 struct axge_softc *sc = device_get_softc(dev);
388 struct usb_ether *ue = &sc->sc_ue;
390 usbd_transfer_unsetup(sc->sc_xfer, AXGE_N_TRANSFER);
392 mtx_destroy(&sc->sc_mtx);
398 axge_miibus_statchg(struct axge_softc *sc, uint8_t link_status)
400 struct usb_ether *ue = &sc->sc_ue;
432 axge_write_mem(sc, AXGE_ACCESS_MAC, 5, AXGE_RX_BULKIN_QCTRL, tmp, 5);
433 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_MSR, val);
449 struct axge_softc *sc = usbd_xfer_softc(xfer);
450 struct usb_ether *ue = &sc->sc_ue;
570 struct axge_softc *sc = usbd_xfer_softc(xfer);
571 struct usb_ether *ue = &(sc->sc_ue);
651 struct axge_softc *sc = ue->ue_sc;
656 usbd_transfer_start(sc->sc_xfer[AXGE_BULK_DT_WR]);
657 usbd_transfer_start(sc->sc_xfer[AXGE_BULK_DT_RD]);
663 struct axge_softc *sc = uether_getsc(ue);
670 AXGE_LOCK_ASSERT(sc, MA_OWNED);
676 axge_reset(sc);
680 (void)axge_read_mem(sc, AXGE_ACCESS_MAC, 6, AXGE_NIDR, ifp ->ac_if.hwaddr, 6);
682 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_PWLLR, 0x34);
683 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_PWLHR, 0x52);
700 axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR, rxmode);
702 axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_MMSR,
714 struct axge_softc *sc = uether_getsc(ue);
718 AXGE_LOCK_ASSERT(sc, MA_OWNED);
720 sc->sc_flags &= ~AXE_FLAG_LINK;
724 usbd_transfer_stop(sc->sc_xfer[AXGE_BULK_DT_WR]);
725 usbd_transfer_stop(sc->sc_xfer[AXGE_BULK_DT_RD]);