aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2016-04-28 06:43:15 -0400
committerThierry Reding <treding@nvidia.com>2016-04-28 06:43:15 -0400
commit0e55714902857f71ce3f9144f6a73fb8321229ef (patch)
tree3ae890b9c2ef525ff6177eb8a2ee154142829719
parentf55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff)
parent3358d2d9f47af86bdd71edb24b361f72a54ec04e (diff)
Merge branch 'for-4.7/clk' into for-4.7/phy
-rw-r--r--drivers/clk/tegra/clk-tegra210.c58
-rw-r--r--include/linux/clk/tegra.h5
2 files changed, 63 insertions, 0 deletions
diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c
index 637041fd53ad..3d0edee1f9fe 100644
--- a/drivers/clk/tegra/clk-tegra210.c
+++ b/drivers/clk/tegra/clk-tegra210.c
@@ -175,6 +175,19 @@
175#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERDOWN BIT(14) 175#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERDOWN BIT(14)
176#define UTMIP_PLL_CFG1_FORCE_PLL_ACTIVE_POWERDOWN BIT(12) 176#define UTMIP_PLL_CFG1_FORCE_PLL_ACTIVE_POWERDOWN BIT(12)
177 177
178#define SATA_PLL_CFG0 0x490
179#define SATA_PLL_CFG0_PADPLL_RESET_SWCTL BIT(0)
180#define SATA_PLL_CFG0_PADPLL_USE_LOCKDET BIT(2)
181#define SATA_PLL_CFG0_PADPLL_SLEEP_IDDQ BIT(13)
182#define SATA_PLL_CFG0_SEQ_ENABLE BIT(24)
183
184#define XUSBIO_PLL_CFG0 0x51c
185#define XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL BIT(0)
186#define XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL BIT(2)
187#define XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET BIT(6)
188#define XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ BIT(13)
189#define XUSBIO_PLL_CFG0_SEQ_ENABLE BIT(24)
190
178#define UTMIPLL_HW_PWRDN_CFG0 0x52c 191#define UTMIPLL_HW_PWRDN_CFG0 0x52c
179#define UTMIPLL_HW_PWRDN_CFG0_UTMIPLL_LOCK BIT(31) 192#define UTMIPLL_HW_PWRDN_CFG0_UTMIPLL_LOCK BIT(31)
180#define UTMIPLL_HW_PWRDN_CFG0_SEQ_START_STATE BIT(25) 193#define UTMIPLL_HW_PWRDN_CFG0_SEQ_START_STATE BIT(25)
@@ -416,6 +429,51 @@ static const char *mux_pllmcp_clkm[] = {
416#define PLLU_MISC0_WRITE_MASK 0xbfffffff 429#define PLLU_MISC0_WRITE_MASK 0xbfffffff
417#define PLLU_MISC1_WRITE_MASK 0x00000007 430#define PLLU_MISC1_WRITE_MASK 0x00000007
418 431
432void tegra210_xusb_pll_hw_control_enable(void)
433{
434 u32 val;
435
436 val = readl_relaxed(clk_base + XUSBIO_PLL_CFG0);
437 val &= ~(XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL |
438 XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL);
439 val |= XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET |
440 XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ;
441 writel_relaxed(val, clk_base + XUSBIO_PLL_CFG0);
442}
443EXPORT_SYMBOL_GPL(tegra210_xusb_pll_hw_control_enable);
444
445void tegra210_xusb_pll_hw_sequence_start(void)
446{
447 u32 val;
448
449 val = readl_relaxed(clk_base + XUSBIO_PLL_CFG0);
450 val |= XUSBIO_PLL_CFG0_SEQ_ENABLE;
451 writel_relaxed(val, clk_base + XUSBIO_PLL_CFG0);
452}
453EXPORT_SYMBOL_GPL(tegra210_xusb_pll_hw_sequence_start);
454
455void tegra210_sata_pll_hw_control_enable(void)
456{
457 u32 val;
458
459 val = readl_relaxed(clk_base + SATA_PLL_CFG0);
460 val &= ~SATA_PLL_CFG0_PADPLL_RESET_SWCTL;
461 val |= SATA_PLL_CFG0_PADPLL_USE_LOCKDET |
462 SATA_PLL_CFG0_PADPLL_SLEEP_IDDQ;
463 writel_relaxed(val, clk_base + SATA_PLL_CFG0);
464}
465EXPORT_SYMBOL_GPL(tegra210_sata_pll_hw_control_enable);
466
467void tegra210_sata_pll_hw_sequence_start(void)
468{
469 u32 val;
470
471 val = readl_relaxed(clk_base + SATA_PLL_CFG0);
472 val |= SATA_PLL_CFG0_SEQ_ENABLE;
473 writel_relaxed(val, clk_base + SATA_PLL_CFG0);
474}
475EXPORT_SYMBOL_GPL(tegra210_sata_pll_hw_sequence_start);
476
419static inline void _pll_misc_chk_default(void __iomem *base, 477static inline void _pll_misc_chk_default(void __iomem *base,
420 struct tegra_clk_pll_params *params, 478 struct tegra_clk_pll_params *params,
421 u8 misc_num, u32 default_val, u32 mask) 479 u8 misc_num, u32 default_val, u32 mask)
diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
index 57bf7aab4516..7007a5f48080 100644
--- a/include/linux/clk/tegra.h
+++ b/include/linux/clk/tegra.h
@@ -121,4 +121,9 @@ static inline void tegra_cpu_clock_resume(void)
121} 121}
122#endif 122#endif
123 123
124extern void tegra210_xusb_pll_hw_control_enable(void);
125extern void tegra210_xusb_pll_hw_sequence_start(void);
126extern void tegra210_sata_pll_hw_control_enable(void);
127extern void tegra210_sata_pll_hw_sequence_start(void);
128
124#endif /* __LINUX_CLK_TEGRA_H_ */ 129#endif /* __LINUX_CLK_TEGRA_H_ */