@@ -1146,20 +1146,6 @@ static int clk_wzrd_probe(struct platform_device *pdev)
11461146 if (IS_ERR (clk_wzrd -> base ))
11471147 return PTR_ERR (clk_wzrd -> base );
11481148
1149- ret = of_property_read_u32 (np , "xlnx,speed-grade" , & clk_wzrd -> speed_grade );
1150- if (!ret ) {
1151- if (clk_wzrd -> speed_grade < 1 || clk_wzrd -> speed_grade > 3 ) {
1152- dev_warn (& pdev -> dev , "invalid speed grade '%d'\n" ,
1153- clk_wzrd -> speed_grade );
1154- clk_wzrd -> speed_grade = 0 ;
1155- }
1156- }
1157-
1158- clk_wzrd -> clk_in1 = devm_clk_get (& pdev -> dev , "clk_in1" );
1159- if (IS_ERR (clk_wzrd -> clk_in1 ))
1160- return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> clk_in1 ),
1161- "clk_in1 not found\n" );
1162-
11631149 clk_wzrd -> axi_clk = devm_clk_get_enabled (& pdev -> dev , "s_axi_aclk" );
11641150 if (IS_ERR (clk_wzrd -> axi_clk ))
11651151 return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> axi_clk ),
@@ -1170,31 +1156,48 @@ static int clk_wzrd_probe(struct platform_device *pdev)
11701156 return - EINVAL ;
11711157 }
11721158
1173- ret = clk_wzrd_register_output_clocks (& pdev -> dev , nr_outputs );
1174- if (ret )
1175- return ret ;
1176-
1177- clk_wzrd -> clk_data .num = nr_outputs ;
1178- ret = devm_of_clk_add_hw_provider (& pdev -> dev , of_clk_hw_onecell_get , & clk_wzrd -> clk_data );
1179- if (ret ) {
1180- dev_err (& pdev -> dev , "unable to register clock provider\n" );
1181- return ret ;
1182- }
1159+ if (!of_property_present (np , "xlnx,static-config" )) {
1160+ ret = of_property_read_u32 (np , "xlnx,speed-grade" , & clk_wzrd -> speed_grade );
1161+ if (!ret ) {
1162+ if (clk_wzrd -> speed_grade < 1 || clk_wzrd -> speed_grade > 3 ) {
1163+ dev_warn (& pdev -> dev , "invalid speed grade '%d'\n" ,
1164+ clk_wzrd -> speed_grade );
1165+ clk_wzrd -> speed_grade = 0 ;
1166+ }
1167+ }
11831168
1184- if (clk_wzrd -> speed_grade ) {
1185- clk_wzrd -> nb .notifier_call = clk_wzrd_clk_notifier ;
1169+ clk_wzrd -> clk_in1 = devm_clk_get (& pdev -> dev , "clk_in1" );
1170+ if (IS_ERR (clk_wzrd -> clk_in1 ))
1171+ return dev_err_probe (& pdev -> dev , PTR_ERR (clk_wzrd -> clk_in1 ),
1172+ "clk_in1 not found\n" );
11861173
1187- ret = devm_clk_notifier_register (& pdev -> dev , clk_wzrd -> clk_in1 ,
1188- & clk_wzrd -> nb );
1174+ ret = clk_wzrd_register_output_clocks (& pdev -> dev , nr_outputs );
11891175 if (ret )
1190- dev_warn (& pdev -> dev ,
1191- "unable to register clock notifier\n" );
1176+ return ret ;
1177+
1178+ clk_wzrd -> clk_data .num = nr_outputs ;
1179+ ret = devm_of_clk_add_hw_provider (& pdev -> dev , of_clk_hw_onecell_get ,
1180+ & clk_wzrd -> clk_data );
1181+ if (ret ) {
1182+ dev_err (& pdev -> dev , "unable to register clock provider\n" );
1183+ return ret ;
1184+ }
11921185
1193- ret = devm_clk_notifier_register (& pdev -> dev , clk_wzrd -> axi_clk ,
1194- & clk_wzrd -> nb );
1195- if (ret )
1196- dev_warn (& pdev -> dev ,
1197- "unable to register clock notifier\n" );
1186+ if (clk_wzrd -> speed_grade ) {
1187+ clk_wzrd -> nb .notifier_call = clk_wzrd_clk_notifier ;
1188+
1189+ ret = devm_clk_notifier_register (& pdev -> dev , clk_wzrd -> clk_in1 ,
1190+ & clk_wzrd -> nb );
1191+ if (ret )
1192+ dev_warn (& pdev -> dev ,
1193+ "unable to register clock notifier\n" );
1194+
1195+ ret = devm_clk_notifier_register (& pdev -> dev , clk_wzrd -> axi_clk ,
1196+ & clk_wzrd -> nb );
1197+ if (ret )
1198+ dev_warn (& pdev -> dev ,
1199+ "unable to register clock notifier\n" );
1200+ }
11981201 }
11991202
12001203 return 0 ;
0 commit comments