[PATCH v2] phy: cadence: Sierra: Do not modify register when getting parent clock

Neil Armstrong neil.armstrong at linaro.org
Fri Mar 6 02:29:10 PST 2026


On 3/6/26 11:23, Gregory CLEMENT wrote:
> The get_parent() callback for the PLL_CMNLC1 clock was incorrectly
> writing to the register while determining the parent clock index. This
> unintended register access forces the PHY back into training mode. If
> the PHY is already configured, this unexpected change prevents it from
> exiting training mode.
> 
> Remove the register write operation to ensure the PHY remains stable
> during the get_parent() callback.
> 
> Fixes: da08aab940092 ("phy: cadence: Sierra: Fix to get correct parent for mux clocks")
> Signed-off-by: Gregory CLEMENT <gregory.clement at bootlin.com>
> ---
> Changes in v2:
> 
> - Removed unused variable spotted by the 0-DAY CI Kernel Test Service:
>    https://lore.kernel.org/oe-kbuild-all/202603061235.hrl27Jvj-lkp@intel.com/
> - Link to v1: https://lore.kernel.org/r/20260305-fix_sierra_get_parent-v1-1-a7c18e9e6c58@bootlin.com
> ---
>   drivers/phy/cadence/phy-cadence-sierra.c | 11 ++---------
>   1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/phy/cadence/phy-cadence-sierra.c b/drivers/phy/cadence/phy-cadence-sierra.c
> index 92ab1a31646ae..dbeda7f01cbb2 100644
> --- a/drivers/phy/cadence/phy-cadence-sierra.c
> +++ b/drivers/phy/cadence/phy-cadence-sierra.c
> @@ -698,23 +698,16 @@ static const struct phy_ops noop_ops = {
>   static u8 cdns_sierra_pll_mux_get_parent(struct clk_hw *hw)
>   {
>   	struct cdns_sierra_pll_mux *mux = to_cdns_sierra_pll_mux(hw);
> -	struct regmap_field *plllc1en_field = mux->plllc1en_field;
> -	struct regmap_field *termen_field = mux->termen_field;
>   	struct regmap_field *field = mux->pfdclk_sel_preg;
>   	unsigned int val;
>   	int index;
>   
>   	regmap_field_read(field, &val);
>   
> -	if (strstr(clk_hw_get_name(hw), clk_names[CDNS_SIERRA_PLL_CMNLC1])) {
> +	if (strstr(clk_hw_get_name(hw), clk_names[CDNS_SIERRA_PLL_CMNLC1]))
>   		index = clk_mux_val_to_index(hw, cdns_sierra_pll_mux_table[CMN_PLLLC1], 0, val);
> -		if (index == 1) {
> -			regmap_field_write(plllc1en_field, 1);
> -			regmap_field_write(termen_field, 1);
> -		}
> -	} else {
> +	else
>   		index = clk_mux_val_to_index(hw, cdns_sierra_pll_mux_table[CMN_PLLLC], 0, val);
> -	}
>   
>   	return index;
>   }
> 
> ---
> base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
> change-id: 20260305-fix_sierra_get_parent-9c8435cc65e7
> 
> Best regards,

Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>

Thanks,
Neil



More information about the linux-phy mailing list