summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/atipreinit.c6
-rw-r--r--src/ativalid.c17
2 files changed, 17 insertions, 6 deletions
diff --git a/src/atipreinit.c b/src/atipreinit.c
index dbcd9fd..96ec68f 100644
--- a/src/atipreinit.c
+++ b/src/atipreinit.c
@@ -2252,8 +2252,6 @@ ATIPreInit
pitchInc = minPitch * pATI->bitsPerPixel;
- pScreenInfo->maxHValue = (MaxBits(CRTC_H_TOTAL) + 1) << 3;
-
if (pATI->Chip < ATI_CHIP_264VT)
{
/*
@@ -2264,12 +2262,8 @@ ATIPreInit
*/
ATIClockRange.doubleScanAllowed = FALSE;
- /* CRTC_H_TOTAL is one bit narrower */
- pScreenInfo->maxHValue >>= 1;
}
- pScreenInfo->maxVValue = MaxBits(CRTC_V_TOTAL) + 1;
-
maxPitch = minPitch * MaxBits(CRTC_PITCH);
if (pATI->OptionAccel)
diff --git a/src/ativalid.c b/src/ativalid.c
index 122f594..612bfe5 100644
--- a/src/ativalid.c
+++ b/src/ativalid.c
@@ -53,6 +53,23 @@ ATIValidMode
return MODE_OK;
}
+ {
+ int maxHValue, maxVValue;
+
+ maxHValue = (MaxBits(CRTC_H_TOTAL) + 1) << 3;
+ if (pATI->Chip < ATI_CHIP_264VT)
+ {
+ /* CRTC_H_TOTAL is one bit narrower */
+ maxHValue >>= 1;
+ }
+ if (pMode->HDisplay > maxHValue)
+ return MODE_BAD_HVALUE;
+
+ maxVValue = MaxBits(CRTC_V_TOTAL) + 1;
+ if (pMode->VDisplay > maxVValue)
+ return MODE_BAD_VVALUE;
+ }
+
/*
* The following is done for every mode in the monitor section that
* survives the common layer's basic checks.