mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
ARM: tegra: migrate to new clock code
Migrate Tegra clock support to drivers/clk/tegra, this involves moving: 1. definition of tegra_cpu_car_ops to clk.c 2. definition of reset functions to clk-peripheral.c 3. change parent of cpu clock. 4. Remove legacy clock initialization. 5. Initialize clocks using DT. 6. Remove all instance of mach/clk.h Signed-off-by: Prashant Gaikwad <[email protected]> [swarren: use to_clk_periph_gate().] Signed-off-by: Stephen Warren <[email protected]>
This commit is contained in:
parent
b08e8c0ecc
commit
61fd290d21
21 changed files with 73 additions and 142 deletions
|
|
@ -110,6 +110,44 @@ static void clk_periph_disable(struct clk_hw *hw)
|
|||
gate_ops->disable(gate_hw);
|
||||
}
|
||||
|
||||
void tegra_periph_reset_deassert(struct clk *c)
|
||||
{
|
||||
struct clk_hw *hw = __clk_get_hw(c);
|
||||
struct tegra_clk_periph *periph = to_clk_periph(hw);
|
||||
struct tegra_clk_periph_gate *gate;
|
||||
|
||||
if (periph->magic != TEGRA_CLK_PERIPH_MAGIC) {
|
||||
gate = to_clk_periph_gate(hw);
|
||||
if (gate->magic != TEGRA_CLK_PERIPH_GATE_MAGIC) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
gate = &periph->gate;
|
||||
}
|
||||
|
||||
tegra_periph_reset(gate, 0);
|
||||
}
|
||||
|
||||
void tegra_periph_reset_assert(struct clk *c)
|
||||
{
|
||||
struct clk_hw *hw = __clk_get_hw(c);
|
||||
struct tegra_clk_periph *periph = to_clk_periph(hw);
|
||||
struct tegra_clk_periph_gate *gate;
|
||||
|
||||
if (periph->magic != TEGRA_CLK_PERIPH_MAGIC) {
|
||||
gate = to_clk_periph_gate(hw);
|
||||
if (gate->magic != TEGRA_CLK_PERIPH_GATE_MAGIC) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
gate = &periph->gate;
|
||||
}
|
||||
|
||||
tegra_periph_reset(gate, 1);
|
||||
}
|
||||
|
||||
const struct clk_ops tegra_clk_periph_ops = {
|
||||
.get_parent = clk_periph_get_parent,
|
||||
.set_parent = clk_periph_set_parent,
|
||||
|
|
|
|||
|
|
@ -16,9 +16,14 @@
|
|||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/clk/tegra.h>
|
||||
|
||||
#include "clk.h"
|
||||
|
||||
/* Global data of Tegra CPU CAR ops */
|
||||
struct tegra_cpu_car_ops *tegra_cpu_car_ops;
|
||||
|
||||
void __init tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list,
|
||||
struct clk *clks[], int clk_max)
|
||||
{
|
||||
|
|
@ -67,3 +72,14 @@ void __init tegra_init_from_table(struct tegra_clk_init_table *tbl,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const struct of_device_id tegra_dt_clk_match[] = {
|
||||
{ .compatible = "nvidia,tegra20-car", .data = tegra20_clock_init },
|
||||
{ .compatible = "nvidia,tegra30-car", .data = tegra30_clock_init },
|
||||
{ }
|
||||
};
|
||||
|
||||
void __init tegra_clocks_init(void)
|
||||
{
|
||||
of_clk_init(tegra_dt_clk_match);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue