[PATCH 2/2] power/domain: meson-ee-pwrc: make sure to not enable a domain twice
Jaehoon Chung
jh80.chung at samsung.com
Wed Oct 23 01:19:42 CEST 2024
> -----Original Message-----
> From: Neil Armstrong <neil.armstrong at linaro.org>
> Sent: Wednesday, October 9, 2024 6:15 PM
> To: Lukasz Majewski <lukma at denx.de>; Sean Anderson <seanga2 at gmail.com>; Tom Rini <trini at konsulko.com>;
> Jaehoon Chung <jh80.chung at samsung.com>
> Cc: u-boot-amlogic at groups.io; u-boot at lists.denx.de; Neil Armstrong <neil.armstrong at linaro.org>
> Subject: [PATCH 2/2] power/domain: meson-ee-pwrc: make sure to not enable a domain twice
>
> The upstream Device Tree for GXBB/GXL/G12A was updated with VPU domain
> shared between the VPU and HDMI node, causing a double enable.
>
> Simply store the enable state and avoid enabling twice, fixing
> HDMI output on all platforms.
>
> Signed-off-by: Neil Armstrong <neil.armstrong at linaro.org>
Reviewed-by: Jaehoon Chung <jh80.chung at samsung.com>
Best Regards,
Jaehoon Chung
> ---
> drivers/power/domain/meson-ee-pwrc.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/power/domain/meson-ee-pwrc.c b/drivers/power/domain/meson-ee-pwrc.c
> index 20e9f32b381..4d9f3bba644 100644
> --- a/drivers/power/domain/meson-ee-pwrc.c
> +++ b/drivers/power/domain/meson-ee-pwrc.c
> @@ -60,6 +60,7 @@ struct meson_ee_pwrc_domain_desc {
> unsigned int mem_pd_count;
> struct meson_ee_pwrc_mem_domain *mem_pd;
> bool (*get_power)(struct power_domain *power_domain);
> + bool enabled;
> };
>
> struct meson_ee_pwrc_domain_data {
> @@ -306,6 +307,8 @@ static int meson_ee_pwrc_off(struct power_domain *power_domain)
> clk_disable_bulk(&priv->clks);
> }
>
> + pwrc_domain->enabled = false;
> +
> return 0;
> }
>
> @@ -317,6 +320,9 @@ static int meson_ee_pwrc_on(struct power_domain *power_domain)
>
> pwrc_domain = &priv->data->domains[power_domain->id];
>
> + if (pwrc_domain->enabled)
> + return 0;
> +
> if (pwrc_domain->top_pd)
> regmap_update_bits(priv->regmap_ao,
> pwrc_domain->top_pd->sleep_reg,
> @@ -347,8 +353,13 @@ static int meson_ee_pwrc_on(struct power_domain *power_domain)
> return ret;
> }
>
> - if (pwrc_domain->clk_names_count)
> - return clk_enable_bulk(&priv->clks);
> + if (pwrc_domain->clk_names_count) {
> + ret = clk_enable_bulk(&priv->clks);
> + if (ret)
> + return ret;
> + }
> +
> + pwrc_domain->enabled = true;
>
> return 0;
> }
>
> --
> 2.34.1
More information about the U-Boot
mailing list