diff options
author | Alex Villacís Lasso <a_villacis@palosanto.com> | 2008-01-19 12:08:50 -0500 |
---|---|---|
committer | Alex Deucher <alex@botch2.(none)> | 2008-01-19 12:08:50 -0500 |
commit | 1169cb5bd96f7a4ac0deea6d085133d446ec0d6a (patch) | |
tree | 4f9896d385fa6681e1bfab62e31095689d860108 /src | |
parent | ce182d1883bba35491858b47291c8240441443d0 (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.c | 11 | ||||
-rw-r--r-- | src/savage_driver.h | 1 |
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; |