[PATCH] phy: rockchip-samsung-dcphy: Enable runtime PM at PHY core level

Jason Yang via B4 Relay posted 1 patch 1 month, 1 week ago
drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] phy: rockchip-samsung-dcphy: Enable runtime PM at PHY core level
Posted by Jason Yang via B4 Relay 1 month, 1 week ago
From: Jason Yang <jason98166@gmail.com>

phy_create() only enables runtime PM on the new PHY device if the parent
already has it enabled, and this driver enables it afterwards. The PHY
device therefore never gets runtime PM, and phy_pm_runtime_get_sync()
returns -ENOTSUPP for every phy_init() and phy_power_on(). The block is
still resumed today, but only through the supplier link fw_devlink builds
from the phys phandle, which fw_devlink=off and =permissive do not.

Move devm_pm_runtime_enable() before devm_phy_create(), as done for the
sibling HDPTX PHY in commit 10ba8479f460 ("phy:
phy-rockchip-samsung-hdptx: Enable runtime PM at PHY core level").

Fixes: b2a1a2ae7818 ("phy: rockchip: Add Samsung MIPI D-/C-PHY driver")
Signed-off-by: Jason Yang <jason98166@gmail.com>
---
 drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
index cbd780556da8..11e872cc6611 100644
--- a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
+++ b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
@@ -1610,16 +1610,16 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, PTR_ERR(samsung->grf_apb_rst),
 				     "Failed to get system grf_apb_rst control\n");
 
+	ret = devm_pm_runtime_enable(dev);
+	if (ret)
+		return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
+
 	samsung->phy = devm_phy_create(dev, NULL, &samsung_mipi_dcphy_ops);
 	if (IS_ERR(samsung->phy))
 		return dev_err_probe(dev, PTR_ERR(samsung->phy), "Failed to create MIPI DC-PHY\n");
 
 	phy_set_drvdata(samsung->phy, samsung);
 
-	ret = devm_pm_runtime_enable(dev);
-	if (ret)
-		return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
-
 	phy_provider = devm_of_phy_provider_register(dev, samsung_mipi_dcphy_xlate);
 	if (IS_ERR(phy_provider))
 		return dev_err_probe(dev, PTR_ERR(phy_provider),

---
base-commit: 1590cf0329716306e948a8fc29f1d3ee87d3989f
change-id: 20260821-dcphy-rpm-v1-14c80daecbf7

Best regards,
-- 
Jason Yang <jason98166@gmail.com>
Re: [PATCH] phy: rockchip-samsung-dcphy: Enable runtime PM at PHY core level
Posted by Heiko Stuebner 1 month ago
Am Freitag, 21. August 2026, 13:44:19 Mitteleuropäische Sommerzeit schrieb Jason Yang via B4 Relay:
> From: Jason Yang <jason98166@gmail.com>
> 
> phy_create() only enables runtime PM on the new PHY device if the parent
> already has it enabled, and this driver enables it afterwards. The PHY
> device therefore never gets runtime PM, and phy_pm_runtime_get_sync()
> returns -ENOTSUPP for every phy_init() and phy_power_on(). The block is
> still resumed today, but only through the supplier link fw_devlink builds
> from the phys phandle, which fw_devlink=off and =permissive do not.
> 
> Move devm_pm_runtime_enable() before devm_phy_create(), as done for the
> sibling HDPTX PHY in commit 10ba8479f460 ("phy:
> phy-rockchip-samsung-hdptx: Enable runtime PM at PHY core level").
> 
> Fixes: b2a1a2ae7818 ("phy: rockchip: Add Samsung MIPI D-/C-PHY driver")
> Signed-off-by: Jason Yang <jason98166@gmail.com>

Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Re: [PATCH] phy: rockchip-samsung-dcphy: Enable runtime PM at PHY core level
Posted by Sebastian Reichel 1 month, 1 week ago
Hi,

On Fri, Aug 21, 2026 at 07:44:19PM +0800, Jason Yang via B4 Relay wrote:
> From: Jason Yang <jason98166@gmail.com>
> 
> phy_create() only enables runtime PM on the new PHY device if the parent
> already has it enabled, and this driver enables it afterwards. The PHY
> device therefore never gets runtime PM, and phy_pm_runtime_get_sync()
> returns -ENOTSUPP for every phy_init() and phy_power_on(). The block is
> still resumed today, but only through the supplier link fw_devlink builds
> from the phys phandle, which fw_devlink=off and =permissive do not.
> 
> Move devm_pm_runtime_enable() before devm_phy_create(), as done for the
> sibling HDPTX PHY in commit 10ba8479f460 ("phy:
> phy-rockchip-samsung-hdptx: Enable runtime PM at PHY core level").
> 
> Fixes: b2a1a2ae7818 ("phy: rockchip: Add Samsung MIPI D-/C-PHY driver")
> Signed-off-by: Jason Yang <jason98166@gmail.com>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

Greetings,

-- Sebastian

>  drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> index cbd780556da8..11e872cc6611 100644
> --- a/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> +++ b/drivers/phy/rockchip/phy-rockchip-samsung-dcphy.c
> @@ -1610,16 +1610,16 @@ static int samsung_mipi_dcphy_probe(struct platform_device *pdev)
>  		return dev_err_probe(dev, PTR_ERR(samsung->grf_apb_rst),
>  				     "Failed to get system grf_apb_rst control\n");
>  
> +	ret = devm_pm_runtime_enable(dev);
> +	if (ret)
> +		return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
> +
>  	samsung->phy = devm_phy_create(dev, NULL, &samsung_mipi_dcphy_ops);
>  	if (IS_ERR(samsung->phy))
>  		return dev_err_probe(dev, PTR_ERR(samsung->phy), "Failed to create MIPI DC-PHY\n");
>  
>  	phy_set_drvdata(samsung->phy, samsung);
>  
> -	ret = devm_pm_runtime_enable(dev);
> -	if (ret)
> -		return dev_err_probe(dev, ret, "Failed to enable runtime PM\n");
> -
>  	phy_provider = devm_of_phy_provider_register(dev, samsung_mipi_dcphy_xlate);
>  	if (IS_ERR(phy_provider))
>  		return dev_err_probe(dev, PTR_ERR(phy_provider),
> 
> ---
> base-commit: 1590cf0329716306e948a8fc29f1d3ee87d3989f
> change-id: 20260821-dcphy-rpm-v1-14c80daecbf7
> 
> Best regards,
> -- 
> Jason Yang <jason98166@gmail.com>
> 
>