|
@@ -107,13 +107,6 @@
|
|
|
#define PLLC_OUT 0x84
|
|
|
#define PLLM_OUT 0x94
|
|
|
|
|
|
-#define PMC_CLK_OUT_CNTRL 0x1a8
|
|
|
-#define PMC_DPD_PADS_ORIDE 0x1c
|
|
|
-#define PMC_DPD_PADS_ORIDE_BLINK_ENB 20
|
|
|
-#define PMC_CTRL 0
|
|
|
-#define PMC_CTRL_BLINK_ENB 7
|
|
|
-#define PMC_BLINK_TIMER 0x40
|
|
|
-
|
|
|
#define OSC_CTRL 0x50
|
|
|
#define OSC_CTRL_OSC_FREQ_SHIFT 28
|
|
|
#define OSC_CTRL_PLL_REF_DIV_SHIFT 26
|
|
@@ -177,7 +170,6 @@ static DEFINE_SPINLOCK(pll_d_lock);
|
|
|
static DEFINE_SPINLOCK(pll_d2_lock);
|
|
|
static DEFINE_SPINLOCK(pll_u_lock);
|
|
|
static DEFINE_SPINLOCK(pll_re_lock);
|
|
|
-static DEFINE_SPINLOCK(clk_out_lock);
|
|
|
static DEFINE_SPINLOCK(sysrate_lock);
|
|
|
|
|
|
static struct div_nmp pllxc_nmp = {
|
|
@@ -1199,71 +1191,6 @@ static void __init tegra114_pll_init(void __iomem *clk_base,
|
|
|
clks[TEGRA114_CLK_PLL_E_OUT0] = clk;
|
|
|
}
|
|
|
|
|
|
-static const char *clk_out1_parents[] = { "clk_m", "clk_m_div2",
|
|
|
- "clk_m_div4", "extern1",
|
|
|
-};
|
|
|
-
|
|
|
-static const char *clk_out2_parents[] = { "clk_m", "clk_m_div2",
|
|
|
- "clk_m_div4", "extern2",
|
|
|
-};
|
|
|
-
|
|
|
-static const char *clk_out3_parents[] = { "clk_m", "clk_m_div2",
|
|
|
- "clk_m_div4", "extern3",
|
|
|
-};
|
|
|
-
|
|
|
-static void __init tegra114_pmc_clk_init(void __iomem *pmc_base)
|
|
|
-{
|
|
|
- struct clk *clk;
|
|
|
-
|
|
|
- /* clk_out_1 */
|
|
|
- clk = clk_register_mux(NULL, "clk_out_1_mux", clk_out1_parents,
|
|
|
- ARRAY_SIZE(clk_out1_parents),
|
|
|
- CLK_SET_RATE_NO_REPARENT,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 6, 3, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_1_MUX] = clk;
|
|
|
- clk = clk_register_gate(NULL, "clk_out_1", "clk_out_1_mux", 0,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 2, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_1] = clk;
|
|
|
-
|
|
|
- /* clk_out_2 */
|
|
|
- clk = clk_register_mux(NULL, "clk_out_2_mux", clk_out2_parents,
|
|
|
- ARRAY_SIZE(clk_out2_parents),
|
|
|
- CLK_SET_RATE_NO_REPARENT,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 14, 3, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_2_MUX] = clk;
|
|
|
- clk = clk_register_gate(NULL, "clk_out_2", "clk_out_2_mux", 0,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 10, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_2] = clk;
|
|
|
-
|
|
|
- /* clk_out_3 */
|
|
|
- clk = clk_register_mux(NULL, "clk_out_3_mux", clk_out3_parents,
|
|
|
- ARRAY_SIZE(clk_out3_parents),
|
|
|
- CLK_SET_RATE_NO_REPARENT,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 22, 3, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_3_MUX] = clk;
|
|
|
- clk = clk_register_gate(NULL, "clk_out_3", "clk_out_3_mux", 0,
|
|
|
- pmc_base + PMC_CLK_OUT_CNTRL, 18, 0,
|
|
|
- &clk_out_lock);
|
|
|
- clks[TEGRA114_CLK_CLK_OUT_3] = clk;
|
|
|
-
|
|
|
- /* blink */
|
|
|
- /* clear the blink timer register to directly output clk_32k */
|
|
|
- writel_relaxed(0, pmc_base + PMC_BLINK_TIMER);
|
|
|
- clk = clk_register_gate(NULL, "blink_override", "clk_32k", 0,
|
|
|
- pmc_base + PMC_DPD_PADS_ORIDE,
|
|
|
- PMC_DPD_PADS_ORIDE_BLINK_ENB, 0, NULL);
|
|
|
- clk = clk_register_gate(NULL, "blink", "blink_override", 0,
|
|
|
- pmc_base + PMC_CTRL,
|
|
|
- PMC_CTRL_BLINK_ENB, 0, NULL);
|
|
|
- clks[TEGRA114_CLK_BLINK] = clk;
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
static const char *sclk_parents[] = { "clk_m", "pll_c_out1", "pll_p_out4",
|
|
|
"pll_p", "pll_p_out2", "unused",
|
|
|
"clk_32k", "pll_m_out1" };
|
|
@@ -1612,7 +1539,7 @@ static void __init tegra114_clock_init(struct device_node *np)
|
|
|
tegra114_pll_init(clk_base, pmc_base);
|
|
|
tegra114_periph_clk_init(clk_base, pmc_base);
|
|
|
tegra_audio_clk_init(clk_base, pmc_base, tegra114_clks, &pll_a_params);
|
|
|
- tegra114_pmc_clk_init(pmc_base);
|
|
|
+ tegra_pmc_clk_init(pmc_base, tegra114_clks);
|
|
|
tegra114_super_clk_init(clk_base);
|
|
|
|
|
|
tegra_add_of_provider(np);
|