All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Ignore OpRegion panel type except on select machines
@ 2016-09-13  9:22 ville.syrjala
  2016-09-13  9:37 ` [Intel-gfx] " Jani Nikula
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: ville.syrjala @ 2016-09-13  9:22 UTC (permalink / raw)
  To: intel-gfx
  Cc: Rob Kramer, Martin van Es, Andrea Arcangeli, Dave Airlie,
	Marco Krüger, Sean Greenslade, Trudy Tective,
	Robin Müller, Alexander Kobel, Alexey Shumitsky,
	Emil Andersen Lauridsen, oceans112, James Hogan, James Bottomley,
	stable

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Turns out
commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
details") has regressed quite a few machines. So it looks like we
can't use the panel type from OpRegion on all systems, and yet we
absolutely must use it on some specific systems.

Despite trying, I was unable to find any automagic way to determine
if the OpRegion panel type is respectable or not. The only glimmer
of hope I had was bit 8 in the SCIC response, but that turned out to
not work either (it was always 0 on both types of systems).

So, to fix the regressions without breaking the machine we know to need
the OpRegion panel type, let's just add a quirk for this. Only specific
machines known to require the OpRegion panel type will therefore use
it. Everyone else will fall bck to the VBT panel type.

The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
subsystem ID on this machine is just a generic 8086:2a42, so of no use.
Instead we'll go with a DMI match.

I suspect we can now also revert
commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
but let's leave that to a separate patch.

v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
    gets populated too late

Cc: Rob Kramer <rob@solution-space.com>
Cc: Martin van Es <martin@mrvanes.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Dave Airlie <airlied@linux.ie>
Cc: Marco Krüger <krgsch@gmail.com>
Cc: Sean Greenslade <sean@seangreenslade.com>
Cc: Trudy Tective <bertslany@gmail.com>
Cc: Robin Müller <rm1990@gmx.de>
Cc: Alexander Kobel <a-kobel@a-kobel.de>
Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
Cc: Emil Andersen Lauridsen <mine809@gmail.com>
Cc: oceans112@gmail.com
Cc: James Hogan <james@albanarts.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: stable@vger.kernel.org
References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
Tested-by: Marco Krüger <krgsch@gmail.com>
Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
Tested-by: Sean Greenslade <sean@seangreenslade.com>
Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
Tested-by: Robin Müller <rm1990@gmx.de>
Tested-by: oceans112@gmail.com
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index adca262d591a..7acbbbf97833 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -1047,6 +1047,23 @@ err_out:
 	return err;
 }
 
+static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
+{
+	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
+	return 1;
+}
+
+static const struct dmi_system_id intel_use_opregion_panel_type[] = {
+	{
+		.callback = intel_use_opregion_panel_type_callback,
+		.ident = "Conrac GmbH IX45GM2",
+		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
+			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
+		},
+	},
+	{ }
+};
+
 int
 intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
 {
@@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
 	}
 
 	/*
+	 * So far we know that some machined must use it, others must not use it.
+	 * There doesn't seem to be any way to determine which way to go, except
+	 * via a quirk list :(
+	 */
+	if (!dmi_check_system(intel_use_opregion_panel_type)) {
+		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
+		return -ENODEV;
+	}
+
+	/*
 	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
 	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
 	 * vswing instead. Low vswing results in some display flickers, so
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915: Ignore OpRegion panel type except on select machines
  2016-09-13  9:22 [PATCH] drm/i915: Ignore OpRegion panel type except on select machines ville.syrjala
@ 2016-09-13  9:37 ` Jani Nikula
  2016-09-14  7:45     ` Ville Syrjälä
  2016-09-13 10:49 ` ✗ Fi.CI.BAT: failure for " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Jani Nikula @ 2016-09-13  9:37 UTC (permalink / raw)
  To: ville.syrjala, intel-gfx
  Cc: Andrea Arcangeli, Sean Greenslade, Alexey Shumitsky,
	Martin van Es, Dave Airlie, James Hogan, stable,
	Marco Krüger, Rob Kramer, Emil Andersen Lauridsen,
	Alexander Kobel, oceans112, James Bottomley, Robin Müller,
	Trudy Tective

On Tue, 13 Sep 2016, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Turns out
> commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
> details") has regressed quite a few machines. So it looks like we
> can't use the panel type from OpRegion on all systems, and yet we
> absolutely must use it on some specific systems.
>
> Despite trying, I was unable to find any automagic way to determine
> if the OpRegion panel type is respectable or not. The only glimmer
> of hope I had was bit 8 in the SCIC response, but that turned out to
> not work either (it was always 0 on both types of systems).
>
> So, to fix the regressions without breaking the machine we know to need
> the OpRegion panel type, let's just add a quirk for this. Only specific
> machines known to require the OpRegion panel type will therefore use
> it. Everyone else will fall bck to the VBT panel type.
>
> The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
> subsystem ID on this machine is just a generic 8086:2a42, so of no use.
> Instead we'll go with a DMI match.
>
> I suspect we can now also revert
> commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
> but let's leave that to a separate patch.
>
> v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
>     gets populated too late
>
> Cc: Rob Kramer <rob@solution-space.com>
> Cc: Martin van Es <martin@mrvanes.com>
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Dave Airlie <airlied@linux.ie>
> Cc: Marco Krüger <krgsch@gmail.com>
> Cc: Sean Greenslade <sean@seangreenslade.com>
> Cc: Trudy Tective <bertslany@gmail.com>
> Cc: Robin Müller <rm1990@gmx.de>
> Cc: Alexander Kobel <a-kobel@a-kobel.de>
> Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Cc: Emil Andersen Lauridsen <mine809@gmail.com>
> Cc: oceans112@gmail.com
> Cc: James Hogan <james@albanarts.com>
> Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> Cc: stable@vger.kernel.org
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
> References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html

References: http://patchwork.freedesktop.org/patch/msgid/1473602239-15855-1-git-send-email-adrienverge@gmail.com

Acked-by: Jani Nikula <jani.nikula@intel.com>

> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
> Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
> Tested-by: Marco Krüger <krgsch@gmail.com>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Tested-by: Sean Greenslade <sean@seangreenslade.com>
> Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> Tested-by: Robin Müller <rm1990@gmx.de>
> Tested-by: oceans112@gmail.com
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index adca262d591a..7acbbbf97833 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -1047,6 +1047,23 @@ err_out:
>  	return err;
>  }
>  
> +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> +{
> +	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> +	return 1;
> +}
> +
> +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> +	{
> +		.callback = intel_use_opregion_panel_type_callback,
> +		.ident = "Conrac GmbH IX45GM2",
> +		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> +			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> +		},
> +	},
> +	{ }
> +};
> +
>  int
>  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  {
> @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  	}
>  
>  	/*
> +	 * So far we know that some machined must use it, others must not use it.
> +	 * There doesn't seem to be any way to determine which way to go, except
> +	 * via a quirk list :(
> +	 */
> +	if (!dmi_check_system(intel_use_opregion_panel_type)) {
> +		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> +		return -ENODEV;
> +	}
> +
> +	/*
>  	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
>  	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
>  	 * vswing instead. Low vswing results in some display flickers, so

-- 
Jani Nikula, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 10+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Ignore OpRegion panel type except on select machines
  2016-09-13  9:22 [PATCH] drm/i915: Ignore OpRegion panel type except on select machines ville.syrjala
  2016-09-13  9:37 ` [Intel-gfx] " Jani Nikula
@ 2016-09-13 10:49 ` Patchwork
  2016-09-13 11:05   ` Ville Syrjälä
  2016-09-14  8:29   ` James Hogan
  2016-09-15 12:10   ` Adrien Vergé
  3 siblings, 1 reply; 10+ messages in thread
From: Patchwork @ 2016-09-13 10:49 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Ignore OpRegion panel type except on select machines
URL   : https://patchwork.freedesktop.org/series/12380/
State : failure

== Summary ==

Series 12380v1 drm/i915: Ignore OpRegion panel type except on select machines
https://patchwork.freedesktop.org/api/1.0/series/12380/revisions/1/mbox/

Test kms_cursor_legacy:
        Subgroup basic-cursor-vs-flip-varying-size:
                pass       -> FAIL       (fi-bsw-n3050)

fi-bdw-5557u     total:254  pass:239  dwarn:0   dfail:0   fail:0   skip:15 
fi-bsw-n3050     total:254  pass:207  dwarn:0   dfail:0   fail:1   skip:46 
fi-hsw-4770k     total:254  pass:232  dwarn:0   dfail:0   fail:0   skip:22 
fi-hsw-4770r     total:254  pass:228  dwarn:0   dfail:0   fail:0   skip:26 
fi-ilk-650       total:254  pass:184  dwarn:0   dfail:0   fail:2   skip:68 
fi-ivb-3520m     total:254  pass:223  dwarn:0   dfail:0   fail:0   skip:31 
fi-ivb-3770      total:254  pass:223  dwarn:0   dfail:0   fail:0   skip:31 
fi-skl-6260u     total:254  pass:240  dwarn:0   dfail:0   fail:0   skip:14 
fi-skl-6700hq    total:254  pass:227  dwarn:0   dfail:0   fail:1   skip:26 
fi-skl-6700k     total:254  pass:225  dwarn:1   dfail:0   fail:0   skip:28 
fi-snb-2520m     total:254  pass:209  dwarn:0   dfail:0   fail:0   skip:45 
fi-snb-2600      total:254  pass:209  dwarn:0   dfail:0   fail:0   skip:45 

Results at /archive/results/CI_IGT_test/Patchwork_2519/

b2c7ef9208902fdd352655b3a45a98714c051c0e drm-intel-nightly: 2016y-09m-13d-09h-04m-50s UTC integration manifest
4c10557 drm/i915: Ignore OpRegion panel type except on select machines

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: ✗ Fi.CI.BAT: failure for drm/i915: Ignore OpRegion panel type except on select machines
  2016-09-13 10:49 ` ✗ Fi.CI.BAT: failure for " Patchwork
@ 2016-09-13 11:05   ` Ville Syrjälä
  0 siblings, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2016-09-13 11:05 UTC (permalink / raw)
  To: intel-gfx

On Tue, Sep 13, 2016 at 10:49:50AM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Ignore OpRegion panel type except on select machines
> URL   : https://patchwork.freedesktop.org/series/12380/
> State : failure
> 
> == Summary ==
> 
> Series 12380v1 drm/i915: Ignore OpRegion panel type except on select machines
> https://patchwork.freedesktop.org/api/1.0/series/12380/revisions/1/mbox/
> 
> Test kms_cursor_legacy:
>         Subgroup basic-cursor-vs-flip-varying-size:
>                 pass       -> FAIL       (fi-bsw-n3050)

(kms_cursor_legacy:10894) DEBUG: Test requirement passed: target > 1
(kms_cursor_legacy:10894) DEBUG: Using a target of 16 cursor updates per half-vblank (60)
(kms_cursor_legacy:10894) WARNING: page flip 30 was delayed, missed 1 frames
(kms_cursor_legacy:10894) CRITICAL: Test assertion failure function basic_cursor_vs_flip, file kms_cursor_legacy.c:730:
(kms_cursor_legacy:10894) CRITICAL: Failed assertion: vbl.sequence == vblank_start + vrefresh
(kms_cursor_legacy:10894) CRITICAL: error: 15453 != 15452

https://bugs.freedesktop.org/show_bug.cgi?id=97775

> 
> fi-bdw-5557u     total:254  pass:239  dwarn:0   dfail:0   fail:0   skip:15 
> fi-bsw-n3050     total:254  pass:207  dwarn:0   dfail:0   fail:1   skip:46 
> fi-hsw-4770k     total:254  pass:232  dwarn:0   dfail:0   fail:0   skip:22 
> fi-hsw-4770r     total:254  pass:228  dwarn:0   dfail:0   fail:0   skip:26 
> fi-ilk-650       total:254  pass:184  dwarn:0   dfail:0   fail:2   skip:68 
> fi-ivb-3520m     total:254  pass:223  dwarn:0   dfail:0   fail:0   skip:31 
> fi-ivb-3770      total:254  pass:223  dwarn:0   dfail:0   fail:0   skip:31 
> fi-skl-6260u     total:254  pass:240  dwarn:0   dfail:0   fail:0   skip:14 
> fi-skl-6700hq    total:254  pass:227  dwarn:0   dfail:0   fail:1   skip:26 
> fi-skl-6700k     total:254  pass:225  dwarn:1   dfail:0   fail:0   skip:28 
> fi-snb-2520m     total:254  pass:209  dwarn:0   dfail:0   fail:0   skip:45 
> fi-snb-2600      total:254  pass:209  dwarn:0   dfail:0   fail:0   skip:45 
> 
> Results at /archive/results/CI_IGT_test/Patchwork_2519/
> 
> b2c7ef9208902fdd352655b3a45a98714c051c0e drm-intel-nightly: 2016y-09m-13d-09h-04m-50s UTC integration manifest
> 4c10557 drm/i915: Ignore OpRegion panel type except on select machines

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915: Ignore OpRegion panel type except on     select machines
  2016-09-13  9:37 ` [Intel-gfx] " Jani Nikula
@ 2016-09-14  7:45     ` Ville Syrjälä
  0 siblings, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2016-09-14  7:45 UTC (permalink / raw)
  To: Jani Nikula
  Cc: intel-gfx, Andrea Arcangeli, Sean Greenslade, Alexey Shumitsky,
	Martin van Es, Dave Airlie, James Hogan, stable,
	Marco Krüger, Rob Kramer, Emil Andersen Lauridsen,
	Alexander Kobel, oceans112, James Bottomley, Robin Müller,
	Trudy Tective

On Tue, Sep 13, 2016 at 12:37:16PM +0300, Jani Nikula wrote:
> On Tue, 13 Sep 2016, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrj�l� <ville.syrjala@linux.intel.com>
> >
> > Turns out
> > commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
> > details") has regressed quite a few machines. So it looks like we
> > can't use the panel type from OpRegion on all systems, and yet we
> > absolutely must use it on some specific systems.
> >
> > Despite trying, I was unable to find any automagic way to determine
> > if the OpRegion panel type is respectable or not. The only glimmer
> > of hope I had was bit 8 in the SCIC response, but that turned out to
> > not work either (it was always 0 on both types of systems).
> >
> > So, to fix the regressions without breaking the machine we know to need
> > the OpRegion panel type, let's just add a quirk for this. Only specific
> > machines known to require the OpRegion panel type will therefore use
> > it. Everyone else will fall bck to the VBT panel type.
> >
> > The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
> > subsystem ID on this machine is just a generic 8086:2a42, so of no use.
> > Instead we'll go with a DMI match.
> >
> > I suspect we can now also revert
> > commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
> > but let's leave that to a separate patch.
> >
> > v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
> >     gets populated too late
> >
> > Cc: Rob Kramer <rob@solution-space.com>
> > Cc: Martin van Es <martin@mrvanes.com>
> > Cc: Andrea Arcangeli <aarcange@redhat.com>
> > Cc: Dave Airlie <airlied@linux.ie>
> > Cc: Marco Kr�ger <krgsch@gmail.com>
> > Cc: Sean Greenslade <sean@seangreenslade.com>
> > Cc: Trudy Tective <bertslany@gmail.com>
> > Cc: Robin M�ller <rm1990@gmx.de>
> > Cc: Alexander Kobel <a-kobel@a-kobel.de>
> > Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> > Cc: Emil Andersen Lauridsen <mine809@gmail.com>
> > Cc: oceans112@gmail.com
> > Cc: James Hogan <james@albanarts.com>
> > Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> > Cc: stable@vger.kernel.org
> > References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
> > References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
> > References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html
> 
> References: http://patchwork.freedesktop.org/patch/msgid/1473602239-15855-1-git-send-email-adrienverge@gmail.com
> 
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> 
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
> > Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
> > Tested-by: Marco Kr�ger <krgsch@gmail.com>
> > Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> > Tested-by: Sean Greenslade <sean@seangreenslade.com>
> > Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> > Tested-by: Robin M�ller <rm1990@gmx.de>
> > Tested-by: oceans112@gmail.com
> > Signed-off-by: Ville Syrj�l� <ville.syrjala@linux.intel.com>

Slapped on another tested-by and pushed to dinq. Thanks for the broad
testing, everyone.

> > ---
> >  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
> >  1 file changed, 27 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> > index adca262d591a..7acbbbf97833 100644
> > --- a/drivers/gpu/drm/i915/intel_opregion.c
> > +++ b/drivers/gpu/drm/i915/intel_opregion.c
> > @@ -1047,6 +1047,23 @@ err_out:
> >  	return err;
> >  }
> >  
> > +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> > +{
> > +	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> > +	return 1;
> > +}
> > +
> > +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> > +	{
> > +		.callback = intel_use_opregion_panel_type_callback,
> > +		.ident = "Conrac GmbH IX45GM2",
> > +		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> > +			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> > +		},
> > +	},
> > +	{ }
> > +};
> > +
> >  int
> >  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
> >  	}
> >  
> >  	/*
> > +	 * So far we know that some machined must use it, others must not use it.
> > +	 * There doesn't seem to be any way to determine which way to go, except
> > +	 * via a quirk list :(
> > +	 */
> > +	if (!dmi_check_system(intel_use_opregion_panel_type)) {
> > +		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> > +		return -ENODEV;
> > +	}
> > +
> > +	/*
> >  	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
> >  	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
> >  	 * vswing instead. Low vswing results in some display flickers, so
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center

-- 
Ville Syrj�l�
Intel OTC

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915: Ignore OpRegion panel type except on select machines
@ 2016-09-14  7:45     ` Ville Syrjälä
  0 siblings, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2016-09-14  7:45 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Andrea Arcangeli, Rob Kramer, Alexey Shumitsky, Martin van Es,
	Dave Airlie, intel-gfx, Trudy Tective, stable, Marco Krüger,
	Sean Greenslade, Emil Andersen Lauridsen, Alexander Kobel,
	oceans112, James Bottomley, Robin Müller, James Hogan

On Tue, Sep 13, 2016 at 12:37:16PM +0300, Jani Nikula wrote:
> On Tue, 13 Sep 2016, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Turns out
> > commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
> > details") has regressed quite a few machines. So it looks like we
> > can't use the panel type from OpRegion on all systems, and yet we
> > absolutely must use it on some specific systems.
> >
> > Despite trying, I was unable to find any automagic way to determine
> > if the OpRegion panel type is respectable or not. The only glimmer
> > of hope I had was bit 8 in the SCIC response, but that turned out to
> > not work either (it was always 0 on both types of systems).
> >
> > So, to fix the regressions without breaking the machine we know to need
> > the OpRegion panel type, let's just add a quirk for this. Only specific
> > machines known to require the OpRegion panel type will therefore use
> > it. Everyone else will fall bck to the VBT panel type.
> >
> > The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
> > subsystem ID on this machine is just a generic 8086:2a42, so of no use.
> > Instead we'll go with a DMI match.
> >
> > I suspect we can now also revert
> > commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
> > but let's leave that to a separate patch.
> >
> > v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
> >     gets populated too late
> >
> > Cc: Rob Kramer <rob@solution-space.com>
> > Cc: Martin van Es <martin@mrvanes.com>
> > Cc: Andrea Arcangeli <aarcange@redhat.com>
> > Cc: Dave Airlie <airlied@linux.ie>
> > Cc: Marco Krüger <krgsch@gmail.com>
> > Cc: Sean Greenslade <sean@seangreenslade.com>
> > Cc: Trudy Tective <bertslany@gmail.com>
> > Cc: Robin Müller <rm1990@gmx.de>
> > Cc: Alexander Kobel <a-kobel@a-kobel.de>
> > Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> > Cc: Emil Andersen Lauridsen <mine809@gmail.com>
> > Cc: oceans112@gmail.com
> > Cc: James Hogan <james@albanarts.com>
> > Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> > Cc: stable@vger.kernel.org
> > References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
> > References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
> > References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html
> 
> References: http://patchwork.freedesktop.org/patch/msgid/1473602239-15855-1-git-send-email-adrienverge@gmail.com
> 
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> 
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
> > Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
> > Tested-by: Marco Krüger <krgsch@gmail.com>
> > Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> > Tested-by: Sean Greenslade <sean@seangreenslade.com>
> > Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> > Tested-by: Robin Müller <rm1990@gmx.de>
> > Tested-by: oceans112@gmail.com
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Slapped on another tested-by and pushed to dinq. Thanks for the broad
testing, everyone.

> > ---
> >  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
> >  1 file changed, 27 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> > index adca262d591a..7acbbbf97833 100644
> > --- a/drivers/gpu/drm/i915/intel_opregion.c
> > +++ b/drivers/gpu/drm/i915/intel_opregion.c
> > @@ -1047,6 +1047,23 @@ err_out:
> >  	return err;
> >  }
> >  
> > +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> > +{
> > +	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> > +	return 1;
> > +}
> > +
> > +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> > +	{
> > +		.callback = intel_use_opregion_panel_type_callback,
> > +		.ident = "Conrac GmbH IX45GM2",
> > +		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> > +			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> > +		},
> > +	},
> > +	{ }
> > +};
> > +
> >  int
> >  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
> >  {
> > @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
> >  	}
> >  
> >  	/*
> > +	 * So far we know that some machined must use it, others must not use it.
> > +	 * There doesn't seem to be any way to determine which way to go, except
> > +	 * via a quirk list :(
> > +	 */
> > +	if (!dmi_check_system(intel_use_opregion_panel_type)) {
> > +		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> > +		return -ENODEV;
> > +	}
> > +
> > +	/*
> >  	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
> >  	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
> >  	 * vswing instead. Low vswing results in some display flickers, so
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915: Ignore OpRegion panel type except on select machines
  2016-09-13  9:22 [PATCH] drm/i915: Ignore OpRegion panel type except on select machines ville.syrjala
@ 2016-09-14  8:29   ` James Hogan
  2016-09-13 10:49 ` ✗ Fi.CI.BAT: failure for " Patchwork
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: James Hogan @ 2016-09-14  8:29 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-gfx, Rob Kramer, Martin van Es, Andrea Arcangeli,
	Dave Airlie, Marco Krüger, Sean Greenslade, Trudy Tective,
	Robin Müller, Alexander Kobel, Alexey Shumitsky,
	Emil Andersen Lauridsen, oceans112, James Bottomley, stable

On 13 September 2016 at 10:22,  <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Turns out
> commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
> details") has regressed quite a few machines. So it looks like we
> can't use the panel type from OpRegion on all systems, and yet we
> absolutely must use it on some specific systems.
>
> Despite trying, I was unable to find any automagic way to determine
> if the OpRegion panel type is respectable or not. The only glimmer
> of hope I had was bit 8 in the SCIC response, but that turned out to
> not work either (it was always 0 on both types of systems).
>
> So, to fix the regressions without breaking the machine we know to need
> the OpRegion panel type, let's just add a quirk for this. Only specific
> machines known to require the OpRegion panel type will therefore use
> it. Everyone else will fall bck to the VBT panel type.
>
> The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
> subsystem ID on this machine is just a generic 8086:2a42, so of no use.
> Instead we'll go with a DMI match.
>
> I suspect we can now also revert
> commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
> but let's leave that to a separate patch.
>
> v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
>     gets populated too late
>
> Cc: Rob Kramer <rob@solution-space.com>
> Cc: Martin van Es <martin@mrvanes.com>
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Dave Airlie <airlied@linux.ie>
> Cc: Marco Krüger <krgsch@gmail.com>
> Cc: Sean Greenslade <sean@seangreenslade.com>
> Cc: Trudy Tective <bertslany@gmail.com>
> Cc: Robin Müller <rm1990@gmx.de>
> Cc: Alexander Kobel <a-kobel@a-kobel.de>
> Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Cc: Emil Andersen Lauridsen <mine809@gmail.com>
> Cc: oceans112@gmail.com
> Cc: James Hogan <james@albanarts.com>
> Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> Cc: stable@vger.kernel.org
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
> References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
> Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
> Tested-by: Marco Krüger <krgsch@gmail.com>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Tested-by: Sean Greenslade <sean@seangreenslade.com>
> Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> Tested-by: Robin Müller <rm1990@gmx.de>
> Tested-by: oceans112@gmail.com
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

That works for me too on XPS13. Flickering screen brightness gone, and
using acpi backlight rather than intel backlight, like before
a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details").

Tested-by: James Hogan <james@albanarts.com>

Thanks!
James

> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index adca262d591a..7acbbbf97833 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -1047,6 +1047,23 @@ err_out:
>         return err;
>  }
>
> +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> +{
> +       DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> +       return 1;
> +}
> +
> +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> +       {
> +               .callback = intel_use_opregion_panel_type_callback,
> +               .ident = "Conrac GmbH IX45GM2",
> +               .matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> +                           DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> +               },
> +       },
> +       { }
> +};
> +
>  int
>  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  {
> @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>         }
>
>         /*
> +        * So far we know that some machined must use it, others must not use it.
> +        * There doesn't seem to be any way to determine which way to go, except
> +        * via a quirk list :(
> +        */
> +       if (!dmi_check_system(intel_use_opregion_panel_type)) {
> +               DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> +               return -ENODEV;
> +       }
> +
> +       /*
>          * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
>          * low vswing for eDP, whereas the VBT panel type (2) gives us normal
>          * vswing instead. Low vswing results in some display flickers, so
> --
> 2.7.4
>



-- 
James Hogan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915: Ignore OpRegion panel type except on select machines
@ 2016-09-14  8:29   ` James Hogan
  0 siblings, 0 replies; 10+ messages in thread
From: James Hogan @ 2016-09-14  8:29 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: Andrea Arcangeli, Sean Greenslade, Alexey Shumitsky,
	Martin van Es, Dave Airlie, intel-gfx, stable, Marco Krüger,
	Rob Kramer, Emil Andersen Lauridsen, Alexander Kobel, oceans112,
	James Bottomley, Robin Müller, Trudy Tective

On 13 September 2016 at 10:22,  <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Turns out
> commit a05628195a0d ("drm/i915: Get panel_type from OpRegion panel
> details") has regressed quite a few machines. So it looks like we
> can't use the panel type from OpRegion on all systems, and yet we
> absolutely must use it on some specific systems.
>
> Despite trying, I was unable to find any automagic way to determine
> if the OpRegion panel type is respectable or not. The only glimmer
> of hope I had was bit 8 in the SCIC response, but that turned out to
> not work either (it was always 0 on both types of systems).
>
> So, to fix the regressions without breaking the machine we know to need
> the OpRegion panel type, let's just add a quirk for this. Only specific
> machines known to require the OpRegion panel type will therefore use
> it. Everyone else will fall bck to the VBT panel type.
>
> The only known machine so far is a "Conrac GmbH IX45GM2". The PCI
> subsystem ID on this machine is just a generic 8086:2a42, so of no use.
> Instead we'll go with a DMI match.
>
> I suspect we can now also revert
> commit aeddda06c1a7 ("drm/i915: Ignore panel type from OpRegion on SKL")
> but let's leave that to a separate patch.
>
> v2: Do the DMI match in the opregion code directly, as dev_priv->quirks
>     gets populated too late
>
> Cc: Rob Kramer <rob@solution-space.com>
> Cc: Martin van Es <martin@mrvanes.com>
> Cc: Andrea Arcangeli <aarcange@redhat.com>
> Cc: Dave Airlie <airlied@linux.ie>
> Cc: Marco Krüger <krgsch@gmail.com>
> Cc: Sean Greenslade <sean@seangreenslade.com>
> Cc: Trudy Tective <bertslany@gmail.com>
> Cc: Robin Müller <rm1990@gmx.de>
> Cc: Alexander Kobel <a-kobel@a-kobel.de>
> Cc: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Cc: Emil Andersen Lauridsen <mine809@gmail.com>
> Cc: oceans112@gmail.com
> Cc: James Hogan <james@albanarts.com>
> Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> Cc: stable@vger.kernel.org
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-August/105545.html
> References: https://lists.freedesktop.org/archives/dri-devel/2016-August/116888.html
> References: https://lists.freedesktop.org/archives/intel-gfx/2016-June/098826.html
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94825
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97060
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97443
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97363
> Fixes: a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details")
> Tested-by: Marco Krüger <krgsch@gmail.com>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Tested-by: Sean Greenslade <sean@seangreenslade.com>
> Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> Tested-by: Robin Müller <rm1990@gmx.de>
> Tested-by: oceans112@gmail.com
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

That works for me too on XPS13. Flickering screen brightness gone, and
using acpi backlight rather than intel backlight, like before
a05628195a0d ("drm/i915: Get panel_type from OpRegion panel details").

Tested-by: James Hogan <james@albanarts.com>

Thanks!
James

> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index adca262d591a..7acbbbf97833 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -1047,6 +1047,23 @@ err_out:
>         return err;
>  }
>
> +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> +{
> +       DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> +       return 1;
> +}
> +
> +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> +       {
> +               .callback = intel_use_opregion_panel_type_callback,
> +               .ident = "Conrac GmbH IX45GM2",
> +               .matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> +                           DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> +               },
> +       },
> +       { }
> +};
> +
>  int
>  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  {
> @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>         }
>
>         /*
> +        * So far we know that some machined must use it, others must not use it.
> +        * There doesn't seem to be any way to determine which way to go, except
> +        * via a quirk list :(
> +        */
> +       if (!dmi_check_system(intel_use_opregion_panel_type)) {
> +               DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> +               return -ENODEV;
> +       }
> +
> +       /*
>          * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
>          * low vswing for eDP, whereas the VBT panel type (2) gives us normal
>          * vswing instead. Low vswing results in some display flickers, so
> --
> 2.7.4
>



-- 
James Hogan
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drm/i915: Ignore OpRegion panel type except on select machines
  2016-09-13  9:22 [PATCH] drm/i915: Ignore OpRegion panel type except on select machines ville.syrjala
@ 2016-09-15 12:10   ` Adrien Vergé
  2016-09-13 10:49 ` ✗ Fi.CI.BAT: failure for " Patchwork
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Adrien Vergé @ 2016-09-15 12:10 UTC (permalink / raw)
  To: ville.syrjala
  Cc: intel-gfx, Andrea Arcangeli, Sean Greenslade, Alexey Shumitsky,
	Martin van Es, Dave Airlie, James Hogan, stable,
	Marco Krüger, Rob Kramer, Emil Andersen Lauridsen,
	Alexander Kobel, oceans112, James Bottomley, Robin Müller,
	Trudy Tective

> Tested-by: Marco Kr�ger <krgsch@gmail.com>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Tested-by: Sean Greenslade <sean@seangreenslade.com>
> Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> Tested-by: Robin M�ller <rm1990@gmx.de>
> Tested-by: oceans112@gmail.com
> Signed-off-by: Ville Syrj�l� <ville.syrjala@linux.intel.com>
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> Tested-by: James Hogan <james@albanarts.com>

That works for me too on Terra Mobile Ultrabook 1450 II.
Thanks!

Tested-by: Adrien Verg� <adrienverge@gmail.com>

> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index adca262d591a..7acbbbf97833 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -1047,6 +1047,23 @@ err_out:
>  	return err;
>  }
>  
> +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> +{
> +	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> +	return 1;
> +}
> +
> +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> +	{
> +		.callback = intel_use_opregion_panel_type_callback,
> +		.ident = "Conrac GmbH IX45GM2",
> +		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> +			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> +		},
> +	},
> +	{ }
> +};
> +
>  int
>  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  {
> @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  	}
>  
>  	/*
> +	 * So far we know that some machined must use it, others must not use it.
> +	 * There doesn't seem to be any way to determine which way to go, except
> +	 * via a quirk list :(
> +	 */
> +	if (!dmi_check_system(intel_use_opregion_panel_type)) {
> +		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> +		return -ENODEV;
> +	}
> +
> +	/*
>  	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
>  	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
>  	 * vswing instead. Low vswing results in some display flickers, so

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drm/i915: Ignore OpRegion panel type except on select machines
@ 2016-09-15 12:10   ` Adrien Vergé
  0 siblings, 0 replies; 10+ messages in thread
From: Adrien Vergé @ 2016-09-15 12:10 UTC (permalink / raw)
  To: ville.syrjala
  Cc: intel-gfx, Andrea Arcangeli, Sean Greenslade, Alexey Shumitsky,
	Martin van Es, Dave Airlie, James Hogan, stable,
	Marco Krüger, Rob Kramer, Emil Andersen Lauridsen,
	Alexander Kobel, oceans112, James Bottomley, Robin Müller,
	Trudy Tective

> Tested-by: Marco Krüger <krgsch@gmail.com>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@gmail.com>
> Tested-by: Sean Greenslade <sean@seangreenslade.com>
> Tested-by: Emil Andersen Lauridsen <mine809@gmail.com>
> Tested-by: Robin Müller <rm1990@gmx.de>
> Tested-by: oceans112@gmail.com
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Acked-by: Jani Nikula <jani.nikula@intel.com>
> Tested-by: James Hogan <james@albanarts.com>

That works for me too on Terra Mobile Ultrabook 1450 II.
Thanks!

Tested-by: Adrien Vergé <adrienverge@gmail.com>

> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index adca262d591a..7acbbbf97833 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -1047,6 +1047,23 @@ err_out:
>  	return err;
>  }
>  
> +static int intel_use_opregion_panel_type_callback(const struct dmi_system_id *id)
> +{
> +	DRM_INFO("Using panel type from OpRegion on %s\n", id->ident);
> +	return 1;
> +}
> +
> +static const struct dmi_system_id intel_use_opregion_panel_type[] = {
> +	{
> +		.callback = intel_use_opregion_panel_type_callback,
> +		.ident = "Conrac GmbH IX45GM2",
> +		.matches = {DMI_MATCH(DMI_SYS_VENDOR, "Conrac GmbH"),
> +			    DMI_MATCH(DMI_PRODUCT_NAME, "IX45GM2"),
> +		},
> +	},
> +	{ }
> +};
> +
>  int
>  intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  {
> @@ -1073,6 +1090,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
>  	}
>  
>  	/*
> +	 * So far we know that some machined must use it, others must not use it.
> +	 * There doesn't seem to be any way to determine which way to go, except
> +	 * via a quirk list :(
> +	 */
> +	if (!dmi_check_system(intel_use_opregion_panel_type)) {
> +		DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
> +		return -ENODEV;
> +	}
> +
> +	/*
>  	 * FIXME On Dell XPS 13 9350 the OpRegion panel type (0) gives us
>  	 * low vswing for eDP, whereas the VBT panel type (2) gives us normal
>  	 * vswing instead. Low vswing results in some display flickers, so

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-09-15 12:10 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-13  9:22 [PATCH] drm/i915: Ignore OpRegion panel type except on select machines ville.syrjala
2016-09-13  9:37 ` [Intel-gfx] " Jani Nikula
2016-09-14  7:45   ` Ville Syrjälä
2016-09-14  7:45     ` Ville Syrjälä
2016-09-13 10:49 ` ✗ Fi.CI.BAT: failure for " Patchwork
2016-09-13 11:05   ` Ville Syrjälä
2016-09-14  8:29 ` [PATCH] " James Hogan
2016-09-14  8:29   ` James Hogan
2016-09-15 12:10 ` Adrien Vergé
2016-09-15 12:10   ` Adrien Vergé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.