Represent fields for horizontal and vertical blanking with <hblkstr>,
<hblkend>, <vblkstr> and <vblkend>. Aligns the code with the Matrox
programming manuals.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_mode.c | 29 ++++++++++++++------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c 
b/drivers/gpu/drm/mgag200/mgag200_mode.c
index ccad5bd5960d..1cd28e7bea32 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -204,23 +204,26 @@ void mgag200_init_registers(struct mga_device *mdev)
 void mgag200_set_mode_regs(struct mga_device *mdev, const struct 
drm_display_mode *mode)
 {
        const struct mgag200_device_info *info = mdev->info;
-       unsigned int hdispend, hsyncstr, hsyncend, htotal;
-       unsigned int vdispend, vsyncstr, vsyncend, vtotal;
+       unsigned int hdispend, hsyncstr, hsyncend, htotal, hblkstr, hblkend;
+       unsigned int vdispend, vsyncstr, vsyncend, vtotal, vblkstr, vblkend;
        u8 misc, crtcext1, crtcext2, crtcext5;
 
        hdispend = mode->crtc_hdisplay / 8 - 1;
        hsyncstr = mode->crtc_hsync_start / 8 - 1;
        hsyncend = mode->crtc_hsync_end / 8 - 1;
        htotal = mode->crtc_htotal / 8 - 1;
-
        /* Work around hardware quirk */
        if ((htotal & 0x07) == 0x06 || (htotal & 0x07) == 0x04)
                htotal++;
+       hblkstr = mode->crtc_hblank_start / 8 - 1;
+       hblkend = htotal;
 
        vdispend = mode->crtc_vdisplay - 1;
        vsyncstr = mode->crtc_vsync_start - 1;
        vsyncend = mode->crtc_vsync_end - 1;
        vtotal = mode->crtc_vtotal - 2;
+       vblkstr = mode->crtc_vblank_start;
+       vblkend = vtotal + 1;
 
        misc = RREG8(MGA_MISC_IN);
 
@@ -235,43 +238,43 @@ void mgag200_set_mode_regs(struct mga_device *mdev, const 
struct drm_display_mod
                misc &= ~MGAREG_MISC_VSYNCPOL;
 
        crtcext1 = (((htotal - 4) & 0x100) >> 8) |
-                   ((hdispend & 0x100) >> 7) |
+                   ((hblkstr & 0x100) >> 7) |
                    ((hsyncstr & 0x100) >> 6) |
-                    (htotal & 0x40);
+                    (hblkend & 0x40);
        if (info->has_vidrst)
                crtcext1 |= MGAREG_CRTCEXT1_VRSTEN |
                            MGAREG_CRTCEXT1_HRSTEN;
 
        crtcext2 = ((vtotal & 0xc00) >> 10) |
                   ((vdispend & 0x400) >> 8) |
-                  ((vdispend & 0xc00) >> 7) |
+                  ((vblkstr & 0xc00) >> 7) |
                   ((vsyncstr & 0xc00) >> 5) |
                   ((vdispend & 0x400) >> 3);
        crtcext5 = 0x00;
 
        WREG_CRT(0x00, htotal - 4);
        WREG_CRT(0x01, hdispend);
-       WREG_CRT(0x02, hdispend);
-       WREG_CRT(0x03, (htotal & 0x1f) | 0x80);
+       WREG_CRT(0x02, hblkstr);
+       WREG_CRT(0x03, (hblkend & 0x1f) | 0x80);
        WREG_CRT(0x04, hsyncstr);
-       WREG_CRT(0x05, ((htotal & 0x20) << 2) | (hsyncend & 0x1f));
+       WREG_CRT(0x05, ((hblkend & 0x20) << 2) | (hsyncend & 0x1f));
        WREG_CRT(0x06, vtotal & 0xff);
        WREG_CRT(0x07, ((vtotal & 0x100) >> 8) |
                       ((vdispend & 0x100) >> 7) |
                       ((vsyncstr & 0x100) >> 6) |
-                      ((vdispend & 0x100) >> 5) |
+                      ((vblkstr & 0x100) >> 5) |
                       ((vdispend & 0x100) >> 4) | /* linecomp */
                       ((vtotal & 0x200) >> 4) |
                       ((vdispend & 0x200) >> 3) |
                       ((vsyncstr & 0x200) >> 2));
-       WREG_CRT(0x09, ((vdispend & 0x200) >> 4) |
+       WREG_CRT(0x09, ((vblkstr & 0x200) >> 4) |
                       ((vdispend & 0x200) >> 3));
        WREG_CRT(0x10, vsyncstr & 0xff);
        WREG_CRT(0x11, (vsyncend & 0x0f) | 0x20);
        WREG_CRT(0x12, vdispend & 0xff);
        WREG_CRT(0x14, 0);
-       WREG_CRT(0x15, vdispend & 0xff);
-       WREG_CRT(0x16, (vtotal + 1) & 0xff);
+       WREG_CRT(0x15, vblkstr & 0xff);
+       WREG_CRT(0x16, vblkend & 0xff);
        WREG_CRT(0x17, 0xc3);
        WREG_CRT(0x18, vdispend & 0xff);
 
-- 
2.45.2

Reply via email to