summaryrefslogtreecommitdiff
path: root/include/linux/usb
diff options
context:
space:
mode:
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>2014-05-08 14:06:28 +0200
committerFelipe Balbi <balbi@ti.com>2014-05-14 09:39:51 -0500
commit7419485f197c436d41535df78ddea1085042d271 (patch)
treebbf52fde27c3b5be352a3c98ea58da7eea8389d9 /include/linux/usb
parenta747b0958b5ead2d4ba46dc1f77d46e693a06efa (diff)
usb: gadget: configfs: OS Extended Properties descriptors support
Add handling of OS Extended Properties descriptors from configfs interface. One kind of "OS Descriptors" are "Extended Properties" descriptors, which need to be specified per interface or per group of interfaces described by an IAD. This patch adds support for creating subdirectories in interface.<n> directory located in the function's directory. Names of subdirectories created become names of properties. Each property contains two attributes: "type" and "data". The type can be a numeric value 1..7 while data is a blob interpreted depending on the type specified. The types are: 1 - unicode string 2 - unicode string with environment variables 3 - binary 4 - little-endian 32-bit 5 - big-endian 32-bit 6 - unicode string with a symbolic link 7 - multiple unicode strings Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'include/linux/usb')
-rw-r--r--include/linux/usb/composite.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index 9c3903d76781..7373203140e7 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -64,6 +64,7 @@ struct usb_configuration;
* @name: Extended Property name
* @data_len: Length of Extended Property blob (for unicode store double len)
* @data: Extended Property blob
+ * @item: Represents this Extended Property in configfs
*/
struct usb_os_desc_ext_prop {
struct list_head entry;
@@ -72,6 +73,7 @@ struct usb_os_desc_ext_prop {
char *name;
int data_len;
char *data;
+ struct config_item item;
};
/**
@@ -82,6 +84,7 @@ struct usb_os_desc_ext_prop {
* @ext_prop_count: Number of Extended Properties
* @opts_mutex: Optional mutex protecting config data of a usb_function_instance
* @group: Represents OS descriptors associated with an interface in configfs
+ * @owner: Module associated with this OS descriptor
*/
struct usb_os_desc {
char *ext_compat_id;
@@ -90,6 +93,7 @@ struct usb_os_desc {
int ext_prop_count;
struct mutex *opts_mutex;
struct config_group group;
+ struct module *owner;
};
/**