[PATCH v3] usb: cdns3: gadget.c: Set fast access bit

Mattijs Korpershoek mkorpershoek at baylibre.com
Wed Apr 24 15:25:07 CEST 2024


Hi Ravi,

Thank you for the patch.

On mer., avril 24, 2024 at 14:15, Marek Vasut <marex at denx.de> wrote:

> On 4/24/24 9:39 AM, Ravi Gunasekaran wrote:
>> From: Aswath Govindraju <a-govindraju at ti.com>
>> 
>> When the device port is in a low power state [U3/L2/Not Connected],
>> accesses to usb device registers may take a long time. This could lead to
>> potential core hang when the controller registers are accessed after the
>> port is disabled by setting DEVDS field. Setting the fast register access
>> bit ensures that the PHY clock is keeping up in active state.
>> 
>> Therefore, set fast access bit to ensure the accesses to device registers
>> are quick even in low power states.
>> 
>> commit b5148d946f45 ("usb: cdns3: gadget: set fast access bit") in the
>> upstream kernel is taken as reference.
>> 
>> Signed-off-by: Aswath Govindraju <a-govindraju at ti.com>
>> Signed-off-by: Ravi Gunasekaran <r-gunasekaran at ti.com>
>> Reviewed-by: Roger Quadros <rogerq at kernel.org>
>> Reviewed-by: Marek Vasut <marex at denx.de>
>> ---
>> Changes since v2:
>> ----------------
>> * Updated the commit description with reference to upstream kernel commit
>> * Picked up Marek's Reviewed-by tag from v2
>> 
>> Changes since v1:
>> -----------------
>> * Rebased to tip of -next
>> * Added Reviewed-by tag
>> 
>> v2: https://lore.kernel.org/all/20240423082420.32336-1-r-gunasekaran@ti.com/
>> v1: https://lore.kernel.org/u-boot/20230505121353.23486-1-r-gunasekaran@ti.com/
>> 
>>   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 7aa0c6b2be..d11175dc5b 100644
>> --- a/drivers/usb/cdns3/gadget.c
>> +++ b/drivers/usb/cdns3/gadget.c
>> @@ -2325,6 +2325,9 @@ static void cdns3_gadget_config(struct cdns3_device *priv_dev)
>>   	writel(USB_IEN_INIT, &regs->usb_ien);
>>   	writel(USB_CONF_CLK2OFFDS | USB_CONF_L1DS, &regs->usb_conf);
>>   
>> +	/* Set the Fast access bit */
>> +	writel(PUSB_PWR_FST_REG_ACCESS, &priv_dev->regs->usb_pwr);
>> +
>>   	cdns3_configure_dmult(priv_dev, NULL);
>>   
>>   	cdns3_gadget_pullup(&priv_dev->gadget, 1);
>> @@ -2383,6 +2386,7 @@ static int cdns3_gadget_udc_stop(struct usb_gadget *gadget)
>>   
>>   	/* disable interrupt for device */
>>   	writel(0, &priv_dev->regs->usb_ien);
>> +	writel(0, &priv_dev->regs->usb_pwr);
>>   	writel(USB_CONF_DEVDS, &priv_dev->regs->usb_conf);
>>   
>>   	return ret;
>> 
>> base-commit: bc39e06778168a34bb4e0a34fbee4edbde4414d8
>
> Since this is gadget stuff, +CC Mattijs , that should go through their tree.
>
> Thanks!

Thank you Marek for CC'ing me, I missed this patch.

Reviewed-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>


More information about the U-Boot mailing list