Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: tegra: Fix PLLE SS coefficients

The PLLE SS coefficients are different between Tegra210 and Tegra114.
Add SoC generation specific versions for Tegra114 and Tegra210 and use
them in their respective ->enable() callbacks.

Signed-off-by: Mark Kuo <mkuo@nvidia.com>
Signed-off-by: Rhyland Klein <rklein@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Mark Kuo and committed by
Thierry Reding
442f53fb fd2963b0

+12 -6
+12 -6
drivers/clk/tegra/clk-pll.c
··· 86 86 #define PLLE_SS_DISABLE (PLLE_SS_CNTL_BYPASS_SS | PLLE_SS_CNTL_INTERP_RESET |\ 87 87 PLLE_SS_CNTL_SSC_BYP) 88 88 #define PLLE_SS_MAX_MASK 0x1ff 89 - #define PLLE_SS_MAX_VAL 0x25 89 + #define PLLE_SS_MAX_VAL_TEGRA114 0x25 90 + #define PLLE_SS_MAX_VAL_TEGRA210 0x21 90 91 #define PLLE_SS_INC_MASK (0xff << 16) 91 92 #define PLLE_SS_INC_VAL (0x1 << 16) 92 93 #define PLLE_SS_INCINTRV_MASK (0x3f << 24) 93 - #define PLLE_SS_INCINTRV_VAL (0x20 << 24) 94 + #define PLLE_SS_INCINTRV_VAL_TEGRA114 (0x20 << 24) 95 + #define PLLE_SS_INCINTRV_VAL_TEGRA210 (0x23 << 24) 94 96 #define PLLE_SS_COEFFICIENTS_MASK \ 95 97 (PLLE_SS_MAX_MASK | PLLE_SS_INC_MASK | PLLE_SS_INCINTRV_MASK) 96 - #define PLLE_SS_COEFFICIENTS_VAL \ 97 - (PLLE_SS_MAX_VAL | PLLE_SS_INC_VAL | PLLE_SS_INCINTRV_VAL) 98 + #define PLLE_SS_COEFFICIENTS_VAL_TEGRA114 \ 99 + (PLLE_SS_MAX_VAL_TEGRA114 | PLLE_SS_INC_VAL |\ 100 + PLLE_SS_INCINTRV_VAL_TEGRA114) 101 + #define PLLE_SS_COEFFICIENTS_VAL_TEGRA210 \ 102 + (PLLE_SS_MAX_VAL_TEGRA210 | PLLE_SS_INC_VAL |\ 103 + PLLE_SS_INCINTRV_VAL_TEGRA210) 98 104 99 105 #define PLLE_AUX_PLLP_SEL BIT(2) 100 106 #define PLLE_AUX_USE_LOCKDET BIT(3) ··· 1434 1428 val = pll_readl(PLLE_SS_CTRL, pll); 1435 1429 val &= ~(PLLE_SS_CNTL_CENTER | PLLE_SS_CNTL_INVERT); 1436 1430 val &= ~PLLE_SS_COEFFICIENTS_MASK; 1437 - val |= PLLE_SS_COEFFICIENTS_VAL; 1431 + val |= PLLE_SS_COEFFICIENTS_VAL_TEGRA114; 1438 1432 pll_writel(val, PLLE_SS_CTRL, pll); 1439 1433 val &= ~(PLLE_SS_CNTL_SSC_BYP | PLLE_SS_CNTL_BYPASS_SS); 1440 1434 pll_writel(val, PLLE_SS_CTRL, pll); ··· 2071 2065 val = pll_readl(PLLE_SS_CTRL, pll); 2072 2066 val &= ~(PLLE_SS_CNTL_CENTER | PLLE_SS_CNTL_INVERT); 2073 2067 val &= ~PLLE_SS_COEFFICIENTS_MASK; 2074 - val |= PLLE_SS_COEFFICIENTS_VAL; 2068 + val |= PLLE_SS_COEFFICIENTS_VAL_TEGRA210; 2075 2069 pll_writel(val, PLLE_SS_CTRL, pll); 2076 2070 val &= ~(PLLE_SS_CNTL_SSC_BYP | PLLE_SS_CNTL_BYPASS_SS); 2077 2071 pll_writel(val, PLLE_SS_CTRL, pll);