Module Name: src Committed By: matt Date: Tue Aug 2 01:26:01 UTC 2011
Modified Files: src/sys/dev/usb [matt-nb5-pq3]: ehci.c Log Message: Pull in ETTF EHCI changes from -current. To generate a diff of this commit: cvs rdiff -u -r1.154.4.2.4.1 -r1.154.4.2.4.2 src/sys/dev/usb/ehci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/ehci.c diff -u src/sys/dev/usb/ehci.c:1.154.4.2.4.1 src/sys/dev/usb/ehci.c:1.154.4.2.4.2 --- src/sys/dev/usb/ehci.c:1.154.4.2.4.1 Fri Jan 7 02:50:47 2011 +++ src/sys/dev/usb/ehci.c Tue Aug 2 01:26:01 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ehci.c,v 1.154.4.2.4.1 2011/01/07 02:50:47 matt Exp $ */ +/* $NetBSD: ehci.c,v 1.154.4.2.4.2 2011/08/02 01:26:01 matt Exp $ */ /* * Copyright (c) 2004-2008 The NetBSD Foundation, Inc. @@ -52,7 +52,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.154.4.2.4.1 2011/01/07 02:50:47 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.154.4.2.4.2 2011/08/02 01:26:01 matt Exp $"); #include "ohci.h" #include "uhci.h" @@ -2277,6 +2277,8 @@ DPRINTFN(8,("ehci_root_ctrl_start: port status=0x%04x\n", v)); + i = UPS_HIGH_SPEED; +#if 0 if (sc->sc_flags & EHCIF_ETTF) { /* * If we are doing embedded transaction translation, @@ -2288,6 +2290,7 @@ } else { i = UPS_HIGH_SPEED; } +#endif if (v & EHCI_PS_CS) i |= UPS_CURRENT_CONNECT_STATUS; if (v & EHCI_PS_PE) i |= UPS_PORT_ENABLED; if (v & EHCI_PS_SUSP) i |= UPS_SUSPEND; @@ -2330,10 +2333,11 @@ DPRINTFN(5,("ehci_root_ctrl_start: reset port %d\n", index)); if (EHCI_PS_IS_LOWSPEED(v) + && sc->sc_ncomp > 0 && !(sc->sc_flags & EHCIF_ETTF)) { /* - * Low speed device on non-ETTF controller, - * give up ownership. + * Low speed device on non-ETTF controller or + * unaccompanied controller, give up ownership. */ ehci_disown(sc, index, 1); break; @@ -2352,9 +2356,9 @@ * terminate the reset sequence so there's no need to * it. */ - if (!(sc->sc_flags & EHCIF_ETTF)) { + if (v & EHCI_PS_PR) { /* Terminate reset sequence. */ - EOWRITE4(sc, port, v); + EOWRITE4(sc, port, v & ~EHCI_PS_PR); /* Wait for HC to complete reset. */ usb_delay_ms(&sc->sc_bus, EHCI_PORT_RESET_COMPLETE);