[Freedreno] [DPU PATCH 3/3] drm/msm/dp: add support for DP PLL driver
Stephen Boyd
swboyd at chromium.org
Tue Nov 6 23:19:34 UTC 2018
Quoting Sean Paul (2018-11-01 14:03:15)
> On Wed, Oct 10, 2018 at 10:15:59AM -0700, Chandan Uddaraju wrote:
>
> > +}
> > +
> > static int dp_power_set_pixel_clk_parent(struct dp_power *dp_power)
> > {
> > int rc = 0;
> > @@ -472,8 +520,12 @@ static int dp_power_set_pixel_clk_parent(struct dp_power *dp_power)
> >
> > power = container_of(dp_power, struct dp_power_private, dp_power);
> >
> > - if (power->pixel_clk_rcg && power->pixel_parent)
> > - clk_set_parent(power->pixel_clk_rcg, power->pixel_parent);
> > + if (power->pixel_clk_rcg && power->pixel_provider) {
> > + clk_set_parent(power->pixel_clk_rcg, power->pixel_provider);
>
> s/pixel_parent/pixel_provider/ isn't related to this change, can you please use
> the final name in the main dp patch so it's correct in this one?
>
> > + pr_debug("%s: is the parent of clk=%s\n",
> > + __clk_get_name(power->pixel_provider),
> > + __clk_get_name(power->pixel_clk_rcg));
>
> Same comment here, this debug can go in the main patch.
Is there any reason why assigned-clock-parents wouldn't work here?
> > diff --git a/drivers/gpu/drm/msm/dp/dp_power.h b/drivers/gpu/drm/msm/dp/dp_power.h
> > index d1adaaf..5effd32 100644
> > --- a/drivers/gpu/drm/msm/dp/dp_power.h
> > +++ b/drivers/gpu/drm/msm/dp/dp_power.h
> > @@ -24,6 +24,7 @@
> > * @init: initializes the regulators/core clocks/GPIOs/pinctrl
> > * @deinit: turns off the regulators/core clocks/GPIOs/pinctrl
> > * @clk_enable: enable/disable the DP clocks
> > + * @set_link_clk_parent: set the parent of DP link clock
> > * @set_pixel_clk_parent: set the parent of DP pixel clock
> > */
> > struct dp_power {
[...]
> > +
> > +static int clk_mux_determine_rate(struct clk_hw *hw,
> > + struct clk_rate_request *req)
> > +{
> > + int ret = 0;
>
> no need to init this to 0
>
> > +
> > + ret = __clk_mux_determine_rate_closest(hw, req);
> > + if (ret)
> > + return ret;
> > +
> > + /* Set the new parent of mux if there is a new valid parent */
> > + if (hw->clk && req->best_parent_hw->clk)
> > + clk_set_parent(hw->clk, req->best_parent_hw->clk);
>
> What about the return value? All other clk_set_parent calls in this patch are
> also unchecked, so please add those as well.
The determine_rate clk_op should _never_ change clk hardware. It's a
function that's about determining what rate a clk can support based on
the rate that's requested and what the hardware can do.
Ok, let me just take a pass at the overall clk parts of this patch
instead of doing an "and also" review on Sean's review.
More information about the Freedreno
mailing list