usb: dwc3: Add support of disable L1 in HS mode

On some platforms, L1 in HS mode is not supported.
Add support to disable L1 in HS mode on those
platforms by default through dt.

Change-Id: I624bde1e091e6e864bf7f7af93804c3728374d0d
Signed-off-by: Udipto Goswami <ugoswami@codeaurora.org>
This commit is contained in:
Udipto Goswami 2021-06-23 14:00:29 +05:30 • committed by Gerrit - the friendly Code Review server
commit c3de8d2179
4 changed files with 6 additions and 2 deletions

View file

@ -1485,6 +1485,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
"snps,dis-tx-ipgap-linecheck-quirk");
dwc->parkmode_disable_ss_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-ss-quirk");
dwc->usb2_l1_disable = device_property_read_bool(dev,
"snps,usb2-l1-disable");
dwc->tx_de_emphasis_quirk = device_property_read_bool(dev,
"snps,tx_de_emphasis_quirk");

View file

@ -1363,6 +1363,7 @@ struct dwc3 {
unsigned tx_de_emphasis:2;
unsigned err_evt_seen:1;
unsigned enable_bus_suspend:1;
unsigned usb2_l1_disable:1;
atomic_t in_lpm;
bool b_suspend;

View file

@ -4369,7 +4369,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.speed = USB_SPEED_UNKNOWN;
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.lpm_capable = true;
dwc->gadget.lpm_capable = !dwc->usb2_l1_disable;
/*
* FIXME We might be setting max_speed to <SUPER, however versions

View file

@ -1726,11 +1726,12 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
count_configs(cdev, USB_DT_DEVICE);
cdev->desc.bMaxPacketSize0 =
cdev->gadget->ep0->maxpacket;
cdev->desc.bcdUSB = cpu_to_le16(0x0200);
if (gadget_is_superspeed(gadget)) {
if (gadget->speed >= USB_SPEED_SUPER) {
cdev->desc.bcdUSB = cpu_to_le16(0x0320);
cdev->desc.bMaxPacketSize0 = 9;
} else {
} else if (gadget->lpm_capable) {
cdev->desc.bcdUSB = cpu_to_le16(0x0210);
}
} else {