|
@@ -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 */
|