|
@@ -173,12 +173,16 @@ const struct clk_ops tegra_clk_periph_nodiv_ops = {
|
|
static struct clk *_tegra_clk_register_periph(const char *name,
|
|
static struct clk *_tegra_clk_register_periph(const char *name,
|
|
const char **parent_names, int num_parents,
|
|
const char **parent_names, int num_parents,
|
|
struct tegra_clk_periph *periph,
|
|
struct tegra_clk_periph *periph,
|
|
- void __iomem *clk_base, u32 offset, bool div,
|
|
|
|
|
|
+ void __iomem *clk_base, u32 offset,
|
|
unsigned long flags)
|
|
unsigned long flags)
|
|
{
|
|
{
|
|
struct clk *clk;
|
|
struct clk *clk;
|
|
struct clk_init_data init;
|
|
struct clk_init_data init;
|
|
struct tegra_clk_periph_regs *bank;
|
|
struct tegra_clk_periph_regs *bank;
|
|
|
|
+ bool div = !(periph->gate.flags & TEGRA_PERIPH_NO_DIV);
|
|
|
|
+
|
|
|
|
+ flags |= periph->gate.flags & TEGRA_PERIPH_NO_DIV ?
|
|
|
|
+ CLK_SET_RATE_PARENT : 0;
|
|
|
|
|
|
init.name = name;
|
|
init.name = name;
|
|
init.ops = div ? &tegra_clk_periph_ops : &tegra_clk_periph_nodiv_ops;
|
|
init.ops = div ? &tegra_clk_periph_ops : &tegra_clk_periph_nodiv_ops;
|
|
@@ -216,7 +220,7 @@ struct clk *tegra_clk_register_periph(const char *name,
|
|
u32 offset, unsigned long flags)
|
|
u32 offset, unsigned long flags)
|
|
{
|
|
{
|
|
return _tegra_clk_register_periph(name, parent_names, num_parents,
|
|
return _tegra_clk_register_periph(name, parent_names, num_parents,
|
|
- periph, clk_base, offset, true, flags);
|
|
|
|
|
|
+ periph, clk_base, offset, flags);
|
|
}
|
|
}
|
|
|
|
|
|
struct clk *tegra_clk_register_periph_nodiv(const char *name,
|
|
struct clk *tegra_clk_register_periph_nodiv(const char *name,
|
|
@@ -224,6 +228,7 @@ struct clk *tegra_clk_register_periph_nodiv(const char *name,
|
|
struct tegra_clk_periph *periph, void __iomem *clk_base,
|
|
struct tegra_clk_periph *periph, void __iomem *clk_base,
|
|
u32 offset)
|
|
u32 offset)
|
|
{
|
|
{
|
|
|
|
+ periph->gate.flags |= TEGRA_PERIPH_NO_DIV;
|
|
return _tegra_clk_register_periph(name, parent_names, num_parents,
|
|
return _tegra_clk_register_periph(name, parent_names, num_parents,
|
|
- periph, clk_base, offset, false, CLK_SET_RATE_PARENT);
|
|
|
|
|
|
+ periph, clk_base, offset, CLK_SET_RATE_PARENT);
|
|
}
|
|
}
|