[PATCH] arm: imx: imx8mm: correct unrecognized fracpll frequency

Fabio Estevam festevam at gmail.com
Sun May 2 23:45:13 CEST 2021


Hi Andrey,

After re-reading the patch I have some comments:

On Sat, May 1, 2021 at 5:13 PM Andrey Zhizhikin
<andrey.zhizhikin at leica-geosystems.com> wrote:
>
> Frequency requested by ddrphy_init_set_dfi_clk from fracpll uses MHZ()
> macro, which expands the value provided to the Hz range without taking into
> account the precise Hz setting. This causes the frequency of 266 MHz not ot
> be found in the imx8mm_fracpll_tbl, since it is entered there with a
> precise Hz value. This in turn causes the boot hang in SPL, as proper DDR
> fracpll frequency cannot be determined.
>
> Correct the value in imx8mm_fracpll_tbl to match the one expanded by
> MHZ(266) macro, rounding it down to MHz range only.
>
> Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin at leica-geosystems.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: "NXP i.MX U-Boot Team" <uboot-imx at nxp.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Ye Li <ye.li at nxp.com>
> Fixes: 825ab6b406 ("driver: ddr: Refine the ddr init driver on imx8m")
> ---
>  arch/arm/mach-imx/imx8m/clock_imx8mm.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-imx/imx8m/clock_imx8mm.c b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> index 029d06f27f..86ff2b9cc9 100644
> --- a/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> +++ b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
> @@ -54,7 +54,7 @@ static struct imx_int_pll_rate_table imx8mm_fracpll_tbl[] = {
>         PLL_1443X_RATE(600000000U, 300, 3, 2, 0),
>         PLL_1443X_RATE(594000000U, 99, 1, 2, 0),
>         PLL_1443X_RATE(400000000U, 300, 9, 1, 0),
> -       PLL_1443X_RATE(266666667U, 400, 9, 2, 0),
> +       PLL_1443X_RATE(266000000U, 400, 9, 2, 0),

This change looks good.

>         PLL_1443X_RATE(167000000U, 334, 3, 4, 0),
>         PLL_1443X_RATE(100000000U, 300, 9, 3, 0),
>  };
> @@ -72,7 +72,7 @@ static int fracpll_configure(enum pll_clocks pll, u32 freq)
>         }
>
>         if (i == ARRAY_SIZE(imx8mm_fracpll_tbl)) {
> -               printf("No matched freq table %u\n", freq);
> +               printf("%s: No matched freq table %u\n", __func__, freq);
>                 return -EINVAL;
>         }
>
> @@ -148,7 +148,7 @@ void dram_enable_bypass(ulong clk_val)
>         }
>
>         if (i == ARRAY_SIZE(imx8mm_dram_bypass_tbl)) {
> -               printf("No matched freq table %lu\n", clk_val);
> +               printf("%s: No matched freq table %lu\n", __func__, clk_val);

, but these two I would put them on a separate patch.

Thanks


More information about the U-Boot mailing list