[Intel-gfx] [PATCH]drm/i915: fix gpio register detection logic for BIOS without VBT
ykzhao
yakui.zhao at intel.com
Fri Nov 20 04:48:16 CET 2009
On Wed, 2009-11-18 at 15:15 +0800, Li, Shaohua wrote:
> if no VBT, crt_ddc_bus will be 0, and cause we use 0 for GPIO. It's unlikely
> GPIO register is 0, so don't need initialize it to -1.
Hi, Eric
How about this patch?
There is no VBT on some boxes and the crt_ddc_bus will be zero. In
such case it will cause that the incorrect DDC bus is used for CRT.
Thanks.
Yakui
>
> Signed-off-by: Shaohua Li <shaohua.li at intel.com>
> Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 57204e2..8df9753 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -258,7 +258,7 @@ typedef struct drm_i915_private {
>
> struct notifier_block lid_notifier;
>
> - int crt_ddc_bus; /* -1 = unknown, else GPIO to use for CRT DDC */
> + int crt_ddc_bus; /* 0 = unknown, else GPIO to use for CRT DDC */
> struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */
> int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
> 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 96cd256..97169ea 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -241,10 +241,6 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
> GPIOF,
> };
>
> - /* Set sensible defaults in case we can't find the general block
> - or it is the wrong chipset */
> - dev_priv->crt_ddc_bus = -1;
> -
> general = find_section(bdb, BDB_GENERAL_DEFINITIONS);
> if (general) {
> 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 212e227..7da2b6e 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -554,7 +554,7 @@ void intel_crt_init(struct drm_device *dev)
> else {
> i2c_reg = GPIOA;
> /* Use VBT information for CRT DDC if available */
> - if (dev_priv->crt_ddc_bus != -1)
> + if (dev_priv->crt_ddc_bus != 0)
> i2c_reg = dev_priv->crt_ddc_bus;
> }
> intel_output->ddc_bus = intel_i2c_create(dev, i2c_reg, "CRTDDC_A");
More information about the Intel-gfx
mailing list