Kyle McMartin a1b8c4e
https://bugzilla.redhat.com/show_bug.cgi?id=639146
Kyle McMartin a1b8c4e
Kyle McMartin a1b8c4e
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
Kyle McMartin a1b8c4e
index ce8ff0e..3bbd2c4 100644
Kyle McMartin a1b8c4e
--- a/drivers/gpu/drm/i915/i915_dma.c
Kyle McMartin a1b8c4e
+++ b/drivers/gpu/drm/i915/i915_dma.c
Kyle McMartin a1b8c4e
@@ -1353,6 +1353,27 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
Kyle McMartin a1b8c4e
 	return can_switch;
Kyle McMartin a1b8c4e
 }
Kyle McMartin a1b8c4e
 
Kyle McMartin a1b8c4e
+/* check the VBT to see whether the eDP is on DP-D port */
Kyle McMartin a1b8c4e
+static bool intel_dpd_is_edp(struct drm_device *dev)
Kyle McMartin a1b8c4e
+{
Kyle McMartin a1b8c4e
+	struct drm_i915_private *dev_priv = dev->dev_private;
Kyle McMartin a1b8c4e
+	struct child_device_config *p_child;
Kyle McMartin a1b8c4e
+	int i;
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
+	if (!dev_priv->child_dev_num)
Kyle McMartin a1b8c4e
+		return false;
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
+	for (i = 0; i < dev_priv->child_dev_num; i++) {
Kyle McMartin a1b8c4e
+		p_child = dev_priv->child_dev + i;
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
+	if (p_child->dvo_port == PORT_IDPD &&
Kyle McMartin a1b8c4e
+		p_child->device_type == DEVICE_TYPE_eDP)
Kyle McMartin a1b8c4e
+		return true;
Kyle McMartin a1b8c4e
+	}
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
+	return false;
Kyle McMartin a1b8c4e
+}
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
 static int i915_load_modeset_init(struct drm_device *dev,
Kyle McMartin a1b8c4e
 				  unsigned long prealloc_start,
Kyle McMartin a1b8c4e
 				  unsigned long prealloc_size,
Kyle McMartin a1b8c4e
@@ -1409,6 +1430,15 @@ static int i915_load_modeset_init(struct drm_device *dev,
Kyle McMartin a1b8c4e
 	if (ret)
Kyle McMartin a1b8c4e
 		DRM_INFO("failed to find VBIOS tables\n");
Kyle McMartin a1b8c4e
 
Kyle McMartin a1b8c4e
+	/* XXX: eDP doesn't even work in git HEAD,
Kyle McMartin a1b8c4e
+ 	 * bail out and pray that text mode still works...
Kyle McMartin a1b8c4e
+ 	 */
Kyle McMartin a1b8c4e
+	if (intel_dpd_is_edp(dev)) {
Kyle McMartin a1b8c4e
+		DRM_ERROR("eDP support is currently non-functional, please boot with \"nomodeset xdriver=vesa\"\n");
Kyle McMartin a1b8c4e
+		ret = -EINVAL;
Kyle McMartin a1b8c4e
+		goto cleanup_ringbuffer;
Kyle McMartin a1b8c4e
+	}
Kyle McMartin a1b8c4e
+
Kyle McMartin a1b8c4e
 	/* if we have > 1 VGA cards, then disable the radeon VGA resources */
Kyle McMartin a1b8c4e
 	ret = vga_client_register(dev->pdev, dev, NULL, i915_vga_set_decode);
Kyle McMartin a1b8c4e
 	if (ret)