]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/5.1.5/clk-tegra-fix-pllm-programming-on-tegra124-when-pmc-overrides-divider.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 5.1.5 / clk-tegra-fix-pllm-programming-on-tegra124-when-pmc-overrides-divider.patch
1 From 40db569d6769ffa3864fd1b89616b1a7323568a8 Mon Sep 17 00:00:00 2001
2 From: Dmitry Osipenko <digetx@gmail.com>
3 Date: Fri, 12 Apr 2019 00:48:34 +0300
4 Subject: clk: tegra: Fix PLLM programming on Tegra124+ when PMC overrides divider
5
6 From: Dmitry Osipenko <digetx@gmail.com>
7
8 commit 40db569d6769ffa3864fd1b89616b1a7323568a8 upstream.
9
10 There are wrongly set parenthesis in the code that are resulting in a
11 wrong configuration being programmed for PLLM. The original fix was made
12 by Danny Huang in the downstream kernel. The patch was tested on Nyan Big
13 Tegra124 chromebook, PLLM rate changing works correctly now and system
14 doesn't lock up after changing the PLLM rate due to EMC scaling.
15
16 Cc: <stable@vger.kernel.org>
17 Tested-by: Steev Klimaszewski <steev@kali.org>
18 Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
19 Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
20 Signed-off-by: Stephen Boyd <sboyd@kernel.org>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22
23 ---
24 drivers/clk/tegra/clk-pll.c | 4 ++--
25 1 file changed, 2 insertions(+), 2 deletions(-)
26
27 --- a/drivers/clk/tegra/clk-pll.c
28 +++ b/drivers/clk/tegra/clk-pll.c
29 @@ -663,8 +663,8 @@ static void _update_pll_mnp(struct tegra
30 pll_override_writel(val, params->pmc_divp_reg, pll);
31
32 val = pll_override_readl(params->pmc_divnm_reg, pll);
33 - val &= ~(divm_mask(pll) << div_nmp->override_divm_shift) |
34 - ~(divn_mask(pll) << div_nmp->override_divn_shift);
35 + val &= ~((divm_mask(pll) << div_nmp->override_divm_shift) |
36 + (divn_mask(pll) << div_nmp->override_divn_shift));
37 val |= (cfg->m << div_nmp->override_divm_shift) |
38 (cfg->n << div_nmp->override_divn_shift);
39 pll_override_writel(val, params->pmc_divnm_reg, pll);