diff options
author | Thierry Reding <treding@nvidia.com> | 2015-03-26 12:43:56 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2015-04-10 10:04:20 -0400 |
commit | 63cc5a4da1fafedee24d8f5af67c1dd9d08f95c7 (patch) | |
tree | cd2e48fa02b4982784ad5cf7c09bd0eb90fc06c8 /drivers/clk/tegra/clk.h | |
parent | 699b477a0d3a5bc68034a1520a4337ea0a20f63b (diff) |
clk: tegra: Model oscillator as clock
Currently the Tegra clock driver simplifies the clock tree somewhat by
taking advantage of the fact that clk_m runs at the same frequency as
the oscillator. While that's true on all currently supported SoCs, it
does not apply to Tegra210 anymore. On Tegra210 clk_m is typically
divided down from the oscillator frequency. To support that setup, add
a separate clock for the oscillator that both clk_m and pll_ref derive
from.
Modify the tegra_osc_clk_init() function to take an additional divider
parameter for clk_m. Existing SoCs always pass in 1, whereas Tegra210
will read the divider from a register in the clock & reset controller.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/clk/tegra/clk.h')
-rw-r--r-- | drivers/clk/tegra/clk.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/clk/tegra/clk.h b/drivers/clk/tegra/clk.h index 48cb1c13ede5..d6ac00647faf 100644 --- a/drivers/clk/tegra/clk.h +++ b/drivers/clk/tegra/clk.h | |||
@@ -615,10 +615,10 @@ void tegra_periph_clk_init(void __iomem *clk_base, void __iomem *pmc_base, | |||
615 | 615 | ||
616 | void tegra_pmc_clk_init(void __iomem *pmc_base, struct tegra_clk *tegra_clks); | 616 | void tegra_pmc_clk_init(void __iomem *pmc_base, struct tegra_clk *tegra_clks); |
617 | void tegra_fixed_clk_init(struct tegra_clk *tegra_clks); | 617 | void tegra_fixed_clk_init(struct tegra_clk *tegra_clks); |
618 | int tegra_osc_clk_init(void __iomem *clk_base, struct tegra_clk *tegra_clks, | 618 | int tegra_osc_clk_init(void __iomem *clk_base, struct tegra_clk *clks, |
619 | unsigned long *input_freqs, int num, | 619 | unsigned long *input_freqs, unsigned int num, |
620 | unsigned long *osc_freq, | 620 | unsigned int clk_m_div, unsigned long *osc_freq, |
621 | unsigned long *pll_ref_freq); | 621 | unsigned long *pll_ref_freq); |
622 | void tegra_super_clk_gen4_init(void __iomem *clk_base, | 622 | void tegra_super_clk_gen4_init(void __iomem *clk_base, |
623 | void __iomem *pmc_base, struct tegra_clk *tegra_clks, | 623 | void __iomem *pmc_base, struct tegra_clk *tegra_clks, |
624 | struct tegra_clk_pll_params *pll_params); | 624 | struct tegra_clk_pll_params *pll_params); |