[PATCH] usb: cdns3: gadget: Configure speed in udc_start

Ravi Gunasekaran r-gunasekaran at ti.com
Wed Jul 19 13:06:53 CEST 2023



On 7/19/23 4:03 PM, Marek Vasut wrote:
> On 7/19/23 10:59, Ravi Gunasekaran wrote:
>> When one of the functions does not support super speed, the composite
>> driver forces the gadget to high speed. But the speed is never
>> configured in the cdns3 gadget driver. So configure the speed
>> in cdns3_gadget_udc_start just like in the kernel.
>>
>> Signed-off-by: Ravi Gunasekaran <r-gunasekaran at ti.com>
> 
> Is this a patch picked from the kernel ?
> Is there a matching kernel commit ID ?

The commit 4df50f89f5 ("usb: composite: force gadget to be USB2 for HS only function")
in u-boot, forces the gadget's max speed to high speed and had a mention in the commit
description that the gadget's udc_start would configure itself in USB 2.0. 

I checked the cdns3 gadget driver in kernel, and the cdns3_gadget_udc_start()
configures speed. So this is not a patch picked directly from the kernel. I used 
kernel code for reference.

> 
>> ---
>>   drivers/usb/cdns3/gadget.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c
>> index fcaeab9cc1..cae570cf59 100644
>> --- a/drivers/usb/cdns3/gadget.c
>> +++ b/drivers/usb/cdns3/gadget.c
>> @@ -82,6 +82,9 @@ static int __cdns3_gadget_ep_queue(struct usb_ep *ep,
>>                      struct usb_request *request,
>>                      gfp_t gfp_flags);
>>   +static void cdns3_gadget_udc_set_speed(struct usb_gadget *gadget,
>> +                       enum usb_device_speed speed);
>> +
>>   /**
>>    * cdns3_set_register_bit - set bit in given register.
>>    * @ptr: address of device controller register to be read and changed
>> @@ -2341,6 +2344,7 @@ static int cdns3_gadget_udc_start(struct usb_gadget *gadget,
>>         spin_lock_irqsave(&priv_dev->lock, flags);
>>       priv_dev->gadget_driver = driver;
>> +    cdns3_gadget_udc_set_speed(gadget, gadget->max_speed);
>>       cdns3_gadget_config(priv_dev);
>>       spin_unlock_irqrestore(&priv_dev->lock, flags);
>>       return 0;
>>
>> base-commit: 76c61f29d63163d178b1584ecc9fc2c96c538ff0
> 
> Where did this ^ come from ?

I'm based on origin/next. Please let me know if I should base on origin/master?

-- 
Regards,
Ravi


More information about the U-Boot mailing list