diff options
author | Zhao Yakui <yakui.zhao@intel.com> | 2009-11-23 20:48:44 -0500 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-11-30 19:36:53 -0500 |
commit | 6363ee6f496eb7e3b3f78dc105e522c7b496089b (patch) | |
tree | 238a22cf4e317645bc77a62ff828e15b27d5ce7b /drivers/gpu/drm/i915/i915_dma.c | |
parent | c1b5dea097258b3d3d570d5ccc8f4bf5accb3f29 (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.c | 9 |
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 | } |