diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 6619f26e46a5..439a86514993 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -384,7 +384,51 @@ static const struct drm_encoder_funcs intel_lvds_enc_funcs = { | |||
384 | .destroy = intel_lvds_enc_destroy, | 384 | .destroy = intel_lvds_enc_destroy, |
385 | }; | 385 | }; |
386 | 386 | ||
387 | static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id) | ||
388 | { | ||
389 | DRM_DEBUG("Skipping LVDS initialization for %s\n", id->ident); | ||
390 | return 1; | ||
391 | } | ||
387 | 392 | ||
393 | /* These systems claim to have LVDS, but really don't */ | ||
394 | static const struct dmi_system_id __initdata intel_no_lvds[] = { | ||
395 | { | ||
396 | .callback = intel_no_lvds_dmi_callback, | ||
397 | .ident = "Apple Mac Mini (Core series)", | ||
398 | .matches = { | ||
399 | DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), | ||
400 | DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"), | ||
401 | }, | ||
402 | }, | ||
403 | { | ||
404 | .callback = intel_no_lvds_dmi_callback, | ||
405 | .ident = "Apple Mac Mini (Core 2 series)", | ||
406 | .matches = { | ||
407 | DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), | ||
408 | DMI_MATCH(DMI_PRODUCT_NAME, "Macmini2,1"), | ||
409 | }, | ||
410 | }, | ||
411 | { | ||
412 | .callback = intel_no_lvds_dmi_callback, | ||
413 | .ident = "MSI IM-945GSE-A", | ||
414 | .matches = { | ||
415 | DMI_MATCH(DMI_SYS_VENDOR, "MSI"), | ||
416 | DMI_MATCH(DMI_PRODUCT_NAME, "A9830IMS"), | ||
417 | }, | ||
418 | }, | ||
419 | { | ||
420 | .callback = intel_no_lvds_dmi_callback, | ||
421 | .ident = "Dell Studio Hybrid", | ||
422 | .matches = { | ||
423 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
424 | DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"), | ||
425 | }, | ||
426 | }, | ||
427 | |||
428 | /* FIXME: add a check for the Aopen Mini PC */ | ||
429 | |||
430 | { } /* terminating entry */ | ||
431 | }; | ||
388 | 432 | ||
389 | /** | 433 | /** |
390 | * intel_lvds_init - setup LVDS connectors on this device | 434 | * intel_lvds_init - setup LVDS connectors on this device |
@@ -404,15 +448,9 @@ void intel_lvds_init(struct drm_device *dev) | |||
404 | u32 lvds; | 448 | u32 lvds; |
405 | int pipe; | 449 | int pipe; |
406 | 450 | ||
407 | /* Blacklist machines that we know falsely report LVDS. */ | 451 | /* Skip init on machines we know falsely report LVDS */ |
408 | /* FIXME: add a check for the Aopen Mini PC */ | 452 | if (dmi_check_system(intel_no_lvds)) |
409 | |||
410 | /* Apple Mac Mini Core Duo and Mac Mini Core 2 Duo */ | ||
411 | if(dmi_match(DMI_PRODUCT_NAME, "Macmini1,1") || | ||
412 | dmi_match(DMI_PRODUCT_NAME, "Macmini2,1")) { | ||
413 | DRM_DEBUG("Skipping LVDS initialization for Apple Mac Mini\n"); | ||
414 | return; | 453 | return; |
415 | } | ||
416 | 454 | ||
417 | intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL); | 455 | intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL); |
418 | if (!intel_output) { | 456 | if (!intel_output) { |