diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 682bd3729ba..461a637f1ef 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -7892,6 +7892,34 @@ struct intel_quirk {  	void (*hook)(struct drm_device *dev);  }; +/* For systems that don't have a meaningful PCI subdevice/subvendor ID */ +struct intel_dmi_quirk { +	void (*hook)(struct drm_device *dev); +	const struct dmi_system_id (*dmi_id_list)[]; +}; + +static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +{ +	DRM_INFO("Backlight polarity reversed on %s\n", id->ident); +	return 1; +} + +static const struct intel_dmi_quirk intel_dmi_quirks[] = { +	{ +		.dmi_id_list = &(const struct dmi_system_id[]) { +			{ +				.callback = intel_dmi_reverse_brightness, +				.ident = "NCR Corporation", +				.matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"), +					    DMI_MATCH(DMI_PRODUCT_NAME, ""), +				}, +			}, +			{ }  /* terminating entry */ +		}, +		.hook = quirk_invert_brightness, +	}, +}; +  static struct intel_quirk intel_quirks[] = {  	/* HP Mini needs pipe A force quirk (LP: #322104) */  	{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force }, @@ -7931,6 +7959,10 @@ static void intel_init_quirks(struct drm_device *dev)  		     q->subsystem_device == PCI_ANY_ID))  			q->hook(dev);  	} +	for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) { +		if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0) +			intel_dmi_quirks[i].hook(dev); +	}  }  /* Disable the VGA plane that we never use */  |