aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk-divider.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/clk-divider.c')
-rw-r--r--drivers/clk/clk-divider.c11
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};
424EXPORT_SYMBOL_GPL(clk_divider_ops); 424EXPORT_SYMBOL_GPL(clk_divider_ops);
425 425
426const struct clk_ops clk_divider_ro_ops = {
427 .recalc_rate = clk_divider_recalc_rate,
428 .round_rate = clk_divider_round_rate,
429};
430EXPORT_SYMBOL_GPL(clk_divider_ro_ops);
431
426static struct clk *_register_divider(struct device *dev, const char *name, 432static 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);