Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=68a341a53ab5a3c5b7dad4b226124414c62c124d
Commit:     68a341a53ab5a3c5b7dad4b226124414c62c124d
Parent:     b4b38bd63c07c8927b43c6c378eca1db10fdaf2e
Author:     Ian Armstrong <[EMAIL PROTECTED]>
AuthorDate: Fri Aug 3 09:51:58 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Tue Oct 9 22:04:27 2007 -0300

    V4L/DVB (5971): ivtv-fb: framebuffer timings no longer locked on module load
    
    Framebuffer timings are currently locked to the video format in use when the
    module is loaded. If the video format is then changed, the timings returned
    by the framebuffer will be for the original format.
    
    This patch ensures that the timings returned reflect the current video 
format.
    
    Signed-off-by: Ian Armstrong <[EMAIL PROTECTED]>
    Signed-off-by: Hans Verkuil <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/ivtv/ivtv-fb.c |   43 +++++++++++++++++------------------
 1 files changed, 21 insertions(+), 22 deletions(-)

diff --git a/drivers/media/video/ivtv/ivtv-fb.c 
b/drivers/media/video/ivtv/ivtv-fb.c
index 00765da..d2cc031 100644
--- a/drivers/media/video/ivtv/ivtv-fb.c
+++ b/drivers/media/video/ivtv/ivtv-fb.c
@@ -164,11 +164,6 @@ MODULE_LICENSE("GPL");
 #define IVTV_OSD_BPP_32     0x04
 
 struct osd_info {
-       /* Timing info for modes */
-       u32 pixclock;
-       u32 hlimit;
-       u32 vlimit;
-
        /* Physical base address */
        unsigned long video_pbase;
        /* Relative base address (relative to start of decoder memory) */
@@ -579,10 +574,25 @@ static int ivtvfb_get_fix(struct ivtv *itv, struct 
fb_fix_screeninfo *fix)
 static int _ivtvfb_check_var(struct fb_var_screeninfo *var, struct ivtv *itv)
 {
        struct osd_info *oi = itv->osd_info;
-       int osd_height_limit = itv->is_50hz ? 576 : 480;
+       int osd_height_limit;
+       u32 pixclock, hlimit, vlimit;
 
        IVTV_FB_DEBUG_INFO("ivtvfb_check_var\n");
 
+       /* Set base references for mode calcs. */
+       if (itv->is_50hz) {
+               pixclock = 84316;
+               hlimit = 776;
+               vlimit = 591;
+               osd_height_limit = 576;
+       }
+       else {
+               pixclock = 83926;
+               hlimit = 776;
+               vlimit = 495;
+               osd_height_limit = 480;
+       }
+
        /* Check the bits per pixel */
        if (osd_compat) {
                if (var->bits_per_pixel != 32) {
@@ -723,8 +733,8 @@ static int _ivtvfb_check_var(struct fb_var_screeninfo *var, 
struct ivtv *itv)
        }
 
        /* Maintain overall 'size' for a constant refresh rate */
-       var->right_margin = oi->hlimit - var->left_margin - var->xres;
-       var->lower_margin = oi->vlimit - var->upper_margin - var->yres;
+       var->right_margin = hlimit - var->left_margin - var->xres;
+       var->lower_margin = vlimit - var->upper_margin - var->yres;
 
        /* Fixed sync times */
        var->hsync_len = 24;
@@ -733,9 +743,10 @@ static int _ivtvfb_check_var(struct fb_var_screeninfo 
*var, struct ivtv *itv)
        /* Non-interlaced / interlaced mode is used to switch the OSD filter
           on or off. Adjust the clock timings to maintain a constant
           vertical refresh rate. */
-       var->pixclock = oi->pixclock;
        if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_NONINTERLACED)
-               var->pixclock /= 2;
+               var->pixclock = pixclock / 2;
+       else
+               var->pixclock = pixclock;
 
        IVTV_FB_DEBUG_INFO("Display size: %dx%d (virtual %dx%d) @ %dbpp\n",
                      var->xres, var->yres,
@@ -875,18 +886,6 @@ static int ivtvfb_init_vidmode(struct ivtv *itv)
        struct v4l2_rect start_window;
        int max_height;
 
-       /* Set base references for mode calcs. */
-       if (itv->is_50hz) {
-               oi->pixclock = 84316;
-               oi->hlimit = 776;
-               oi->vlimit = 591;
-       }
-       else {
-               oi->pixclock = 83926;
-               oi->hlimit = 776;
-               oi->vlimit = 495;
-       }
-
        /* Color mode */
 
        if (osd_compat) osd_depth = 32;
-
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