In order to properly make the VDD supply optional, all accesses to the
regulator need to be ignored, because the regulator core doesn't treat
NULL special.
Signed-off-by: Thierry Reding <treding@nvidia.com>
return PTR_ERR(dpaux->vdd);
}
return PTR_ERR(dpaux->vdd);
}
}
platform_set_drvdata(pdev, dpaux);
}
platform_set_drvdata(pdev, dpaux);
output->connector.polled = DRM_CONNECTOR_POLL_HPD;
dpaux->output = output;
output->connector.polled = DRM_CONNECTOR_POLL_HPD;
dpaux->output = output;
- err = regulator_enable(dpaux->vdd);
- if (err < 0)
- return err;
-
if (output->panel) {
enum drm_connector_status status;
if (output->panel) {
enum drm_connector_status status;
+ if (dpaux->vdd) {
+ err = regulator_enable(dpaux->vdd);
+ if (err < 0)
+ return err;
+ }
+
timeout = jiffies + msecs_to_jiffies(250);
while (time_before(jiffies, timeout)) {
timeout = jiffies + msecs_to_jiffies(250);
while (time_before(jiffies, timeout)) {
- err = regulator_disable(dpaux->vdd);
- if (err < 0)
- return err;
-
if (dpaux->output->panel) {
enum drm_connector_status status;
if (dpaux->output->panel) {
enum drm_connector_status status;
+ if (dpaux->vdd) {
+ err = regulator_disable(dpaux->vdd);
+ if (err < 0)
+ return err;
+ }
+
timeout = jiffies + msecs_to_jiffies(250);
while (time_before(jiffies, timeout)) {
timeout = jiffies + msecs_to_jiffies(250);
while (time_before(jiffies, timeout)) {