summaryrefslogtreecommitdiff
path: root/src/smi_output.c
diff options
context:
space:
mode:
authorPaulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>2008-11-14 15:47:52 -0200
committerPaulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>2008-11-14 15:47:52 -0200
commit5b8583fc2e5626ed98877858158d9687d7c94469 (patch)
treee68d583f03a7677eebe375d17a6ada94260819bf /src/smi_output.c
parentffb4be763ced82158a3a1d2e06fb0e81815e057b (diff)
Be more liberal about mode width validation.
The code was inherited from first import of latest smi sources, but the driver actually programs a mode, so there is no need to check if there will be a table entry with register contents matching the requested mode.
Diffstat (limited to 'src/smi_output.c')
-rw-r--r--src/smi_output.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/smi_output.c b/src/smi_output.c
index f07f64e..8487db0 100644
--- a/src/smi_output.c
+++ b/src/smi_output.c
@@ -63,21 +63,14 @@ SMI_OutputModeValid(xf86OutputPtr output, DisplayModePtr mode)
(mode->HDisplay != pSmi->lcdWidth || mode->VDisplay != pSmi->lcdHeight))
RETURN(MODE_PANEL);
- if (!(((mode->HDisplay == 1280) && (mode->VDisplay == 1024)) ||
- ((mode->HDisplay == 1024) && (mode->VDisplay == 768)) ||
- ((mode->HDisplay == 800) && (mode->VDisplay == 600)) ||
- ((mode->HDisplay == 640) && (mode->VDisplay == 480)) ||
- ((mode->HDisplay == 320) && (mode->VDisplay == 240)) ||
- ((mode->HDisplay == 400) && (mode->VDisplay == 300)) ||
- ((mode->HDisplay == 1280) && (mode->VDisplay == 960)) ||
- ((mode->HDisplay == 1280) && (mode->VDisplay == 768)) ||
- ((mode->HDisplay == 1024) && (mode->VDisplay == 600)) ||
- ((mode->HDisplay == 800) && (mode->VDisplay == 480)) ||
- ((mode->HDisplay == 720) && (mode->VDisplay == 540)) ||
- ((mode->HDisplay == 720) && (mode->VDisplay == 480))))
+ /* The driver is actually programming modes, instead of loading registers
+ * state from static tables. But still, only accept modes that should
+ * be handled correctly by all hardwares. On the MSOC, currently, only
+ * the crt can be programmed to different resolution modes.
+ */
+ if (mode->HDisplay & 15)
RETURN(MODE_BAD_WIDTH);
-
if((mode->Clock < pSmi->clockRange.minClock) ||
(mode->Clock > pSmi->clockRange.maxClock) ||
((mode->Flags & V_INTERLACE) && !pSmi->clockRange.interlaceAllowed) ||