Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=28ebe4f66beda8f142569d24fe3b168f8a08a6a6
Commit:     28ebe4f66beda8f142569d24fe3b168f8a08a6a6
Parent:     ee5618f4937dcbff15e504663d81a7adb3d849bf
Author:     Krzysztof Halasa <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 01:29:33 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 09:43:20 2007 -0700

    Intel FB: force even line count in interlaced mode
    
    Intel FB: the chip adds two halflines automatically in interlaced mode,
    force even line count for the right timings.
    
    Signed-off-by: Krzysztof Halasa <[EMAIL PROTECTED]>
    Cc: "Antonino A. Daplas" <[EMAIL PROTECTED]>
    Cc: <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/video/intelfb/intelfbhw.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/drivers/video/intelfb/intelfbhw.c 
b/drivers/video/intelfb/intelfbhw.c
index 270f655..a02ee24 100644
--- a/drivers/video/intelfb/intelfbhw.c
+++ b/drivers/video/intelfb/intelfbhw.c
@@ -317,6 +317,14 @@ int intelfbhw_validate_mode(struct intelfb_info *dinfo,
                        var->yres, VACTIVE_MASK + 1);
                return 1;
        }
+       if (var->xres < 4) {
+               WRN_MSG("X resolution too small (%d vs 4).\n", var->xres);
+               return 1;
+       }
+       if (var->yres < 4) {
+               WRN_MSG("Y resolution too small (%d vs 4).\n", var->yres);
+               return 1;
+       }
 
        /* Check for doublescan modes. */
        if (var->vmode & FB_VMODE_DOUBLE) {
@@ -324,6 +332,11 @@ int intelfbhw_validate_mode(struct intelfb_info *dinfo,
                return 1;
        }
 
+       if ((var->vmode & FB_VMODE_INTERLACED) && (var->yres & 1)) {
+               WRN_MSG("Odd number of lines in interlaced mode\n");
+               return 1;
+       }
+
        /* Check if clock is OK. */
        tmp = 1000000000 / var->pixclock;
        if (tmp < MIN_CLOCK) {
@@ -1127,6 +1140,8 @@ int intelfbhw_mode_to_hw(struct intelfb_info *dinfo,
                hblank_end);
 
        vactive = var->yres;
+       if (var->vmode & FB_VMODE_INTERLACED)
+               vactive--; /* the chip adds 2 halflines automatically */
        vsync_start = vactive + var->lower_margin;
        vsync_end = vsync_start + var->vsync_len;
        vtotal = vsync_end + var->upper_margin;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to