@@ -1001,38 +1001,28 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1001
1001
return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> clk_in1 ),
1002
1002
"clk_in1 not found\n" );
1003
1003
1004
- clk_wzrd -> axi_clk = devm_clk_get (& pdev -> dev , "s_axi_aclk" );
1004
+ clk_wzrd -> axi_clk = devm_clk_get_enabled (& pdev -> dev , "s_axi_aclk" );
1005
1005
if (IS_ERR (clk_wzrd -> axi_clk ))
1006
1006
return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> axi_clk ),
1007
1007
"s_axi_aclk not found\n" );
1008
- ret = clk_prepare_enable (clk_wzrd -> axi_clk );
1009
- if (ret ) {
1010
- dev_err (& pdev -> dev , "enabling s_axi_aclk failed\n" );
1011
- return ret ;
1012
- }
1013
1008
rate = clk_get_rate (clk_wzrd -> axi_clk );
1014
1009
if (rate > WZRD_ACLK_MAX_FREQ ) {
1015
1010
dev_err (& pdev -> dev , "s_axi_aclk frequency (%lu) too high\n" ,
1016
1011
rate );
1017
- ret = - EINVAL ;
1018
- goto err_disable_clk ;
1012
+ return - EINVAL ;
1019
1013
}
1020
1014
1021
1015
data = device_get_match_data (& pdev -> dev );
1022
1016
if (data )
1023
1017
is_versal = data -> is_versal ;
1024
1018
1025
1019
ret = of_property_read_u32 (np , "xlnx,nr-outputs" , & nr_outputs );
1026
- if (ret || nr_outputs > WZRD_NUM_OUTPUTS ) {
1027
- ret = - EINVAL ;
1028
- goto err_disable_clk ;
1029
- }
1020
+ if (ret || nr_outputs > WZRD_NUM_OUTPUTS )
1021
+ return - EINVAL ;
1030
1022
1031
1023
clkout_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_out0" , dev_name (& pdev -> dev ));
1032
- if (!clkout_name ) {
1033
- ret = - ENOMEM ;
1034
- goto err_disable_clk ;
1035
- }
1024
+ if (!clkout_name )
1025
+ return - ENOMEM ;
1036
1026
1037
1027
if (is_versal ) {
1038
1028
if (nr_outputs == 1 ) {
@@ -1090,18 +1080,15 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1090
1080
div = 1000 ;
1091
1081
}
1092
1082
clk_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_mul" , dev_name (& pdev -> dev ));
1093
- if (!clk_name ) {
1094
- ret = - ENOMEM ;
1095
- goto err_disable_clk ;
1096
- }
1083
+ if (!clk_name )
1084
+ return - ENOMEM ;
1097
1085
clk_wzrd -> clks_internal [wzrd_clk_mul ] = clk_register_fixed_factor
1098
1086
(& pdev -> dev , clk_name ,
1099
1087
__clk_get_name (clk_wzrd -> clk_in1 ),
1100
1088
0 , mult , div );
1101
1089
if (IS_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul ])) {
1102
1090
dev_err (& pdev -> dev , "unable to register fixed-factor clock\n" );
1103
- ret = PTR_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul ]);
1104
- goto err_disable_clk ;
1091
+ return PTR_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul ]);
1105
1092
}
1106
1093
1107
1094
clk_name = devm_kasprintf (& pdev -> dev , GFP_KERNEL , "%s_mul_div" , dev_name (& pdev -> dev ));
@@ -1197,13 +1184,14 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1197
1184
if (clk_wzrd -> speed_grade ) {
1198
1185
clk_wzrd -> nb .notifier_call = clk_wzrd_clk_notifier ;
1199
1186
1200
- ret = clk_notifier_register ( clk_wzrd -> clk_in1 ,
1201
- & clk_wzrd -> nb );
1187
+ ret = devm_clk_notifier_register ( & pdev -> dev , clk_wzrd -> clk_in1 ,
1188
+ & clk_wzrd -> nb );
1202
1189
if (ret )
1203
1190
dev_warn (& pdev -> dev ,
1204
1191
"unable to register clock notifier\n" );
1205
1192
1206
- ret = clk_notifier_register (clk_wzrd -> axi_clk , & clk_wzrd -> nb );
1193
+ ret = devm_clk_notifier_register (& pdev -> dev , clk_wzrd -> axi_clk ,
1194
+ & clk_wzrd -> nb );
1207
1195
if (ret )
1208
1196
dev_warn (& pdev -> dev ,
1209
1197
"unable to register clock notifier\n" );
@@ -1215,9 +1203,6 @@ static int clk_wzrd_probe(struct platform_device *pdev)
1215
1203
clk_unregister (clk_wzrd -> clks_internal [1 ]);
1216
1204
err_rm_int_clk :
1217
1205
clk_unregister (clk_wzrd -> clks_internal [0 ]);
1218
- err_disable_clk :
1219
- clk_disable_unprepare (clk_wzrd -> axi_clk );
1220
-
1221
1206
return ret ;
1222
1207
}
1223
1208
@@ -1232,13 +1217,6 @@ static void clk_wzrd_remove(struct platform_device *pdev)
1232
1217
clk_unregister (clk_wzrd -> clkout [i ]);
1233
1218
for (i = 0 ; i < wzrd_clk_int_max ; i ++ )
1234
1219
clk_unregister (clk_wzrd -> clks_internal [i ]);
1235
-
1236
- if (clk_wzrd -> speed_grade ) {
1237
- clk_notifier_unregister (clk_wzrd -> axi_clk , & clk_wzrd -> nb );
1238
- clk_notifier_unregister (clk_wzrd -> clk_in1 , & clk_wzrd -> nb );
1239
- }
1240
-
1241
- clk_disable_unprepare (clk_wzrd -> axi_clk );
1242
1220
}
1243
1221
1244
1222
static const struct of_device_id clk_wzrd_ids [] = {
0 commit comments