Bug #12439: add a quirk to use +hsync +vsync for the probed detailed mode.
Samsung 205BW quirk is somehow reworked.
This commit is contained in:
parent
cc22b05ea0
commit
734e115871
|
@ -66,6 +66,8 @@ typedef enum {
|
||||||
DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5,
|
DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5,
|
||||||
/* Monitor forgot to set the first detailed is preferred bit. */
|
/* Monitor forgot to set the first detailed is preferred bit. */
|
||||||
DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6,
|
DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6,
|
||||||
|
/* use +hsync +vsync for detailed mode */
|
||||||
|
DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7,
|
||||||
} ddc_quirk_t;
|
} ddc_quirk_t;
|
||||||
|
|
||||||
static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
|
static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
|
||||||
|
@ -160,6 +162,15 @@ static Bool quirk_first_detailed_preferred (int scrnIndex, xf86MonPtr DDC)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool quirk_detailed_sync_pp(int scrnIndex, xf86MonPtr DDC)
|
||||||
|
{
|
||||||
|
/* Bug #12439: Samsung SyncMaster 205BW */
|
||||||
|
if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
|
||||||
|
DDC->vendor.prod_id == 541)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Bool (*detect) (int scrnIndex, xf86MonPtr DDC);
|
Bool (*detect) (int scrnIndex, xf86MonPtr DDC);
|
||||||
ddc_quirk_t quirk;
|
ddc_quirk_t quirk;
|
||||||
|
@ -195,6 +206,10 @@ static const ddc_quirk_map_t ddc_quirks[] = {
|
||||||
quirk_first_detailed_preferred, DDC_QUIRK_FIRST_DETAILED_PREFERRED,
|
quirk_first_detailed_preferred, DDC_QUIRK_FIRST_DETAILED_PREFERRED,
|
||||||
"First detailed timing was not marked as preferred."
|
"First detailed timing was not marked as preferred."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
quirk_detailed_sync_pp, DDC_QUIRK_DETAILED_SYNC_PP,
|
||||||
|
"Use +hsync +vsync for detailed timing."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
NULL, DDC_QUIRK_NONE,
|
NULL, DDC_QUIRK_NONE,
|
||||||
"No known quirks"
|
"No known quirks"
|
||||||
|
@ -341,6 +356,9 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
|
||||||
if (timing->interlaced)
|
if (timing->interlaced)
|
||||||
Mode->Flags |= V_INTERLACE;
|
Mode->Flags |= V_INTERLACE;
|
||||||
|
|
||||||
|
if (quirks & DDC_QUIRK_DETAILED_SYNC_PP)
|
||||||
|
Mode->Flags |= V_PVSYNC | V_PHSYNC;
|
||||||
|
else {
|
||||||
if (timing->misc & 0x02)
|
if (timing->misc & 0x02)
|
||||||
Mode->Flags |= V_PVSYNC;
|
Mode->Flags |= V_PVSYNC;
|
||||||
else
|
else
|
||||||
|
@ -350,6 +368,7 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
|
||||||
Mode->Flags |= V_PHSYNC;
|
Mode->Flags |= V_PHSYNC;
|
||||||
else
|
else
|
||||||
Mode->Flags |= V_NHSYNC;
|
Mode->Flags |= V_NHSYNC;
|
||||||
|
}
|
||||||
|
|
||||||
return Mode;
|
return Mode;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue