summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2006-05-18 16:18:28 +1000
committerDave Airlie <airlied@linux.ie>2006-06-02 10:07:41 +1000
commit21c459cb53e5b104fc5b0e1befa2e3777f277449 (patch)
tree4bdd2308b2072558d3bd4258a14264c5c7c48d87
parentf85c6789dbae44c984c24115d0375b84f3e61a80 (diff)
downloadxorg-driver-xf86-video-intel-21c459cb53e5b104fc5b0e1befa2e3777f277449.tar.gz
reduce BIOS interactions for my driver
-rw-r--r--src/i830_driver.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 4409ebf8..75e5b65f 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -324,11 +324,10 @@ I830DumpModeDebugInfo(ScrnInfoPtr pScrn)
DR(ADPA);
- DR(0x6000);
- DR(0x6004);
- DR(0x6010);
+ DR(VCLK_DIVISOR_VGA0);
+ DR(VCLK_DIVISOR_VGA1);
+ DR(VCLK_POST_DIV);
- DR(0x604C);
DR(0x6104);
DR(0x6200);
DR(0x6204);
@@ -1092,6 +1091,9 @@ GetBIOSPipe(ScrnInfoPtr pScrn)
vbeInfoPtr pVbe = pI830->pVbe;
int pipe;
+ if (pI830->rawmode)
+ return 0;
+
DPRINTF(PFX, "GetBIOSPipe:\n");
/* single pipe machines should always return Pipe A */
@@ -1121,6 +1123,9 @@ SetBIOSPipe(ScrnInfoPtr pScrn, int pipe)
I830Ptr pI830 = I830PTR(pScrn);
vbeInfoPtr pVbe = pI830->pVbe;
+ if (pI830->rawmode)
+ return TRUE;
+
DPRINTF(PFX, "SetBIOSPipe: pipe 0x%x\n", pipe);
/* single pipe machines should always return TRUE */
@@ -1197,6 +1202,8 @@ SetDisplayDevices(ScrnInfoPtr pScrn, int devices)
Bool setmode = FALSE;
#endif
+ if (pI830->rawmode)
+ return TRUE;
DPRINTF(PFX, "SetDisplayDevices: devices 0x%x\n", devices);
if (!pI830->specifiedMonitor)
@@ -1599,7 +1606,7 @@ I830DetectDisplayDevice(ScrnInfoPtr pScrn)
DisplayType i;
/* This seems to lockup some Dell BIOS'. So it's on option to turn on */
- if (pI830->displayInfo) {
+ if (pI830->displayInfo && !pI830->rawmode) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Broken BIOSes cause the system to hang here.\n"
"\t If you encounter this problem please add \n"
@@ -3268,7 +3275,7 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
/* This performs an active detect of the currently attached monitors
* or, at least it's meant to..... alas it doesn't seem to always work.
*/
- if (pI830->devicePresence) {
+ if (pI830->devicePresence && !pI830->rawmode) {
int req=0, att=0, enc=0;
GetDevicePresence(pScrn, &req, &att, &enc);
for (i = 0; i < NumDisplayTypes; i++) {