[Intel-gfx] [PATCH 1/2] drm/i915: Detect SDVO-RGB before SDVO TV

ykzhao yakui.zhao at intel.com
Tue Feb 9 04:34:02 CET 2010


On Mon, 2010-02-08 at 21:35 +0800, ykzhao wrote:
> On Tue, 2010-02-02 at 10:17 +0800, Fu Michael wrote:
> > Zhenyu Wang wrote:
> > > On 2010.02.02 08:19:32 +0800, Fu Michael wrote:
> > >   
> > >> This card _only_ have VGA connector from external, no way to switch to its TV 
> > >> capability. The motherboard design never intend to use the TV capability 
> > >> at all. Would using multiple connector or rename an output or not isn't 
> > >> the core of the issue. It is the non-existing TV connector is reported 
> > >> as connected bothering us...
> > >>     
> > >
> > > ok, looks like you need a quirk for that, based on SDVO vendor and device id...
> > >
> > >   
> > right. the problem is the same sdvo chip might be used to build a 
> > perfect SDVO card. It might be the motherboard builder's problem that 
> > make the sdvo chip think its TV is connected.
> > 
> > However, this remind me that DMI might be a good way to quirk this 
> > case... we may try that...Thanks for the hint, zhenyu.
> > 
> The following is the patch that uses the DMI quirk to initialize some
> multi-functional SDVO card as SDVO-VGA.

Hi, Eric
    This patch still has some problems. Please ignore this patch. 

thanks.
    Yakui
    
> 
> >From ac5526efed8954c940a3baed0265cffcbf179556 Mon Sep 17 00:00:00 2001
> From: Zhao Yakui <yakui.zhao at intel.com>
> Date: Mon, 8 Feb 2010 21:07:29 +0800
> Subject: [PATCH] drm/i915: Use the dmi quirk to initialize some SDVO card as SDVO-VGA
> 
> Some multi-function SDVO card will report the capability that SDVO-VGA/TV
> is supported. Now the connector type of such card is initialized as SDVO-TV.
> But when the external connected device is VGA monitor, we can't change the
> connector type correctly from SDVO-TV to SDVO-VGA. So on some box such
> multi-function SDVO card will be initialized as SDVO-VGA instead of
> SDVO-TV.
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=25787
> 
> Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
> tested-by: Vance <liangghv at sg.ibm.com>
> cc: stable at kernel.org
> ---
>  drivers/gpu/drm/i915/intel_sdvo.c |   23 ++++++++++++++++++++++-
>  1 files changed, 22 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 82678d3..fe85dd8 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -35,6 +35,7 @@
>  #include "i915_drm.h"
>  #include "i915_drv.h"
>  #include "intel_sdvo_regs.h"
> +#include <linux/dmi.h>
>  
>  static char *tv_format_names[] = {
>  	"NTSC_M"   , "NTSC_J"  , "NTSC_443",
> @@ -2283,6 +2284,25 @@ intel_sdvo_get_slave_addr(struct drm_device *dev, int output_device)
>  		return 0x72;
>  }
>  
> +static int intel_sdvo_is_vga(const struct dmi_system_id *id)
> +{
> +	DRM_DEBUG_KMS("SDVO is initialized as SDVO-VGA for %s\n", id->ident);
> +	return 1;
> +}
> +
> +static struct dmi_system_id intel_sdvo_bad_tv[] = {
> +	{
> +		.callback = intel_sdvo_is_vga,
> +		.ident = "IntelG45/ICH10R/DME1737",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "IBM CORPORATION"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "4800784"),
> +		},
> +	},
> +
> +	{ }	/* terminating entry */
> +};
> +
>  static bool
>  intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags)
>  {
> @@ -2323,7 +2343,8 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags)
>  					(1 << INTEL_SDVO_NON_TV_CLONE_BIT) |
>  					(1 << INTEL_ANALOG_CLONE_BIT);
>  		}
> -	} else if (flags & SDVO_OUTPUT_SVID0) {
> +	} else if ((flags & SDVO_OUTPUT_SVID0) &&
> +				!dmi_check_system(intel_sdvo_bad_tv)) {
>  
>  		sdvo_priv->controlled_output = SDVO_OUTPUT_SVID0;
>  		encoder->encoder_type = DRM_MODE_ENCODER_TVDAC;




More information about the Intel-gfx mailing list