[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