summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Villací­s Lasso <a_villacis@palosanto.com>2008-01-19 12:08:50 -0500
committerAlex Deucher <alex@botch2.(none)>2008-01-19 12:08:50 -0500
commit1169cb5bd96f7a4ac0deea6d085133d446ec0d6a (patch)
tree4f9896d385fa6681e1bfab62e31095689d860108 /src
parentce182d1883bba35491858b47291c8240441443d0 (diff)
Implement driver option IgnoreEDID
Since some time, savage enforces video-mode and max. pixel clock validation through EDID, which is great for autoconfiguration, but prevents users from defining higher screen resolutions, even though the monitor is capable of it. This patch implements the IgnoreEDID option so that the EDID monitor information can be explictly disabled.
Diffstat (limited to 'src')
-rw-r--r--src/savage_driver.c11
-rw-r--r--src/savage_driver.h1
2 files changed, 9 insertions, 3 deletions
diff --git a/src/savage_driver.c b/src/savage_driver.c
index ed30efc..eb06519 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -277,6 +277,7 @@ typedef enum {
,OPTION_AGP_MODE
,OPTION_AGP_SIZE
,OPTION_DRI
+ ,OPTION_IGNORE_EDID
} SavageOpts;
@@ -303,6 +304,7 @@ static const OptionInfoRec SavageOptions[] =
{ OPTION_DISABLE_COB, "DisableCOB", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_BCI_FOR_XV, "BCIforXv", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DVI, "DVI", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_IGNORE_EDID, "IgnoreEDID", OPTV_BOOLEAN, {0}, FALSE },
#ifdef XF86DRI
{ OPTION_BUS_TYPE, "BusType", OPTV_ANYSTR, {0}, FALSE },
{ OPTION_DMA_TYPE, "DmaType", OPTV_ANYSTR, {0}, FALSE },
@@ -1073,11 +1075,12 @@ static void SavageDoDDC(ScrnInfoPtr pScrn)
xf86LoaderReqSymLists(i2cSymbols,NULL);
if (SavageI2CInit(pScrn)) {
unsigned char tmp;
+ xf86MonPtr pMon;
InI2CREG(tmp,psav->DDCPort);
OutI2CREG(tmp | 0x13,psav->DDCPort);
- xf86SetDDCproperties(pScrn,xf86PrintEDID(
- xf86DoEDID_DDC2(pScrn->scrnIndex,psav->I2C)));
+ pMon = xf86PrintEDID(xf86DoEDID_DDC2(pScrn->scrnIndex,psav->I2C));
+ if (!psav->IgnoreEDID) xf86SetDDCproperties(pScrn, pMon);
OutI2CREG(tmp,psav->DDCPort);
}
}
@@ -1347,6 +1350,7 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
memcpy(psav->Options, SavageOptions, sizeof(SavageOptions));
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, psav->Options);
+ xf86GetOptValBool(psav->Options, OPTION_IGNORE_EDID, &psav->IgnoreEDID);
xf86GetOptValBool(psav->Options, OPTION_PCI_BURST, &psav->pci_burst);
if (psav->pci_burst) {
@@ -4728,7 +4732,8 @@ SavageDDC1(int scrnIndex)
xf86PrintEDID(pMon);
- xf86SetDDCproperties(pScrn,pMon);
+ if (!psav->IgnoreEDID)
+ xf86SetDDCproperties(pScrn,pMon);
/* undo initialization */
OutI2CREG(byte,psav->I2CPort);
diff --git a/src/savage_driver.h b/src/savage_driver.h
index e032ddc..b6d1e7a 100644
--- a/src/savage_driver.h
+++ b/src/savage_driver.h
@@ -335,6 +335,7 @@ typedef struct _Savage {
/* Here are all the Options */
OptionInfoPtr Options;
+ Bool IgnoreEDID;
Bool ShowCache;
Bool pci_burst;
Bool NoPCIRetry;