Re: [PATCH] clk: mvebu: armada-37xx-periph: Fix initialization for cpu clocks

Ilias Apalodimas
2019-03-14T12:15:48Z

Hi Gregory,
> The clock parenting was not setup properly when DVFS was enabled. It was
> expected that the same clock source was used with and without DVFS which
> was not the case.
>
> This patch fixes this issue, allowing to make the cpufreq support work
> when the CPU clocks source are not the default ones.
>
> Fixes: 92ce45fb875d ("cpufreq: Add DVFS support for Armada 37xx")
> Cc: <stable@vger.kernel.org>
> Reported-by: Christian Neubert <christian.neubert.86@gmail.com>
> Reported-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> drivers/clk/mvebu/armada-37xx-periph.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/clk/mvebu/armada-37xx-periph.c b/drivers/clk/mvebu/armada-37xx-periph.c
> index 1f1cff428d78..26ed3c18a239 100644
> --- a/drivers/clk/mvebu/armada-37xx-periph.c
> +++ b/drivers/clk/mvebu/armada-37xx-periph.c
> @@ -671,6 +671,17 @@ static int armada_3700_add_composite_clk(const struct clk_periph_data *data,
> map = syscon_regmap_lookup_by_compatible(
> "marvell,armada-3700-nb-pm");
> pmcpu_clk->nb_pm_base = map;
> +
> + /*
> + * Use the same parent when DVFS is enabled that the
> + * default parent received at boot time. When this
> + * function is called, DVFS is not enabled yet, so we
> + * get the default parent and we can set the parent
> + * for DVFS.
> + */
> + if (clk_pm_cpu_set_parent(muxrate_hw,
> + clk_pm_cpu_get_parent(muxrate_hw)))
> + dev_warn(dev, "Failed to setup default parent clock for DVFS\n");
> }
>
> *hw = clk_hw_register_composite(dev, data->name, data->parent_names,
> --
> 2.20.1
>
Applied this and selected only

CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y

After changing the governor from 'powersave' to 'performance' the board
completely froze (i even lost access to the serial port)

Cheers
/Ilias