[PATCH v7 3/4] phy: ti-pipe3: Fix EPROBE_DEFER handling for clock resources

sashiko-bot at kernel.org sashiko-bot at kernel.org
Wed Sep 9 04:42:27 PDT 2026


Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] A redundant dev_err() call immediately before dev_err_probe() defeats the probe deferral suppression mechanism and causes double logging.
--

commit 09edabe83e95cc967698ec0a56b8901416907e0e
Author: Hongling Zeng <zenghongling at kylinos.cn>

phy: ti-pipe3: Fix EPROBE_DEFER handling for clock resources

This commit fixes EPROBE_DEFER handling in ti_pipe3_get_clk() by propagating
the actual error code for the system clock instead of returning -EINVAL. It
also uses devm_clk_get_optional() for the SATA refclk to correctly handle
missing optional clocks while properly propagating probe deferrals.

> diff --git a/drivers/phy/ti/phy-ti-pipe3.c b/drivers/phy/ti/phy-ti-pipe3.c
> index 021657cbce481..a67f5da43c83b 100644
> --- a/drivers/phy/ti/phy-ti-pipe3.c
> +++ b/drivers/phy/ti/phy-ti-pipe3.c

[ ... ]

> @@ -608,14 +608,21 @@ static int ti_pipe3_get_clk(struct ti_pipe3 *phy)
>  	struct clk *clk;
>  	struct device *dev = phy->dev;
>  
> -	phy->refclk = devm_clk_get(dev, "refclk");
> +	/*
> +	 * refclk is optional for SATA PHY to support older DTBs, but
> +	 * required for other modes. Use devm_clk_get_optional() for SATA
> +	 * which returns NULL for -ENOENT, allowing us to propagate all
> +	 * other errors including -EPROBE_DEFER.
> +	 */
> +	if (phy->mode == PIPE3_MODE_SATA)
> +		phy->refclk = devm_clk_get_optional(dev, "refclk");
> +	else
> +		phy->refclk = devm_clk_get(dev, "refclk");
> +
>  	if (IS_ERR(phy->refclk)) {
>  		dev_err(dev, "unable to get refclk\n");
> -		/* older DTBs have missing refclk in SATA PHY
> -		 * so don't bail out in case of SATA PHY.
> -		 */
> -		if (phy->mode != PIPE3_MODE_SATA)
> -			return PTR_ERR(phy->refclk);
> +		return dev_err_probe(dev, PTR_ERR(phy->refclk),
> +				"unable to get refclk\n");

[Severity: Low]
Does keeping this dev_err() call defeat the purpose of using dev_err_probe()
below it?

Since dev_err_probe() suppresses logging during -EPROBE_DEFER, leaving the
unconditional dev_err() here will still output "unable to get refclk" to
the kernel log during normal probe deferrals. It will also cause the same
error message to be logged twice on actual failures.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260909113433.1287454-1-zenghongling@kylinos.cn?part=3



More information about the linux-phy mailing list