2020-08-28 13:11:02

by Marek Szyprowski

[permalink] [raw]
Subject: [PATCH] clk: meson: g12a: mark fclk_div2 as CLK_IGNORE_UNUSED

Add CLK_IGNORE_UNUSED flag to the "fclk_div2" clock to fix boot hang on
the Hardkernel's Odroid N2 board (with bootloader booted from SD card and
kernel loaded via FTFP).

It looks that this clock is disabled by the generic unused clocks
scanning code before it gets enabled by the meson-gx-mmc driver.

Signed-off-by: Marek Szyprowski <[email protected]>
---
Without this patch the only way to boot OdroidN2 board with mainline
kernel is to append clk_ignore_unused kernel parameter. I've build the
kernel from the default arm64's defconfig. The kernel is loaded via TFTP
using vendor's u-boot.
---
drivers/clk/clk.c | 5 +++++
drivers/clk/meson/g12a.c | 1 +
2 files changed, 6 insertions(+)

diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
index 9803d44bb157..4106b6231be4 100644
--- a/drivers/clk/meson/g12a.c
+++ b/drivers/clk/meson/g12a.c
@@ -298,6 +298,7 @@ static struct clk_regmap g12a_fclk_div2 = {
&g12a_fclk_div2_div.hw
},
.num_parents = 1,
+ .flags = CLK_IGNORE_UNUSED,
},
};

--
2.17.1


2020-08-28 13:47:24

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH] clk: meson: g12a: mark fclk_div2 as CLK_IGNORE_UNUSED


On Fri 28 Aug 2020 at 15:07, Marek Szyprowski <[email protected]> wrote:

> Add CLK_IGNORE_UNUSED flag to the "fclk_div2" clock to fix boot hang on
> the Hardkernel's Odroid N2 board (with bootloader booted from SD card and
> kernel loaded via FTFP).
>
> It looks that this clock is disabled by the generic unused clocks
> scanning code before it gets enabled by the meson-gx-mmc driver.
>
> Signed-off-by: Marek Szyprowski <[email protected]>
> ---
> Without this patch the only way to boot OdroidN2 board with mainline
> kernel is to append clk_ignore_unused kernel parameter. I've build the
> kernel from the default arm64's defconfig. The kernel is loaded via TFTP
> using vendor's u-boot.
> ---
> drivers/clk/clk.c | 5 +++++
> drivers/clk/meson/g12a.c | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
> index 9803d44bb157..4106b6231be4 100644
> --- a/drivers/clk/meson/g12a.c
> +++ b/drivers/clk/meson/g12a.c
> @@ -298,6 +298,7 @@ static struct clk_regmap g12a_fclk_div2 = {
> &g12a_fclk_div2_div.hw
> },
> .num_parents = 1,
> + .flags = CLK_IGNORE_UNUSED,

Hi Marek,

I just received another patch making this clock critical which I'm more
inclined to take. It should solve this problem you reporting as well.

In general CLK_IGNORE_UNUSED is not best way to address these problems as
a particular race condition (with probe defferal for ex) could still
turn the clock off ... which is apparently something we can't tolerate.

Thanks for reporting

> },
> };