diff options
author | Tom Rini <trini@konsulko.com> | 2025-06-16 11:06:51 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2025-06-16 11:06:51 -0600 |
commit | 62d24441e0a29c828fda6fbda3b10710ce714094 (patch) | |
tree | aa21cac95b6799dfbd74919915544c161a2c61cb | |
parent | 4d23c8aeaaaab1865732b11c7345bf5e2b9bb89a (diff) | |
parent | ca036308a513759e3e4cbe9f8191861c3232c611 (diff) |
Merge tag 'u-boot-dfu-next-20250616' of https://source.denx.de/u-boot/custodians/u-boot-dfu into next
u-boot-dfu-next-20250616
CI: https://source.denx.de/u-boot/custodians/u-boot-dfu/-/pipelines/26704
Usb gadget:
- Atmel: Improve gadget disconnect stability by power cycling
-rw-r--r-- | drivers/usb/gadget/atmel_usba_udc.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index f9326f0a7e7..72f68dba3a7 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c @@ -521,16 +521,16 @@ usba_udc_set_selfpowered(struct usb_gadget *gadget, int is_selfpowered) static int usba_udc_pullup(struct usb_gadget *gadget, int is_on) { struct usba_udc *udc = to_usba_udc(gadget); - u32 ctrl; - - ctrl = usba_readl(udc, CTRL); + /* + * Some chips don't reliably drive DP/DM lines to high impedance when + * using the DETACH/PULLD_DIS bits. + * To ensure a reliable disconnect, power cycle the controller instead + */ if (is_on) - ctrl &= ~USBA_DETACH; + usba_writel(udc, CTRL, USBA_ENABLE_MASK); else - ctrl |= USBA_DETACH; - - usba_writel(udc, CTRL, ctrl); + usba_writel(udc, CTRL, USBA_DISABLE_MASK); return 0; } |