@@ -179,6 +179,10 @@ static int cpg_pll_8_25_clk_set_rate(struct clk_hw *hw, unsigned long rate,
179179 val & pll_clk -> pllecr_pllst_mask , 0 , 1000 );
180180}
181181
182+ static const struct clk_ops cpg_pll_f8_25_clk_ops = {
183+ .recalc_rate = cpg_pll_8_25_clk_recalc_rate ,
184+ };
185+
182186static const struct clk_ops cpg_pll_v8_25_clk_ops = {
183187 .recalc_rate = cpg_pll_8_25_clk_recalc_rate ,
184188 .determine_rate = cpg_pll_8_25_clk_determine_rate ,
@@ -188,13 +192,15 @@ static const struct clk_ops cpg_pll_v8_25_clk_ops = {
188192static struct clk * __init cpg_pll_clk_register (const char * name ,
189193 const char * parent_name ,
190194 void __iomem * base ,
191- unsigned int index )
195+ unsigned int index ,
196+ const struct clk_ops * ops )
192197{
193198 static const struct { u16 cr0 , cr1 ; } pll_cr_offsets [] __initconst = {
194- [2 - 2 ] = { CPG_PLL2CR0 , CPG_PLL2CR1 },
195- [3 - 2 ] = { CPG_PLL3CR0 , CPG_PLL3CR1 },
196- [4 - 2 ] = { CPG_PLL4CR0 , CPG_PLL4CR1 },
197- [6 - 2 ] = { CPG_PLL6CR0 , CPG_PLL6CR1 },
199+ [1 - 1 ] = { CPG_PLL1CR0 , CPG_PLL1CR1 },
200+ [2 - 1 ] = { CPG_PLL2CR0 , CPG_PLL2CR1 },
201+ [3 - 1 ] = { CPG_PLL3CR0 , CPG_PLL3CR1 },
202+ [4 - 1 ] = { CPG_PLL4CR0 , CPG_PLL4CR1 },
203+ [6 - 1 ] = { CPG_PLL6CR0 , CPG_PLL6CR1 },
198204 };
199205 struct clk_init_data init = {};
200206 struct cpg_pll_clk * pll_clk ;
@@ -205,13 +211,13 @@ static struct clk * __init cpg_pll_clk_register(const char *name,
205211 return ERR_PTR (- ENOMEM );
206212
207213 init .name = name ;
208- init .ops = & cpg_pll_v8_25_clk_ops ;
214+ init .ops = ops ;
209215 init .parent_names = & parent_name ;
210216 init .num_parents = 1 ;
211217
212218 pll_clk -> hw .init = & init ;
213- pll_clk -> pllcr0_reg = base + pll_cr_offsets [index - 2 ].cr0 ;
214- pll_clk -> pllcr1_reg = base + pll_cr_offsets [index - 2 ].cr1 ;
219+ pll_clk -> pllcr0_reg = base + pll_cr_offsets [index - 1 ].cr0 ;
220+ pll_clk -> pllcr1_reg = base + pll_cr_offsets [index - 1 ].cr1 ;
215221 pll_clk -> pllecr_reg = base + CPG_PLLECR ;
216222 pll_clk -> pllecr_pllst_mask = CPG_PLLECR_PLLST (index );
217223
@@ -413,7 +419,7 @@ struct clk * __init rcar_gen4_cpg_clk_register(struct device *dev,
413419 * modes.
414420 */
415421 return cpg_pll_clk_register (core -> name , __clk_get_name (parent ),
416- base , 2 );
422+ base , 2 , & cpg_pll_v8_25_clk_ops );
417423
418424 case CLK_TYPE_GEN4_PLL2 :
419425 mult = cpg_pll_config -> pll2_mult ;
@@ -445,9 +451,15 @@ struct clk * __init rcar_gen4_cpg_clk_register(struct device *dev,
445451 mult = (FIELD_GET (CPG_PLLxCR_STC , value ) + 1 ) * 2 ;
446452 break ;
447453
454+ case CLK_TYPE_GEN4_PLL_F8_25 :
455+ return cpg_pll_clk_register (core -> name , __clk_get_name (parent ),
456+ base , core -> offset ,
457+ & cpg_pll_f8_25_clk_ops );
458+
448459 case CLK_TYPE_GEN4_PLL_V8_25 :
449460 return cpg_pll_clk_register (core -> name , __clk_get_name (parent ),
450- base , core -> offset );
461+ base , core -> offset ,
462+ & cpg_pll_v8_25_clk_ops );
451463
452464 case CLK_TYPE_GEN4_Z :
453465 return cpg_z_clk_register (core -> name , __clk_get_name (parent ),
0 commit comments