All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 6.1 01/47] phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend
@ 2023-08-13 15:58 ` Sasha Levin
  0 siblings, 0 replies; 57+ messages in thread
From: Sasha Levin @ 2023-08-13 15:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Adrien Thierry, Vinod Koul, Sasha Levin, agross, andersson,
	konrad.dybcio, kishon, linux-arm-msm, linux-phy

From: Adrien Thierry <athierry@redhat.com>

[ Upstream commit 45d89a344eb46db9dce851c28e14f5e3c635c251 ]

In the dwc3 core, both system and runtime suspend end up calling
dwc3_suspend_common(). From there, what happens for the PHYs depends on
the USB mode and whether the controller is entering system or runtime
suspend.

HOST mode:
  (1) system suspend on a non-wakeup-capable controller

  The [1] if branch is taken. dwc3_core_exit() is called, which ends up
  calling phy_power_off() and phy_exit(). Those two functions decrease the
  PM runtime count at some point, so they will trigger the PHY runtime
  sleep (assuming the count is right).

  (2) runtime suspend / system suspend on a wakeup-capable controller

  The [1] branch is not taken. dwc3_suspend_common() calls
  phy_pm_runtime_put_sync(). Assuming the ref count is right, the PHY
  runtime suspend op is called.

DEVICE mode:
  dwc3_core_exit() is called on both runtime and system sleep
  unless the controller is already runtime suspended.

OTG mode:
  (1) system suspend : dwc3_core_exit() is called

  (2) runtime suspend : do nothing

In host mode, the code seems to make a distinction between 1) runtime
sleep / system sleep for wakeup-capable controller, and 2) system sleep
for non-wakeup-capable controller, where phy_power_off() and phy_exit()
are only called for the latter. This suggests the PHY is not supposed to
be in a fully powered-off state for runtime sleep and system sleep for
wakeup-capable controller.

Moreover, downstream, cfg_ahb_clk only gets disabled for system suspend.
The clocks are disabled by phy->set_suspend() [2] which is only called
in the system sleep path through dwc3_core_exit() [3].

With that in mind, don't disable the clocks during the femto PHY runtime
suspend callback. The clocks will only be disabled during system suspend
for non-wakeup-capable controllers, through dwc3_core_exit().

[1] https://elixir.bootlin.com/linux/v6.4/source/drivers/usb/dwc3/core.c#L1988
[2] https://git.codelinaro.org/clo/la/kernel/msm-5.4/-/blob/LV.AU.1.2.1.r2-05300-gen3meta.0/drivers/usb/phy/phy-msm-snps-hs.c#L524
[3] https://git.codelinaro.org/clo/la/kernel/msm-5.4/-/blob/LV.AU.1.2.1.r2-05300-gen3meta.0/drivers/usb/dwc3/core.c#L1915

Signed-off-by: Adrien Thierry <athierry@redhat.com>
Link: https://lore.kernel.org/r/20230629144542.14906-2-athierry@redhat.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
index a590635962140..1d45029b19cd5 100644
--- a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
+++ b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
@@ -165,22 +165,13 @@ static int qcom_snps_hsphy_suspend(struct qcom_snps_hsphy *hsphy)
 					   0, USB2_AUTO_RESUME);
 	}
 
-	clk_disable_unprepare(hsphy->cfg_ahb_clk);
 	return 0;
 }
 
 static int qcom_snps_hsphy_resume(struct qcom_snps_hsphy *hsphy)
 {
-	int ret;
-
 	dev_dbg(&hsphy->phy->dev, "Resume QCOM SNPS PHY, mode\n");
 
-	ret = clk_prepare_enable(hsphy->cfg_ahb_clk);
-	if (ret) {
-		dev_err(&hsphy->phy->dev, "failed to enable cfg ahb clock\n");
-		return ret;
-	}
-
 	return 0;
 }
 
-- 
2.40.1


-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

^ permalink raw reply related	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2023-08-13 16:29 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-13 15:58 [PATCH AUTOSEL 6.1 01/47] phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend Sasha Levin
2023-08-13 15:58 ` Sasha Levin
2023-08-13 15:58 ` [PATCH AUTOSEL 6.1 02/47] phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code Sasha Levin
2023-08-13 15:58   ` Sasha Levin
2023-08-13 15:58 ` [PATCH AUTOSEL 6.1 03/47] media: amphion: use dev_err_probe Sasha Levin
2023-08-13 15:58 ` [PATCH AUTOSEL 6.1 04/47] media: pulse8-cec: handle possible ping error Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 05/47] media: pci: cx23885: fix error handling for cx23885 ATSC boards Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 06/47] platform/x86: serial-multi-instantiate: Auto detect IRQ resource for CSC3551 Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 07/47] 9p: virtio: fix unlikely null pointer deref in handle_rerror Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 08/47] 9p: virtio: make sure 'offs' is initialized in zc_request Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 09/47] ksmbd: fix out of bounds in smb3_decrypt_req() Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 10/47] ksmbd: validate session id and tree id in compound request Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 11/47] ksmbd: no response from compound read Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 12/47] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 13/47] ASoC: da7219: Flush pending AAD IRQ when suspending Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 14/47] ASoC: da7219: Check for failure reading AAD IRQ events Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 15/47] ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 16/47] thermal: core: constify params in thermal_zone_device_register Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 17/47] ethernet: atheros: fix return value check in atl1c_tso_csum() Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 18/47] vxlan: generalize vxlan_parse_gpe_hdr and remove unused args Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 19/47] m68k: Fix invalid .section syntax Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 20/47] btrfs: remove BUG_ON()'s in add_new_free_space() Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 21/47] s390/dasd: use correct number of retries for ERP requests Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 22/47] s390/dasd: fix hanging device after request requeue Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 23/47] fs/nls: make load_nls() take a const parameter Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 24/47] ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 25/47] ASoc: codecs: ES8316: Fix DMIC config Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 26/47] ASoC: rt711: fix for JD event handling in ClockStop Mode0 Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 27/47] ASoC: rt711-sdca: " Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 28/47] ASoC: atmel: Fix the 8K sample parameter in I2SC master Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 29/47] ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 30/47] platform/x86/amd/pmf: reduce verbosity of apmf_get_system_params Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 31/47] platform/x86/amd/pmf: Notify OS power slider update Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 32/47] platform/x86: intel: hid: Always call BTNL ACPI method Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 33/47] platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 34/47] platform/x86: think-lmi: Use kfree_sensitive instead of kfree Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 35/47] platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 36/47] platform/x86: huawei-wmi: Silence ambient light sensor Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 37/47] drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 38/47] drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 39/47] drm/amd/display: Exit idle optimizations before attempt to access PHY Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 40/47] ovl: Always reevaluate the file signature for IMA Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 41/47] ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 42/47] rbd: make get_lock_owner_info() return a single locker or NULL Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 43/47] rbd: harden get_lock_owner_info() a bit Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 44/47] ALSA: usb-audio: Update for native DSD support quirks Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 45/47] staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER Sasha Levin
2023-08-13 15:59   ` Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 46/47] security: keys: perform capable check only on privileged operations Sasha Levin
2023-08-13 15:59 ` [PATCH AUTOSEL 6.1 47/47] kprobes: Prohibit probing on CFI preamble symbol Sasha Levin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.