clk: tegra: Handle UTMIPLL IDDQ
Export UTMIPLL IDDQ functions. These will be needed when powergating the XUSB partition. Signed-off-by: BH Hsieh <bhsieh@nvidia.com> Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
committed by
Thierry Reding
parent
24c3ebef1a
commit
3843832fc8
@ -2313,6 +2313,32 @@ static const char * const aclk_parents[] = {
|
|||||||
"clk_m"
|
"clk_m"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void tegra210_put_utmipll_in_iddq(void)
|
||||||
|
{
|
||||||
|
u32 reg;
|
||||||
|
|
||||||
|
reg = readl_relaxed(clk_base + UTMIPLL_HW_PWRDN_CFG0);
|
||||||
|
|
||||||
|
if (reg & UTMIPLL_HW_PWRDN_CFG0_UTMIPLL_LOCK) {
|
||||||
|
pr_err("trying to assert IDDQ while UTMIPLL is locked\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
reg |= UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE;
|
||||||
|
writel_relaxed(reg, clk_base + UTMIPLL_HW_PWRDN_CFG0);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(tegra210_put_utmipll_in_iddq);
|
||||||
|
|
||||||
|
void tegra210_put_utmipll_out_iddq(void)
|
||||||
|
{
|
||||||
|
u32 reg;
|
||||||
|
|
||||||
|
reg = readl_relaxed(clk_base + UTMIPLL_HW_PWRDN_CFG0);
|
||||||
|
reg &= ~UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE;
|
||||||
|
writel_relaxed(reg, clk_base + UTMIPLL_HW_PWRDN_CFG0);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(tegra210_put_utmipll_out_iddq);
|
||||||
|
|
||||||
static __init void tegra210_periph_clk_init(void __iomem *clk_base,
|
static __init void tegra210_periph_clk_init(void __iomem *clk_base,
|
||||||
void __iomem *pmc_base)
|
void __iomem *pmc_base)
|
||||||
{
|
{
|
||||||
|
@ -125,5 +125,7 @@ extern void tegra210_xusb_pll_hw_control_enable(void);
|
|||||||
extern void tegra210_xusb_pll_hw_sequence_start(void);
|
extern void tegra210_xusb_pll_hw_sequence_start(void);
|
||||||
extern void tegra210_sata_pll_hw_control_enable(void);
|
extern void tegra210_sata_pll_hw_control_enable(void);
|
||||||
extern void tegra210_sata_pll_hw_sequence_start(void);
|
extern void tegra210_sata_pll_hw_sequence_start(void);
|
||||||
|
extern void tegra210_put_utmipll_in_iddq(void);
|
||||||
|
extern void tegra210_put_utmipll_out_iddq(void);
|
||||||
|
|
||||||
#endif /* __LINUX_CLK_TEGRA_H_ */
|
#endif /* __LINUX_CLK_TEGRA_H_ */
|
||||||
|
Reference in New Issue
Block a user