]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/tegra: dpaux: Make VDD supply optional
authorThierry Reding <treding@nvidia.com>
Wed, 5 Jun 2019 08:48:01 +0000 (10:48 +0200)
committerThierry Reding <treding@nvidia.com>
Wed, 5 Jun 2019 13:06:04 +0000 (15:06 +0200)
The VDD supply is only needed to supply power to eDP panels connected to
DPAUX. Technically that supply should be dealt with in the panel driver,
but for backwards-compatibility we need to keep this around anyway.

Also as a bit of background: the reason for why this supply is attached
to DPAUX is to make sure the panel is properly powered early on so that
it can generate a hotplug pulse at the appropriate time. This may no
longer be required given the support for deferred fbdev setup that was
"recently" introduced in DRM/KMS.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/dpaux.c

index ee4180d8db147ce3739bf8c19ebd2b19d1cb33ea..65c389d9c85da7921ab254c75ce257e3c2285fbe 100644 (file)
@@ -485,11 +485,16 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
                return err;
        }
 
-       dpaux->vdd = devm_regulator_get(&pdev->dev, "vdd");
+       dpaux->vdd = devm_regulator_get_optional(&pdev->dev, "vdd");
        if (IS_ERR(dpaux->vdd)) {
-               dev_err(&pdev->dev, "failed to get VDD supply: %ld\n",
-                       PTR_ERR(dpaux->vdd));
-               return PTR_ERR(dpaux->vdd);
+               if (PTR_ERR(dpaux->vdd) != -ENODEV) {
+                       if (PTR_ERR(dpaux->vdd) != -EPROBE_DEFER)
+                               dev_err(&pdev->dev,
+                                       "failed to get VDD supply: %ld\n",
+                                       PTR_ERR(dpaux->vdd));
+
+                       return PTR_ERR(dpaux->vdd);
+               }
        }
 
        platform_set_drvdata(pdev, dpaux);