On Fri, 07 Nov 2014, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Now that the backlight device no longer gets registered too early we > should be able to drop most of the INVALID_PIPE checks from the backlight > code. > > The only exceptio is the opregion stuff where we may (in theory at > least) get a request from the BIOS already during driver init as soon as > the backlight setup has been done. In which case we can still get the > INVALID_PIPE from intel_get_pipe_from_connector(). So leave that check > in place, and add a comment explaining why. > > For the rest, if we still manage to get here with INVALID_PIPE on > VLV/CHV we will now get a WARN from the lower level functions and > can then actually investigate further. > > v2: Leave the check in the BIOS related code (Jani) > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_panel.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c > index 708642a..c45b127 100644 > --- a/drivers/gpu/drm/i915/intel_panel.c > +++ b/drivers/gpu/drm/i915/intel_panel.c > @@ -634,10 +634,9 @@ static void intel_panel_set_backlight(struct intel_connector *connector, > struct drm_device *dev = connector->base.dev; > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_panel *panel = &connector->panel; > - enum pipe pipe = intel_get_pipe_from_connector(connector); > u32 hw_level; > > - if (!panel->backlight.present || pipe == INVALID_PIPE) > + if (!panel->backlight.present) > return; > > mutex_lock(&dev_priv->backlight_lock); > @@ -665,6 +664,12 @@ void intel_panel_set_backlight_acpi(struct intel_connector *connector, > enum pipe pipe = intel_get_pipe_from_connector(connector); > u32 hw_level; > > + /* > + * INVALID_PIPE may occur during driver init because > + * connection_mutex isn't held across the entire backlight > + * setup + modeset readout, and the BIOS can issue the > + * requests at any time. > + */ > if (!panel->backlight.present || pipe == INVALID_PIPE) > return; > > @@ -740,9 +745,8 @@ void intel_panel_disable_backlight(struct intel_connector *connector) > struct drm_device *dev = connector->base.dev; > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_panel *panel = &connector->panel; > - enum pipe pipe = intel_get_pipe_from_connector(connector); > > - if (!panel->backlight.present || pipe == INVALID_PIPE) > + if (!panel->backlight.present) > return; > > /* > @@ -949,7 +953,7 @@ void intel_panel_enable_backlight(struct intel_connector *connector) > struct intel_panel *panel = &connector->panel; > enum pipe pipe = intel_get_pipe_from_connector(connector); > > - if (!panel->backlight.present || pipe == INVALID_PIPE) > + if (!panel->backlight.present) > return; > > DRM_DEBUG_KMS("pipe %c\n", pipe_name(pipe)); > -- > 2.0.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx