diff options
Diffstat (limited to 'drivers/clk/clk-fixed-factor.c')
-rw-r--r-- | drivers/clk/clk-fixed-factor.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c index 75cd6c792cb8..4db3be214077 100644 --- a/drivers/clk/clk-fixed-factor.c +++ b/drivers/clk/clk-fixed-factor.c | |||
@@ -142,6 +142,11 @@ void clk_hw_unregister_fixed_factor(struct clk_hw *hw) | |||
142 | EXPORT_SYMBOL_GPL(clk_hw_unregister_fixed_factor); | 142 | EXPORT_SYMBOL_GPL(clk_hw_unregister_fixed_factor); |
143 | 143 | ||
144 | #ifdef CONFIG_OF | 144 | #ifdef CONFIG_OF |
145 | static const struct of_device_id set_rate_parent_matches[] = { | ||
146 | { .compatible = "allwinner,sun4i-a10-pll3-2x-clk" }, | ||
147 | { /* Sentinel */ }, | ||
148 | }; | ||
149 | |||
145 | /** | 150 | /** |
146 | * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock | 151 | * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock |
147 | */ | 152 | */ |
@@ -150,6 +155,7 @@ void __init of_fixed_factor_clk_setup(struct device_node *node) | |||
150 | struct clk *clk; | 155 | struct clk *clk; |
151 | const char *clk_name = node->name; | 156 | const char *clk_name = node->name; |
152 | const char *parent_name; | 157 | const char *parent_name; |
158 | unsigned long flags = 0; | ||
153 | u32 div, mult; | 159 | u32 div, mult; |
154 | 160 | ||
155 | if (of_property_read_u32(node, "clock-div", &div)) { | 161 | if (of_property_read_u32(node, "clock-div", &div)) { |
@@ -167,7 +173,10 @@ void __init of_fixed_factor_clk_setup(struct device_node *node) | |||
167 | of_property_read_string(node, "clock-output-names", &clk_name); | 173 | of_property_read_string(node, "clock-output-names", &clk_name); |
168 | parent_name = of_clk_get_parent_name(node, 0); | 174 | parent_name = of_clk_get_parent_name(node, 0); |
169 | 175 | ||
170 | clk = clk_register_fixed_factor(NULL, clk_name, parent_name, 0, | 176 | if (of_match_node(set_rate_parent_matches, node)) |
177 | flags |= CLK_SET_RATE_PARENT; | ||
178 | |||
179 | clk = clk_register_fixed_factor(NULL, clk_name, parent_name, flags, | ||
171 | mult, div); | 180 | mult, div); |
172 | if (!IS_ERR(clk)) | 181 | if (!IS_ERR(clk)) |
173 | of_clk_add_provider(node, of_clk_src_simple_get, clk); | 182 | of_clk_add_provider(node, of_clk_src_simple_get, clk); |