Message ID | 1371820055-14147-1-git-send-email-s.nawrocki@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Quoting Sylwester Nawrocki (2013-06-21 06:07:35) > If a clock has CLK_GET_RATE_NOCACHE flag set the rate needs to > be recalculated, rather than referencing the cached value. > > Currently cached clk->rate is compared with new value to see if > anything needs to be done in clk_set_rate(). This may cause required > clock controller registers update to not happen when same clock > frequency value is being set subsequently. > > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Peter already sent a patch for this: https://git.linaro.org/gitweb?p=people/mturquette/linux.git;a=commitdiff;h=34e452a152efd25d654b7bc809df429337115b03 Regards, Mike > --- > drivers/clk/clk.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c > index 1144e8c..ffa304e 100644 > --- a/drivers/clk/clk.c > +++ b/drivers/clk/clk.c > @@ -1215,6 +1215,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate) > /* prevent racing with updates to the clock topology */ > clk_prepare_lock(); > > + if (clk->flags & CLK_GET_RATE_NOCACHE) > + __clk_recalc_rates(clk, 0); > + > /* bail early if nothing to do */ > if (rate == clk->rate) > goto out; > -- > 1.7.9.5
On 06/21/2013 06:16 PM, Mike Turquette wrote: > Quoting Sylwester Nawrocki (2013-06-21 06:07:35) >> > If a clock has CLK_GET_RATE_NOCACHE flag set the rate needs to >> > be recalculated, rather than referencing the cached value. >> > >> > Currently cached clk->rate is compared with new value to see if >> > anything needs to be done in clk_set_rate(). This may cause required >> > clock controller registers update to not happen when same clock >> > frequency value is being set subsequently. >> > >> > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> >> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > > Peter already sent a patch for this: > https://git.linaro.org/gitweb?p=people/mturquette/linux.git;a=commitdiff;h=34e452a152efd25d654b7bc809df429337115b03 Thanks Mike, that also helps. My apologies for not having it noticed earlier. I'm going to post a patch for the Exynos clock driver, which adds missing CLK_GET_RATE_NOCACHE flags to the ISP clock group and would be really effective together with the above one. Thanks, Sylwester
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 1144e8c..ffa304e 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -1215,6 +1215,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate) /* prevent racing with updates to the clock topology */ clk_prepare_lock(); + if (clk->flags & CLK_GET_RATE_NOCACHE) + __clk_recalc_rates(clk, 0); + /* bail early if nothing to do */ if (rate == clk->rate) goto out;