Disable display on iMacs, as they can't do link training
on the internal display.

(tested on iMac20,1)

Signed-off-by: Atharva Tiwari <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display_device.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c 
b/drivers/gpu/drm/i915/display/intel_display_device.c
index 1170afaa8680..3fb47232e7a4 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -3,6 +3,7 @@
  * Copyright © 2023 Intel Corporation
  */
 
+#include <linux/dmi.h>
 #include <linux/pci.h>
 
 #include <drm/drm_color_mgmt.h>
@@ -1657,6 +1658,7 @@ struct intel_display *intel_display_device_probe(struct 
pci_dev *pdev,
        const struct platform_desc *desc;
        const struct subplatform_desc *subdesc;
        enum intel_step step;
+       const char *product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
 
        display = kzalloc(sizeof(*display), GFP_KERNEL);
        if (!display)
@@ -1674,6 +1676,11 @@ struct intel_display *intel_display_device_probe(struct 
pci_dev *pdev,
                goto no_display;
        }
 
+       if (dmi_match(DMI_BOARD_VENDOR, "Apple Inc.") && !strncmp(product_name, 
"iMac", 4)) {
+               drm_dbg_kms(display->drm, "iMac Detected, Disabling display\n");
+               goto no_display;
+       }
+
        desc = find_platform_desc(pdev);
        if (!desc) {
                drm_dbg_kms(display->drm,
-- 
2.43.0

Reply via email to