diff mbox

Subject: [PATCH v4] i915: Added function to initialize VBT settings

Message ID AANLkTimFHVa1NEqCQiY9a=EFoCr8RMsBBMDYrWSuR+SN@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Simon Que Sept. 30, 2010, 12:20 a.m. UTC
None
diff mbox

Patch

From 070ccd99c1f2bb6c3df40c75aa4752ac01a67e45 Mon Sep 17 00:00:00 2001
From: Simon Que <sque@chromium.org>
Date: Wed, 22 Sep 2010 14:24:10 -0700
Subject: [PATCH] i915: Added function to initialize VBT settings

Added a function that sets the LVDS values to default settings.  This will be
called by intel_init_bios before checking for the VBT (video BIOS table).  The
default values are thus loaded regardless of whether a VBT is found.

The default settings in each parse function have been moved to the new
function.  This consolidates all the default settings into one place.

The default dither bit value has been changed from 0 to 1.  We can assume that
display devices will want dithering enabled.

Signed-off-by: Simon Que <sque@chromium.org>
Acked-by: Olof Johansson <olof@lixom.net>

BUG=none
TEST=Splash screen looks dithered upon boot.

Change-Id: If19c763824ee938ad107f655d8d94c65e39cfa56
---
 drivers/gpu/drm/i915/intel_bios.c |   29 +++++++++++++++++++----------
 1 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 96f75d7..bb298f6 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -129,10 +129,6 @@  parse_lfp_panel_data(struct drm_i915_private *dev_priv,
 	int i, temp_downclock;
 	struct drm_display_mode *temp_mode;
 
-	/* Defaults if we can't find VBT info */
-	dev_priv->lvds_dither = 0;
-	dev_priv->lvds_vbt = 0;
-
 	lvds_options = find_section(bdb, BDB_LVDS_OPTIONS);
 	if (!lvds_options)
 		return;
@@ -230,8 +226,6 @@  parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
 	struct lvds_dvo_timing *dvo_timing;
 	struct drm_display_mode *panel_fixed_mode;
 
-	dev_priv->sdvo_lvds_vbt_mode = NULL;
-
 	sdvo_lvds_options = find_section(bdb, BDB_SDVO_LVDS_OPTIONS);
 	if (!sdvo_lvds_options)
 		return;
@@ -260,10 +254,6 @@  parse_general_features(struct drm_i915_private *dev_priv,
 	struct drm_device *dev = dev_priv->dev;
 	struct bdb_general_features *general;
 
-	/* Set sensible defaults in case we can't find the general block */
-	dev_priv->int_tv_support = 1;
-	dev_priv->int_crt_support = 1;
-
 	general = find_section(bdb, BDB_GENERAL_FEATURES);
 	if (general) {
 		dev_priv->int_tv_support = general->int_tv_support;
@@ -513,6 +503,22 @@  parse_device_mapping(struct drm_i915_private *dev_priv,
 	}
 	return;
 }
+
+static void
+init_vbt_defaults(struct drm_i915_private *dev_priv)
+{
+	/* LFP panel data */
+	dev_priv->lvds_dither = 1;
+	dev_priv->lvds_vbt = 0;
+
+	/* SDVO panel data */
+	dev_priv->sdvo_lvds_vbt_mode = NULL;
+
+	/* general features */
+	dev_priv->int_tv_support = 1;
+	dev_priv->int_crt_support = 1;
+}
+
 /**
  * intel_init_bios - initialize VBIOS settings & find VBT
  * @dev: DRM device
@@ -550,6 +556,9 @@  intel_init_bios(struct drm_device *dev)
 		}
 	}
 
+	/* Initialize to default VBT values */
+	init_vbt_defaults(dev_priv);
+
 	if (!vbt) {
 		DRM_ERROR("VBT signature missing\n");
 		pci_unmap_rom(pdev, bios);
-- 
1.7.1