From 6d4c027e89f4d95e152b07e024efb4dfa26bac89 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 7 Feb 2023 10:46:15 +0100 Subject: [PATCH] 6.1-stable patches added patches: phy-qcom-qmp-combo-fix-runtime-suspend.patch --- ...y-qcom-qmp-combo-fix-runtime-suspend.patch | 65 +++++++++++++++++++ queue-6.1/series | 1 + 2 files changed, 66 insertions(+) create mode 100644 queue-6.1/phy-qcom-qmp-combo-fix-runtime-suspend.patch diff --git a/queue-6.1/phy-qcom-qmp-combo-fix-runtime-suspend.patch b/queue-6.1/phy-qcom-qmp-combo-fix-runtime-suspend.patch new file mode 100644 index 00000000000..7405b5da87b --- /dev/null +++ b/queue-6.1/phy-qcom-qmp-combo-fix-runtime-suspend.patch @@ -0,0 +1,65 @@ +From c7b98de745cffdceefc077ad5cf9cda032ef8959 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Mon, 14 Nov 2022 09:13:45 +0100 +Subject: phy: qcom-qmp-combo: fix runtime suspend + +From: Johan Hovold + +commit c7b98de745cffdceefc077ad5cf9cda032ef8959 upstream. + +Drop the confused runtime-suspend type check which effectively broke +runtime PM if the DP child node happens to be parsed before the USB +child node during probe (e.g. due to order of child nodes in the +devicetree). + +Instead use the new driver data USB PHY pointer to access the USB +configuration and resources. + +Fixes: 52e013d0bffa ("phy: qcom-qmp: Add support for DP in USB3+DP combo phy") +Reviewed-by: Dmitry Baryshkov +Signed-off-by: Johan Hovold +Link: https://lore.kernel.org/r/20221114081346.5116-6-johan+linaro@kernel.org +Signed-off-by: Vinod Koul +Signed-off-by: Stephen Boyd +Signed-off-by: Greg Kroah-Hartman +--- + drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c ++++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c +@@ -2296,15 +2296,11 @@ static void qmp_combo_disable_autonomous + static int __maybe_unused qmp_combo_runtime_suspend(struct device *dev) + { + struct qcom_qmp *qmp = dev_get_drvdata(dev); +- struct qmp_phy *qphy = qmp->phys[0]; ++ struct qmp_phy *qphy = qmp->usb_phy; + const struct qmp_phy_cfg *cfg = qphy->cfg; + + dev_vdbg(dev, "Suspending QMP phy, mode:%d\n", qphy->mode); + +- /* Supported only for USB3 PHY and luckily USB3 is the first phy */ +- if (cfg->type != PHY_TYPE_USB3) +- return 0; +- + if (!qmp->init_count) { + dev_vdbg(dev, "PHY not initialized, bailing out\n"); + return 0; +@@ -2321,16 +2317,12 @@ static int __maybe_unused qmp_combo_runt + static int __maybe_unused qmp_combo_runtime_resume(struct device *dev) + { + struct qcom_qmp *qmp = dev_get_drvdata(dev); +- struct qmp_phy *qphy = qmp->phys[0]; ++ struct qmp_phy *qphy = qmp->usb_phy; + const struct qmp_phy_cfg *cfg = qphy->cfg; + int ret = 0; + + dev_vdbg(dev, "Resuming QMP phy, mode:%d\n", qphy->mode); + +- /* Supported only for USB3 PHY and luckily USB3 is the first phy */ +- if (cfg->type != PHY_TYPE_USB3) +- return 0; +- + if (!qmp->init_count) { + dev_vdbg(dev, "PHY not initialized, bailing out\n"); + return 0; diff --git a/queue-6.1/series b/queue-6.1/series index 18be8fe3acd..09e54f02321 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -188,3 +188,4 @@ nvmem-core-fix-registration-vs-use-race.patch nvmem-core-fix-device-node-refcounting.patch nvmem-core-fix-cell-removal-on-error.patch nvmem-core-fix-return-value.patch +phy-qcom-qmp-combo-fix-runtime-suspend.patch -- 2.47.3