aboutsummaryrefslogtreecommitdiffci
path: root/patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch')
-rw-r--r--patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch b/patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch
new file mode 100644
index 0000000..03ed8e7
--- /dev/null
+++ b/patches/usb/0015-phy-qcom-qmp-combo-Prevent-unnecessary-PM-runtime-suspend-at-boot.patch
@@ -0,0 +1,40 @@
+There is a small window where the device can suspend after
+pm_runtime_enable() and before pm_runtime_forbid(), causing an
+unnecessary suspend/resume cycle while the PHY is not yet registered.
+
+Move pm_runtime_forbid() before pm_runtime_enable() to eliminate
+this race.
+
+Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
+Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
+Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
+---
+ drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+index 93f1aa10d400..c3661872bb7a 100644
+--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
++++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+@@ -4932,15 +4932,15 @@ static int qmp_combo_probe(struct platform_device *pdev)
+ if (ret)
+ goto err_node_put;
+
++ /*
++ * Enable runtime PM support, but forbid it by default.
++ * Users can allow it again via the power/control attribute in sysfs.
++ */
+ pm_runtime_set_active(dev);
++ pm_runtime_forbid(dev);
+ ret = devm_pm_runtime_enable(dev);
+ if (ret)
+ goto err_node_put;
+- /*
+- * Prevent runtime pm from being ON by default. Users can enable
+- * it using power/control in sysfs.
+- */
+- pm_runtime_forbid(dev);
+
+ ret = qmp_combo_register_clocks(qmp, usb_np, dp_np);
+ if (ret)