USB: composite: Add class driver for enabling and disabling USB functions.

Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index 8f5a89f..a521e8c 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -137,6 +137,7 @@
 	/* internals */
 	struct list_head		list;
 	DECLARE_BITMAP(endpoints, 32);
+	struct device			*dev;
 };
 
 int usb_add_function(struct usb_configuration *, struct usb_function *);
@@ -282,6 +283,9 @@
 	struct usb_gadget_strings		**strings;
 	unsigned		needs_serial:1;
 
+	struct class		*class;
+	atomic_t		function_count;
+
 	int			(*unbind)(struct usb_composite_dev *);
 
 	void			(*disconnect)(struct usb_composite_dev *);
@@ -289,6 +293,8 @@
 	/* global suspend hooks */
 	void			(*suspend)(struct usb_composite_dev *);
 	void			(*resume)(struct usb_composite_dev *);
+
+	void			(*enable_function)(struct usb_function *f, int enable);
 };
 
 extern int usb_composite_probe(struct usb_composite_driver *driver,