4.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Chen-Yu Tsai <w...@csie.org>


[ Upstream commit d51fe3ba9773c8b6fc79f82bbe75d64baf604292 ]

The post-divider for the audio PLL is in bits [29:26], as specified
in the user manual, not [19:16] as currently programmed in the code.
The post-divider has a default register value of 2, i.e. a divider
of 3. This means the clock rate fed to the audio codec would be off.

This was discovered when porting sigma-delta modulation for the PLL
to sun5i, which needs the post-divider to be 1.

Fix the bit offset, so we do actually force the post-divider to a
certain value.

Fixes: 5e73761786d6 ("clk: sunxi-ng: Add sun5i CCU driver")
Signed-off-by: Chen-Yu Tsai <w...@csie.org>
Signed-off-by: Maxime Ripard <maxime.rip...@free-electrons.com>
Signed-off-by: Sasha Levin <alexander.le...@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/clk/sunxi-ng/ccu-sun5i.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/clk/sunxi-ng/ccu-sun5i.c
+++ b/drivers/clk/sunxi-ng/ccu-sun5i.c
@@ -982,8 +982,8 @@ static void __init sun5i_ccu_init(struct
 
        /* Force the PLL-Audio-1x divider to 4 */
        val = readl(reg + SUN5I_PLL_AUDIO_REG);
-       val &= ~GENMASK(19, 16);
-       writel(val | (3 << 16), reg + SUN5I_PLL_AUDIO_REG);
+       val &= ~GENMASK(29, 26);
+       writel(val | (3 << 26), reg + SUN5I_PLL_AUDIO_REG);
 
        /*
         * Use the peripheral PLL as the AHB parent, instead of CPU /


Reply via email to