mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
196f3d586f
5.4.102 backported a lot of stuff that our WireGuard backport already did, in addition to other patches we had, so those patches were removed from that part of the series. In the process other patches were refreshed or reworked to account for upstream changes. This commit involved `update_kernel.sh -v -u 5.4`. Cc: John Audia <graysky@archlinux.us> Cc: David Bauer <mail@david-bauer.net> Cc: Petr Štetiar <ynezz@true.cz> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
68 lines
2.4 KiB
Diff
68 lines
2.4 KiB
Diff
From 504c440dd9c391ed97299a9d4b2e41b3ac3b6211 Mon Sep 17 00:00:00 2001
|
|
From: Peter Chen <peter.chen@nxp.com>
|
|
Date: Mon, 28 Jan 2019 15:15:11 +0800
|
|
Subject: [PATCH] usb: dwc3: add otg properties update
|
|
|
|
During the USB certification CV9 test, if we report OTG descriptor
|
|
to test suite, it will require doing OTG test, but in fact, it does
|
|
not support OTG-compliance in dwc3 driver.
|
|
|
|
Signed-off-by: Peter Chen <peter.chen@nxp.com>
|
|
---
|
|
drivers/usb/dwc3/core.c | 11 +++++++++++
|
|
drivers/usb/dwc3/core.h | 2 ++
|
|
drivers/usb/dwc3/gadget.c | 4 ++++
|
|
3 files changed, 17 insertions(+)
|
|
|
|
--- a/drivers/usb/dwc3/core.c
|
|
+++ b/drivers/usb/dwc3/core.c
|
|
@@ -1269,6 +1269,17 @@ static void dwc3_get_properties(struct d
|
|
|
|
dwc->maximum_speed = usb_get_maximum_speed(dev);
|
|
dwc->dr_mode = usb_get_dr_mode(dev);
|
|
+ if (dwc->dr_mode == USB_DR_MODE_OTG) {
|
|
+ dwc->otg_caps.otg_rev = 0x0300;
|
|
+ dwc->otg_caps.hnp_support = true;
|
|
+ dwc->otg_caps.srp_support = true;
|
|
+ dwc->otg_caps.adp_support = true;
|
|
+
|
|
+ /* Update otg capabilities by DT properties */
|
|
+ of_usb_update_otg_caps(dev->of_node,
|
|
+ &dwc->otg_caps);
|
|
+ }
|
|
+
|
|
dwc->hsphy_mode = of_usb_get_phy_mode(dev->of_node);
|
|
|
|
dwc->sysdev_is_parent = device_property_read_bool(dev,
|
|
--- a/drivers/usb/dwc3/core.h
|
|
+++ b/drivers/usb/dwc3/core.h
|
|
@@ -955,6 +955,7 @@ struct dwc3_scratchpad_array {
|
|
* @nr_scratch: number of scratch buffers
|
|
* @u1u2: only used on revisions <1.83a for workaround
|
|
* @maximum_speed: maximum speed requested (mainly for testing purposes)
|
|
+ * @otg_caps: the OTG capabilities from hardware point
|
|
* @revision: revision register contents
|
|
* @version_type: VERSIONTYPE register contents, a sub release of a revision
|
|
* @dr_mode: requested mode of operation
|
|
@@ -1111,6 +1112,7 @@ struct dwc3 {
|
|
u32 nr_scratch;
|
|
u32 u1u2;
|
|
u32 maximum_speed;
|
|
+ struct usb_otg_caps otg_caps;
|
|
|
|
/*
|
|
* All 3.1 IP version constants are greater than the 3.0 IP
|
|
--- a/drivers/usb/dwc3/gadget.c
|
|
+++ b/drivers/usb/dwc3/gadget.c
|
|
@@ -3558,6 +3558,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
|
dwc->gadget.sg_supported = true;
|
|
dwc->gadget.name = "dwc3-gadget";
|
|
dwc->gadget.lpm_capable = true;
|
|
+ dwc->gadget.is_otg = (dwc->dr_mode == USB_DR_MODE_OTG) &&
|
|
+ (dwc->otg_caps.hnp_support ||
|
|
+ dwc->otg_caps.srp_support ||
|
|
+ dwc->otg_caps.adp_support);
|
|
|
|
/*
|
|
* FIXME We might be setting max_speed to <SUPER, however versions
|