@@ -1082,7 +1082,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
10821082 clk_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_mul" , dev_name (& pdev -> dev ));
10831083 if (!clk_name )
10841084 return - ENOMEM ;
1085- clk_wzrd -> clks_internal [wzrd_clk_mul ] = clk_hw_register_fixed_factor
1085+ clk_wzrd -> clks_internal [wzrd_clk_mul ] = devm_clk_hw_register_fixed_factor
10861086 (& pdev -> dev , clk_name ,
10871087 __clk_get_name (clk_wzrd -> clk_in1 ),
10881088 0 , mult , div );
@@ -1092,10 +1092,8 @@ static int clk_wzrd_probe(struct platform_device *pdev)
10921092 }
10931093
10941094 clk_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_mul_div" , dev_name (& pdev -> dev ));
1095- if (!clk_name ) {
1096- ret = - ENOMEM ;
1097- goto err_rm_int_clk ;
1098- }
1095+ if (!clk_name )
1096+ return - ENOMEM ;
10991097
11001098 if (is_versal ) {
11011099 edged = !!(readl (clk_wzrd -> base + WZRD_CLK_CFG_REG (is_versal , 20 )) &
@@ -1110,30 +1108,27 @@ static int clk_wzrd_probe(struct platform_device *pdev)
11101108
11111109 clk_mul_name = clk_hw_get_name (clk_wzrd -> clks_internal [wzrd_clk_mul ]);
11121110 clk_wzrd -> clks_internal [wzrd_clk_mul_div ] =
1113- clk_hw_register_fixed_factor (& pdev -> dev , clk_name ,
1114- clk_mul_name , 0 , 1 , div );
1111+ devm_clk_hw_register_fixed_factor (& pdev -> dev , clk_name ,
1112+ clk_mul_name , 0 , 1 , div );
11151113 } else {
11161114 ctrl_reg = clk_wzrd -> base + WZRD_CLK_CFG_REG (is_versal , 0 );
1117- clk_wzrd -> clks_internal [wzrd_clk_mul_div ] = clk_hw_register_divider
1115+ clk_wzrd -> clks_internal [wzrd_clk_mul_div ] = devm_clk_hw_register_divider
11181116 (& pdev -> dev , clk_name ,
11191117 clk_hw_get_name (clk_wzrd -> clks_internal [wzrd_clk_mul ]),
11201118 flags , ctrl_reg , 0 , 8 , CLK_DIVIDER_ONE_BASED |
11211119 CLK_DIVIDER_ALLOW_ZERO , & clkwzrd_lock );
11221120 }
11231121 if (IS_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul_div ])) {
11241122 dev_err (& pdev -> dev , "unable to register divider clock\n" );
1125- ret = PTR_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul_div ]);
1126- goto err_rm_int_clk ;
1123+ return PTR_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul_div ]);
11271124 }
11281125
11291126 /* register div per output */
11301127 for (i = nr_outputs - 1 ; i >= 0 ; i -- ) {
11311128 clkout_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL ,
11321129 "%s_out%d" , dev_name (& pdev -> dev ), i );
1133- if (!clkout_name ) {
1134- ret = - ENOMEM ;
1135- goto err_rm_int_clk ;
1136- }
1130+ if (!clkout_name )
1131+ return - ENOMEM ;
11371132
11381133 if (is_versal ) {
11391134 clk_wzrd -> clk_data .hws [i ] = clk_wzrd_ver_register_divider
@@ -1165,20 +1160,15 @@ static int clk_wzrd_probe(struct platform_device *pdev)
11651160 DIV_O , & clkwzrd_lock );
11661161 }
11671162 if (IS_ERR (clk_wzrd -> clk_data .hws [i ])) {
1168- int j ;
1169-
1170- for (j = i + 1 ; j < nr_outputs ; j ++ )
1171- clk_hw_unregister (clk_wzrd -> clk_data .hws [j ]);
11721163 dev_err (& pdev -> dev ,
11731164 "unable to register divider clock\n" );
1174- ret = PTR_ERR (clk_wzrd -> clk_data .hws [i ]);
1175- goto err_rm_int_clks ;
1165+ return PTR_ERR (clk_wzrd -> clk_data .hws [i ]);
11761166 }
11771167 }
11781168
11791169out :
11801170 clk_wzrd -> clk_data .num = nr_outputs ;
1181- ret = of_clk_add_hw_provider ( pdev -> dev . of_node , of_clk_hw_onecell_get , & clk_wzrd -> clk_data );
1171+ ret = devm_of_clk_add_hw_provider ( & pdev -> dev , of_clk_hw_onecell_get , & clk_wzrd -> clk_data );
11821172 if (ret ) {
11831173 dev_err (& pdev -> dev , "unable to register clock provider\n" );
11841174 return ret ;
@@ -1201,25 +1191,6 @@ static int clk_wzrd_probe(struct platform_device *pdev)
12011191 }
12021192
12031193 return 0 ;
1204-
1205- err_rm_int_clks :
1206- clk_hw_unregister (clk_wzrd -> clks_internal [1 ]);
1207- err_rm_int_clk :
1208- clk_hw_unregister (clk_wzrd -> clks_internal [0 ]);
1209- return ret ;
1210- }
1211-
1212- static void clk_wzrd_remove (struct platform_device * pdev )
1213- {
1214- int i ;
1215- struct clk_wzrd * clk_wzrd = platform_get_drvdata (pdev );
1216-
1217- of_clk_del_provider (pdev -> dev .of_node );
1218-
1219- for (i = 0 ; i < WZRD_NUM_OUTPUTS ; i ++ )
1220- clk_hw_unregister (clk_wzrd -> clk_data .hws [i ]);
1221- for (i = 0 ; i < wzrd_clk_int_max ; i ++ )
1222- clk_hw_unregister (clk_wzrd -> clks_internal [i ]);
12231194}
12241195
12251196static const struct of_device_id clk_wzrd_ids [] = {
@@ -1238,7 +1209,6 @@ static struct platform_driver clk_wzrd_driver = {
12381209 .pm = & clk_wzrd_dev_pm_ops ,
12391210 },
12401211 .probe = clk_wzrd_probe ,
1241- .remove = clk_wzrd_remove ,
12421212};
12431213module_platform_driver (clk_wzrd_driver );
12441214
0 commit comments