59 lines
1.6 KiB
Diff
59 lines
1.6 KiB
Diff
|
From 2b37cb9576a0a66242a2081f7a0709355e15c6b0 Mon Sep 17 00:00:00 2001
|
||
|
From: Ondrej Jirman <megi@xff.cz>
|
||
|
Date: Sun, 30 Apr 2023 18:54:51 +0200
|
||
|
Subject: [PATCH 372/469] usb: dwc3: Track the power state of usb3_generic_phy
|
||
|
|
||
|
We will need to manage power state of this phy inisde set_mode work,
|
||
|
without any ability to perform recovery if power on fails, so we'll
|
||
|
need to track result of power on separately, to be able to balance
|
||
|
the phy on/off calls.
|
||
|
|
||
|
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
||
|
|
||
|
# Conflicts:
|
||
|
# drivers/usb/dwc3/core.c
|
||
|
---
|
||
|
drivers/usb/dwc3/core.c | 6 +++++-
|
||
|
drivers/usb/dwc3/core.h | 1 +
|
||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
|
||
|
index d68958e151a7..6a72e002b0ff 100644
|
||
|
--- a/drivers/usb/dwc3/core.c
|
||
|
+++ b/drivers/usb/dwc3/core.c
|
||
|
@@ -781,6 +781,7 @@ static int dwc3_phy_power_on(struct dwc3 *dwc)
|
||
|
if (ret < 0)
|
||
|
goto err_power_off_usb2_phy;
|
||
|
|
||
|
+ dwc->usb3_phy_powered = true;
|
||
|
return 0;
|
||
|
|
||
|
err_power_off_usb2_phy:
|
||
|
@@ -794,7 +795,10 @@ static int dwc3_phy_power_on(struct dwc3 *dwc)
|
||
|
|
||
|
static void dwc3_phy_power_off(struct dwc3 *dwc)
|
||
|
{
|
||
|
- phy_power_off(dwc->usb3_generic_phy);
|
||
|
+ if (dwc->usb3_phy_powered)
|
||
|
+ phy_power_off(dwc->usb3_generic_phy);
|
||
|
+ dwc->usb3_phy_powered = false;
|
||
|
+
|
||
|
phy_power_off(dwc->usb2_generic_phy);
|
||
|
|
||
|
usb_phy_set_suspend(dwc->usb3_phy, 1);
|
||
|
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
|
||
|
index 1f043c31a096..6a7bd508bece 100644
|
||
|
--- a/drivers/usb/dwc3/core.h
|
||
|
+++ b/drivers/usb/dwc3/core.h
|
||
|
@@ -1165,6 +1165,7 @@ struct dwc3 {
|
||
|
|
||
|
struct phy *usb2_generic_phy;
|
||
|
struct phy *usb3_generic_phy;
|
||
|
+ bool usb3_phy_powered;
|
||
|
|
||
|
bool phys_ready;
|
||
|
|
||
|
--
|
||
|
2.34.1
|
||
|
|