From a3c8a03baeae47d817df214f23f0244ef4c92bfc Mon Sep 17 00:00:00 2001 From: William Wu Date: Tue, 7 May 2024 20:06:42 +0800 Subject: [PATCH] usb: gadget: composite: Fix bcdUSB for non-SuperSpeed gadget This patch set bcdUSB to 0x0200 for non-SuperSpeed gadget which disable LPM. It can avoid usb bus enter LPM. Test on RK356X platform, connect USB2.0 ADB to the PC USB host port, without this patch, the usb bus will enter LPM dynamically and trigger the USB DWC3 controller suspend interrupt event frequently (more than 1000 interrupts per second). Signed-off-by: William Wu Change-Id: Id0b9d54800e471512a417933868f76181c89e99d --- drivers/usb/gadget/composite.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index cb0a4e2cdbb7..2a94e7661bd7 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1745,7 +1745,10 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) cdev->desc.bcdUSB = cpu_to_le16(0x0320); cdev->desc.bMaxPacketSize0 = 9; } else { - cdev->desc.bcdUSB = cpu_to_le16(0x0210); + if (gadget->lpm_capable) + cdev->desc.bcdUSB = cpu_to_le16(0x0210); + else + cdev->desc.bcdUSB = cpu_to_le16(0x0200); } } else { if (gadget->lpm_capable)