@@ -78,7 +78,8 @@ static void devm_clk_hw_register_fixed_factor_release(struct device *dev, void *
7878
7979static struct clk_hw *
8080__clk_hw_register_fixed_factor (struct device * dev , struct device_node * np ,
81- const char * name , const char * parent_name , int index ,
81+ const char * name , const char * parent_name ,
82+ const struct clk_hw * parent_hw , int index ,
8283 unsigned long flags , unsigned int mult , unsigned int div ,
8384 bool devm )
8485{
@@ -110,6 +111,8 @@ __clk_hw_register_fixed_factor(struct device *dev, struct device_node *np,
110111 init .flags = flags ;
111112 if (parent_name )
112113 init .parent_names = & parent_name ;
114+ else if (parent_hw )
115+ init .parent_hws = & parent_hw ;
113116 else
114117 init .parent_data = & pdata ;
115118 init .num_parents = 1 ;
@@ -148,16 +151,48 @@ struct clk_hw *devm_clk_hw_register_fixed_factor_index(struct device *dev,
148151 const char * name , unsigned int index , unsigned long flags ,
149152 unsigned int mult , unsigned int div )
150153{
151- return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , index ,
154+ return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , NULL , index ,
152155 flags , mult , div , true);
153156}
154157EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_index );
155158
159+ /**
160+ * devm_clk_hw_register_fixed_factor_parent_hw - Register a fixed factor clock with
161+ * pointer to parent clock
162+ * @dev: device that is registering this clock
163+ * @name: name of this clock
164+ * @parent_hw: pointer to parent clk
165+ * @flags: fixed factor flags
166+ * @mult: multiplier
167+ * @div: divider
168+ *
169+ * Return: Pointer to fixed factor clk_hw structure that was registered or
170+ * an error pointer.
171+ */
172+ struct clk_hw * devm_clk_hw_register_fixed_factor_parent_hw (struct device * dev ,
173+ const char * name , const struct clk_hw * parent_hw ,
174+ unsigned long flags , unsigned int mult , unsigned int div )
175+ {
176+ return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , parent_hw ,
177+ -1 , flags , mult , div , true);
178+ }
179+ EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_parent_hw );
180+
181+ struct clk_hw * clk_hw_register_fixed_factor_parent_hw (struct device * dev ,
182+ const char * name , const struct clk_hw * parent_hw ,
183+ unsigned long flags , unsigned int mult , unsigned int div )
184+ {
185+ return __clk_hw_register_fixed_factor (dev , NULL , name , NULL ,
186+ parent_hw , -1 , flags , mult , div ,
187+ false);
188+ }
189+ EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor_parent_hw );
190+
156191struct clk_hw * clk_hw_register_fixed_factor (struct device * dev ,
157192 const char * name , const char * parent_name , unsigned long flags ,
158193 unsigned int mult , unsigned int div )
159194{
160- return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , -1 ,
195+ return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL , -1 ,
161196 flags , mult , div , false);
162197}
163198EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor );
@@ -204,7 +239,7 @@ struct clk_hw *devm_clk_hw_register_fixed_factor(struct device *dev,
204239 const char * name , const char * parent_name , unsigned long flags ,
205240 unsigned int mult , unsigned int div )
206241{
207- return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , -1 ,
242+ return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL , -1 ,
208243 flags , mult , div , true);
209244}
210245EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor );
@@ -231,7 +266,7 @@ static struct clk_hw *_of_fixed_factor_clk_setup(struct device_node *node)
231266
232267 of_property_read_string (node , "clock-output-names" , & clk_name );
233268
234- hw = __clk_hw_register_fixed_factor (NULL , node , clk_name , NULL , 0 ,
269+ hw = __clk_hw_register_fixed_factor (NULL , node , clk_name , NULL , NULL , 0 ,
235270 0 , mult , div , false);
236271 if (IS_ERR (hw )) {
237272 /*
0 commit comments