Skip to content

Commit 83f67ba

Browse files
committed
drm/tegra: Use dev_err_probe()
Replace dev_printk() with a generic dev_err_probe() helper which silences noisy error messages about deferred probe and makes easy to debug failing deferred probe by printing notification about the failure to KMSG in the end of kernel booting process and by adding failing device and the reason of deferred probe to devices_deferred of debugfs. This was proven to be useful in the case of eDP driver regression by immediately showing why display driver was failing when user asked for help, otherwise it would've been much more difficult to debug such problems on a third party device that doesn't have developer setup. Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
1 parent b63a263 commit 83f67ba

2 files changed

Lines changed: 12 additions & 35 deletions

File tree

drivers/gpu/drm/tegra/dc.c

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3236,16 +3236,9 @@ static int tegra_dc_probe(struct platform_device *pdev)
32363236
return -ENXIO;
32373237

32383238
err = tegra_dc_rgb_probe(dc);
3239-
if (err < 0 && err != -ENODEV) {
3240-
const char *level = KERN_ERR;
3241-
3242-
if (err == -EPROBE_DEFER)
3243-
level = KERN_DEBUG;
3244-
3245-
dev_printk(level, dc->dev, "failed to probe RGB output: %d\n",
3246-
err);
3247-
return err;
3248-
}
3239+
if (err < 0 && err != -ENODEV)
3240+
return dev_err_probe(&pdev->dev, err,
3241+
"failed to probe RGB output\n");
32493242

32503243
platform_set_drvdata(pdev, dc);
32513244
pm_runtime_enable(&pdev->dev);

drivers/gpu/drm/tegra/hdmi.c

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,7 +1776,6 @@ static irqreturn_t tegra_hdmi_irq(int irq, void *data)
17761776

17771777
static int tegra_hdmi_probe(struct platform_device *pdev)
17781778
{
1779-
const char *level = KERN_ERR;
17801779
struct tegra_hdmi *hdmi;
17811780
struct resource *regs;
17821781
int err;
@@ -1818,36 +1817,21 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
18181817

18191818
hdmi->hdmi = devm_regulator_get(&pdev->dev, "hdmi");
18201819
err = PTR_ERR_OR_ZERO(hdmi->hdmi);
1821-
if (err) {
1822-
if (err == -EPROBE_DEFER)
1823-
level = KERN_DEBUG;
1824-
1825-
dev_printk(level, &pdev->dev,
1826-
"failed to get HDMI regulator: %d\n", err);
1827-
return err;
1828-
}
1820+
if (err)
1821+
return dev_err_probe(&pdev->dev, err,
1822+
"failed to get HDMI regulator\n");
18291823

18301824
hdmi->pll = devm_regulator_get(&pdev->dev, "pll");
18311825
err = PTR_ERR_OR_ZERO(hdmi->pll);
1832-
if (err) {
1833-
if (err == -EPROBE_DEFER)
1834-
level = KERN_DEBUG;
1835-
1836-
dev_printk(level, &pdev->dev,
1837-
"failed to get PLL regulator: %d\n", err);
1838-
return err;
1839-
}
1826+
if (err)
1827+
return dev_err_probe(&pdev->dev, err,
1828+
"failed to get PLL regulator\n");
18401829

18411830
hdmi->vdd = devm_regulator_get(&pdev->dev, "vdd");
18421831
err = PTR_ERR_OR_ZERO(hdmi->vdd);
1843-
if (err) {
1844-
if (err == -EPROBE_DEFER)
1845-
level = KERN_DEBUG;
1846-
1847-
dev_printk(level, &pdev->dev,
1848-
"failed to get VDD regulator: %d\n", err);
1849-
return err;
1850-
}
1832+
if (err)
1833+
return dev_err_probe(&pdev->dev, err,
1834+
"failed to get VDD regulator\n");
18511835

18521836
hdmi->output.dev = &pdev->dev;
18531837

0 commit comments

Comments
 (0)