From 155b2c153a994d816ca6327800dd428e29ee2899 Mon Sep 17 00:00:00 2001 From: Patrik Jakobsson Date: Tue, 24 May 2011 13:04:56 +0100 Subject: [PATCH] --- yaml --- r: 253339 b: refs/heads/master c: 3ab8be53155617fa7ecc5b8cd259a458727a1d90 h: refs/heads/master i: 253337: 436393f1b717e6f7f978804f733113bec54d2daf 253335: f6597537abf491358f226a6e8aae395585fc22f6 v: v3 --- [refs] | 2 +- trunk/drivers/staging/gma500/psb_drv.c | 15 ++++++++++++++- trunk/drivers/staging/gma500/psb_intel_bios.c | 13 +++++++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index d09897847b1c..d1c3ba04ec9c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d3ac0778801708caecb2b172328064255a350432 +refs/heads/master: 3ab8be53155617fa7ecc5b8cd259a458727a1d90 diff --git a/trunk/drivers/staging/gma500/psb_drv.c b/trunk/drivers/staging/gma500/psb_drv.c index 1c45c11a774e..aa87b1b6a44a 100644 --- a/trunk/drivers/staging/gma500/psb_drv.c +++ b/trunk/drivers/staging/gma500/psb_drv.c @@ -542,6 +542,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) unsigned long irqflags; int ret = -ENOMEM; uint32_t tt_pages; + struct drm_connector *connector; + struct psb_intel_output *psb_intel_output; dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); if (dev_priv == NULL) @@ -663,7 +665,18 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) drm_kms_helper_poll_init(dev); } - ret = psb_backlight_init(dev); + /* Only add backlight support if we have LVDS output */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + head) { + psb_intel_output = to_psb_intel_output(connector); + + switch (psb_intel_output->type) { + case INTEL_OUTPUT_LVDS: + ret = psb_backlight_init(dev); + break; + } + } + if (ret) return ret; #if 0 diff --git a/trunk/drivers/staging/gma500/psb_intel_bios.c b/trunk/drivers/staging/gma500/psb_intel_bios.c index 48ac8ba7f40b..417965da5e24 100644 --- a/trunk/drivers/staging/gma500/psb_intel_bios.c +++ b/trunk/drivers/staging/gma500/psb_intel_bios.c @@ -154,10 +154,15 @@ static void parse_lfp_panel_data(struct drm_psb_private *dev_priv, fill_detail_timing_data(panel_fixed_mode, dvo_timing); - dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode; - - DRM_DEBUG("Found panel mode in BIOS VBT tables:\n"); - drm_mode_debug_printmodeline(panel_fixed_mode); + if (panel_fixed_mode->htotal > 0 && panel_fixed_mode->vtotal > 0) { + dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode; + DRM_DEBUG("Found panel mode in BIOS VBT tables:\n"); + drm_mode_debug_printmodeline(panel_fixed_mode); + } else { + DRM_DEBUG("Ignoring bogus LVDS VBT mode.\n"); + dev_priv->lvds_vbt = 0; + kfree(panel_fixed_mode); + } return; }