@@ -1001,38 +1001,28 @@ static int clk_wzrd_probe(struct platform_device *pdev)
10011001 return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> clk_in1 ),
10021002 "clk_in1 not found\n" );
10031003
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" );
10051005 if (IS_ERR (clk_wzrd -> axi_clk ))
10061006 return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> axi_clk ),
10071007 "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- }
10131008 rate = clk_get_rate (clk_wzrd -> axi_clk );
10141009 if (rate > WZRD_ACLK_MAX_FREQ ) {
10151010 dev_err (& pdev -> dev , "s_axi_aclk frequency (%lu) too high\n" ,
10161011 rate );
1017- ret = - EINVAL ;
1018- goto err_disable_clk ;
1012+ return - EINVAL ;
10191013 }
10201014
10211015 data = device_get_match_data (& pdev -> dev );
10221016 if (data )
10231017 is_versal = data -> is_versal ;
10241018
10251019 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 ;
10301022
10311023 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 ;
10361026
10371027 if (is_versal ) {
10381028 if (nr_outputs == 1 ) {
@@ -1090,18 +1080,15 @@ static int clk_wzrd_probe(struct platform_device *pdev)
10901080 div = 1000 ;
10911081 }
10921082 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 ;
10971085 clk_wzrd -> clks_internal [wzrd_clk_mul ] = clk_register_fixed_factor
10981086 (& pdev -> dev , clk_name ,
10991087 __clk_get_name (clk_wzrd -> clk_in1 ),
11001088 0 , mult , div );
11011089 if (IS_ERR (clk_wzrd -> clks_internal [wzrd_clk_mul ])) {
11021090 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 ]);
11051092 }
11061093
11071094 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)
11971184 if (clk_wzrd -> speed_grade ) {
11981185 clk_wzrd -> nb .notifier_call = clk_wzrd_clk_notifier ;
11991186
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 );
12021189 if (ret )
12031190 dev_warn (& pdev -> dev ,
12041191 "unable to register clock notifier\n" );
12051192
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 );
12071195 if (ret )
12081196 dev_warn (& pdev -> dev ,
12091197 "unable to register clock notifier\n" );
@@ -1215,9 +1203,6 @@ static int clk_wzrd_probe(struct platform_device *pdev)
12151203 clk_unregister (clk_wzrd -> clks_internal [1 ]);
12161204err_rm_int_clk :
12171205 clk_unregister (clk_wzrd -> clks_internal [0 ]);
1218- err_disable_clk :
1219- clk_disable_unprepare (clk_wzrd -> axi_clk );
1220-
12211206 return ret ;
12221207}
12231208
@@ -1232,13 +1217,6 @@ static void clk_wzrd_remove(struct platform_device *pdev)
12321217 clk_unregister (clk_wzrd -> clkout [i ]);
12331218 for (i = 0 ; i < wzrd_clk_int_max ; i ++ )
12341219 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 );
12421220}
12431221
12441222static const struct of_device_id clk_wzrd_ids [] = {
0 commit comments