summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-03-12 19:59:12 -0500
committerRohan Somvanshi <rsomvanshi@nvidia.com>2011-05-31 05:57:45 -0700
commita685399716e6e8950cccb3a3495543035d0d1691 (patch)
tree7e96c8cf9968bb16d43e15220f09e27dbe37deaf /drivers
parentbd33a5c6bd43b2269fc6113bfdb1680ad5b5a1e2 (diff)
USB: gadget: f_accessory: Clear previous strings on ACCESSORY_GET_PROTOCOL
Clearing strings on disconnect does not work since we may receive a disconnect on some devices when transitioning into accessory mode. We require an accessory to send ACCESSORY_GET_PROTOCOL before sending any strings, so any strings from a previous session will be cleared. Signed-off-by: Mike Lockwood <lockwood@android.com> (cherry picked from commit 30e18b848c25d4a90e3b6282cd32e19a2f0cd4dc) Change-Id: I4c7575508fba294cfe1ce86148ed6c09f98cc03c Reviewed-on: http://git-master/r/32889 Reviewed-by: Suresh Mangipudi <smangipudi@nvidia.com> Tested-by: Suresh Mangipudi <smangipudi@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/gadget/f_accessory.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/usb/gadget/f_accessory.c b/drivers/usb/gadget/f_accessory.c
index ef21c05caaed..f6a5922e8c3b 100644
--- a/drivers/usb/gadget/f_accessory.c
+++ b/drivers/usb/gadget/f_accessory.c
@@ -220,13 +220,6 @@ static void acc_set_disconnected(struct acc_dev *dev)
{
dev->online = 0;
dev->disconnected = 1;
-
- /* clear all accessory strings */
- memset(dev->manufacturer, 0, sizeof(dev->manufacturer));
- memset(dev->model, 0, sizeof(dev->model));
- memset(dev->description, 0, sizeof(dev->description));
- memset(dev->version, 0, sizeof(dev->version));
- memset(dev->uri, 0, sizeof(dev->uri));
}
static void acc_complete_in(struct usb_ep *ep, struct usb_request *req)
@@ -657,6 +650,13 @@ static int acc_function_setup(struct usb_function *f,
if (b_request == ACCESSORY_GET_PROTOCOL) {
*((u16 *)cdev->req->buf) = PROTOCOL_VERSION;
value = sizeof(u16);
+
+ /* clear any strings left over from a previous session */
+ memset(dev->manufacturer, 0, sizeof(dev->manufacturer));
+ memset(dev->model, 0, sizeof(dev->model));
+ memset(dev->description, 0, sizeof(dev->description));
+ memset(dev->version, 0, sizeof(dev->version));
+ memset(dev->uri, 0, sizeof(dev->uri));
}
}
}