mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			998 B
		
	
	
	
		
			Diff
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			998 B
		
	
	
	
		
			Diff
		
	
	
| --- linux-4.9.37/drivers/usb/gadget/composite.c	2017-07-12 16:42:41.000000000 +0300
 | |
| +++ linux-4.9.y/drivers/usb/gadget/composite.c	2021-06-07 13:01:34.000000000 +0300
 | |
| @@ -205,7 +205,7 @@
 | |
|  
 | |
|  	if (g->speed == USB_SPEED_HIGH && (usb_endpoint_xfer_isoc(_ep->desc) ||
 | |
|  				usb_endpoint_xfer_int(_ep->desc)))
 | |
| -		_ep->mult = ((usb_endpoint_maxp(_ep->desc) & 0x1800) >> 11) + 1;
 | |
| +		_ep->mult = usb_endpoint_maxp_mult(_ep->desc);
 | |
|  
 | |
|  	if (!want_comp_desc)
 | |
|  		return 0;
 | |
| @@ -315,6 +315,9 @@
 | |
|  	list_del(&f->list);
 | |
|  	if (f->unbind)
 | |
|  		f->unbind(c, f);
 | |
| +
 | |
| +	if (f->bind_deactivated)
 | |
| +		usb_function_activate(f);
 | |
|  }
 | |
|  EXPORT_SYMBOL_GPL(usb_remove_function);
 | |
|  
 | |
| @@ -956,12 +959,8 @@
 | |
|  
 | |
|  		f = list_first_entry(&config->functions,
 | |
|  				struct usb_function, list);
 | |
| -		list_del(&f->list);
 | |
| -		if (f->unbind) {
 | |
| -			DBG(cdev, "unbind function '%s'/%p\n", f->name, f);
 | |
| -			f->unbind(config, f);
 | |
| -			/* may free memory for "f" */
 | |
| -		}
 | |
| +
 | |
| +		usb_remove_function(config, f);
 | |
|  	}
 | |
|  	list_del(&config->list);
 | |
|  	if (config->unbind) {
 |