diff --git a/drivers/gpu/drm/xe/display/ext/intel_device_info.c b/drivers/gpu/drm/xe/display/ext/intel_device_info.c index a4c844aa8be6aed0a80af3036ae667006a32f1d1..9a54611037b50aa6303953e1b9e961dce7b09aa3 100644 --- a/drivers/gpu/drm/xe/display/ext/intel_device_info.c +++ b/drivers/gpu/drm/xe/display/ext/intel_device_info.c @@ -109,12 +109,6 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv) runtime->has_dsc = 0; } - if (!HAS_DISPLAY(dev_priv)) { - dev_priv->drm.driver_features &= ~(DRIVER_MODESET | - DRIVER_ATOMIC); - memset(runtime, 0, sizeof(*runtime)); - } - runtime->rawclk_freq = intel_read_rawclk(dev_priv); drm_dbg(&dev_priv->drm, "rawclk rate: %d kHz\n", runtime->rawclk_freq); } diff --git a/drivers/gpu/drm/xe/xe_display.c b/drivers/gpu/drm/xe/xe_display.c index c1987cea359af83b3db34d694406960bceaaa124..7b513da803152652267b64ad8dd03ed33560f23c 100644 --- a/drivers/gpu/drm/xe/xe_display.c +++ b/drivers/gpu/drm/xe/xe_display.c @@ -63,6 +63,11 @@ int xe_display_set_driver_hooks(struct pci_dev *pdev, struct drm_driver *driver) return 0; } +static void unset_driver_hooks(struct xe_device *xe) +{ + xe->drm.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC); +} + static void display_destroy(struct drm_device *dev, void *dummy) { struct xe_device *xe = to_xe_device(dev); @@ -85,7 +90,6 @@ int xe_display_create(struct xe_device *xe) { int err; - /* Initialize display parts here.. */ spin_lock_init(&xe->display.fb_tracking.lock); xe->display.hotplug.dp_wq = alloc_ordered_workqueue("xe-dp", 0); @@ -525,11 +529,10 @@ void xe_display_info_init(struct xe_device *xe) xe->info.display = (struct xe_device_display_info) { XE_LPDP }; break; default: - /* - * If platform doesn't have display, enable_display should - * had been forced to false already at this point - */ - drm_WARN_ON(&xe->drm, 1); + drm_dbg(&xe->drm, "No display IP, skipping\n"); + xe->info.enable_display = false; + unset_driver_hooks(xe); + return; } }