@@ -91,13 +91,12 @@ static void devm_clk_hw_register_fixed_factor_release(struct device *dev, void *
9191static struct clk_hw *
9292__clk_hw_register_fixed_factor (struct device * dev , struct device_node * np ,
9393 const char * name , const char * parent_name ,
94- const struct clk_hw * parent_hw , int index ,
94+ const struct clk_hw * parent_hw , const struct clk_parent_data * pdata ,
9595 unsigned long flags , unsigned int mult , unsigned int div ,
9696 unsigned long acc , unsigned int fixflags , bool devm )
9797{
9898 struct clk_fixed_factor * fix ;
9999 struct clk_init_data init = { };
100- struct clk_parent_data pdata = { .index = index };
101100 struct clk_hw * hw ;
102101 int ret ;
103102
@@ -128,7 +127,7 @@ __clk_hw_register_fixed_factor(struct device *dev, struct device_node *np,
128127 else if (parent_hw )
129128 init .parent_hws = & parent_hw ;
130129 else
131- init .parent_data = & pdata ;
130+ init .parent_data = pdata ;
132131 init .num_parents = 1 ;
133132
134133 hw = & fix -> hw ;
@@ -165,7 +164,9 @@ struct clk_hw *devm_clk_hw_register_fixed_factor_index(struct device *dev,
165164 const char * name , unsigned int index , unsigned long flags ,
166165 unsigned int mult , unsigned int div )
167166{
168- return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , NULL , index ,
167+ const struct clk_parent_data pdata = { .index = index };
168+
169+ return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , NULL , & pdata ,
169170 flags , mult , div , 0 , 0 , true);
170171}
171172EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_index );
@@ -187,30 +188,59 @@ struct clk_hw *devm_clk_hw_register_fixed_factor_parent_hw(struct device *dev,
187188 const char * name , const struct clk_hw * parent_hw ,
188189 unsigned long flags , unsigned int mult , unsigned int div )
189190{
191+ const struct clk_parent_data pdata = { .index = -1 };
192+
190193 return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , parent_hw ,
191- -1 , flags , mult , div , 0 , 0 , true);
194+ & pdata , flags , mult , div , 0 , 0 , true);
192195}
193196EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_parent_hw );
194197
195198struct clk_hw * clk_hw_register_fixed_factor_parent_hw (struct device * dev ,
196199 const char * name , const struct clk_hw * parent_hw ,
197200 unsigned long flags , unsigned int mult , unsigned int div )
198201{
199- return __clk_hw_register_fixed_factor (dev , NULL , name , NULL ,
200- parent_hw , -1 , flags , mult , div ,
201- 0 , 0 , false);
202+ const struct clk_parent_data pdata = { .index = -1 };
203+
204+ return __clk_hw_register_fixed_factor (dev , NULL , name , NULL , parent_hw ,
205+ & pdata , flags , mult , div , 0 , 0 , false);
202206}
203207EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor_parent_hw );
204208
205209struct clk_hw * clk_hw_register_fixed_factor (struct device * dev ,
206210 const char * name , const char * parent_name , unsigned long flags ,
207211 unsigned int mult , unsigned int div )
208212{
209- return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL , -1 ,
210- flags , mult , div , 0 , 0 , false);
213+ const struct clk_parent_data pdata = { .index = -1 };
214+
215+ return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL ,
216+ & pdata , flags , mult , div , 0 , 0 , false);
211217}
212218EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor );
213219
220+ struct clk_hw * clk_hw_register_fixed_factor_fwname (struct device * dev ,
221+ struct device_node * np , const char * name , const char * fw_name ,
222+ unsigned long flags , unsigned int mult , unsigned int div )
223+ {
224+ const struct clk_parent_data pdata = { .index = -1 , .fw_name = fw_name };
225+
226+ return __clk_hw_register_fixed_factor (dev , np , name , NULL , NULL ,
227+ & pdata , flags , mult , div , 0 , 0 , false);
228+ }
229+ EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor_fwname );
230+
231+ struct clk_hw * clk_hw_register_fixed_factor_with_accuracy_fwname (struct device * dev ,
232+ struct device_node * np , const char * name , const char * fw_name ,
233+ unsigned long flags , unsigned int mult , unsigned int div ,
234+ unsigned long acc )
235+ {
236+ const struct clk_parent_data pdata = { .index = -1 , .fw_name = fw_name };
237+
238+ return __clk_hw_register_fixed_factor (dev , np , name , NULL , NULL ,
239+ & pdata , flags , mult , div , acc ,
240+ CLK_FIXED_FACTOR_FIXED_ACCURACY , false);
241+ }
242+ EXPORT_SYMBOL_GPL (clk_hw_register_fixed_factor_with_accuracy_fwname );
243+
214244struct clk * clk_register_fixed_factor (struct device * dev , const char * name ,
215245 const char * parent_name , unsigned long flags ,
216246 unsigned int mult , unsigned int div )
@@ -253,16 +283,43 @@ struct clk_hw *devm_clk_hw_register_fixed_factor(struct device *dev,
253283 const char * name , const char * parent_name , unsigned long flags ,
254284 unsigned int mult , unsigned int div )
255285{
256- return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL , -1 ,
257- flags , mult , div , 0 , 0 , true);
286+ const struct clk_parent_data pdata = { .index = -1 };
287+
288+ return __clk_hw_register_fixed_factor (dev , NULL , name , parent_name , NULL ,
289+ & pdata , flags , mult , div , 0 , 0 , true);
258290}
259291EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor );
260292
293+ struct clk_hw * devm_clk_hw_register_fixed_factor_fwname (struct device * dev ,
294+ struct device_node * np , const char * name , const char * fw_name ,
295+ unsigned long flags , unsigned int mult , unsigned int div )
296+ {
297+ const struct clk_parent_data pdata = { .index = -1 , .fw_name = fw_name };
298+
299+ return __clk_hw_register_fixed_factor (dev , np , name , NULL , NULL ,
300+ & pdata , flags , mult , div , 0 , 0 , true);
301+ }
302+ EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_fwname );
303+
304+ struct clk_hw * devm_clk_hw_register_fixed_factor_with_accuracy_fwname (struct device * dev ,
305+ struct device_node * np , const char * name , const char * fw_name ,
306+ unsigned long flags , unsigned int mult , unsigned int div ,
307+ unsigned long acc )
308+ {
309+ const struct clk_parent_data pdata = { .index = -1 , .fw_name = fw_name };
310+
311+ return __clk_hw_register_fixed_factor (dev , np , name , NULL , NULL ,
312+ & pdata , flags , mult , div , acc ,
313+ CLK_FIXED_FACTOR_FIXED_ACCURACY , true);
314+ }
315+ EXPORT_SYMBOL_GPL (devm_clk_hw_register_fixed_factor_with_accuracy_fwname );
316+
261317#ifdef CONFIG_OF
262318static struct clk_hw * _of_fixed_factor_clk_setup (struct device_node * node )
263319{
264320 struct clk_hw * hw ;
265321 const char * clk_name = node -> name ;
322+ const struct clk_parent_data pdata = { .index = 0 };
266323 u32 div , mult ;
267324 int ret ;
268325
@@ -280,8 +337,8 @@ static struct clk_hw *_of_fixed_factor_clk_setup(struct device_node *node)
280337
281338 of_property_read_string (node , "clock-output-names" , & clk_name );
282339
283- hw = __clk_hw_register_fixed_factor (NULL , node , clk_name , NULL , NULL , 0 ,
284- 0 , mult , div , 0 , 0 , false);
340+ hw = __clk_hw_register_fixed_factor (NULL , node , clk_name , NULL , NULL ,
341+ & pdata , 0 , mult , div , 0 , 0 , false);
285342 if (IS_ERR (hw )) {
286343 /*
287344 * Clear OF_POPULATED flag so that clock registration can be
0 commit comments