Re: drm/i915: Ignore OpRegion panel type except on select machines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Tested-by: Marco Krüger <krgsch@xxxxxxxxx>
> Tested-by: Alexey Shumitsky <alexey.shumitsky@xxxxxxxxx>
> Tested-by: Sean Greenslade <sean@xxxxxxxxxxxxxxxxxx>
> Tested-by: Emil Andersen Lauridsen <mine809@xxxxxxxxx>
> Tested-by: Robin Müller <rm1990@xxxxxx>
> Tested-by: oceans112@xxxxxxxxx
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Acked-by: Jani Nikula <jani.nikula@xxxxxxxxx>
> Tested-by: James Hogan <james@xxxxxxxxxxxxx>

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

Tested-by: Adrien Vergé <adrienverge@xxxxxxxxx>

> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]