[PATCH v4 2/3] clock: eswin: Add eic7700 clock driver
Brian Masney
bmasney at redhat.com
Thu Aug 21 11:32:40 PDT 2025
Hi,
On Fri, Aug 15, 2025 at 05:37:20PM +0800, dongxuyang at eswincomputing.com wrote:
> +static long clk_pll_round_rate(struct clk_hw *hw, unsigned long rate,
> + unsigned long *parent_rate)
> +{
> + struct eswin_clk_pll *clk = to_pll_clk(hw);
> + const char *clk_name = clk_hw_get_name(&clk->hw);
> +
> + if (!clk_name)
> + return -ENOMEM;
> +
> + int index;
> + u64 round_rate = 0;
> +
> + /* Must be sorted in ascending order */
> + u64 apll_clk[] = { APLL_LOW_FREQ, APLL_HIGH_FREQ };
> + u64 cpu_pll_clk[] = { CLK_FREQ_100M, CLK_FREQ_200M, CLK_FREQ_400M,
> + CLK_FREQ_500M, CLK_FREQ_600M, CLK_FREQ_700M,
> + CLK_FREQ_800M, CLK_FREQ_900M, CLK_FREQ_1000M,
> + CLK_FREQ_1200M, CLK_FREQ_1300M, CLK_FREQ_1400M,
> + CLK_FREQ_1500M, CLK_FREQ_1600M, CLK_FREQ_1700M,
> + CLK_FREQ_1800M };
> +
> + switch (str_to_pll_clk(clk_name)) {
> + case CLK_APLL_FOUT1:
> + index = find_closest(rate, apll_clk, ARRAY_SIZE(apll_clk));
> + round_rate = apll_clk[index];
> + break;
> + case CLK_PLL_CPU:
> + index = find_closest(rate, cpu_pll_clk,
> + ARRAY_SIZE(cpu_pll_clk));
> + round_rate = cpu_pll_clk[index];
> + break;
> + default:
> + pr_err("%s %d, unknown clk %s\n", __func__, __LINE__,
> + clk_name);
> + break;
> + }
> + return round_rate;
> +}
> +
> +static const struct clk_ops eswin_clk_pll_ops = {
> + .set_rate = clk_pll_set_rate,
> + .recalc_rate = clk_pll_recalc_rate,
> + .round_rate = clk_pll_round_rate,
> +};
The round_rate clk op is deprecated. Please convert this over to use
determine_rate.
Brian
More information about the linux-riscv
mailing list