usb: gadget: composite: Draw 100mA current if not configured
authorPrashanth K <quic_prashk@quicinc.com>
Fri, 24 Feb 2023 05:46:59 +0000 (11:16 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Mar 2023 14:31:15 +0000 (15:31 +0100)
Currently we don't change the current value if device isn't in
configured state. But in battery charging specification (section
1.2 and 1.4.13), it is mentioned that the device can draw up to
100mA of current if it's in unconfigured state. Hence add vbus
draw work in composite_resume to draw 100mA if the device isn't
configured.

Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
Link: https://lore.kernel.org/r/1677217619-10261-3-git-send-email-quic_prashk@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/composite.c

index fa7dd6cf014d7b093da3fea48aee1a6981e9157e..36add1879ed2ee94dd50b72a8bc0980b8c79ff06 100644 (file)
@@ -2531,6 +2531,10 @@ void composite_resume(struct usb_gadget *gadget)
                        usb_gadget_clear_selfpowered(gadget);
 
                usb_gadget_vbus_draw(gadget, maxpower);
+       } else {
+               maxpower = CONFIG_USB_GADGET_VBUS_DRAW;
+               maxpower = min(maxpower, 100U);
+               usb_gadget_vbus_draw(gadget, maxpower);
        }
 
        cdev->suspended = 0;