diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2012-10-22 16:15:06 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-10-31 09:09:44 -0400 |
commit | 10287baec761d33f0a82d84b46e37a44030350d8 (patch) | |
tree | b769a6dddfd4ccf81a986386bf5771182d1b0c55 /drivers/usb/gadget/f_fs.c | |
parent | 0f9df939385527049c8062a099fbfa1479fe7ce0 (diff) |
usb: gadget: always update HS/SS descriptors and create a copy of them
HS and SS descriptors are staticaly created. They are updated during the
bind process with the endpoint address, string id or interface numbers.
After that, the descriptor chain is linked to struct usb_function which
is used by composite in order to serve the GET_DESCRIPTOR requests,
number of available configs and so on.
There is no need to assign the HS descriptor only if the UDC supports
HS speed because composite won't report those to the host if HS support
has not been reached. The same reasoning is valid for SS.
This patch makes sure each function updates HS/SS descriptors
unconditionally and uses the newly introduced helper function to create a
copy the descriptors for the speed which is supported by the UDC.
While at that, also rename f->descriptors to f->fs_descriptors in order
to make it more explicit what that means.
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/f_fs.c')
-rw-r--r-- | drivers/usb/gadget/f_fs.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 64c4ec10d1fc..4a6961c517f2 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c | |||
@@ -2097,7 +2097,7 @@ static int __ffs_func_bind_do_descs(enum ffs_entity_type type, u8 *valuep, | |||
2097 | if (isHS) | 2097 | if (isHS) |
2098 | func->function.hs_descriptors[(long)valuep] = desc; | 2098 | func->function.hs_descriptors[(long)valuep] = desc; |
2099 | else | 2099 | else |
2100 | func->function.descriptors[(long)valuep] = desc; | 2100 | func->function.fs_descriptors[(long)valuep] = desc; |
2101 | 2101 | ||
2102 | if (!desc || desc->bDescriptorType != USB_DT_ENDPOINT) | 2102 | if (!desc || desc->bDescriptorType != USB_DT_ENDPOINT) |
2103 | return 0; | 2103 | return 0; |
@@ -2249,7 +2249,7 @@ static int ffs_func_bind(struct usb_configuration *c, | |||
2249 | * numbers without worrying that it may be described later on. | 2249 | * numbers without worrying that it may be described later on. |
2250 | */ | 2250 | */ |
2251 | if (likely(full)) { | 2251 | if (likely(full)) { |
2252 | func->function.descriptors = data->fs_descs; | 2252 | func->function.fs_descriptors = data->fs_descs; |
2253 | ret = ffs_do_descs(ffs->fs_descs_count, | 2253 | ret = ffs_do_descs(ffs->fs_descs_count, |
2254 | data->raw_descs, | 2254 | data->raw_descs, |
2255 | sizeof data->raw_descs, | 2255 | sizeof data->raw_descs, |