[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