USB: composite: Add flag to usb_function to hide its interface during enumeration

Change-Id: Ie999b5190e3e2b6fd23015b8e796cdd178829929

Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 07bb37e..134d3d5 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -271,7 +271,7 @@
 			descriptors = f->hs_descriptors;
 		else
 			descriptors = f->descriptors;
-		if (!descriptors || descriptors[0] == NULL) {
+		if (f->hidden || !descriptors || descriptors[0] == NULL) {
 			for (; f != config->interface[interfaceCount];) {
 				interfaceCount++;
 				c->bNumInterfaces--;
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index b78cba4..8f5a89f 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -108,6 +108,7 @@
 	struct usb_descriptor_header	**hs_descriptors;
 
 	struct usb_configuration	*config;
+	int				hidden;
 
 	/* REVISIT:  bind() functions can be marked __init, which
 	 * makes trouble for section mismatch analysis.  See if