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