diff options
author | Shaohua Li <shaohua.li@intel.com> | 2009-11-18 02:15:02 -0500 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-11-30 19:10:56 -0500 |
commit | 29874f44fbcbc24b231b42c9956f8f9de9407231 (patch) | |
tree | 22532ad33c5f265bc728e5e21a8175ce0f81f126 | |
parent | d271817baecbccb47da0d9f28c285a0dae8a06b7 (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.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 2 |
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"); |