@@ -1082,7 +1082,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1082
1082
clk_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_mul" , dev_name (& pdev -> dev ));
1083
1083
if (!clk_name )
1084
1084
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
1086
1086
(& pdev -> dev , clk_name ,
1087
1087
__clk_get_name (clk_wzrd -> clk_in1 ),
1088
1088
0 , mult , div );
@@ -1092,10 +1092,8 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1092
1092
}
1093
1093
1094
1094
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 ;
1099
1097
1100
1098
if (is_versal ) {
1101
1099
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)
1110
1108
1111
1109
clk_mul_name = clk_hw_get_name (clk_wzrd -> clks_internal [wzrd_clk_mul ]);
1112
1110
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 );
1115
1113
} else {
1116
1114
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
1118
1116
(& pdev -> dev , clk_name ,
1119
1117
clk_hw_get_name (clk_wzrd -> clks_internal [wzrd_clk_mul ]),
1120
1118
flags , ctrl_reg , 0 , 8 , CLK_DIVIDER_ONE_BASED |
1121
1119
CLK_DIVIDER_ALLOW_ZERO , & clkwzrd_lock );
1122
1120
}
1123
1121
if (IS_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul_div ])) {
1124
1122
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 ]);
1127
1124
}
1128
1125
1129
1126
/* register div per output */
1130
1127
for (i = nr_outputs - 1 ; i >= 0 ; i -- ) {
1131
1128
clkout_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL ,
1132
1129
"%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 ;
1137
1132
1138
1133
if (is_versal ) {
1139
1134
clk_wzrd -> clk_data .hws [i ] = clk_wzrd_ver_register_divider
@@ -1165,20 +1160,15 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1165
1160
DIV_O , & clkwzrd_lock );
1166
1161
}
1167
1162
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 ]);
1172
1163
dev_err (& pdev -> dev ,
1173
1164
"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 ]);
1176
1166
}
1177
1167
}
1178
1168
1179
1169
out :
1180
1170
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 );
1182
1172
if (ret ) {
1183
1173
dev_err (& pdev -> dev , "unable to register clock provider\n" );
1184
1174
return ret ;
@@ -1201,25 +1191,6 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1201
1191
}
1202
1192
1203
1193
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 ]);
1223
1194
}
1224
1195
1225
1196
static const struct of_device_id clk_wzrd_ids [] = {
@@ -1238,7 +1209,6 @@ static struct platform_driver clk_wzrd_driver = {
1238
1209
.pm = & clk_wzrd_dev_pm_ops ,
1239
1210
},
1240
1211
.probe = clk_wzrd_probe ,
1241
- .remove = clk_wzrd_remove ,
1242
1212
};
1243
1213
module_platform_driver (clk_wzrd_driver );
1244
1214
0 commit comments