From 148b63e6082d35d9a5ec0f156d76ca40a4278044 Mon Sep 17 00:00:00 2001
From: Mike Lockwood <lockwood@android.com>
Date: Mon, 14 Mar 2011 18:28:55 -0400
Subject: [PATCH] USB: gadget: f_accessory: Add string for accessory's unique
 serial number

Signed-off-by: Mike Lockwood <lockwood@android.com>
---
 drivers/usb/gadget/f_accessory.c | 8 ++++++++
 include/linux/usb/f_accessory.h  | 2 ++
 2 files changed, 10 insertions(+)

diff --git a/drivers/usb/gadget/f_accessory.c b/drivers/usb/gadget/f_accessory.c
index baeae5976b66..38918cdf6c5b 100644
--- a/drivers/usb/gadget/f_accessory.c
+++ b/drivers/usb/gadget/f_accessory.c
@@ -71,6 +71,7 @@ struct acc_dev {
 	char description[ACC_STRING_SIZE];
 	char version[ACC_STRING_SIZE];
 	char uri[ACC_STRING_SIZE];
+	char serial[ACC_STRING_SIZE];
 
 	/* for acc_complete_set_string */
 	int string_index;
@@ -273,6 +274,9 @@ static void acc_complete_set_string(struct usb_ep *ep, struct usb_request *req)
 	case ACCESSORY_STRING_URI:
 		string_dest = dev->uri;
 		break;
+	case ACCESSORY_STRING_SERIAL:
+		string_dest = dev->serial;
+		break;
 	}
 	if (string_dest) {
 		unsigned long flags;
@@ -505,6 +509,9 @@ static long acc_ioctl(struct file *fp, unsigned code, unsigned long value)
 	case ACCESSORY_GET_STRING_URI:
 		src = dev->uri;
 		break;
+	case ACCESSORY_GET_STRING_SERIAL:
+		src = dev->serial;
+		break;
 	}
 	if (!src)
 		return -EINVAL;
@@ -658,6 +665,7 @@ static int acc_function_setup(struct usb_function *f,
 				memset(dev->description, 0, sizeof(dev->description));
 				memset(dev->version, 0, sizeof(dev->version));
 				memset(dev->uri, 0, sizeof(dev->uri));
+				memset(dev->serial, 0, sizeof(dev->serial));
 			}
 		}
 	}
diff --git a/include/linux/usb/f_accessory.h b/include/linux/usb/f_accessory.h
index 977ad0a69c7e..ebcc5f34f554 100644
--- a/include/linux/usb/f_accessory.h
+++ b/include/linux/usb/f_accessory.h
@@ -34,6 +34,7 @@
 #define ACCESSORY_STRING_DESCRIPTION    2
 #define ACCESSORY_STRING_VERSION        3
 #define ACCESSORY_STRING_URI            4
+#define ACCESSORY_STRING_SERIAL         5
 
 /* Control request for retrieving device's protocol version (currently 1)
  *
@@ -75,5 +76,6 @@
 #define ACCESSORY_GET_STRING_DESCRIPTION    _IOW('M', 3, char[256])
 #define ACCESSORY_GET_STRING_VERSION        _IOW('M', 4, char[256])
 #define ACCESSORY_GET_STRING_URI            _IOW('M', 5, char[256])
+#define ACCESSORY_GET_STRING_SERIAL         _IOW('M', 6, char[256])
 
 #endif /* __LINUX_USB_F_ACCESSORY_H */
-- 
GitLab