Re: [PATCH 2/2] power/domain: meson-ee-pwrc: make sure to not enable a domain twice

"Jaehoon Chung" <[email protected]>
Newsgroups io.groups.u-boot-amlogic,org.u-boot-project.lists.u-boot
Message-ID <[email protected]>

> -----Original Message-----
> From: Neil Armstrong <[email protected]>
> Sent: Wednesday, October 9, 2024 6:15 PM
> To: Lukasz Majewski <[email protected]>; Sean Anderson <[email protected]>; Tom Rini <[email protected]>;
> Jaehoon Chung <[email protected]>
> Cc: [email protected]; [email protected]; Neil Armstrong <[email protected]>
> 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 <[email protected]>

Reviewed-by: Jaehoon Chung <[email protected]>

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.