> -----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

