Message ID | 1394233524-3522-3-git-send-email-przanoni@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, 08 Mar 2014, Paulo Zanoni <przanoni@gmail.com> wrote: > From: Paulo Zanoni <paulo.r.zanoni@intel.com> > > Commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 tried to revert commit > dff392dbd258381a6c3164f38420593f2d291e3b, but wasn't complete, which > resulted in regressions on Haswell. So this commit should fix > b3064154dfd37deb386b1e459c54e1ca2460b3d5 by undoing what it did and > providing an actual complete revert of > dff392dbd258381a6c3164f38420593f2d291e3b. > > Fixes regression introduced by: > commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 > Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> > Date: Tue Mar 4 00:42:44 2014 +0100 > drm/i915: Don't just say it, actually force edp vdd Patrik, would you mind acking/testing this patch, as it blames your commit for regressing? Thanks, Jani. > > Testcase: igt/pm_pc8 > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> > --- > drivers/gpu/drm/i915/intel_ddi.c | 1 + > drivers/gpu/drm/i915/intel_dp.c | 9 ++++++--- > drivers/gpu/drm/i915/intel_drv.h | 1 + > 3 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index e2665e0..34e8bb3 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -1340,6 +1340,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) > if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); > + edp_panel_vdd_on(intel_dp); > intel_edp_panel_off(intel_dp); > } > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 22e1bdd..e936f36 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -91,7 +91,6 @@ static struct intel_dp *intel_attached_dp(struct drm_connector *connector) > } > > static void intel_dp_link_down(struct intel_dp *intel_dp); > -static void edp_panel_vdd_on(struct intel_dp *intel_dp); > static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); > > static int > @@ -1162,7 +1161,7 @@ static u32 ironlake_get_pp_control(struct intel_dp *intel_dp) > return control; > } > > -static void edp_panel_vdd_on(struct intel_dp *intel_dp) > +void edp_panel_vdd_on(struct intel_dp *intel_dp) > { > struct drm_device *dev = intel_dp_to_dev(intel_dp); > struct drm_i915_private *dev_priv = dev->dev_private; > @@ -1338,11 +1337,16 @@ void intel_edp_panel_off(struct intel_dp *intel_dp) > > pp_ctrl_reg = _pp_ctrl_reg(intel_dp); > > + intel_dp->want_panel_vdd = false; > + > I915_WRITE(pp_ctrl_reg, pp); > POSTING_READ(pp_ctrl_reg); > > intel_dp->last_power_cycle = jiffies; > wait_panel_off(intel_dp); > + > + /* We got a reference when we enabled the VDD. */ > + intel_runtime_pm_put(dev_priv); > } > > void intel_edp_backlight_on(struct intel_dp *intel_dp) > @@ -1880,7 +1884,6 @@ static void intel_disable_dp(struct intel_encoder *encoder) > intel_edp_backlight_off(intel_dp); > intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); > intel_edp_panel_off(intel_dp); > - edp_panel_vdd_off(intel_dp, true); > > /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */ > if (!(port == PORT_A || IS_VALLEYVIEW(dev))) > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 9c70905..805d207 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -762,6 +762,7 @@ void intel_edp_panel_off(struct intel_dp *intel_dp); > void intel_edp_psr_enable(struct intel_dp *intel_dp); > void intel_edp_psr_disable(struct intel_dp *intel_dp); > void intel_edp_psr_update(struct drm_device *dev); > +void edp_panel_vdd_on(struct intel_dp *intel_dp); > > > /* intel_dsi.c */ > -- > 1.8.5.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Fri, Mar 14, 2014 at 1:07 PM, Jani Nikula <jani.nikula@linux.intel.com> wrote: >> Fixes regression introduced by: >> commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 >> Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> >> Date: Tue Mar 4 00:42:44 2014 +0100 >> drm/i915: Don't just say it, actually force edp vdd > > Patrik, would you mind acking/testing this patch, as it blames your > commit for regressing? Testing will be hard I guess since it does the equivalent change Patrik has done to the pre-hsw dp code to the ddi hsw+ code. But a review would be nice - I've signed up Damien for this but he seems to be sick :( -Daniel
On Fri, Mar 14, 2014 at 2:57 PM, Daniel Vetter <daniel@ffwll.ch> wrote: > On Fri, Mar 14, 2014 at 1:07 PM, Jani Nikula > <jani.nikula@linux.intel.com> wrote: >>> Fixes regression introduced by: >>> commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 >>> Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> >>> Date: Tue Mar 4 00:42:44 2014 +0100 >>> drm/i915: Don't just say it, actually force edp vdd >> >> Patrik, would you mind acking/testing this patch, as it blames your >> commit for regressing? > > Testing will be hard I guess since it does the equivalent change > Patrik has done to the pre-hsw dp code to the ddi hsw+ code. But a > review would be nice - I've signed up Damien for this but he seems to > be sick :( > -Daniel Yes, as expected, this patch applied on top of -nightly is working fine. It's the EDP_FORCE_VDD bit that is required for my Macbook Air 6,x. Is the proper fix for -fixes to completely revert: dff392dbd258381a6c3164f38420593f2d291e3b Tested-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Thanks Patrik
On Fri, 14 Mar 2014, Patrik Jakobsson <patrik.r.jakobsson@gmail.com> wrote: > On Fri, Mar 14, 2014 at 2:57 PM, Daniel Vetter <daniel@ffwll.ch> wrote: >> On Fri, Mar 14, 2014 at 1:07 PM, Jani Nikula >> <jani.nikula@linux.intel.com> wrote: >>>> Fixes regression introduced by: >>>> commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 >>>> Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> >>>> Date: Tue Mar 4 00:42:44 2014 +0100 >>>> drm/i915: Don't just say it, actually force edp vdd >>> >>> Patrik, would you mind acking/testing this patch, as it blames your >>> commit for regressing? >> >> Testing will be hard I guess since it does the equivalent change >> Patrik has done to the pre-hsw dp code to the ddi hsw+ code. But a >> review would be nice - I've signed up Damien for this but he seems to >> be sick :( >> -Daniel > > Yes, as expected, this patch applied on top of -nightly is working fine. It's > the EDP_FORCE_VDD bit that is required for my Macbook Air 6,x. > > Is the proper fix for -fixes to completely revert: > dff392dbd258381a6c3164f38420593f2d291e3b Hi Patrik, I've done just that. Giving the drm-intel-fixes branch a spin would be great, if you don't mind me asking. BR, Jani. > > Tested-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> > > Thanks > Patrik
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index e2665e0..34e8bb3 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -1340,6 +1340,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); + edp_panel_vdd_on(intel_dp); intel_edp_panel_off(intel_dp); } diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 22e1bdd..e936f36 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -91,7 +91,6 @@ static struct intel_dp *intel_attached_dp(struct drm_connector *connector) } static void intel_dp_link_down(struct intel_dp *intel_dp); -static void edp_panel_vdd_on(struct intel_dp *intel_dp); static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); static int @@ -1162,7 +1161,7 @@ static u32 ironlake_get_pp_control(struct intel_dp *intel_dp) return control; } -static void edp_panel_vdd_on(struct intel_dp *intel_dp) +void edp_panel_vdd_on(struct intel_dp *intel_dp) { struct drm_device *dev = intel_dp_to_dev(intel_dp); struct drm_i915_private *dev_priv = dev->dev_private; @@ -1338,11 +1337,16 @@ void intel_edp_panel_off(struct intel_dp *intel_dp) pp_ctrl_reg = _pp_ctrl_reg(intel_dp); + intel_dp->want_panel_vdd = false; + I915_WRITE(pp_ctrl_reg, pp); POSTING_READ(pp_ctrl_reg); intel_dp->last_power_cycle = jiffies; wait_panel_off(intel_dp); + + /* We got a reference when we enabled the VDD. */ + intel_runtime_pm_put(dev_priv); } void intel_edp_backlight_on(struct intel_dp *intel_dp) @@ -1880,7 +1884,6 @@ static void intel_disable_dp(struct intel_encoder *encoder) intel_edp_backlight_off(intel_dp); intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); intel_edp_panel_off(intel_dp); - edp_panel_vdd_off(intel_dp, true); /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */ if (!(port == PORT_A || IS_VALLEYVIEW(dev))) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 9c70905..805d207 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -762,6 +762,7 @@ void intel_edp_panel_off(struct intel_dp *intel_dp); void intel_edp_psr_enable(struct intel_dp *intel_dp); void intel_edp_psr_disable(struct intel_dp *intel_dp); void intel_edp_psr_update(struct drm_device *dev); +void edp_panel_vdd_on(struct intel_dp *intel_dp); /* intel_dsi.c */