usb: cp210x: Corrected USB request type definitions
authorPreston Fick <pffick@gmail.com>
Tue, 1 May 2012 04:06:48 +0000 (23:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 May 2012 20:42:43 +0000 (13:42 -0700)
The original request types in the cp210x driver are labled as "DEVICE_TO_HOST" and
"HOST_TO_DEVICE" but the actual bit definition corresponds to a request to the
interface. This has been corrected, and the actual definition for the device
requests have been added.

Signed-off-by: Preston Fick <preston.fick@silabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/cp210x.c

index ec30f95..e67ccf3 100644 (file)
@@ -188,8 +188,10 @@ static struct usb_serial_driver * const serial_drivers[] = {
 };
 
 /* Config request types */
-#define REQTYPE_HOST_TO_DEVICE 0x41
-#define REQTYPE_DEVICE_TO_HOST 0xc1
+#define REQTYPE_HOST_TO_INTERFACE      0x41
+#define REQTYPE_INTERFACE_TO_HOST      0xc1
+#define REQTYPE_HOST_TO_DEVICE 0x40
+#define REQTYPE_DEVICE_TO_HOST 0xc0
 
 /* Config request codes */
 #define CP210X_IFC_ENABLE      0x00
@@ -286,7 +288,7 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request,
 
        /* Issue the request, attempting to read 'size' bytes */
        result = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
-                               request, REQTYPE_DEVICE_TO_HOST, 0x0000,
+                               request, REQTYPE_INTERFACE_TO_HOST, 0x0000,
                                port_priv->bInterfaceNumber, buf, size,
                                USB_CTRL_GET_TIMEOUT);
 
@@ -340,13 +342,13 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request,
        if (size > 2) {
                result = usb_control_msg(serial->dev,
                                usb_sndctrlpipe(serial->dev, 0),
-                               request, REQTYPE_HOST_TO_DEVICE, 0x0000,
+                               request, REQTYPE_HOST_TO_INTERFACE, 0x0000,
                                port_priv->bInterfaceNumber, buf, size,
                                USB_CTRL_SET_TIMEOUT);
        } else {
                result = usb_control_msg(serial->dev,
                                usb_sndctrlpipe(serial->dev, 0),
-                               request, REQTYPE_HOST_TO_DEVICE, data[0],
+                               request, REQTYPE_HOST_TO_INTERFACE, data[0],
                                port_priv->bInterfaceNumber, NULL, 0,
                                USB_CTRL_SET_TIMEOUT);
        }