* [PATCH 0/2] More meson HDMI fixes @ 2020-11-20 9:42 Marc Zyngier 2020-11-20 9:42 ` [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown Marc Zyngier 2020-11-20 9:42 ` [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough Marc Zyngier 0 siblings, 2 replies; 10+ messages in thread From: Marc Zyngier @ 2020-11-20 9:42 UTC (permalink / raw) To: Neil Armstrong, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet Guillaume reported that my earlier fixes for the meson HDMI driver broke another set of machines which are now exploding (clock not enabled). I have thus reconsidered the approach and came up with an alternative fix (enable a missing clock), which Guillaume confirmed to be working. Jerome pointed out that this driver is leaking clock references like a sieve, so that needed addressing too. The first patch start by fixing the clock leakage using a devm facility. The second patch addresses the earlier crash by reusing the infrastructure put together in the first patch. Tested on VIM3l. Marc Zyngier (2): drm/meson: dw-hdmi: Disable clocks on driver teardown drm/meson: dw-hdmi: Enable the iahb clock early enough drivers/gpu/drm/meson/meson_dw_hdmi.c | 51 ++++++++++++++++++--------- 1 file changed, 35 insertions(+), 16 deletions(-) -- 2.28.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown 2020-11-20 9:42 [PATCH 0/2] More meson HDMI fixes Marc Zyngier @ 2020-11-20 9:42 ` Marc Zyngier 2020-11-20 12:26 ` Neil Armstrong 2020-11-23 14:03 ` Jerome Brunet 2020-11-20 9:42 ` [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough Marc Zyngier 1 sibling, 2 replies; 10+ messages in thread From: Marc Zyngier @ 2020-11-20 9:42 UTC (permalink / raw) To: Neil Armstrong, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet The HDMI driver request clocks early, but never disable them, leaving the clocks on even when the driver is removed. Fix it by slightly refactoring the clock code, and register a devm action that will eventually disable/unprepare the enabled clocks. Signed-off-by: Marc Zyngier <maz@kernel.org> --- drivers/gpu/drm/meson/meson_dw_hdmi.c | 43 ++++++++++++++++++--------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c index 7f8eea494147..29623b309cb1 100644 --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c @@ -145,8 +145,6 @@ struct meson_dw_hdmi { struct reset_control *hdmitx_apb; struct reset_control *hdmitx_ctrl; struct reset_control *hdmitx_phy; - struct clk *hdmi_pclk; - struct clk *venci_clk; struct regulator *hdmi_supply; u32 irq_stat; struct dw_hdmi *hdmi; @@ -946,6 +944,29 @@ static void meson_disable_regulator(void *data) regulator_disable(data); } +static void meson_disable_clk(void *data) +{ + clk_disable_unprepare(data); +} + +static int meson_enable_clk(struct device *dev, char *name) +{ + struct clk *clk; + int ret; + + clk = devm_clk_get(dev, name); + if (IS_ERR(clk)) { + dev_err(dev, "Unable to get %s pclk\n", name); + return PTR_ERR(clk); + } + + ret = clk_prepare_enable(clk); + if (!ret) + ret = devm_add_action_or_reset(dev, meson_disable_clk, clk); + + return ret; +} + static int meson_dw_hdmi_bind(struct device *dev, struct device *master, void *data) { @@ -1026,19 +1047,13 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, if (IS_ERR(meson_dw_hdmi->hdmitx)) return PTR_ERR(meson_dw_hdmi->hdmitx); - meson_dw_hdmi->hdmi_pclk = devm_clk_get(dev, "isfr"); - if (IS_ERR(meson_dw_hdmi->hdmi_pclk)) { - dev_err(dev, "Unable to get HDMI pclk\n"); - return PTR_ERR(meson_dw_hdmi->hdmi_pclk); - } - clk_prepare_enable(meson_dw_hdmi->hdmi_pclk); + ret = meson_enable_clk(dev, "isfr"); + if (ret) + return ret; - meson_dw_hdmi->venci_clk = devm_clk_get(dev, "venci"); - if (IS_ERR(meson_dw_hdmi->venci_clk)) { - dev_err(dev, "Unable to get venci clk\n"); - return PTR_ERR(meson_dw_hdmi->venci_clk); - } - clk_prepare_enable(meson_dw_hdmi->venci_clk); + ret = meson_enable_clk(dev, "venci"); + if (ret) + return ret; dw_plat_data->regm = devm_regmap_init(dev, NULL, meson_dw_hdmi, &meson_dw_hdmi_regmap_config); -- 2.28.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown 2020-11-20 9:42 ` [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown Marc Zyngier @ 2020-11-20 12:26 ` Neil Armstrong 2020-11-23 14:03 ` Jerome Brunet 1 sibling, 0 replies; 10+ messages in thread From: Neil Armstrong @ 2020-11-20 12:26 UTC (permalink / raw) To: Marc Zyngier, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet On 20/11/2020 10:42, Marc Zyngier wrote: > The HDMI driver request clocks early, but never disable them, leaving > the clocks on even when the driver is removed. > > Fix it by slightly refactoring the clock code, and register a devm > action that will eventually disable/unprepare the enabled clocks. > > Signed-off-by: Marc Zyngier <maz@kernel.org> > --- > drivers/gpu/drm/meson/meson_dw_hdmi.c | 43 ++++++++++++++++++--------- > 1 file changed, 29 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c > index 7f8eea494147..29623b309cb1 100644 > --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c > +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c > @@ -145,8 +145,6 @@ struct meson_dw_hdmi { > struct reset_control *hdmitx_apb; > struct reset_control *hdmitx_ctrl; > struct reset_control *hdmitx_phy; > - struct clk *hdmi_pclk; > - struct clk *venci_clk; > struct regulator *hdmi_supply; > u32 irq_stat; > struct dw_hdmi *hdmi; > @@ -946,6 +944,29 @@ static void meson_disable_regulator(void *data) > regulator_disable(data); > } > > +static void meson_disable_clk(void *data) > +{ > + clk_disable_unprepare(data); > +} > + > +static int meson_enable_clk(struct device *dev, char *name) > +{ > + struct clk *clk; > + int ret; > + > + clk = devm_clk_get(dev, name); > + if (IS_ERR(clk)) { > + dev_err(dev, "Unable to get %s pclk\n", name); > + return PTR_ERR(clk); > + } > + > + ret = clk_prepare_enable(clk); > + if (!ret) > + ret = devm_add_action_or_reset(dev, meson_disable_clk, clk); > + > + return ret; > +} > + > static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > void *data) > { > @@ -1026,19 +1047,13 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > if (IS_ERR(meson_dw_hdmi->hdmitx)) > return PTR_ERR(meson_dw_hdmi->hdmitx); > > - meson_dw_hdmi->hdmi_pclk = devm_clk_get(dev, "isfr"); > - if (IS_ERR(meson_dw_hdmi->hdmi_pclk)) { > - dev_err(dev, "Unable to get HDMI pclk\n"); > - return PTR_ERR(meson_dw_hdmi->hdmi_pclk); > - } > - clk_prepare_enable(meson_dw_hdmi->hdmi_pclk); > + ret = meson_enable_clk(dev, "isfr"); > + if (ret) > + return ret; > > - meson_dw_hdmi->venci_clk = devm_clk_get(dev, "venci"); > - if (IS_ERR(meson_dw_hdmi->venci_clk)) { > - dev_err(dev, "Unable to get venci clk\n"); > - return PTR_ERR(meson_dw_hdmi->venci_clk); > - } > - clk_prepare_enable(meson_dw_hdmi->venci_clk); > + ret = meson_enable_clk(dev, "venci"); > + if (ret) > + return ret; > > dw_plat_data->regm = devm_regmap_init(dev, NULL, meson_dw_hdmi, > &meson_dw_hdmi_regmap_config); > Reviewed-by: Neil Armstrong <narmstrong@baylibre.com> _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown 2020-11-20 9:42 ` [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown Marc Zyngier 2020-11-20 12:26 ` Neil Armstrong @ 2020-11-23 14:03 ` Jerome Brunet 2020-11-23 14:15 ` Marc Zyngier 1 sibling, 1 reply; 10+ messages in thread From: Jerome Brunet @ 2020-11-23 14:03 UTC (permalink / raw) To: Marc Zyngier, Neil Armstrong, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel On Fri 20 Nov 2020 at 10:42, Marc Zyngier <maz@kernel.org> wrote: > The HDMI driver request clocks early, but never disable them, leaving > the clocks on even when the driver is removed. > > Fix it by slightly refactoring the clock code, and register a devm > action that will eventually disable/unprepare the enabled clocks. > > Signed-off-by: Marc Zyngier <maz@kernel.org> > --- > drivers/gpu/drm/meson/meson_dw_hdmi.c | 43 ++++++++++++++++++--------- > 1 file changed, 29 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c > index 7f8eea494147..29623b309cb1 100644 > --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c > +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c > @@ -145,8 +145,6 @@ struct meson_dw_hdmi { > struct reset_control *hdmitx_apb; > struct reset_control *hdmitx_ctrl; > struct reset_control *hdmitx_phy; > - struct clk *hdmi_pclk; > - struct clk *venci_clk; > struct regulator *hdmi_supply; > u32 irq_stat; > struct dw_hdmi *hdmi; > @@ -946,6 +944,29 @@ static void meson_disable_regulator(void *data) > regulator_disable(data); > } > > +static void meson_disable_clk(void *data) > +{ > + clk_disable_unprepare(data); > +} > + > +static int meson_enable_clk(struct device *dev, char *name) > +{ > + struct clk *clk; > + int ret; > + > + clk = devm_clk_get(dev, name); > + if (IS_ERR(clk)) { > + dev_err(dev, "Unable to get %s pclk\n", name); > + return PTR_ERR(clk); > + } > + > + ret = clk_prepare_enable(clk); > + if (!ret) > + ret = devm_add_action_or_reset(dev, meson_disable_clk, > clk); Thanks for fixing this Marc. FYI, while it is fine to declare a function to disable the clocks, a quick cast may avoid it devm_add_action_or_reset(dev, (void(*)(void *))clk_disable_unprepare, clk); > + > + return ret; > +} > + > static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > void *data) > { > @@ -1026,19 +1047,13 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > if (IS_ERR(meson_dw_hdmi->hdmitx)) > return PTR_ERR(meson_dw_hdmi->hdmitx); > > - meson_dw_hdmi->hdmi_pclk = devm_clk_get(dev, "isfr"); > - if (IS_ERR(meson_dw_hdmi->hdmi_pclk)) { > - dev_err(dev, "Unable to get HDMI pclk\n"); > - return PTR_ERR(meson_dw_hdmi->hdmi_pclk); > - } > - clk_prepare_enable(meson_dw_hdmi->hdmi_pclk); > + ret = meson_enable_clk(dev, "isfr"); > + if (ret) > + return ret; > > - meson_dw_hdmi->venci_clk = devm_clk_get(dev, "venci"); > - if (IS_ERR(meson_dw_hdmi->venci_clk)) { > - dev_err(dev, "Unable to get venci clk\n"); > - return PTR_ERR(meson_dw_hdmi->venci_clk); > - } > - clk_prepare_enable(meson_dw_hdmi->venci_clk); > + ret = meson_enable_clk(dev, "venci"); > + if (ret) > + return ret; > > dw_plat_data->regm = devm_regmap_init(dev, NULL, meson_dw_hdmi, > &meson_dw_hdmi_regmap_config); _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown 2020-11-23 14:03 ` Jerome Brunet @ 2020-11-23 14:15 ` Marc Zyngier 0 siblings, 0 replies; 10+ messages in thread From: Marc Zyngier @ 2020-11-23 14:15 UTC (permalink / raw) To: Jerome Brunet Cc: Neil Armstrong, Martin Blumenstingl, Kevin Hilman, linux-kernel, dri-devel, Guillaume Tucker, linux-amlogic, kernel-team, linux-arm-kernel On 2020-11-23 14:03, Jerome Brunet wrote: > On Fri 20 Nov 2020 at 10:42, Marc Zyngier <maz@kernel.org> wrote: > >> The HDMI driver request clocks early, but never disable them, leaving >> the clocks on even when the driver is removed. >> >> Fix it by slightly refactoring the clock code, and register a devm >> action that will eventually disable/unprepare the enabled clocks. >> >> Signed-off-by: Marc Zyngier <maz@kernel.org> >> --- >> drivers/gpu/drm/meson/meson_dw_hdmi.c | 43 >> ++++++++++++++++++--------- >> 1 file changed, 29 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c >> b/drivers/gpu/drm/meson/meson_dw_hdmi.c >> index 7f8eea494147..29623b309cb1 100644 >> --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c >> +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c >> @@ -145,8 +145,6 @@ struct meson_dw_hdmi { >> struct reset_control *hdmitx_apb; >> struct reset_control *hdmitx_ctrl; >> struct reset_control *hdmitx_phy; >> - struct clk *hdmi_pclk; >> - struct clk *venci_clk; >> struct regulator *hdmi_supply; >> u32 irq_stat; >> struct dw_hdmi *hdmi; >> @@ -946,6 +944,29 @@ static void meson_disable_regulator(void *data) >> regulator_disable(data); >> } >> >> +static void meson_disable_clk(void *data) >> +{ >> + clk_disable_unprepare(data); >> +} >> + >> +static int meson_enable_clk(struct device *dev, char *name) >> +{ >> + struct clk *clk; >> + int ret; >> + >> + clk = devm_clk_get(dev, name); >> + if (IS_ERR(clk)) { >> + dev_err(dev, "Unable to get %s pclk\n", name); >> + return PTR_ERR(clk); >> + } >> + >> + ret = clk_prepare_enable(clk); >> + if (!ret) >> + ret = devm_add_action_or_reset(dev, meson_disable_clk, >> clk); > > Thanks for fixing this Marc. > > FYI, while it is fine to declare a function to disable the clocks, a > quick > cast may avoid it > > devm_add_action_or_reset(dev, (void(*)(void *))clk_disable_unprepare, > clk); While this works for now, a change to the clk_disable_unprepare() prototype (such as adding a second argument) would now go completely unnoticed (after all, you've cast the function, it *must* be correct, right?), and someone would spend a few hours trying to track down memory corruption or some other interesting results. Yes, casting C functions can be hilarious. I can see a few uses of this hack in the tree, and I have my pop-corn ready. Thanks, M. -- Jazz is not dead. It just smells funny... _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough 2020-11-20 9:42 [PATCH 0/2] More meson HDMI fixes Marc Zyngier 2020-11-20 9:42 ` [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown Marc Zyngier @ 2020-11-20 9:42 ` Marc Zyngier 2020-11-20 10:54 ` Guillaume Tucker 2020-11-20 12:27 ` Neil Armstrong 1 sibling, 2 replies; 10+ messages in thread From: Marc Zyngier @ 2020-11-20 9:42 UTC (permalink / raw) To: Neil Armstrong, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet Instead of moving meson_dw_hdmi_init() around which breaks existing platform, let's enable the clock meson_dw_hdmi_init() depends on. This means we don't have to worry about this clock being enabled or not, depending on the boot-loader features. Fixes: b33340e33acd ("drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers") Reported-by: Guillaume Tucker <guillaume.tucker@collabora.com> Tested-by: Guillaume Tucker <guillaume.tucker@collabora.com> Signed-off-by: Marc Zyngier <maz@kernel.org> --- drivers/gpu/drm/meson/meson_dw_hdmi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c index 29623b309cb1..aad75a22dc33 100644 --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c @@ -1051,6 +1051,10 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, if (ret) return ret; + ret = meson_enable_clk(dev, "iahb"); + if (ret) + return ret; + ret = meson_enable_clk(dev, "venci"); if (ret) return ret; @@ -1086,6 +1090,8 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, encoder->possible_crtcs = BIT(0); + meson_dw_hdmi_init(meson_dw_hdmi); + DRM_DEBUG_DRIVER("encoder initialized\n"); /* Bridge / Connector */ @@ -1110,8 +1116,6 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, if (IS_ERR(meson_dw_hdmi->hdmi)) return PTR_ERR(meson_dw_hdmi->hdmi); - meson_dw_hdmi_init(meson_dw_hdmi); - next_bridge = of_drm_find_bridge(pdev->dev.of_node); if (next_bridge) drm_bridge_attach(encoder, next_bridge, -- 2.28.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough 2020-11-20 9:42 ` [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough Marc Zyngier @ 2020-11-20 10:54 ` Guillaume Tucker 2020-11-20 11:10 ` Marc Zyngier 2020-11-20 12:27 ` Neil Armstrong 1 sibling, 1 reply; 10+ messages in thread From: Guillaume Tucker @ 2020-11-20 10:54 UTC (permalink / raw) To: Marc Zyngier, Neil Armstrong, Kevin Hilman Cc: Martin Blumenstingl, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet On 20/11/2020 09:42, Marc Zyngier wrote: > Instead of moving meson_dw_hdmi_init() around which breaks existing > platform, let's enable the clock meson_dw_hdmi_init() depends on. > This means we don't have to worry about this clock being enabled or > not, depending on the boot-loader features. > > Fixes: b33340e33acd ("drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers") > Reported-by: Guillaume Tucker <guillaume.tucker@collabora.com> Although I am triaging kernelci bisections, it was initially found thanks to our friendly bot. So if you're OK with this, it would most definitely appreciate a mention: Reported-by: "kernelci.org bot" <bot@kernelci.org> Thanks, Guillaume _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough 2020-11-20 10:54 ` Guillaume Tucker @ 2020-11-20 11:10 ` Marc Zyngier 2020-11-20 12:18 ` Neil Armstrong 0 siblings, 1 reply; 10+ messages in thread From: Marc Zyngier @ 2020-11-20 11:10 UTC (permalink / raw) To: Guillaume Tucker Cc: Neil Armstrong, Martin Blumenstingl, Kevin Hilman, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet On 2020-11-20 10:54, Guillaume Tucker wrote: > On 20/11/2020 09:42, Marc Zyngier wrote: >> Instead of moving meson_dw_hdmi_init() around which breaks existing >> platform, let's enable the clock meson_dw_hdmi_init() depends on. >> This means we don't have to worry about this clock being enabled or >> not, depending on the boot-loader features. >> >> Fixes: b33340e33acd ("drm/meson: dw-hdmi: Ensure that clocks are >> enabled before touching the TOP registers") >> Reported-by: Guillaume Tucker <guillaume.tucker@collabora.com> > > Although I am triaging kernelci bisections, it was initially > found thanks to our friendly bot. So if you're OK with this, it > would most definitely appreciate a mention: > > Reported-by: "kernelci.org bot" <bot@kernelci.org> Sure. Neil can add this when (and if) he applies these patches. Thanks, M. -- Jazz is not dead. It just smells funny... _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough 2020-11-20 11:10 ` Marc Zyngier @ 2020-11-20 12:18 ` Neil Armstrong 0 siblings, 0 replies; 10+ messages in thread From: Neil Armstrong @ 2020-11-20 12:18 UTC (permalink / raw) To: Marc Zyngier, Guillaume Tucker Cc: Martin Blumenstingl, Kevin Hilman, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet On 20/11/2020 12:10, Marc Zyngier wrote: > On 2020-11-20 10:54, Guillaume Tucker wrote: >> On 20/11/2020 09:42, Marc Zyngier wrote: >>> Instead of moving meson_dw_hdmi_init() around which breaks existing >>> platform, let's enable the clock meson_dw_hdmi_init() depends on. >>> This means we don't have to worry about this clock being enabled or >>> not, depending on the boot-loader features. >>> >>> Fixes: b33340e33acd ("drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers") >>> Reported-by: Guillaume Tucker <guillaume.tucker@collabora.com> >> >> Although I am triaging kernelci bisections, it was initially >> found thanks to our friendly bot. So if you're OK with this, it >> would most definitely appreciate a mention: >> >> Reported-by: "kernelci.org bot" <bot@kernelci.org> > > Sure. Neil can add this when (and if) he applies these patches. Yep applying to drm-misc-next and switching to `Reported-by: "kernelci.org bot" <bot@kernelci.org>` Thanks Neil > > Thanks, > > M. _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough 2020-11-20 9:42 ` [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough Marc Zyngier 2020-11-20 10:54 ` Guillaume Tucker @ 2020-11-20 12:27 ` Neil Armstrong 1 sibling, 0 replies; 10+ messages in thread From: Neil Armstrong @ 2020-11-20 12:27 UTC (permalink / raw) To: Marc Zyngier, Kevin Hilman Cc: Martin Blumenstingl, Guillaume Tucker, linux-kernel, dri-devel, linux-amlogic, kernel-team, linux-arm-kernel, Jerome Brunet On 20/11/2020 10:42, Marc Zyngier wrote: > Instead of moving meson_dw_hdmi_init() around which breaks existing > platform, let's enable the clock meson_dw_hdmi_init() depends on. > This means we don't have to worry about this clock being enabled or > not, depending on the boot-loader features. > > Fixes: b33340e33acd ("drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers") > Reported-by: Guillaume Tucker <guillaume.tucker@collabora.com> > Tested-by: Guillaume Tucker <guillaume.tucker@collabora.com> > Signed-off-by: Marc Zyngier <maz@kernel.org> > --- > drivers/gpu/drm/meson/meson_dw_hdmi.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c > index 29623b309cb1..aad75a22dc33 100644 > --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c > +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c > @@ -1051,6 +1051,10 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > if (ret) > return ret; > > + ret = meson_enable_clk(dev, "iahb"); > + if (ret) > + return ret; > + > ret = meson_enable_clk(dev, "venci"); > if (ret) > return ret; > @@ -1086,6 +1090,8 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > > encoder->possible_crtcs = BIT(0); > > + meson_dw_hdmi_init(meson_dw_hdmi); > + > DRM_DEBUG_DRIVER("encoder initialized\n"); > > /* Bridge / Connector */ > @@ -1110,8 +1116,6 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > if (IS_ERR(meson_dw_hdmi->hdmi)) > return PTR_ERR(meson_dw_hdmi->hdmi); > > - meson_dw_hdmi_init(meson_dw_hdmi); > - > next_bridge = of_drm_find_bridge(pdev->dev.of_node); > if (next_bridge) > drm_bridge_attach(encoder, next_bridge, > Reviewed-by: Neil Armstrong <narmstrong@baylibre.com> _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-11-23 14:15 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-11-20 9:42 [PATCH 0/2] More meson HDMI fixes Marc Zyngier 2020-11-20 9:42 ` [PATCH 1/2] drm/meson: dw-hdmi: Disable clocks on driver teardown Marc Zyngier 2020-11-20 12:26 ` Neil Armstrong 2020-11-23 14:03 ` Jerome Brunet 2020-11-23 14:15 ` Marc Zyngier 2020-11-20 9:42 ` [PATCH 2/2] drm/meson: dw-hdmi: Enable the iahb clock early enough Marc Zyngier 2020-11-20 10:54 ` Guillaume Tucker 2020-11-20 11:10 ` Marc Zyngier 2020-11-20 12:18 ` Neil Armstrong 2020-11-20 12:27 ` Neil Armstrong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).