Date: Sat, 6 Jul 2013 22:10:01 GMT From: "Mike C." <miguelmclara@gmail.com> To: freebsd-usb@FreeBSD.org Subject: Re: usb/179342: Freebsd 10.0-current USB 3.0 not working (xhci_do_comand: Command timeout!) Message-ID: <201307062210.r66MA15G095019@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR usb/179342; it has been noted by GNATS. From: "Mike C." <miguelmclara@gmail.com> To: bug-followup@FreeBSD.org Cc: Hans Petter Selasky <hps@bitfrost.no> Subject: Re: usb/179342: Freebsd 10.0-current USB 3.0 not working (xhci_do_comand: Command timeout!) Date: Sat, 06 Jul 2013 23:07:18 +0000 This is a multi-part message in MIME format. --------------020508010507010404080808 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I adapted the previous patch to work with the recent changes and it work for me... So I've updated to the latest revision (revision 252698) and aplied the patch, has expect it works and I can use my USB 3.0 ports! --------------020508010507010404080808 Content-Type: text/plain; charset=us-ascii; name="xhci_timer.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xhci_timer.diff" === xhci.h ================================================================== --- xhci.h (revision 252698) +++ xhci.h (local) @@ -438,6 +438,8 @@ /* configure message */ struct usb_bus_msg sc_config_msg[2]; + struct usb_callout sc_callout; + union xhci_hub_desc sc_hub_desc; struct cv sc_cmd_cv; === xhci_pci.c ================================================================== --- xhci_pci.c (revision 252698) +++ xhci_pci.c (local) @@ -142,6 +142,16 @@ usb_callout_reset(&sc->sc_callout, 1, (void *)&xhci_interrupt_poll, sc); } +static void +xhci_timer(void *_sc) +{ + struct xhci_softc *sc = _sc; + USB_BUS_UNLOCK(&sc->sc_bus); + xhci_interrupt(sc); + USB_BUS_LOCK(&sc->sc_bus); + usb_callout_reset(&sc->sc_callout, 1, (void *)&xhci_timer, sc); +} + static int xhci_pci_attach(device_t self) { @@ -186,6 +196,12 @@ sprintf(sc->sc_vendor, "0x%04x", pci_get_vendor(self)); + usb_callout_init_mtx(&sc->sc_callout, &sc->sc_bus.bus_mtx, 0); + + USB_BUS_LOCK(&sc->sc_bus); + xhci_timer(sc); + USB_BUS_UNLOCK(&sc->sc_bus); + if (sc->sc_irq_res != NULL) { err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, NULL, (driver_intr_t *)xhci_interrupt, sc, &sc->sc_intr_hdl); --------------020508010507010404080808--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307062210.r66MA15G095019>