diff options
Diffstat (limited to 'drivers/clk/clk-divider.c')
-rw-r--r-- | drivers/clk/clk-divider.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index ded3ff4b91b9..aa1dacdaa39d 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c | |||
@@ -423,6 +423,12 @@ const struct clk_ops clk_divider_ops = { | |||
423 | }; | 423 | }; |
424 | EXPORT_SYMBOL_GPL(clk_divider_ops); | 424 | EXPORT_SYMBOL_GPL(clk_divider_ops); |
425 | 425 | ||
426 | const struct clk_ops clk_divider_ro_ops = { | ||
427 | .recalc_rate = clk_divider_recalc_rate, | ||
428 | .round_rate = clk_divider_round_rate, | ||
429 | }; | ||
430 | EXPORT_SYMBOL_GPL(clk_divider_ro_ops); | ||
431 | |||
426 | static struct clk *_register_divider(struct device *dev, const char *name, | 432 | static struct clk *_register_divider(struct device *dev, const char *name, |
427 | const char *parent_name, unsigned long flags, | 433 | const char *parent_name, unsigned long flags, |
428 | void __iomem *reg, u8 shift, u8 width, | 434 | void __iomem *reg, u8 shift, u8 width, |
@@ -446,7 +452,10 @@ static struct clk *_register_divider(struct device *dev, const char *name, | |||
446 | return ERR_PTR(-ENOMEM); | 452 | return ERR_PTR(-ENOMEM); |
447 | 453 | ||
448 | init.name = name; | 454 | init.name = name; |
449 | init.ops = &clk_divider_ops; | 455 | if (clk_divider_flags & CLK_DIVIDER_READ_ONLY) |
456 | init.ops = &clk_divider_ro_ops; | ||
457 | else | ||
458 | init.ops = &clk_divider_ops; | ||
450 | init.flags = flags | CLK_IS_BASIC; | 459 | init.flags = flags | CLK_IS_BASIC; |
451 | init.parent_names = (parent_name ? &parent_name: NULL); | 460 | init.parent_names = (parent_name ? &parent_name: NULL); |
452 | init.num_parents = (parent_name ? 1 : 0); | 461 | init.num_parents = (parent_name ? 1 : 0); |