Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1486607

Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate

From Chen-Yu Tsai <wens@csie.org>
Newsgroups linux.kernel
Subject Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate
Date 2016-09-19 17:40 +0200
Message-ID <sj8PL-7bp-21@gated-at.bofh.it> (permalink)
References <shGCd-dP-13@gated-at.bofh.it> <shGCe-dP-35@gated-at.bofh.it> <siPN8-3Fd-25@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, Sep 19, 2016 at 3:16 AM, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:
> Hi,
>
> On Thu, Sep 15, 2016 at 11:14:02PM +0800, Chen-Yu Tsai wrote:
>> With display pixel clocks we want to have the closest possible clock
>> rate, to minimize timing and refresh rate skews. Whether the actual
>> clock rate is higher or lower than the requested rate is less important.
>>
>> Also check candidates against the requested rate, rather than the
>> ideal parent rate, the varying dividers also influence the difference
>> between the requested rate and the rounded rate.
>>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>  drivers/gpu/drm/sun4i/sun4i_dotclock.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/sun4i/sun4i_dotclock.c b/drivers/gpu/drm/sun4i/sun4i_dotclock.c
>> index 3eb99784f371..d401156490f3 100644
>> --- a/drivers/gpu/drm/sun4i/sun4i_dotclock.c
>> +++ b/drivers/gpu/drm/sun4i/sun4i_dotclock.c
>> @@ -90,7 +90,8 @@ static long sun4i_dclk_round_rate(struct clk_hw *hw, unsigned long rate,
>>                       goto out;
>>               }
>>
>> -             if ((rounded < ideal) && (rounded > best_parent)) {
>> +             if (abs(rate - rounded / i) <
>> +                 abs(rate - best_parent / best_div)) {
>
> I'm not sure what you're trying to do here. Why is the divider involved?

Say you want the dotclock at X, so you try Y = 6 ~ 127 for the divider.
Now you're asking the CCF to round (X*Y).

In the original code, you were comparing the result of rounding (X * Y).

                if ((rounded < ideal) && (rounded > best_parent)) {
                        best_parent = rounded;
                        best_div = i;
                }

where ideal = X * Y (i in the code). Given the divider increases in
the loop, you are actually not closing in on the best divider, but the
highest divider that doesn't give a higher rate than the ideal rate.

Including the divider makes it compare the actual dot clock frequency
if a given divider was used.

Does this makes sense? Explaining this kind of makes my head spin...

Regards
ChenYu

>
> Maxime
>
> --
> Maxime Ripard, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/4] drm/sun4i: rgb and dotclock misc fixes and improvements Chen-Yu Tsai <wens@csie.org> - 2016-09-15 17:20 +0200
  [PATCH 1/4] drm/sun4i: rgb: Declare RGB encoder and connector as MIPI DPI Chen-Yu Tsai <wens@csie.org> - 2016-09-15 17:20 +0200
    Re: [PATCH 1/4] drm/sun4i: rgb: Declare RGB encoder and connector as  MIPI DPI Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-18 21:20 +0200
      Re: [PATCH 1/4] drm/sun4i: rgb: Declare RGB encoder and connector as  MIPI DPI Chen-Yu Tsai <wens@csie.org> - 2016-09-19 17:30 +0200
  [PATCH 2/4] drm/sun4i: dotclock: Fix clock rate read back calcation Chen-Yu Tsai <wens@csie.org> - 2016-09-15 17:20 +0200
    Re: [PATCH 2/4] drm/sun4i: dotclock: Fix clock rate read back  calcation Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-18 21:20 +0200
  [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate Chen-Yu Tsai <wens@csie.org> - 2016-09-15 17:20 +0200
    Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-18 21:20 +0200
      Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate Chen-Yu Tsai <wens@csie.org> - 2016-09-19 17:40 +0200
        Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-20 17:50 +0200
    Re: [PATCH 4/4] drm/sun4i: dotclock: Round to closest clock rate Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-20 17:50 +0200
  [PATCH 3/4] drm/sun4i: dotclock: Allow divider = 127 Chen-Yu Tsai <wens@csie.org> - 2016-09-15 17:20 +0200
    Re: [PATCH 3/4] drm/sun4i: dotclock: Allow divider = 127 Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-09-18 21:20 +0200

csiph-web