DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines.
NCR machines with LVDS panels using Intel chipsets need to have the QUIRK_INVERT_BRIGHTNESS bit set. Unfortunately NCR doesn't set a meaningful subvendor/subdevice ID, therefore we add a DMI dependent quirk list. Signed-off-by: Egbert Eich <eich@suse.de> [danvet: fixup whitespace fail.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
committed by
Daniel Vetter
parent
6478d414fe
commit
5f85f176c2
@@ -7892,6 +7892,34 @@ struct intel_quirk {
|
|||||||
void (*hook)(struct drm_device *dev);
|
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[] = {
|
static struct intel_quirk intel_quirks[] = {
|
||||||
/* HP Mini needs pipe A force quirk (LP: #322104) */
|
/* HP Mini needs pipe A force quirk (LP: #322104) */
|
||||||
{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force },
|
{ 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->subsystem_device == PCI_ANY_ID))
|
||||||
q->hook(dev);
|
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 */
|
/* Disable the VGA plane that we never use */
|
||||||
|
Reference in New Issue
Block a user