diff options
author | Thierry Reding <treding@nvidia.com> | 2016-04-28 06:43:15 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2016-04-28 06:43:15 -0400 |
commit | 0e55714902857f71ce3f9144f6a73fb8321229ef (patch) | |
tree | 3ae890b9c2ef525ff6177eb8a2ee154142829719 | |
parent | f55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff) | |
parent | 3358d2d9f47af86bdd71edb24b361f72a54ec04e (diff) |
Merge branch 'for-4.7/clk' into for-4.7/phy
-rw-r--r-- | drivers/clk/tegra/clk-tegra210.c | 58 | ||||
-rw-r--r-- | include/linux/clk/tegra.h | 5 |
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 | ||
432 | void 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 | } | ||
443 | EXPORT_SYMBOL_GPL(tegra210_xusb_pll_hw_control_enable); | ||
444 | |||
445 | void 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 | } | ||
453 | EXPORT_SYMBOL_GPL(tegra210_xusb_pll_hw_sequence_start); | ||
454 | |||
455 | void 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 | } | ||
465 | EXPORT_SYMBOL_GPL(tegra210_sata_pll_hw_control_enable); | ||
466 | |||
467 | void 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 | } | ||
475 | EXPORT_SYMBOL_GPL(tegra210_sata_pll_hw_sequence_start); | ||
476 | |||
419 | static inline void _pll_misc_chk_default(void __iomem *base, | 477 | static 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 | ||
124 | extern void tegra210_xusb_pll_hw_control_enable(void); | ||
125 | extern void tegra210_xusb_pll_hw_sequence_start(void); | ||
126 | extern void tegra210_sata_pll_hw_control_enable(void); | ||
127 | extern void tegra210_sata_pll_hw_sequence_start(void); | ||
128 | |||
124 | #endif /* __LINUX_CLK_TEGRA_H_ */ | 129 | #endif /* __LINUX_CLK_TEGRA_H_ */ |