Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit ce87974

Browse files
nfrapradovireshk
authored andcommitted
cpufreq: mediatek: Use dev_err_probe in every error path in probe
Use the dev_err_probe() helper to log the errors on every error path in the probe function and its sub-functions. This includes * adding error messages where there was none * converting over dev_err/dev_warn * removing the top-level error message after mtk_cpu_dvfs_info_init() is called, since every error path inside that function already logs the error reason. This gets rid of the misleading error message when probe is deferred: mtk-cpufreq mtk-cpufreq: failed to initialize dvfs info for cpu0 Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
1 parent ccf5145 commit ce87974

File tree

1 file changed

+34
-38
lines changed

1 file changed

+34
-38
lines changed

drivers/cpufreq/mediatek-cpufreq.c

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -390,28 +390,23 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
390390
int ret;
391391

392392
cpu_dev = get_cpu_device(cpu);
393-
if (!cpu_dev) {
394-
dev_err(cpu_dev, "failed to get cpu%d device\n", cpu);
395-
return -ENODEV;
396-
}
393+
if (!cpu_dev)
394+
return dev_err_probe(cpu_dev, -ENODEV, "failed to get cpu%d device\n", cpu);
397395
info->cpu_dev = cpu_dev;
398396

399397
info->ccifreq_bound = false;
400398
if (info->soc_data->ccifreq_supported) {
401399
info->cci_dev = of_get_cci(info->cpu_dev);
402-
if (IS_ERR(info->cci_dev)) {
403-
ret = PTR_ERR(info->cci_dev);
404-
dev_err(cpu_dev, "cpu%d: failed to get cci device\n", cpu);
405-
return -ENODEV;
406-
}
400+
if (IS_ERR(info->cci_dev))
401+
return dev_err_probe(cpu_dev, PTR_ERR(info->cci_dev),
402+
"cpu%d: failed to get cci device\n",
403+
cpu);
407404
}
408405

409406
info->cpu_clk = clk_get(cpu_dev, "cpu");
410-
if (IS_ERR(info->cpu_clk)) {
411-
ret = PTR_ERR(info->cpu_clk);
412-
return dev_err_probe(cpu_dev, ret,
407+
if (IS_ERR(info->cpu_clk))
408+
return dev_err_probe(cpu_dev, PTR_ERR(info->cpu_clk),
413409
"cpu%d: failed to get cpu clk\n", cpu);
414-
}
415410

416411
info->inter_clk = clk_get(cpu_dev, "intermediate");
417412
if (IS_ERR(info->inter_clk)) {
@@ -431,54 +426,60 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
431426

432427
ret = regulator_enable(info->proc_reg);
433428
if (ret) {
434-
dev_warn(cpu_dev, "cpu%d: failed to enable vproc\n", cpu);
429+
dev_err_probe(cpu_dev, ret, "cpu%d: failed to enable vproc\n", cpu);
435430
goto out_free_proc_reg;
436431
}
437432

438433
/* Both presence and absence of sram regulator are valid cases. */
439434
info->sram_reg = regulator_get_optional(cpu_dev, "sram");
440435
if (IS_ERR(info->sram_reg)) {
441436
ret = PTR_ERR(info->sram_reg);
442-
if (ret == -EPROBE_DEFER)
437+
if (ret == -EPROBE_DEFER) {
438+
dev_err_probe(cpu_dev, ret,
439+
"cpu%d: Failed to get sram regulator\n", cpu);
443440
goto out_disable_proc_reg;
441+
}
444442

445443
info->sram_reg = NULL;
446444
} else {
447445
ret = regulator_enable(info->sram_reg);
448446
if (ret) {
449-
dev_warn(cpu_dev, "cpu%d: failed to enable vsram\n", cpu);
447+
dev_err_probe(cpu_dev, ret, "cpu%d: failed to enable vsram\n", cpu);
450448
goto out_free_sram_reg;
451449
}
452450
}
453451

454452
/* Get OPP-sharing information from "operating-points-v2" bindings */
455453
ret = dev_pm_opp_of_get_sharing_cpus(cpu_dev, &info->cpus);
456454
if (ret) {
457-
dev_err(cpu_dev,
455+
dev_err_probe(cpu_dev, ret,
458456
"cpu%d: failed to get OPP-sharing information\n", cpu);
459457
goto out_disable_sram_reg;
460458
}
461459

462460
ret = dev_pm_opp_of_cpumask_add_table(&info->cpus);
463461
if (ret) {
464-
dev_warn(cpu_dev, "cpu%d: no OPP table\n", cpu);
462+
dev_err_probe(cpu_dev, ret, "cpu%d: no OPP table\n", cpu);
465463
goto out_disable_sram_reg;
466464
}
467465

468466
ret = clk_prepare_enable(info->cpu_clk);
469-
if (ret)
467+
if (ret) {
468+
dev_err_probe(cpu_dev, ret, "cpu%d: failed to enable cpu clk\n", cpu);
470469
goto out_free_opp_table;
470+
}
471471

472472
ret = clk_prepare_enable(info->inter_clk);
473-
if (ret)
473+
if (ret) {
474+
dev_err_probe(cpu_dev, ret, "cpu%d: failed to enable inter clk\n", cpu);
474475
goto out_disable_mux_clock;
476+
}
475477

476478
if (info->soc_data->ccifreq_supported) {
477479
info->vproc_on_boot = regulator_get_voltage(info->proc_reg);
478480
if (info->vproc_on_boot < 0) {
479-
ret = info->vproc_on_boot;
480-
dev_err(info->cpu_dev,
481-
"invalid Vproc value: %d\n", info->vproc_on_boot);
481+
ret = dev_err_probe(info->cpu_dev, info->vproc_on_boot,
482+
"invalid Vproc value\n");
482483
goto out_disable_inter_clock;
483484
}
484485
}
@@ -487,8 +488,8 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
487488
rate = clk_get_rate(info->inter_clk);
488489
opp = dev_pm_opp_find_freq_ceil(cpu_dev, &rate);
489490
if (IS_ERR(opp)) {
490-
dev_err(cpu_dev, "cpu%d: failed to get intermediate opp\n", cpu);
491-
ret = PTR_ERR(opp);
491+
ret = dev_err_probe(cpu_dev, PTR_ERR(opp),
492+
"cpu%d: failed to get intermediate opp\n", cpu);
492493
goto out_disable_inter_clock;
493494
}
494495
info->intermediate_voltage = dev_pm_opp_get_voltage(opp);
@@ -501,7 +502,7 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
501502
info->opp_nb.notifier_call = mtk_cpufreq_opp_notifier;
502503
ret = dev_pm_opp_register_notifier(cpu_dev, &info->opp_nb);
503504
if (ret) {
504-
dev_err(cpu_dev, "cpu%d: failed to register opp notifier\n", cpu);
505+
dev_err_probe(cpu_dev, ret, "cpu%d: failed to register opp notifier\n", cpu);
505506
goto out_disable_inter_clock;
506507
}
507508

@@ -627,11 +628,9 @@ static int mtk_cpufreq_probe(struct platform_device *pdev)
627628
int cpu, ret;
628629

629630
data = dev_get_platdata(&pdev->dev);
630-
if (!data) {
631-
dev_err(&pdev->dev,
632-
"failed to get mtk cpufreq platform data\n");
633-
return -ENODEV;
634-
}
631+
if (!data)
632+
return dev_err_probe(&pdev->dev, -ENODEV,
633+
"failed to get mtk cpufreq platform data\n");
635634

636635
for_each_possible_cpu(cpu) {
637636
info = mtk_cpu_dvfs_info_lookup(cpu);
@@ -640,25 +639,22 @@ static int mtk_cpufreq_probe(struct platform_device *pdev)
640639

641640
info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
642641
if (!info) {
643-
ret = -ENOMEM;
642+
ret = dev_err_probe(&pdev->dev, -ENOMEM,
643+
"Failed to allocate dvfs_info\n");
644644
goto release_dvfs_info_list;
645645
}
646646

647647
info->soc_data = data;
648648
ret = mtk_cpu_dvfs_info_init(info, cpu);
649-
if (ret) {
650-
dev_err(&pdev->dev,
651-
"failed to initialize dvfs info for cpu%d\n",
652-
cpu);
649+
if (ret)
653650
goto release_dvfs_info_list;
654-
}
655651

656652
list_add(&info->list_head, &dvfs_info_list);
657653
}
658654

659655
ret = cpufreq_register_driver(&mtk_cpufreq_driver);
660656
if (ret) {
661-
dev_err(&pdev->dev, "failed to register mtk cpufreq driver\n");
657+
dev_err_probe(&pdev->dev, ret, "failed to register mtk cpufreq driver\n");
662658
goto release_dvfs_info_list;
663659
}
664660

0 commit comments

Comments
 (0)