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

clk: tegra: Add SATA seq input control

This will be used by the powergating driver to ensure proper sequencer
state when the SATA domain is powergated.

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Peter De Schrijver and committed by
Thierry Reding
59af78d7 68d724ce

+26
+25
drivers/clk/tegra/clk-tegra210.c
··· 181 181 #define SATA_PLL_CFG0 0x490 182 182 #define SATA_PLL_CFG0_PADPLL_RESET_SWCTL BIT(0) 183 183 #define SATA_PLL_CFG0_PADPLL_USE_LOCKDET BIT(2) 184 + #define SATA_PLL_CFG0_SATA_SEQ_IN_SWCTL BIT(4) 185 + #define SATA_PLL_CFG0_SATA_SEQ_RESET_INPUT_VALUE BIT(5) 186 + #define SATA_PLL_CFG0_SATA_SEQ_LANE_PD_INPUT_VALUE BIT(6) 187 + #define SATA_PLL_CFG0_SATA_SEQ_PADPLL_PD_INPUT_VALUE BIT(7) 188 + 184 189 #define SATA_PLL_CFG0_PADPLL_SLEEP_IDDQ BIT(13) 185 190 #define SATA_PLL_CFG0_SEQ_ENABLE BIT(24) 186 191 ··· 487 482 writel_relaxed(val, clk_base + SATA_PLL_CFG0); 488 483 } 489 484 EXPORT_SYMBOL_GPL(tegra210_sata_pll_hw_sequence_start); 485 + 486 + void tegra210_set_sata_pll_seq_sw(bool state) 487 + { 488 + u32 val; 489 + 490 + val = readl_relaxed(clk_base + SATA_PLL_CFG0); 491 + if (state) { 492 + val |= SATA_PLL_CFG0_SATA_SEQ_IN_SWCTL; 493 + val |= SATA_PLL_CFG0_SATA_SEQ_RESET_INPUT_VALUE; 494 + val |= SATA_PLL_CFG0_SATA_SEQ_LANE_PD_INPUT_VALUE; 495 + val |= SATA_PLL_CFG0_SATA_SEQ_PADPLL_PD_INPUT_VALUE; 496 + } else { 497 + val &= ~SATA_PLL_CFG0_SATA_SEQ_IN_SWCTL; 498 + val &= ~SATA_PLL_CFG0_SATA_SEQ_RESET_INPUT_VALUE; 499 + val &= ~SATA_PLL_CFG0_SATA_SEQ_LANE_PD_INPUT_VALUE; 500 + val &= ~SATA_PLL_CFG0_SATA_SEQ_PADPLL_PD_INPUT_VALUE; 501 + } 502 + writel_relaxed(val, clk_base + SATA_PLL_CFG0); 503 + } 504 + EXPORT_SYMBOL_GPL(tegra210_set_sata_pll_seq_sw); 490 505 491 506 static inline void _pll_misc_chk_default(void __iomem *base, 492 507 struct tegra_clk_pll_params *params,
+1
include/linux/clk/tegra.h
··· 125 125 extern void tegra210_xusb_pll_hw_sequence_start(void); 126 126 extern void tegra210_sata_pll_hw_control_enable(void); 127 127 extern void tegra210_sata_pll_hw_sequence_start(void); 128 + extern void tegra210_set_sata_pll_seq_sw(bool state); 128 129 extern void tegra210_put_utmipll_in_iddq(void); 129 130 extern void tegra210_put_utmipll_out_iddq(void); 130 131