aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2009-11-18 02:15:02 -0500
committerEric Anholt <eric@anholt.net>2009-11-30 19:10:56 -0500
commit29874f44fbcbc24b231b42c9956f8f9de9407231 (patch)
tree22532ad33c5f265bc728e5e21a8175ce0f81f126
parentd271817baecbccb47da0d9f28c285a0dae8a06b7 (diff)
drm/i915: fix gpio register detection logic for BIOS without VBT
if no VBT is present, crt_ddc_bus will be left at 0, and cause us to use that for the GPIO register offset. That's never a valid register offset, so let the "undefined" value be 0 instead of -1. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Eric Anholt <eric@anholt.net> [anholt: clarified the commit message a bit]
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c4
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c2
3 files changed, 2 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index dcc061cdc9a5..13ede75ff6ce 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -266,7 +266,7 @@ typedef struct drm_i915_private {
266 266
267 struct notifier_block lid_notifier; 267 struct notifier_block lid_notifier;
268 268
269 int crt_ddc_bus; /* -1 = unknown, else GPIO to use for CRT DDC */ 269 int crt_ddc_bus; /* 0 = unknown, else GPIO to use for CRT DDC */
270 struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */ 270 struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */
271 int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */ 271 int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
272 int num_fence_regs; /* 8 on pre-965, 16 otherwise */ 272 int num_fence_regs; /* 8 on pre-965, 16 otherwise */
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 10806cd5e4d3..800d13bd9e6a 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -283,10 +283,6 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
283 GPIOF, 283 GPIOF,
284 }; 284 };
285 285
286 /* Set sensible defaults in case we can't find the general block
287 or it is the wrong chipset */
288 dev_priv->crt_ddc_bus = -1;
289
290 general = find_section(bdb, BDB_GENERAL_DEFINITIONS); 286 general = find_section(bdb, BDB_GENERAL_DEFINITIONS);
291 if (general) { 287 if (general) {
292 u16 block_size = get_blocksize(general); 288 u16 block_size = get_blocksize(general);
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 0864a2c40856..477a61c5402b 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -526,7 +526,7 @@ void intel_crt_init(struct drm_device *dev)
526 else { 526 else {
527 i2c_reg = GPIOA; 527 i2c_reg = GPIOA;
528 /* Use VBT information for CRT DDC if available */ 528 /* Use VBT information for CRT DDC if available */
529 if (dev_priv->crt_ddc_bus != -1) 529 if (dev_priv->crt_ddc_bus != 0)
530 i2c_reg = dev_priv->crt_ddc_bus; 530 i2c_reg = dev_priv->crt_ddc_bus;
531 } 531 }
532 intel_output->ddc_bus = intel_i2c_create(dev, i2c_reg, "CRTDDC_A"); 532 intel_output->ddc_bus = intel_i2c_create(dev, i2c_reg, "CRTDDC_A");