usb:mtp: let mtp handle control request
authorjzhuan5 <jin.can.zhuang@intel.com>
Wed, 28 Dec 2011 19:39:02 +0000 (14:39 -0500)
committerbuildbot <buildbot@intel.com>
Fri, 30 Dec 2011 10:43:10 +0000 (02:43 -0800)
BZ: 18203

Revert patch Change Ia68a3c08: usb:f_mtp: set interface class subclass protocol of mtp as STILL IMAGE

Delegate non-standard request to composite driver and add mtp_handle_setup function to mtp gadget to
handle control request.

Change-Id: I82c9d64363e15473cb06d14448744d6583f6081d
Signed-off-by: jzhuan5 <jin.can.zhuang@intel.com>
Reviewed-on: http://android.intel.com:8080/30147
Reviewed-by: Tang, Richard <richard.tang@intel.com>
Reviewed-by: Wu, Hao <hao.wu@intel.com>
Tested-by: Sun, Jianhua <jianhua.sun@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/usb/gadget/f_mtp.c
drivers/usb/gadget/langwell_udc.c

index 252b3be..dc3b2c6 100644 (file)
@@ -114,9 +114,9 @@ static struct usb_interface_descriptor mtp_interface_desc = {
        .bDescriptorType        = USB_DT_INTERFACE,
        .bInterfaceNumber       = 0,
        .bNumEndpoints          = 3,
-       .bInterfaceClass        = USB_CLASS_STILL_IMAGE,
-       .bInterfaceSubClass     = 1,
-       .bInterfaceProtocol     = 1,
+       .bInterfaceClass        = USB_CLASS_VENDOR_SPEC,
+       .bInterfaceSubClass     = USB_SUBCLASS_VENDOR_SPEC,
+       .bInterfaceProtocol     = 0,
 };
 
 static struct usb_interface_descriptor ptp_interface_desc = {
@@ -1072,6 +1072,12 @@ static int mtp_ctrlrequest(struct usb_composite_dev *cdev,
 }
 
 static int
+mtp_handle_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
+{
+       return mtp_ctrlrequest(f->config->cdev, ctrl);
+}
+
+static int
 mtp_function_bind(struct usb_configuration *c, struct usb_function *f)
 {
        struct usb_composite_dev *cdev = c->cdev;
@@ -1206,6 +1212,7 @@ static int mtp_bind_config(struct usb_configuration *c, bool ptp_config)
        dev->function.unbind = mtp_function_unbind;
        dev->function.set_alt = mtp_function_set_alt;
        dev->function.disable = mtp_function_disable;
+       dev->function.setup = mtp_handle_setup;
 
        return usb_add_function(c, &dev->function);
 }
index f8ed94c..c2e5c29 100644 (file)
@@ -2449,17 +2449,9 @@ static void handle_setup_packet(struct langwell_udc *dev,
                        setup->bRequestType, setup->bRequest,
                        wValue, wIndex, wLength);
 
-       /* RNDIS gadget delegate */
-       if ((setup->bRequestType == 0x21) && (setup->bRequest == 0x00)) {
-               /* USB_CDC_SEND_ENCAPSULATED_COMMAND */
+       /* Delegate non-standard requests to composite driver */
+       if ((setup->bRequestType & USB_TYPE_MASK) != USB_TYPE_STANDARD)
                goto delegate;
-       }
-
-       /* USB_CDC_GET_ENCAPSULATED_RESPONSE */
-       if ((setup->bRequestType == 0xa1) && (setup->bRequest == 0x01)) {
-               /* USB_CDC_GET_ENCAPSULATED_RESPONSE */
-               goto delegate;
-       }
 
        /* We process some stardard setup requests here */
        switch (setup->bRequest) {