USB: gadget: f_accessory: Add ioctl to detect USB accessory attached at boot

Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/drivers/usb/gadget/f_accessory.c b/drivers/usb/gadget/f_accessory.c
index 873ab2e..05e65e5 100644
--- a/drivers/usb/gadget/f_accessory.c
+++ b/drivers/usb/gadget/f_accessory.c
@@ -75,6 +75,9 @@
 	/* for acc_complete_set_string */
 	int string_index;
 
+	/* set to 1 if we have a pending start request */
+	int start_requested;
+
 	/* synchronize access to our device file */
 	atomic_t open_excl;
 
@@ -505,6 +508,8 @@
 	case ACCESSORY_GET_STRING_SERIAL:
 		src = dev->serial;
 		break;
+	case ACCESSORY_IS_START_REQUESTED:
+		return dev->start_requested;
 	}
 	if (!src)
 		return -EINVAL;
@@ -572,6 +577,7 @@
 
 	if (b_requestType == (USB_DIR_OUT | USB_TYPE_VENDOR)) {
 		if (b_request == ACCESSORY_START) {
+			dev->start_requested = 1;
 			schedule_delayed_work(
 				&dev->work, msecs_to_jiffies(10));
 			value = 0;
@@ -593,6 +599,7 @@
 			memset(dev->version, 0, sizeof(dev->version));
 			memset(dev->uri, 0, sizeof(dev->uri));
 			memset(dev->serial, 0, sizeof(dev->serial));
+			dev->start_requested = 0;
 		}
 	}
 
@@ -624,6 +631,8 @@
 
 	DBG(cdev, "acc_function_bind dev: %p\n", dev);
 
+	dev->start_requested = 0;
+
 	/* allocate interface ID(s) */
 	id = usb_interface_id(c, f);
 	if (id < 0)