[PATCH meson-clk-next] clk: meson: meson8b: enable CLK_MESON_MPLL_ROUND_CLOSEST for all MPLLs

Jerome Brunet jbrunet at baylibre.com
Sat Apr 28 08:01:34 PDT 2018


On Sat, 2018-04-28 at 15:23 +0200, Martin Blumenstingl wrote:
> Until recently the clk-mpll implementation always used
> DIV_ROUND_UP_ULL(). However, since commit 1b0e500dc606e9 ("clk: meson:
> mpll: add round closest support") the default was changed to round down
> the SDM divisor.
> This broke RGMII Ethernet on Meson8b (which uses MPLL2 as RGMII TX
> clock). With the old implementation the MPLL2 output was 249999701Hz,
> but with "round closest" disabled the output is 212500000Hz.

> 
> Enabling CLK_MESON_MPLL_ROUND_CLOSEST for all MPLL2 clocks on Meson8b
> fixes this because we now get the same 249999701Hz from MPLL2 as before.

It should either be rounding up or down, not down or 'more down'
I guess I need to revisit this series. In the mean time, I'll drop it.
Thanks for reporting the issue

> 
> Fixes: 1b0e500dc606e9 ("clk: meson: mpll: add round closest support")
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl at googlemail.com>
> ---
>  drivers/clk/meson/meson8b.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c
> index d0524ec71aad..2639a892a5d4 100644
> --- a/drivers/clk/meson/meson8b.c
> +++ b/drivers/clk/meson/meson8b.c
> @@ -382,6 +382,7 @@ static struct clk_regmap meson8b_mpll0_div = {
>  			.width   = 1,
>  		},
>  		.lock = &meson_clk_lock,
> +		.flags = CLK_MESON_MPLL_ROUND_CLOSEST,
>  	},
>  	.hw.init = &(struct clk_init_data){
>  		.name = "mpll0_div",
> @@ -423,6 +424,7 @@ static struct clk_regmap meson8b_mpll1_div = {
>  			.width   = 9,
>  		},
>  		.lock = &meson_clk_lock,
> +		.flags = CLK_MESON_MPLL_ROUND_CLOSEST,
>  	},
>  	.hw.init = &(struct clk_init_data){
>  		.name = "mpll1_div",
> @@ -464,6 +466,7 @@ static struct clk_regmap meson8b_mpll2_div = {
>  			.width   = 9,
>  		},
>  		.lock = &meson_clk_lock,
> +		.flags = CLK_MESON_MPLL_ROUND_CLOSEST,
>  	},
>  	.hw.init = &(struct clk_init_data){
>  		.name = "mpll2_div",




More information about the linux-amlogic mailing list