forked from lede-project/source
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ipq806x: switch to upstream usb driver and backport fixes
Also removing fifo-resize property drom DT as it has been removed from the driver. Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
- Loading branch information
Showing
18 changed files
with
1,094 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
target/linux/ipq806x/patches-4.4/096-01-usb-dwc3-core-purge-dev_dbg-calls.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
From 1407bf13e3bf5f1168484c3e68b6ef9d8cf2bc72 Mon Sep 17 00:00:00 2001 | ||
From: Felipe Balbi <balbi@ti.com> | ||
Date: Mon, 16 Nov 2015 16:06:37 -0600 | ||
Subject: usb: dwc3: core: purge dev_dbg() calls | ||
|
||
The last few dev_dbg() messages are converted to | ||
tracepoints and we can finally ignore dev_dbg() | ||
messages during debug sessions. | ||
|
||
Signed-off-by: Felipe Balbi <balbi@ti.com> | ||
--- | ||
drivers/usb/dwc3/core.c | 8 +++++--- | ||
1 file changed, 5 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c | ||
index 22b47973..de5e01f 100644 | ||
--- a/drivers/usb/dwc3/core.c | ||
+++ b/drivers/usb/dwc3/core.c | ||
@@ -272,7 +272,8 @@ static int dwc3_event_buffers_setup(struct dwc3 *dwc) | ||
|
||
for (n = 0; n < dwc->num_event_buffers; n++) { | ||
evt = dwc->ev_buffs[n]; | ||
- dev_dbg(dwc->dev, "Event buf %p dma %08llx length %d\n", | ||
+ dwc3_trace(trace_dwc3_core, | ||
+ "Event buf %p dma %08llx length %d\n", | ||
evt->buf, (unsigned long long) evt->dma, | ||
evt->length); | ||
|
||
@@ -608,12 +609,13 @@ static int dwc3_core_init(struct dwc3 *dwc) | ||
reg |= DWC3_GCTL_GBLHIBERNATIONEN; | ||
break; | ||
default: | ||
- dev_dbg(dwc->dev, "No power optimization available\n"); | ||
+ dwc3_trace(trace_dwc3_core, "No power optimization available\n"); | ||
} | ||
|
||
/* check if current dwc3 is on simulation board */ | ||
if (dwc->hwparams.hwparams6 & DWC3_GHWPARAMS6_EN_FPGA) { | ||
- dev_dbg(dwc->dev, "it is on FPGA board\n"); | ||
+ dwc3_trace(trace_dwc3_core, | ||
+ "running on FPGA platform\n"); | ||
dwc->is_fpga = true; | ||
} | ||
|
||
-- | ||
cgit v0.12 |
56 changes: 56 additions & 0 deletions
56
...t/linux/ipq806x/patches-4.4/096-02-usb-dwc3-Update-maximum_speed-for-SuperSpeedPlus.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
From 2c7f1bd9127a1a49ee25d9c2b2ce17b11c7fb05f Mon Sep 17 00:00:00 2001 | ||
From: John Youn <John.Youn@synopsys.com> | ||
Date: Fri, 5 Feb 2016 17:08:59 -0800 | ||
Subject: usb: dwc3: Update maximum_speed for SuperSpeedPlus | ||
|
||
If the maximum_speed is not set, set it to a known value, either | ||
SuperSpeed or SuperSpeedPlus based on the type of controller we are | ||
using. If we are on DWC_usb31 controller, check the PHY interface to see | ||
if it is capable of SuperSpeedPlus. | ||
|
||
Also this check is moved after dwc3_core_init() so that we can check | ||
dwc->revision. | ||
|
||
Signed-off-by: John Youn <johnyoun@synopsys.com> | ||
Signed-off-by: Felipe Balbi <balbi@kernel.org> | ||
--- | ||
drivers/usb/dwc3/core.c | 17 +++++++++++++---- | ||
1 file changed, 13 insertions(+), 4 deletions(-) | ||
|
||
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c | ||
index de5e01f..001c755 100644 | ||
--- a/drivers/usb/dwc3/core.c | ||
+++ b/drivers/usb/dwc3/core.c | ||
@@ -962,10 +962,6 @@ static int dwc3_probe(struct platform_device *pdev) | ||
fladj = pdata->fladj_value; | ||
} | ||
|
||
- /* default to superspeed if no maximum_speed passed */ | ||
- if (dwc->maximum_speed == USB_SPEED_UNKNOWN) | ||
- dwc->maximum_speed = USB_SPEED_SUPER; | ||
- | ||
dwc->lpm_nyet_threshold = lpm_nyet_threshold; | ||
dwc->tx_de_emphasis = tx_de_emphasis; | ||
|
||
@@ -1016,6 +1012,19 @@ static int dwc3_probe(struct platform_device *pdev) | ||
goto err1; | ||
} | ||
|
||
+ /* default to superspeed if no maximum_speed passed */ | ||
+ if (dwc->maximum_speed == USB_SPEED_UNKNOWN) { | ||
+ dwc->maximum_speed = USB_SPEED_SUPER; | ||
+ | ||
+ /* | ||
+ * default to superspeed plus if we are capable. | ||
+ */ | ||
+ if (dwc3_is_usb31(dwc) && | ||
+ (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == | ||
+ DWC3_GHWPARAMS3_SSPHY_IFC_GEN2)) | ||
+ dwc->maximum_speed = USB_SPEED_SUPER_PLUS; | ||
+ } | ||
+ | ||
/* Adjust Frame Length */ | ||
dwc3_frame_length_adjustment(dwc, fladj); | ||
|
||
-- | ||
cgit v0.12 |
74 changes: 74 additions & 0 deletions
74
target/linux/ipq806x/patches-4.4/096-03-usb-dwc3-Validate-the-maximum_speed-parameter.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
From 77966eb85e6d988a6daaf8ac14ac33026ceb3ab7 Mon Sep 17 00:00:00 2001 | ||
From: John Youn <John.Youn@synopsys.com> | ||
Date: Fri, 19 Feb 2016 17:31:01 -0800 | ||
Subject: usb: dwc3: Validate the maximum_speed parameter | ||
|
||
Check that dwc->maximum_speed is set to a valid value. Also add an error | ||
when we use it later if we encounter an invalid value. | ||
|
||
Signed-off-by: John Youn <johnyoun@synopsys.com> | ||
Signed-off-by: Felipe Balbi <balbi@kernel.org> | ||
--- | ||
drivers/usb/dwc3/core.c | 18 ++++++++++++++++-- | ||
drivers/usb/dwc3/gadget.c | 9 ++++++--- | ||
2 files changed, 22 insertions(+), 5 deletions(-) | ||
|
||
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c | ||
index 001c755..17fd814 100644 | ||
--- a/drivers/usb/dwc3/core.c | ||
+++ b/drivers/usb/dwc3/core.c | ||
@@ -1012,8 +1012,20 @@ static int dwc3_probe(struct platform_device *pdev) | ||
goto err1; | ||
} | ||
|
||
- /* default to superspeed if no maximum_speed passed */ | ||
- if (dwc->maximum_speed == USB_SPEED_UNKNOWN) { | ||
+ /* Check the maximum_speed parameter */ | ||
+ switch (dwc->maximum_speed) { | ||
+ case USB_SPEED_LOW: | ||
+ case USB_SPEED_FULL: | ||
+ case USB_SPEED_HIGH: | ||
+ case USB_SPEED_SUPER: | ||
+ case USB_SPEED_SUPER_PLUS: | ||
+ break; | ||
+ default: | ||
+ dev_err(dev, "invalid maximum_speed parameter %d\n", | ||
+ dwc->maximum_speed); | ||
+ /* fall through */ | ||
+ case USB_SPEED_UNKNOWN: | ||
+ /* default to superspeed */ | ||
dwc->maximum_speed = USB_SPEED_SUPER; | ||
|
||
/* | ||
@@ -1023,6 +1035,8 @@ static int dwc3_probe(struct platform_device *pdev) | ||
(DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == | ||
DWC3_GHWPARAMS3_SSPHY_IFC_GEN2)) | ||
dwc->maximum_speed = USB_SPEED_SUPER_PLUS; | ||
+ | ||
+ break; | ||
} | ||
|
||
/* Adjust Frame Length */ | ||
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c | ||
index 482e6a1..3ac170f 100644 | ||
--- a/drivers/usb/dwc3/gadget.c | ||
+++ b/drivers/usb/dwc3/gadget.c | ||
@@ -1670,10 +1670,13 @@ static int dwc3_gadget_start(struct usb_gadget *g, | ||
case USB_SPEED_SUPER_PLUS: | ||
reg |= DWC3_DSTS_SUPERSPEED_PLUS; | ||
break; | ||
- case USB_SPEED_SUPER: /* FALLTHROUGH */ | ||
- case USB_SPEED_UNKNOWN: /* FALTHROUGH */ | ||
default: | ||
- reg |= DWC3_DSTS_SUPERSPEED; | ||
+ dev_err(dwc->dev, "invalid dwc->maximum_speed (%d)\n", | ||
+ dwc->maximum_speed); | ||
+ /* fall through */ | ||
+ case USB_SPEED_SUPER: | ||
+ reg |= DWC3_DCFG_SUPERSPEED; | ||
+ break; | ||
} | ||
} | ||
dwc3_writel(dwc->regs, DWC3_DCFG, reg); | ||
-- | ||
cgit v0.12 |
32 changes: 32 additions & 0 deletions
32
target/linux/ipq806x/patches-4.4/096-04-usb-dwc3-DWC_usb31-controller-check.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
From c4137a9c841ec7fb300782d211f2d6907f4d6e20 Mon Sep 17 00:00:00 2001 | ||
From: John Youn <John.Youn@synopsys.com> | ||
Date: Fri, 5 Feb 2016 17:08:18 -0800 | ||
Subject: usb: dwc3: DWC_usb31 controller check | ||
|
||
Add a convenience function to check if the controller is DWC_usb31. | ||
|
||
Signed-off-by: John Youn <johnyoun@synopsys.com> | ||
Signed-off-by: Felipe Balbi <balbi@kernel.org> | ||
--- | ||
drivers/usb/dwc3/core.h | 6 ++++++ | ||
1 file changed, 6 insertions(+) | ||
|
||
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h | ||
index e4f8b90..c0520d67 100644 | ||
--- a/drivers/usb/dwc3/core.h | ||
+++ b/drivers/usb/dwc3/core.h | ||
@@ -1024,6 +1024,12 @@ struct dwc3_gadget_ep_cmd_params { | ||
void dwc3_set_mode(struct dwc3 *dwc, u32 mode); | ||
int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc); | ||
|
||
+/* check whether we are on the DWC_usb31 core */ | ||
+static inline bool dwc3_is_usb31(struct dwc3 *dwc) | ||
+{ | ||
+ return !!(dwc->revision & DWC3_REVISION_IS_DWC31); | ||
+} | ||
+ | ||
#if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) | ||
int dwc3_host_init(struct dwc3 *dwc); | ||
void dwc3_host_exit(struct dwc3 *dwc); | ||
-- | ||
cgit v0.12 |
46 changes: 46 additions & 0 deletions
46
...linux/ipq806x/patches-4.4/096-05-usb-dwc3-Update-register-fields-for-SuperSpeedPlus.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
From 1f38f88a24c86d46cf47782ffabd5457f231f8ca Mon Sep 17 00:00:00 2001 | ||
From: John Youn <John.Youn@synopsys.com> | ||
Date: Fri, 5 Feb 2016 17:08:31 -0800 | ||
Subject: usb: dwc3: Update register fields for SuperSpeedPlus | ||
|
||
Update various registers fields definitions for the DWC_usb31 controller | ||
for SuperSpeedPlus support. | ||
|
||
Signed-off-by: John Youn <johnyoun@synopsys.com> | ||
Signed-off-by: Felipe Balbi <balbi@kernel.org> | ||
--- | ||
drivers/usb/dwc3/core.h | 5 ++++- | ||
1 file changed, 4 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h | ||
index c0520d67..6254b2f 100644 | ||
--- a/drivers/usb/dwc3/core.h | ||
+++ b/drivers/usb/dwc3/core.h | ||
@@ -223,7 +223,8 @@ | ||
/* Global HWPARAMS3 Register */ | ||
#define DWC3_GHWPARAMS3_SSPHY_IFC(n) ((n) & 3) | ||
#define DWC3_GHWPARAMS3_SSPHY_IFC_DIS 0 | ||
-#define DWC3_GHWPARAMS3_SSPHY_IFC_ENA 1 | ||
+#define DWC3_GHWPARAMS3_SSPHY_IFC_GEN1 1 | ||
+#define DWC3_GHWPARAMS3_SSPHY_IFC_GEN2 2 /* DWC_usb31 only */ | ||
#define DWC3_GHWPARAMS3_HSPHY_IFC(n) (((n) & (3 << 2)) >> 2) | ||
#define DWC3_GHWPARAMS3_HSPHY_IFC_DIS 0 | ||
#define DWC3_GHWPARAMS3_HSPHY_IFC_UTMI 1 | ||
@@ -249,6 +250,7 @@ | ||
#define DWC3_DCFG_DEVADDR_MASK DWC3_DCFG_DEVADDR(0x7f) | ||
|
||
#define DWC3_DCFG_SPEED_MASK (7 << 0) | ||
+#define DWC3_DCFG_SUPERSPEED_PLUS (5 << 0) /* DWC_usb31 only */ | ||
#define DWC3_DCFG_SUPERSPEED (4 << 0) | ||
#define DWC3_DCFG_HIGHSPEED (0 << 0) | ||
#define DWC3_DCFG_FULLSPEED2 (1 << 0) | ||
@@ -339,6 +341,7 @@ | ||
|
||
#define DWC3_DSTS_CONNECTSPD (7 << 0) | ||
|
||
+#define DWC3_DSTS_SUPERSPEED_PLUS (5 << 0) /* DWC_usb31 only */ | ||
#define DWC3_DSTS_SUPERSPEED (4 << 0) | ||
#define DWC3_DSTS_HIGHSPEED (0 << 0) | ||
#define DWC3_DSTS_FULLSPEED2 (1 << 0) | ||
-- | ||
cgit v0.12 |
Oops, something went wrong.