On Fri, Mar 13, 2015 at 04:30:43PM +0200, Ville Syrjälä wrote: > On Thu, Mar 12, 2015 at 10:01:33PM +0530, Shobhit Kumar wrote: > > CC: Samuel Ortiz <sameo@xxxxxxxxxxxxxxx> > > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> > > Cc: Alexandre Courbot <gnurou@xxxxxxxxx> > > Cc: Thierry Reding <thierry.reding@xxxxxxxxx> > > Signed-off-by: Shobhit Kumar <shobhit.kumar@xxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_dsi.c | 25 +++++++++++++++++++++++++ > > drivers/gpu/drm/i915/intel_dsi.h | 3 +++ > > 2 files changed, 28 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > > index 219421c..511446f 100644 > > --- a/drivers/gpu/drm/i915/intel_dsi.c > > +++ b/drivers/gpu/drm/i915/intel_dsi.c > > @@ -32,6 +32,7 @@ > > #include <drm/drm_mipi_dsi.h> > > #include <linux/slab.h> > > #include <linux/gpio/consumer.h> > > +#include <linux/pwm.h> > > #include "i915_drv.h" > > #include "intel_drv.h" > > #include "intel_dsi.h" > > @@ -402,6 +403,10 @@ static void intel_dsi_enable(struct intel_encoder *encoder) > > > > intel_dsi_port_enable(encoder); > > } > > + > > + /* Enable the backlight with default PWM as programmed by BIOS */ > > + pwm_enable(intel_dsi->pwm); > > + pwm_config_alternate(intel_dsi->pwm, 0x7F, 100); > > I suppose we migth want to wrap these in 'if (intel_dsi->pwm)' checks, > or does the pwm subsystem take care of NULL checks for us? > > > } > > > > static void intel_dsi_pre_enable(struct intel_encoder *encoder) > > @@ -467,6 +472,11 @@ static void intel_dsi_pre_disable(struct intel_encoder *encoder) > > > > DRM_DEBUG_KMS("\n"); > > > > + /* Disable the backlight */ > > + pwm_config_alternate(intel_dsi->pwm, 0x7F, 0); > > + usleep_range(2000, 3000); > > + pwm_disable(intel_dsi->pwm); > > ditto > > > + > > if (is_vid_mode(intel_dsi)) { > > /* Send Shutdown command to the panel in LP mode */ > > for_each_dsi_port(port, intel_dsi->ports) > > @@ -971,6 +981,10 @@ static void intel_dsi_encoder_destroy(struct drm_encoder *encoder) > > if (intel_dsi->gpio_panel) > > gpiod_put(intel_dsi->gpio_panel); > > > > + /* dispose of the pwm */ > > + if (intel_dsi->pwm) > > + pwm_put(intel_dsi->pwm); > > + > > intel_encoder_destroy(encoder); > > } > > > > @@ -1098,6 +1112,17 @@ void intel_dsi_init(struct drm_device *dev) > > DRM_ERROR("Failed to own gpio for panel control\n"); > > intel_dsi->gpio_panel = NULL; > > } > > + > > + /* Get the PWM chip for backlight control */ > > + intel_dsi->pwm = pwm_get(dev->dev, "pwm_backlight"); > > + if (IS_ERR(intel_dsi->pwm)) { > > + DRM_ERROR("Faild to own the pwm chip\n"); > > + intel_dsi->pwm = NULL; If the i915.ko driver loads before the mfd.ko driver we need to do a deferred probe here I think. Just failing isn't robust. This also means that if people don't configure their kernel properly then we'll fall over here, but meh. -Daniel > > + } else if (pwm_config_alternate(intel_dsi->pwm, 0x7F, 100) < 0) { > > + DRM_ERROR("Failed to configure the pwm chip\n"); > > + pwm_put(intel_dsi->pwm); > > + intel_dsi->pwm = NULL; > > + } > > } > > > > intel_encoder->type = INTEL_OUTPUT_DSI; > > diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h > > index 8be75a7..d8ec9c1 100644 > > --- a/drivers/gpu/drm/i915/intel_dsi.h > > +++ b/drivers/gpu/drm/i915/intel_dsi.h > > @@ -52,6 +52,9 @@ struct intel_dsi { > > /* GPIO Desc for CRC based Panel control */ > > struct gpio_desc *gpio_panel; > > > > + /* PWM chip */ > > + struct pwm_device *pwm; > > + > > struct intel_connector *attached_connector; > > > > /* bit mask of ports being driven */ > > -- > > 2.1.0 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel OTC > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx