aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_dma.c
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2009-11-23 20:48:44 -0500
committerEric Anholt <eric@anholt.net>2009-11-30 19:36:53 -0500
commit6363ee6f496eb7e3b3f78dc105e522c7b496089b (patch)
tree238a22cf4e317645bc77a62ff828e15b27d5ce7b /drivers/gpu/drm/i915/i915_dma.c
parentc1b5dea097258b3d3d570d5ccc8f4bf5accb3f29 (diff)
drm/i915: parse child device from VBT
On some laptops there is no HDMI/DP. But the xrandr still reports several disconnected HDMI/display ports. In such case the user will be confused. >DVI1 disconnected (normal left inverted right x axis y axis) >DP1 disconnected (normal left inverted right x axis y axis) >DVI2 disconnected (normal left inverted right x axis y axis) >DP2 disconnected (normal left inverted right x axis y axis) >DP3 disconnected (normal left inverted right x axis y axis) This patch set is to use the child device parsed in VBT to decide whether the HDMI/DP/LVDS/TV should be initialized. Parse the child device from VBT. The device class type is also added for LFP, TV, HDMI, DP output. https://bugs.freedesktop.org/show_bug.cgi?id=22785 Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 093146bacf84..a8efe78e5c57 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1526,6 +1526,15 @@ int i915_driver_unload(struct drm_device *dev)
1526 } 1526 }
1527 1527
1528 if (drm_core_check_feature(dev, DRIVER_MODESET)) { 1528 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
1529 /*
1530 * free the memory space allocated for the child device
1531 * config parsed from VBT
1532 */
1533 if (dev_priv->child_dev && dev_priv->child_dev_num) {
1534 kfree(dev_priv->child_dev);
1535 dev_priv->child_dev = NULL;
1536 dev_priv->child_dev_num = 0;
1537 }
1529 drm_irq_uninstall(dev); 1538 drm_irq_uninstall(dev);
1530 vga_client_register(dev->pdev, NULL, NULL, NULL); 1539 vga_client_register(dev->pdev, NULL, NULL, NULL);
1531 } 1540 }