Re: [PATCH v2][RESEND] usb: gadget: core: Fix ->udc_set_speed() speed handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 1 Nov 2017, Roger Quadros wrote:

> > Roger, would you like to send in a follow-up patch that removes the now 
> > unnecessary code from dummy_udc_set_speed() in dummy_hcd.c?
> > 
> 
> Sure. I have a question though.
> 
> In dummy_udc_set_speed() we should just set gadget.speed to whatever is passed in speed.
> This will be the maximum supported speed by the gadget function driver.

Following your patch, it will be the maximum speed supported by the 
gadget function driver or the maximum speed supported by the UDC 
driver, whichever is lower.  That's the whole point of your patch, 
right?

> However, is it possible that the gadget will be connected at a lower speed than that?

Yes, it is possible to connect at a speed lower than the function 
driver's maximum speed.  The connection speed for dummy-hcd is 
controlled by a pair of module parameters: is_super_speed and 
is_high_speed.

> I see gadget.speed being updated in dummy_hub_control() GetPortStatus: case, but not
> in case of USB_SPEED_HIGH and USB_SPEED_LOW.

Here's what the code does, in outline form:

	switch (dum_hcd->dum->gadget.speed) {
	case USB_SPEED_HIGH:
		...
		break;
	case USB_SPEED_LOW:
		...
		break;
	default:
		dum_hcd->dum->gadget.speed = USB_SPEED_FULL;
		break;
	}

In other words, if gadget.speed isn't USB_SPEED_HIGH or USB_SPEED_LOW, 
set it to USB_SPEED_FULL.  And this is all under the case where the 
connection is USB-2, not USB-3 or higher.

How is this related to the requested change to dummy_udc_set_speed()?

Alan Stern




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]