Blob Blame History Raw
Index: src/via_mode.c
===================================================================
--- src/via_mode.c	(revision 758)
+++ src/via_mode.c	(working copy)
@@ -250,6 +250,10 @@ ViaTVSetMode(ScrnInfoPtr pScrn, DisplayModePtr mod
 
     if (pBIOSInfo->TVModeCrtc)
         pBIOSInfo->TVModeCrtc(pScrn, mode);
+
+    /* TV reset. */
+    xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x1D, 0x00);
+    xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x1D, 0x80);
 }
 
 void
@@ -491,6 +495,8 @@ ViaOutputsSelect(ScrnInfoPtr pScrn)
             pBIOSInfo->CrtPresent = TRUE;
             pBIOSInfo->CrtActive = TRUE;
         }
+        if (pBIOSInfo->TVActive)
+            pBIOSInfo->FirstCRTC->IsActive = TRUE ;
     }
     if (!pVia->UseLegacyModeSwitch) {
         if (pBIOSInfo->CrtActive)
@@ -1693,6 +1699,13 @@ ViaModeSet(ScrnInfoPtr pScrn, DisplayModePtr mode)
             ViaDisplaySetStreamOnDFP(pScrn, TRUE);
             ViaDFPPower(pScrn, TRUE);
         }
+
+        if (pBIOSInfo->TVActive) {
+            /* TV on FirstCrtc */
+            ViaDisplaySetStreamOnDVO(pScrn, pBIOSInfo->TVDIPort, TRUE);
+            ViaDisplayEnableDVO(pScrn, pBIOSInfo->TVDIPort);
+            ViaTVSetMode(pScrn, mode);
+        }
         
         ViaModeFirstCRTC(pScrn, mode);
     } else {
Index: src/via_driver.c
===================================================================
--- src/via_driver.c	(revision 758)
+++ src/via_driver.c	(working copy)
@@ -211,6 +211,7 @@ typedef enum
     OPTION_TVDOTCRAWL,
     OPTION_TVTYPE,
     OPTION_TVOUTPUT,
+    OPTION_TVDIPORT,
     OPTION_DISABLEVQ,
     OPTION_DISABLEIRQ,
     OPTION_TVDEFLICKER,
@@ -249,6 +250,7 @@ static OptionInfoRec VIAOptions[] = {
     {OPTION_TVDEFLICKER,         "TVDeflicker",      OPTV_INTEGER, {0}, FALSE},
     {OPTION_TVTYPE,              "TVType",           OPTV_ANYSTR,  {0}, FALSE},
     {OPTION_TVOUTPUT,            "TVOutput",         OPTV_ANYSTR,  {0}, FALSE},
+    {OPTION_TVDIPORT,            "TVPort",           OPTV_ANYSTR,  {0}, FALSE},    
     {OPTION_DISABLEVQ,           "DisableVQ",        OPTV_BOOLEAN, {0}, FALSE},
     {OPTION_DISABLEIRQ,          "DisableIRQ",       OPTV_BOOLEAN, {0}, FALSE},
     {OPTION_AGP_DMA,             "EnableAGPDMA",     OPTV_BOOLEAN, {0}, FALSE},
@@ -840,6 +842,7 @@ static Bool
 VIASetupDefaultOptions(ScrnInfoPtr pScrn)
 {
     VIAPtr pVia = VIAPTR(pScrn);
+    VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIASetupDefaultOptions\n"));
 
@@ -890,6 +893,7 @@ VIASetupDefaultOptions(ScrnInfoPtr pScrn)
             pVia->agpEnable = FALSE;
             pVia->dmaXV = FALSE;
             pVia->UseLegacyModeSwitch = FALSE;
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP0;
             break;
         case VIA_P4M900:
             pVia->VideoEngine = VIDEO_ENGINE_CME;
@@ -898,17 +902,20 @@ VIASetupDefaultOptions(ScrnInfoPtr pScrn)
             /* FIXME: this needs to be tested */
             pVia->dmaXV = FALSE;
             pVia->UseLegacyModeSwitch = FALSE;
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP0;
             break;
         case VIA_CX700:
             pVia->VideoEngine = VIDEO_ENGINE_CME;
             pVia->swov.maxWInterp = 1920;
             pVia->swov.maxHInterp = 1080;
             pVia->UseLegacyModeSwitch = FALSE;
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP1;
             break;
         case VIA_P4M890:
             pVia->VideoEngine = VIDEO_ENGINE_CME;
             pVia->dmaXV = FALSE;
             pVia->UseLegacyModeSwitch = FALSE;
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP1;
             break;
         case VIA_VX800:
         case VIA_VX855:
@@ -916,6 +923,7 @@ VIASetupDefaultOptions(ScrnInfoPtr pScrn)
             /* pVia->agpEnable = FALSE;
             pVia->dmaXV = FALSE;*/
             pVia->UseLegacyModeSwitch = FALSE;
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP1;
             break;
     }
 
@@ -1540,6 +1548,30 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags)
                    "No default TV output signal type is set.\n");
     }
 
+    /* TV DI Port */
+    if ((s = xf86GetOptValString(VIAOptions, OPTION_TVDIPORT))) {
+        if (!xf86NameCmp(s, "DVP0")) {
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP0;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+                       "TV Output Port is DVP0.\n");
+        } else if (!xf86NameCmp(s, "DVP1")) {
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DVP1;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+                       "TV Output Port is DVP1.\n");
+        } else if (!xf86NameCmp(s, "DFPHigh")) {
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DFPHIGH;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+                       "TV Output Port is DFPHigh.\n");
+        } else if (!xf86NameCmp(s, "DFPLow")) {
+            pBIOSInfo->TVDIPort = VIA_DI_PORT_DFPLOW;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+                       "TV Output Port is DFPLow.\n");
+        } 
+    } else {
+        xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT,
+                   "No default TV output port is set.\n");
+    }
+
     VIAVidHWDiffInit(pScrn);
 
     /* maybe throw in some more sanity checks here */
Index: src/via_crtc.c
===================================================================
--- src/via_crtc.c	(revision 758)
+++ src/via_crtc.c	(working copy)
@@ -304,7 +304,8 @@ ViaFirstCRTCSetMode(ScrnInfoPtr pScrn, DisplayMode
         temp += 0x03;
         temp &= ~0x03;
     }
-    hwp->writeSeq(hwp, 0x1C, (temp >> 1) & 0xFF);
+
+    hwp->writeSeq(hwp, 0x1C, ((temp >> 1)+1) & 0xFF);
     ViaSeqMask(hwp, 0x1D, temp >> 9, 0x03);
 
     switch (pVia->ChipId) {
Index: src/via_bios.h
===================================================================
--- src/via_bios.h	(revision 758)
+++ src/via_bios.h	(working copy)
@@ -98,6 +98,13 @@
 #define	    VIA_DI_12BIT		    0x00
 #define	    VIA_DI_24BIT		    0x01
 
+/* Digital Port */
+#define     VIA_DI_PORT_NONE        0x0
+#define     VIA_DI_PORT_DVP0        0x1
+#define     VIA_DI_PORT_DVP1        0x2
+#define     VIA_DI_PORT_DFPLOW      0x4
+#define     VIA_DI_PORT_DFPHIGH     0x8
+
 typedef struct ViaPanelMode {
     int Width ;
     int Height ;
@@ -187,6 +194,7 @@ typedef struct _VIABIOSINFO {
     int         TVDeflicker;
     CARD8       TVRegs[0xFF];
     int         TVNumRegs;
+    int         TVDIPort;
 
     /* TV Callbacks */
     void (*TVSave) (ScrnInfoPtr pScrn);
Index: src/via_display.c
===================================================================
--- src/via_display.c	(revision 758)
+++ src/via_display.c	(working copy)
@@ -111,6 +111,38 @@ ViaDisplayDisableCRT(ScrnInfoPtr pScrn)
     ViaCrtcMask(hwp, 0x36, 0x30, 0x30);
 }
 
+void
+ViaDisplayEnableDVO(ScrnInfoPtr pScrn, int port)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaDisplayEnableDVO\n"));
+    switch (port) {
+        case VIA_DI_PORT_DVP0:
+            ViaSeqMask(hwp, 0x1E, 0xC0, 0xC0);
+            break;
+        case VIA_DI_PORT_DVP1:
+            ViaSeqMask(hwp, 0x1E, 0x30, 0x30);
+            break;
+    }
+}
+
+void
+ViaDisplayDisableDVO(ScrnInfoPtr pScrn, int port)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaDisplayEnableDVO\n"));
+    switch (port) {
+        case VIA_DI_PORT_DVP0:
+            ViaSeqMask(hwp, 0x1E, 0x00, 0xC0);
+            break;
+        case VIA_DI_PORT_DVP1:
+            ViaSeqMask(hwp, 0x1E, 0x00, 0x30);
+            break;
+    }
+}
+
 /*
  * Sets the primary or secondary display stream on CRT.
  */
@@ -143,3 +175,32 @@ ViaDisplaySetStreamOnDFP(ScrnInfoPtr pScrn, Bool p
         ViaCrtcMask(hwp, 0x99, 0x10, 0x10);
 }
 
+void
+ViaDisplaySetStreamOnDVO(ScrnInfoPtr pScrn, int port, Bool primary)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    int regNum;
+    
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaDisplaySetStreamOnDVO\n"));
+
+    switch (port) {
+        case VIA_DI_PORT_DVP0:
+            regNum = 0x96;
+            break;
+        case VIA_DI_PORT_DVP1:
+            regNum = 0x9B;
+            break;
+        case VIA_DI_PORT_DFPLOW:
+            regNum = 0x97;
+            break;
+        case VIA_DI_PORT_DFPHIGH:
+            regNum = 0x99;
+            break;
+    }
+
+    if (primary)
+        ViaCrtcMask(hwp, regNum, 0x00, 0x10);
+    else
+        ViaCrtcMask(hwp, regNum, 0x10, 0x10);
+}
+
Index: src/via_vt162x.c
===================================================================
--- src/via_vt162x.c	(revision 758)
+++ src/via_vt162x.c	(working copy)
@@ -32,7 +32,41 @@
 #include "via_vt162x.h"
 #include "via_id.h"
 
+static void
+ViaSetTVClockSource(ScrnInfoPtr pScrn)
+{
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaSetTVClockSource\n"));
 
+    VIAPtr pVia = VIAPTR(pScrn);
+    VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+    /* External TV: */
+    switch(pVia->Chipset) {
+        case VIA_CX700:
+        case VIA_VX800:
+            if (pBIOSInfo->FirstCRTC->IsActive) {
+                if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
+                    ViaCrtcMask(hwp, 0x6C, 0xB0, 0xF0);
+                else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
+                    ViaCrtcMask(hwp, 0x6C, 0x90, 0xF0);
+            } else {
+                /* IGA2 */
+                if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
+                    ViaCrtcMask(hwp, 0x6C, 0x0B, 0x0F);
+                else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
+                    ViaCrtcMask(hwp, 0x6C, 0x09, 0x0F);
+            }
+            break;
+        default:
+            if (pBIOSInfo->FirstCRTC->IsActive)
+                ViaCrtcMask(hwp, 0x6C, 0x21, 0x21);
+            else
+                ViaCrtcMask(hwp, 0x6C, 0xA1, 0xA1);
+            break;
+    }
+}
+
 static void
 VT162xPrintRegs(ScrnInfoPtr pScrn)
 {
@@ -650,11 +684,30 @@ VT1622ModeI2C(ScrnInfoPtr pScrn, DisplayModePtr mo
             xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x2B, Table.RGB[4]);
         if (Table.RGB[5])
             xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x2C, Table.RGB[5]);
+        if (pBIOSInfo->TVEncoder == VIA_VT1625) {
+            if (pBIOSInfo->TVType < TVTYPE_480P) {
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x02, 0x12);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x23, 0x7E);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4A, 0x85);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4B, 0x0A);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4E, 0x00);
+            } else {
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x02, 0x12);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4A, 0x85);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4B, 0x0A);
+            }
+        }
     } else if (pBIOSInfo->TVOutput == TVOUTPUT_YCBCR) {
         xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x02, 0x03);
         xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x65, Table.YCbCr[0]);
         xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x66, Table.YCbCr[1]);
         xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x67, Table.YCbCr[2]);
+        if (pBIOSInfo->TVEncoder == VIA_VT1625) {
+            if (pBIOSInfo->TVType < TVTYPE_480P) {
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x23, 0x7E);
+                xf86I2CWriteByte(pBIOSInfo->TVI2CDev, 0x4E, 0x00);
+            }
+        }
     }
 
     /* Configure flicker filter. */
@@ -721,8 +774,7 @@ VT1622ModeCrtc(ScrnInfoPtr pScrn, DisplayModePtr m
     }
     pBIOSInfo->ClockExternal = TRUE;
     ViaCrtcMask(hwp, 0x6A, 0x40, 0x40);
-    ViaCrtcMask(hwp, 0x6C, 0x01, 0x01);
-    ViaSeqMask(hwp, 0x1E, 0xF0, 0xF0);  /* enable DI0/DVP0 */
+    ViaSetTVClockSource(pScrn);
 }
 
 
Index: src/via_vt162x.h
===================================================================
--- src/via_vt162x.h	(revision 758)
+++ src/via_vt162x.h	(working copy)
@@ -755,19 +755,19 @@ static DisplayModeRec VT1625Modes[] = {
     { MODEPREFIX("1024x768Over"), ... ,   MODESUFFIXPAL },
     { MODEPREFIX("720x576Over"), ... ,   MODESUFFIXPAL },*/
 /*                                clock    HR   SH1   SH2   HFL       VR   SV1   SV2   VFL*/
-    { MODEPREFIX("640x480"),      30000,  640,  680,  808, 1000, 0,  480,  520,  523,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL   },
+    { MODEPREFIX("640x480"),      30000,  640,  688,  744,  784, 0,  480,  488,  495,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL   },
     { MODEPREFIX("800x600"),      34500,  800,  816,  880,  920, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL   },
     { MODEPREFIX("1024x768"),     57000, 1024, 1040, 1112, 1200, 0,  768,  829,  840,  950, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL   },
-    { MODEPREFIX("720x576"),      34500,  720,  766,  800, 1000, 0,  576,  576,  579,  690, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL   },
+    { MODEPREFIX("720x576"),      34500,  720,  760,  800, 1000, 0,  576,  577,  580,  690, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL   },
     { MODEPREFIX("720x576Over"),  27000,  720,  768,  800,  864, 0,  576,  577,  579,  625, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL   },
 
     { MODEPREFIX("1280x720"),     74250, 1280, 1320, 1376, 1650, 0,  720,  722,  728,  750, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX720P  },
-    { MODEPREFIX("1920x1080"),    74250, 1920, 1960, 2016, 2200, 0, 1080, 1082, 1088, 1125, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX1080I },
+    { MODEPREFIX("1920x1080"),    74250, 1920, 1960, 2064, 2200, 0, 1080, 1083, 1087, 1125, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX1080I },
 
     { MODEPREFIX("640x480"),      24696,  640,  656,  744,  784, 0,  480,  482,  483,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
     { MODEPREFIX("720x480Under"), 34000,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
-    { MODEPREFIX("720x480Fit"),   28980,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
-    { MODEPREFIX("720x480Over"),  27025,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
+    { MODEPREFIX("720x480Fit"),   28980,  720,  728,  776,  840, 0,  480,  484,  499,  575, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
+    { MODEPREFIX("720x480Over"),  27025,  720,  752,  792,  800, 0,  480,  482,  485,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
 
     { MODEPREFIX("720x480Under"), 28224,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX480P  },
     { MODEPREFIX("720x480Fit"),   28980,  720,  728,  776,  840, 0,  480,  484,  499,  575, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX480P  },
@@ -828,13 +828,13 @@ VT1625Table[] = {
      },
      { "720x480Over", 720, 480, TVTYPE_NTSC, 0, 0,
        /*  00                                                                                         0F */
-       { 0x03,    0, 0x10, 0x1F, 0x00,    0,    0, 0x33,  0x1C, 0x06, 0x7B, 0x15, 0x50, 0x57,    0, 0x9E,
-            0, 0x80, 0x04, 0x08, 0x08, 0x10, 0xD6, 0x7B,  0xF0, 0x21, 0x00, 0x50, 0x43, 0x80,    0, 0x10,
-         0x1C, 0x08, 0xDC, 0x77, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
+       { 0x03,    0, 0x10, 0x1F, 0x00,    0,    0, 0x02,  0x10, 0x00, 0x7B, 0x15, 0x50, 0x57,    0, 0xB7,
+            0, 0x80, 0xAD, 0x21, 0x64, 0x34, 0xD6, 0x7B,  0xF0, 0x21, 0x00, 0x50, 0x00, 0x80,    0, 0x10,
+         0x1C, 0x08, 0xE5, 0x77, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
        /*  4A                            4F    50                                                     59 */
-       { 0xC5, 0x0F,    0, 0x01, 0x10, 0x4A, 0x59, 0xCF,  0x23, 0x0C, 0x22, 0x59, 0xCF, 0x7F, 0x23, 0x91,
+       { 0xC5, 0x0F,    0, 0x01, 0x10, 0x4A, 0x1F, 0xD2,  0x23, 0x0C, 0x22, 0x59, 0xC0, 0x7E, 0x23, 0x8C,
        /*  5A                            5F    60                       64 */
-         0xD2, 0xE1, 0x7D, 0x06,    0,    0, 0x80, 0x28,  0xFF, 0x59, 0x03 },
+         0xD0, 0xF6, 0x7C, 0x06,    0, 0x34, 0x80, 0x28,  0xFF, 0x1F, 0x03 },
        /* RBG 65,66,67,27,2b,2c */
        { 0x55, 0x37, 0x5C,    0,    0,    0 },
        /* Y-Cb-Cr 65,66,67 */
@@ -876,8 +876,8 @@ VT1625Table[] = {
     },
     { "720x480Over", 720, 480, TVTYPE_480P, 0, 0,
       /*  00                                                                                         0F */
-      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x33,  0x20, 0xFF, 0x7B,    0, 0x50, 0x57,    0, 0x9E,
-           0, 0x80, 0x04, 0x08, 0x08, 0x10, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x43, 0x80,    0, 0x01,
+      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x01,  0x20,    0, 0x7B,    0, 0x50, 0x57,    0, 0x9E,
+           0, 0x80, 0x04, 0x08, 0x08, 0x10, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x00, 0x80,    0, 0x01,
         0x2F, 0x08, 0xDC, 0x7E, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
       /*  4A                            4F    50                                                     59 */
       { 0xC5, 0x0F,    0, 0x01,    0, 0x4A, 0x59, 0xCF,  0x23, 0x0C, 0x22, 0x59, 0xCF, 0x7F, 0x23, 0x91,
@@ -909,15 +909,15 @@ VT1625Table[] = {
       0x0, 0x0,
     },
 
-    { "1920x1080", 1920, 540, TVTYPE_1080I, 0, 0,
+    { "1920x1080", 1920, 1080, TVTYPE_1080I, 0, 0,
       /*  00                                                                                         0F */
-      { 0x83,    0, 0x10, 0x4A, 0x86, 0x39,    0, 0x8B,  0x3D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E,
-        0x00, 0x80, 0x4A, 0x08, 0x37, 0x14, 0x00, 0x00,  0x00, 0x00, 0x00, 0x50, 0x44, 0x80, 0x00, 0x03,
+      { 0x83,    0, 0x10, 0x4A, 0x86, 0x32,    0, 0x8B,  0x3D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E,
+        0x00, 0x80, 0x4A, 0x08, 0x37, 0x14, 0x00, 0x00,  0x00, 0x00, 0x00, 0x50, 0x04, 0x80, 0x00, 0x03,
         0x25, 0x00, 0x00, 0x7E, 0x00,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
       /*  4A                            4F    50                                                     59 */
       { 0xC5, 0x0F,    0, 0x01,    0, 0x00, 0x97, 0x7F,  0x78, 0x64, 0x14, 0x97, 0x7f, 0x59, 0x78, 0xb0,
       /*  5A                            5F    60                       64 */
-        0x1a, 0xec, 0xfa, 0x08, 0x00, 0x00, 0x80, 0x20,  0xFF, 0x97, 0x28 },
+        0x1a, 0xdc, 0x5d, 0x08, 0x00, 0x00, 0x80, 0x28,  0xFF, 0x97, 0x28 },
       /* RBG 65,66,67,27,2b,2c */
       { 0x55, 0x39, 0x66,    0,    0,    0 },
       /* Y-Cb-Cr 65,66,67 */
@@ -945,9 +945,9 @@ VT1625Table[] = {
 
     { "720x576", 720, 576, TVTYPE_PAL, 0, 0,
       /*  00                                                                                         0F */
-      { 0x03, 0x00, 0x10, 0x1f, 0x03, 0x00, 0x00, 0xc9,  0x4c, 0x11, 0x7c, 0x00, 0x56, 0x57, 0x07, 0xbf,
-	0x00, 0x80, 0x09, 0x08, 0x17, 0x24, 0xcb, 0x8a,  0x09, 0x2a, 0x06, 0x50, 0x01, 0x80, 0x00, 0x10,
-	0x14, 0x0c, 0x32, 0x7e, 0x00, 0x5f, 0x34, 0x8c,  0x4f, 0x5e, 0x15, 0xa2, 0x22, 0x80, 0xd3, 0x10
+      { 0x03, 0x00, 0x10, 0x1f, 0x03, 0x00, 0x00, 0xc9,  0x4c, 0x10, 0x7c, 0x00, 0x56, 0x57, 0x07, 0xbf,
+        0x00, 0x80, 0x09, 0x08, 0x17, 0x24, 0xcb, 0x8a,  0x09, 0x2a, 0x06, 0x50, 0x00, 0x80, 0x00, 0x10,
+        0x14, 0x0c, 0x32, 0x7e, 0x00, 0x5f, 0x34, 0x8c,  0x4f, 0x5e, 0x15, 0xa2, 0x22, 0x80, 0xd3, 0x10
       },
       /*  4A                            4F    50                                                     59 */
       { 0xc5, 0x0f, 0x00, 0x01, 0x00, 0x4b, 0xe7, 0xd2,  0x23, 0xb1, 0x22, 0x5f, 0x61, 0x7f, 0x23, 0x90,