Commit f5c61225 authored by John Youn's avatar John Youn Committed by Felipe Balbi

usb: gadget: Update function for SuperSpeedPlus

Add a ssp_descriptors member to struct usb_function and handle the
initialization and cleanup of it. This holds the SuperSpeedPlus
descriptors for a function that supports SuperSpeedPlus. This is added
by usb_assign_descriptors().
Signed-off-by: default avatarJohn Youn <johnyoun@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
parent eaef50c7
...@@ -183,6 +183,11 @@ int usb_assign_descriptors(struct usb_function *f, ...@@ -183,6 +183,11 @@ int usb_assign_descriptors(struct usb_function *f,
if (!f->ss_descriptors) if (!f->ss_descriptors)
goto err; goto err;
} }
if (ssp && gadget_is_superspeed_plus(g)) {
f->ssp_descriptors = usb_copy_descriptors(ssp);
if (!f->ssp_descriptors)
goto err;
}
return 0; return 0;
err: err:
usb_free_all_descriptors(f); usb_free_all_descriptors(f);
...@@ -195,6 +200,7 @@ void usb_free_all_descriptors(struct usb_function *f) ...@@ -195,6 +200,7 @@ void usb_free_all_descriptors(struct usb_function *f)
usb_free_descriptors(f->fs_descriptors); usb_free_descriptors(f->fs_descriptors);
usb_free_descriptors(f->hs_descriptors); usb_free_descriptors(f->hs_descriptors);
usb_free_descriptors(f->ss_descriptors); usb_free_descriptors(f->ss_descriptors);
usb_free_descriptors(f->ssp_descriptors);
} }
EXPORT_SYMBOL_GPL(usb_free_all_descriptors); EXPORT_SYMBOL_GPL(usb_free_all_descriptors);
......
...@@ -126,6 +126,10 @@ struct usb_os_desc_table { ...@@ -126,6 +126,10 @@ struct usb_os_desc_table {
* string identifiers assigned during @bind(). If this * string identifiers assigned during @bind(). If this
* pointer is null after initiation, the function will not * pointer is null after initiation, the function will not
* be available at super speed. * be available at super speed.
* @ssp_descriptors: Table of super speed plus descriptors, using
* interface and string identifiers assigned during @bind(). If
* this pointer is null after initiation, the function will not
* be available at super speed plus.
* @config: assigned when @usb_add_function() is called; this is the * @config: assigned when @usb_add_function() is called; this is the
* configuration with which this function is associated. * configuration with which this function is associated.
* @os_desc_table: Table of (interface id, os descriptors) pairs. The function * @os_desc_table: Table of (interface id, os descriptors) pairs. The function
...@@ -186,6 +190,7 @@ struct usb_function { ...@@ -186,6 +190,7 @@ struct usb_function {
struct usb_descriptor_header **fs_descriptors; struct usb_descriptor_header **fs_descriptors;
struct usb_descriptor_header **hs_descriptors; struct usb_descriptor_header **hs_descriptors;
struct usb_descriptor_header **ss_descriptors; struct usb_descriptor_header **ss_descriptors;
struct usb_descriptor_header **ssp_descriptors;
struct usb_configuration *config; struct usb_configuration *config;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment