PERFORCE change 130746 for review
    Hans Petter Selasky 
    hselasky at FreeBSD.org
       
    Wed Dec 12 14:52:35 PST 2007
    
    
  
http://perforce.freebsd.org/chv.cgi?CH=130746
Change 130746 by hselasky at hselasky_laptop001 on 2007/12/12 22:52:00
	
	Neither of OHCI, UHCI or EHCI supports USB device mode.
	
	Check for that when setting up pipes.
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/ehci.c#61 edit
.. //depot/projects/usb/src/sys/dev/usb/ohci.c#50 edit
.. //depot/projects/usb/src/sys/dev/usb/uhci.c#51 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/ehci.c#61 (text+ko) ====
@@ -3924,10 +3924,15 @@
 {
 	ehci_softc_t *sc = EHCI_BUS2SC(udev->bus);
 
-	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d (%d)\n",
+	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d, mode=%d (%d)\n",
 	    pipe, udev->address,
-	    edesc->bEndpointAddress, sc->sc_addr));
+	    edesc->bEndpointAddress, udev->flags.usb_mode,
+	    sc->sc_addr));
 
+	if (udev->flags.usb_mode != USB_MODE_HOST) {
+		/* not supported */
+		return;
+	}
 	if (udev->address == sc->sc_addr) {
 		switch (edesc->bEndpointAddress) {
 		case USB_CONTROL_ENDPOINT:
==== //depot/projects/usb/src/sys/dev/usb/ohci.c#50 (text+ko) ====
@@ -2842,10 +2842,15 @@
 {
 	ohci_softc_t *sc = OHCI_BUS2SC(udev->bus);
 
-	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d (%d)\n",
+	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d, mode=%d (%d)\n",
 	    pipe, udev->address,
-	    edesc->bEndpointAddress, sc->sc_addr));
+	    edesc->bEndpointAddress, udev->flags.usb_mode,
+	    sc->sc_addr));
 
+	if (udev->flags.usb_mode != USB_MODE_HOST) {
+		/* not supported */
+		return;
+	}
 	if (udev->address == sc->sc_addr) {
 		switch (edesc->bEndpointAddress) {
 		case USB_CONTROL_ENDPOINT:
==== //depot/projects/usb/src/sys/dev/usb/uhci.c#51 (text+ko) ====
@@ -3332,10 +3332,15 @@
 {
 	uhci_softc_t *sc = UHCI_BUS2SC(udev->bus);
 
-	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d (%d)\n",
+	DPRINTFN(1, ("pipe=%p, addr=%d, endpt=%d, mode=%d (%d)\n",
 	    pipe, udev->address,
-	    edesc->bEndpointAddress, sc->sc_addr));
+	    edesc->bEndpointAddress, udev->flags.usb_mode,
+	    sc->sc_addr));
 
+	if (udev->flags.usb_mode != USB_MODE_HOST) {
+		/* not supported */
+		return;
+	}
 	if (udev->address == sc->sc_addr) {
 		switch (edesc->bEndpointAddress) {
 		case USB_CONTROL_ENDPOINT:
    
    
More information about the p4-projects
mailing list