mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00
43 lines
1.6 KiB
Diff
43 lines
1.6 KiB
Diff
From 6a98df08ccd55e87947d253b19925691763e755c Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Wed, 13 Apr 2022 22:22:52 -0500
|
|
Subject: [PATCH] phy: rockchip-inno-usb2: Fix muxed interrupt support
|
|
|
|
This commit fixes two issues with the muxed interrupt handler. First,
|
|
the OTG port has the "bvalid" interrupt enabled, not "linestate". Since
|
|
only the linestate interrupt was handled, and not the bvalid interrupt,
|
|
plugging in a cable to the OTG port caused an interrupt storm.
|
|
|
|
Second, the return values from the individual port IRQ handlers need to
|
|
be OR-ed together. Otherwise, the lack of an interrupt from the last
|
|
port would cause the handler to erroneously return IRQ_NONE.
|
|
|
|
Fixes: ed2b5a8e6b98 ("phy: phy-rockchip-inno-usb2: support muxed interrupts")
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
Tested-by: Michael Riesch <michael.riesch@wolfvision.net>
|
|
Link: https://lore.kernel.org/r/20220414032258.40984-2-samuel@sholland.org
|
|
Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
|
---
|
|
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 10 ++++++++--
|
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
|
|
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
|
|
@@ -948,8 +948,14 @@ static irqreturn_t rockchip_usb2phy_irq(
|
|
if (!rport->phy)
|
|
continue;
|
|
|
|
- /* Handle linestate irq for both otg port and host port */
|
|
- ret = rockchip_usb2phy_linestate_irq(irq, rport);
|
|
+ switch (rport->port_id) {
|
|
+ case USB2PHY_PORT_OTG:
|
|
+ ret |= rockchip_usb2phy_otg_mux_irq(irq, rport);
|
|
+ break;
|
|
+ case USB2PHY_PORT_HOST:
|
|
+ ret |= rockchip_usb2phy_linestate_irq(irq, rport);
|
|
+ break;
|
|
+ }
|
|
}
|
|
|
|
return ret;
|