diff options
Diffstat (limited to 'drivers/usb/gadget/function/f_uac2.c')
| -rw-r--r-- | drivers/usb/gadget/function/f_uac2.c | 16 | 
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c index 1905a8d8e0c9..08726e4c68a5 100644 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c @@ -291,6 +291,12 @@ static struct usb_endpoint_descriptor ss_ep_int_desc = {  	.bInterval = 4,  }; +static struct usb_ss_ep_comp_descriptor ss_ep_int_desc_comp = { +	.bLength = sizeof(ss_ep_int_desc_comp), +	.bDescriptorType = USB_DT_SS_ENDPOINT_COMP, +	.wBytesPerInterval = cpu_to_le16(6), +}; +  /* Audio Streaming OUT Interface - Alt0 */  static struct usb_interface_descriptor std_as_out_if0_desc = {  	.bLength = sizeof std_as_out_if0_desc, @@ -604,7 +610,8 @@ static struct usb_descriptor_header *ss_audio_desc[] = {  	(struct usb_descriptor_header *)&in_feature_unit_desc,  	(struct usb_descriptor_header *)&io_out_ot_desc, -  (struct usb_descriptor_header *)&ss_ep_int_desc, +	(struct usb_descriptor_header *)&ss_ep_int_desc, +	(struct usb_descriptor_header *)&ss_ep_int_desc_comp,  	(struct usb_descriptor_header *)&std_as_out_if0_desc,  	(struct usb_descriptor_header *)&std_as_out_if1_desc, @@ -800,6 +807,7 @@ static void setup_headers(struct f_uac2_opts *opts,  	struct usb_ss_ep_comp_descriptor *epout_desc_comp = NULL;  	struct usb_ss_ep_comp_descriptor *epin_desc_comp = NULL;  	struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp = NULL; +	struct usb_ss_ep_comp_descriptor *ep_int_desc_comp = NULL;  	struct usb_endpoint_descriptor *epout_desc;  	struct usb_endpoint_descriptor *epin_desc;  	struct usb_endpoint_descriptor *epin_fback_desc; @@ -827,6 +835,7 @@ static void setup_headers(struct f_uac2_opts *opts,  		epin_fback_desc = &ss_epin_fback_desc;  		epin_fback_desc_comp = &ss_epin_fback_desc_comp;  		ep_int_desc = &ss_ep_int_desc; +		ep_int_desc_comp = &ss_ep_int_desc_comp;  	}  	i = 0; @@ -855,8 +864,11 @@ static void setup_headers(struct f_uac2_opts *opts,  	if (EPOUT_EN(opts))  		headers[i++] = USBDHDR(&io_out_ot_desc); -	if (FUOUT_EN(opts) || FUIN_EN(opts)) +	if (FUOUT_EN(opts) || FUIN_EN(opts)) {  		headers[i++] = USBDHDR(ep_int_desc); +		if (ep_int_desc_comp) +			headers[i++] = USBDHDR(ep_int_desc_comp); +	}  	if (EPOUT_EN(opts)) {  		headers[i++] = USBDHDR(&std_as_out_if0_desc);  | 
