Skip to content

Commit

Permalink
ramips: kernel: fix awake-rt305x-dwc2 patch
Browse files Browse the repository at this point in the history
At this point in v5.4 kernel we cannot use dwc2_readl() and
dwc2_writel() since they rely on the value hsotg->needs_byte_swap
which cannot be obtained before the controller wakes up.
We should use readl() and writel() to wake up the controller before
calling dwc2_check_core_endianness().

Fixes: 6be0da9 ("ramips: refresh patches")
Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>
[fixed Fixes: tag]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
  • Loading branch information
odmdas authored and ynezz committed Jul 11, 2020
1 parent 4d92a55 commit ecda6b7
Showing 1 changed file with 7 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -432,6 +432,12 @@ static int dwc2_driver_probe(struct plat
hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg);
@@ -430,6 +430,12 @@ static int dwc2_driver_probe(struct plat
if (retval)
return retval;

+ /* Enable USB port before any regs access */
+ if (dwc2_readl(hsotg, PCGCTL) & 0x0f) {
+ dwc2_writel(0x00, hsotg, PCGCTL);
+ if (readl(hsotg->regs + PCGCTL) & 0x0f) {
+ writel(0x00, hsotg->regs + PCGCTL);
+ /* TODO: mdelay(25) here? vendor driver don't use it */
+ }
+
hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg);

retval = dwc2_get_dr_mode(hsotg);
if (retval)
goto error;

0 comments on commit ecda6b7

Please sign in to comment.