Hi Thierry & David, May I ask you please your feedback on this small patch? Many thanks, Philippe :-) On 02/05/2018 10:45 AM, Philippe Cornu wrote: > Add support for the optional power-supply. > > Note: A "dummy regulator" is returned by devm_regulator_get() > if the optional regulator is not present in the device tree, > simplifying the source code when enabling/disabling the regulator. > > Signed-off-by: Philippe Cornu <philippe.cornu@xxxxxx> > --- > drivers/gpu/drm/panel/panel-orisetech-otm8009a.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > index 72530983d55d..90f1ae4af93c 100644 > --- a/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > +++ b/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c > @@ -11,6 +11,7 @@ > #include <drm/drm_panel.h> > #include <linux/backlight.h> > #include <linux/gpio/consumer.h> > +#include <linux/regulator/consumer.h> > #include <video/mipi_display.h> > > #define DRV_NAME "orisetech_otm8009a" > @@ -62,6 +63,7 @@ struct otm8009a { > struct drm_panel panel; > struct backlight_device *bl_dev; > struct gpio_desc *reset_gpio; > + struct regulator *supply; > bool prepared; > bool enabled; > }; > @@ -279,6 +281,8 @@ static int otm8009a_unprepare(struct drm_panel *panel) > msleep(20); > } > > + regulator_disable(ctx->supply); > + > ctx->prepared = false; > > return 0; > @@ -292,6 +296,12 @@ static int otm8009a_prepare(struct drm_panel *panel) > if (ctx->prepared) > return 0; > > + ret = regulator_enable(ctx->supply); > + if (ret < 0) { > + DRM_ERROR("failed to enable supply: %d\n", ret); > + return ret; > + } > + > if (ctx->reset_gpio) { > gpiod_set_value_cansleep(ctx->reset_gpio, 0); > gpiod_set_value_cansleep(ctx->reset_gpio, 1); > @@ -414,6 +424,13 @@ static int otm8009a_probe(struct mipi_dsi_device *dsi) > return PTR_ERR(ctx->reset_gpio); > } > > + ctx->supply = devm_regulator_get(dev, "power"); > + if (IS_ERR(ctx->supply)) { > + ret = PTR_ERR(ctx->supply); > + dev_err(dev, "failed to request regulator: %d\n", ret); > + return ret; > + } > + > mipi_dsi_set_drvdata(dsi, ctx); > > ctx->dev = dev; > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel