|
@@ -361,6 +361,11 @@ const struct clk_ops clk_divider_ops = {
|
|
|
};
|
|
|
EXPORT_SYMBOL_GPL(clk_divider_ops);
|
|
|
|
|
|
+const struct clk_ops clk_divider_ro_ops = {
|
|
|
+ .recalc_rate = clk_divider_recalc_rate,
|
|
|
+};
|
|
|
+EXPORT_SYMBOL_GPL(clk_divider_ro_ops);
|
|
|
+
|
|
|
static struct clk *_register_divider(struct device *dev, const char *name,
|
|
|
const char *parent_name, unsigned long flags,
|
|
|
void __iomem *reg, u8 shift, u8 width,
|
|
@@ -386,7 +391,10 @@ static struct clk *_register_divider(struct device *dev, const char *name,
|
|
|
}
|
|
|
|
|
|
init.name = name;
|
|
|
- init.ops = &clk_divider_ops;
|
|
|
+ if (clk_divider_flags & CLK_DIVIDER_READ_ONLY)
|
|
|
+ init.ops = &clk_divider_ro_ops;
|
|
|
+ else
|
|
|
+ init.ops = &clk_divider_ops;
|
|
|
init.flags = flags | CLK_IS_BASIC;
|
|
|
init.parent_names = (parent_name ? &parent_name: NULL);
|
|
|
init.num_parents = (parent_name ? 1 : 0);
|