drm/sun4i: dotclock: Fix clock rate read back calcation
authorChen-Yu Tsai <wens@csie.org>
Thu, 15 Sep 2016 15:14:00 +0000 (23:14 +0800)
committerMaxime Ripard <maxime.ripard@free-electrons.com>
Sun, 18 Sep 2016 19:12:17 +0000 (21:12 +0200)
When reading back the divider set in the register, we mask off the
bits that aren't part of the divider. Unfortunately the mask used
here was not converted from the field width.

Fix this by converting the field width to a proper bit mask.

Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/gpu/drm/sun4i/sun4i_dotclock.c

index 4332da48b1b302763faa0138b89d09995667b653..1b6c2253192e43bef4accfc3b975e614dc2d4756 100644 (file)
@@ -62,7 +62,7 @@ static unsigned long sun4i_dclk_recalc_rate(struct clk_hw *hw,
        regmap_read(dclk->regmap, SUN4I_TCON0_DCLK_REG, &val);
 
        val >>= SUN4I_TCON0_DCLK_DIV_SHIFT;
-       val &= SUN4I_TCON0_DCLK_DIV_WIDTH;
+       val &= (1 << SUN4I_TCON0_DCLK_DIV_WIDTH) - 1;
 
        if (!val)
                val = 1;