Skip to content

Commit a70812b

Browse files
lkundrakbebarino
authored andcommitted
clk: mmp2: Add PLLs that are available on MMP3
There are more PLLs on MMP3 and are configured slightly differently. Tested on a MMP3-based Dell Wyse 3020 machine. Signed-off-by: Lubomir Rintel <[email protected]> Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]>
1 parent 4d6da65 commit a70812b

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

drivers/clk/mmp/clk-of-mmp2.c

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,16 @@
5757
#define APMU_USBHSIC0 0xf8
5858
#define APMU_USBHSIC1 0xfc
5959

60-
#define MPMU_FCCR 0x8
61-
#define MPMU_POSR 0x10
62-
#define MPMU_UART_PLL 0x14
63-
#define MPMU_PLL2_CR 0x34
60+
#define MPMU_FCCR 0x8
61+
#define MPMU_POSR 0x10
62+
#define MPMU_UART_PLL 0x14
63+
#define MPMU_PLL2_CR 0x34
64+
/* MMP3 specific below */
65+
#define MPMU_PLL3_CR 0x50
66+
#define MPMU_PLL3_CTRL1 0x58
67+
#define MPMU_PLL1_CTRL 0x5c
68+
#define MPMU_PLL_DIFF_CTRL 0x68
69+
#define MPMU_PLL2_CTRL1 0x414
6470

6571
enum mmp2_clk_model {
6672
CLK_MODEL_MMP2,
@@ -86,6 +92,14 @@ static struct mmp_param_pll_clk pll_clks[] = {
8692
{MMP2_CLK_PLL2, "pll2", 0, MPMU_PLL2_CR, 0x0300, MPMU_PLL2_CR, 10},
8793
};
8894

95+
static struct mmp_param_pll_clk mmp3_pll_clks[] = {
96+
{MMP2_CLK_PLL2, "pll1", 797330000, MPMU_FCCR, 0x4000, MPMU_POSR, 0, 26000000, MPMU_PLL1_CTRL, 25},
97+
{MMP2_CLK_PLL2, "pll2", 0, MPMU_PLL2_CR, 0x0300, MPMU_PLL2_CR, 10, 26000000, MPMU_PLL2_CTRL1, 25},
98+
{MMP3_CLK_PLL1_P, "pll1_p", 0, MPMU_PLL_DIFF_CTRL, 0x0010, 0, 0, 797330000, MPMU_PLL_DIFF_CTRL, 0},
99+
{MMP3_CLK_PLL2_P, "pll2_p", 0, MPMU_PLL_DIFF_CTRL, 0x0100, MPMU_PLL2_CR, 10, 26000000, MPMU_PLL_DIFF_CTRL, 5},
100+
{MMP3_CLK_PLL3, "pll3", 0, MPMU_PLL3_CR, 0x0300, MPMU_PLL3_CR, 10, 26000000, MPMU_PLL3_CTRL1, 25},
101+
};
102+
89103
static struct mmp_param_fixed_factor_clk fixed_factor_clks[] = {
90104
{MMP2_CLK_PLL1_2, "pll1_2", "pll1", 1, 2, 0},
91105
{MMP2_CLK_PLL1_4, "pll1_4", "pll1_2", 1, 2, 0},
@@ -127,9 +141,15 @@ static void mmp2_pll_init(struct mmp2_clk_unit *pxa_unit)
127141
mmp_register_fixed_rate_clks(unit, fixed_rate_clks,
128142
ARRAY_SIZE(fixed_rate_clks));
129143

130-
mmp_register_pll_clks(unit, pll_clks,
131-
pxa_unit->mpmu_base,
132-
ARRAY_SIZE(pll_clks));
144+
if (pxa_unit->model == CLK_MODEL_MMP3) {
145+
mmp_register_pll_clks(unit, mmp3_pll_clks,
146+
pxa_unit->mpmu_base,
147+
ARRAY_SIZE(mmp3_pll_clks));
148+
} else {
149+
mmp_register_pll_clks(unit, pll_clks,
150+
pxa_unit->mpmu_base,
151+
ARRAY_SIZE(pll_clks));
152+
}
133153

134154
mmp_register_fixed_factor_clks(unit, fixed_factor_clks,
135155
ARRAY_SIZE(fixed_factor_clks));

0 commit comments

Comments
 (0)