xf86-video-r128: Branch 'master' - 10 commits

Connor Behan cbehan at kemper.freedesktop.org
Mon Jun 11 04:48:36 UTC 2018


 src/r128.h        |    2 
 src/r128_crtc.c   |  193 ++++++++++++++++++++++++++++
 src/r128_driver.c |  367 ++++++++++++------------------------------------------
 3 files changed, 280 insertions(+), 282 deletions(-)

New commits:
commit 7d0526f74f85f4286396cd6b761a0b908d2936df
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Jun 7 16:38:54 2018 -0500

    Move R128InitCrtc2Registers to r128_crtc.c
    
    It does not make sense for this function to be inside r128_driver.c
    since it is only called from a function inside r128_crtc.c.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128.h b/src/r128.h
index f5b01ce..5e7aeb9 100644
--- a/src/r128.h
+++ b/src/r128.h
@@ -525,7 +525,6 @@ extern Bool        R128InitCrtcBase(xf86CrtcPtr crtc, R128SavePtr save, int x, i
 extern void        R128InitPLLRegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, double dot_clock);
 extern Bool        R128InitDDARegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, DisplayModePtr mode);
 extern Bool        R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y);
-extern Bool        R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode);
 extern void        R128InitPLL2Registers(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, double dot_clock);
 extern Bool        R128InitDDA2Registers(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, DisplayModePtr mode);
 extern void        R128RestoreCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr restore);
diff --git a/src/r128_crtc.c b/src/r128_crtc.c
index 6afc267..28e9a44 100644
--- a/src/r128_crtc.c
+++ b/src/r128_crtc.c
@@ -157,6 +157,88 @@ Bool R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mo
     return TRUE;
 }
 
+/* Define CRTC2 registers for requested video mode. */
+Bool R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
+{
+    ScrnInfoPtr pScrn = crtc->scrn;
+    R128InfoPtr info  = R128PTR(pScrn);
+
+    int    format;
+    int    hsync_start;
+    int    hsync_wid;
+    int    hsync_fudge;
+    int    vsync_wid;
+    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
+
+    switch (info->CurrentLayout.pixel_code) {
+    case 4:  format = 1; break;
+    case 8:  format = 2; break;
+    case 15: format = 3; break;      /*  555 */
+    case 16: format = 4; break;      /*  565 */
+    case 24: format = 5; break;      /*  RGB */
+    case 32: format = 6; break;      /* xRGB */
+    default:
+    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+           "Unsupported pixel depth (%d)\n", info->CurrentLayout.bitsPerPixel);
+    return FALSE;
+    }
+
+    hsync_fudge = hsync_fudge_default[format-1];
+
+    save->crtc2_gen_cntl = (R128_CRTC2_EN
+              | (format << 8)
+              | ((mode->Flags & V_DBLSCAN)
+                 ? R128_CRTC2_DBL_SCAN_EN
+                 : 0));
+/*
+    save->crtc2_gen_cntl &= ~R128_CRTC_EXT_DISP_EN;
+    save->crtc2_gen_cntl |= (1 << 21);
+*/
+    save->crtc2_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
+                  | (((mode->CrtcHDisplay / 8) - 1) << 16));
+
+    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
+    if (!hsync_wid)       hsync_wid = 1;
+    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
+
+    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
+
+    save->crtc2_h_sync_strt_wid = ((hsync_start & 0xfff)
+                 | (hsync_wid << 16)
+                 | ((mode->Flags & V_NHSYNC)
+                    ? R128_CRTC2_H_SYNC_POL
+                    : 0));
+
+#if 1
+                /* This works for double scan mode. */
+    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
+                  | ((mode->CrtcVDisplay - 1) << 16));
+#else
+                /* This is what cce/nbmode.c example code
+                   does -- is this correct? */
+    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
+                  | ((mode->CrtcVDisplay
+                  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
+                 << 16));
+#endif
+
+    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
+    if (!vsync_wid)       vsync_wid = 1;
+    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
+
+    save->crtc2_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
+                 | (vsync_wid << 16)
+                 | ((mode->Flags & V_NVSYNC)
+                    ? R128_CRTC2_V_SYNC_POL
+                    : 0));
+    save->crtc2_pitch       = info->CurrentLayout.displayWidth / 8;
+
+    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
+         save->crtc2_pitch, pScrn->virtualX,
+         info->CurrentLayout.displayWidth));
+    return TRUE;
+}
+
 
 static void r128_crtc_load_lut(xf86CrtcPtr crtc);
 
diff --git a/src/r128_driver.c b/src/r128_driver.c
index e0de694..45c76d1 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -2800,88 +2800,6 @@ Bool R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y)
     return TRUE;
 }
 
-/* Define CRTC2 registers for requested video mode. */
-Bool R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
-{
-    ScrnInfoPtr pScrn = crtc->scrn;
-    R128InfoPtr info  = R128PTR(pScrn);
-
-    int    format;
-    int    hsync_start;
-    int    hsync_wid;
-    int    hsync_fudge;
-    int    vsync_wid;
-    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
-
-    switch (info->CurrentLayout.pixel_code) {
-    case 4:  format = 1; break;
-    case 8:  format = 2; break;
-    case 15: format = 3; break;      /*  555 */
-    case 16: format = 4; break;      /*  565 */
-    case 24: format = 5; break;      /*  RGB */
-    case 32: format = 6; break;      /* xRGB */
-    default:
-	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-		   "Unsupported pixel depth (%d)\n", info->CurrentLayout.bitsPerPixel);
-	return FALSE;
-    }
-
-    hsync_fudge = hsync_fudge_default[format-1];
-
-    save->crtc2_gen_cntl = (R128_CRTC2_EN
-			  | (format << 8)
-			  | ((mode->Flags & V_DBLSCAN)
-			     ? R128_CRTC2_DBL_SCAN_EN
-			     : 0));
-/*
-    save->crtc2_gen_cntl &= ~R128_CRTC_EXT_DISP_EN;
-    save->crtc2_gen_cntl |= (1 << 21);
-*/
-    save->crtc2_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
-			      | (((mode->CrtcHDisplay / 8) - 1) << 16));
-
-    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
-    if (!hsync_wid)       hsync_wid = 1;
-    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
-
-    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
-
-    save->crtc2_h_sync_strt_wid = ((hsync_start & 0xfff)
-				 | (hsync_wid << 16)
-				 | ((mode->Flags & V_NHSYNC)
-				    ? R128_CRTC2_H_SYNC_POL
-				    : 0));
-
-#if 1
-				/* This works for double scan mode. */
-    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
-			      | ((mode->CrtcVDisplay - 1) << 16));
-#else
-				/* This is what cce/nbmode.c example code
-				   does -- is this correct? */
-    save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
-			      | ((mode->CrtcVDisplay
-				  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
-				 << 16));
-#endif
-
-    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
-    if (!vsync_wid)       vsync_wid = 1;
-    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
-
-    save->crtc2_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
-				 | (vsync_wid << 16)
-				 | ((mode->Flags & V_NVSYNC)
-				    ? R128_CRTC2_V_SYNC_POL
-				    : 0));
-    save->crtc2_pitch       = info->CurrentLayout.displayWidth / 8;
-	
-    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
-		 save->crtc2_pitch, pScrn->virtualX,
-		 info->CurrentLayout.displayWidth));
-    return TRUE;
-}
-
 /* Define DAC registers for the requested video mode. */
 void R128InitDACRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output)
 {
commit 1f4d3e04e51d4665a99ea567a19b43bb351ae631
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Jun 7 16:38:22 2018 -0500

    Move R128InitCrtcRegisters to r128_crtc.c
    
    It does not make sense for this function to be inside r128_driver.c
    since it is only called from a function inside r128_crtc.c.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128.h b/src/r128.h
index ae3e379..f5b01ce 100644
--- a/src/r128.h
+++ b/src/r128.h
@@ -522,7 +522,6 @@ extern void        R128InitRMXRegisters(R128SavePtr orig, R128SavePtr save, xf86
 extern void        R128InitFPRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output);
 extern void        R128InitLVDSRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output);
 extern Bool        R128InitCrtcBase(xf86CrtcPtr crtc, R128SavePtr save, int x, int y);
-extern Bool        R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode);
 extern void        R128InitPLLRegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, double dot_clock);
 extern Bool        R128InitDDARegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, DisplayModePtr mode);
 extern Bool        R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y);
diff --git a/src/r128_crtc.c b/src/r128_crtc.c
index ed77492..6afc267 100644
--- a/src/r128_crtc.c
+++ b/src/r128_crtc.c
@@ -47,6 +47,117 @@
 #include "r128_probe.h"
 #include "r128_reg.h"
 
+
+/* Define CRTC registers for requested video mode. */
+Bool R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
+{
+    ScrnInfoPtr pScrn = crtc->scrn;
+    R128InfoPtr info  = R128PTR(pScrn);
+    xf86OutputPtr output = R128FirstOutput(crtc);
+    R128OutputPrivatePtr r128_output = output->driver_private;
+
+    int    format;
+    int    hsync_start;
+    int    hsync_wid;
+    int    hsync_fudge;
+    int    vsync_wid;
+    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
+    int    hsync_fudge_fp[]      = { 0x12, 0x11, 0x09, 0x09, 0x05, 0x05 };
+//   int    hsync_fudge_fp_crt[]  = { 0x12, 0x10, 0x08, 0x08, 0x04, 0x04 };
+
+    switch (info->CurrentLayout.pixel_code) {
+    case 4:  format = 1; break;
+    case 8:  format = 2; break;
+    case 15: format = 3; break;      /*  555 */
+    case 16: format = 4; break;      /*  565 */
+    case 24: format = 5; break;      /*  RGB */
+    case 32: format = 6; break;      /* xRGB */
+    default:
+    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+           "Unsupported pixel depth (%d)\n",
+           info->CurrentLayout.bitsPerPixel);
+    return FALSE;
+    }
+
+    if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
+    hsync_fudge = hsync_fudge_fp[format-1];
+    else
+        hsync_fudge = hsync_fudge_default[format-1];
+
+    save->crtc_gen_cntl = (R128_CRTC_EXT_DISP_EN
+              | R128_CRTC_EN
+              | (format << 8)
+              | ((mode->Flags & V_DBLSCAN)
+                 ? R128_CRTC_DBL_SCAN_EN
+                 : 0)
+              | ((mode->Flags & V_INTERLACE)
+                 ? R128_CRTC_INTERLACE_EN
+                 : 0)
+              | ((mode->Flags & V_CSYNC)
+                 ? R128_CRTC_CSYNC_EN
+                 : 0));
+
+    if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
+        save->crtc_gen_cntl &= ~(R128_CRTC_DBL_SCAN_EN | R128_CRTC_INTERLACE_EN);
+
+    save->crtc_ext_cntl |= R128_VGA_ATI_LINEAR | R128_XCRT_CNT_EN;
+
+    save->crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
+                  | (((mode->CrtcHDisplay / 8) - 1) << 16));
+
+    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
+    if (!hsync_wid)       hsync_wid = 1;
+    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
+
+    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
+
+    save->crtc_h_sync_strt_wid = ((hsync_start & 0xfff)
+                 | (hsync_wid << 16)
+                 | ((mode->Flags & V_NHSYNC)
+                    ? R128_CRTC_H_SYNC_POL
+                    : 0));
+
+#if 1
+                /* This works for double scan mode. */
+    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
+                  | ((mode->CrtcVDisplay - 1) << 16));
+#else
+                /* This is what cce/nbmode.c example code
+                   does -- is this correct? */
+    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
+                  | ((mode->CrtcVDisplay
+                  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
+                 << 16));
+#endif
+
+    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
+    if (!vsync_wid)       vsync_wid = 1;
+    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
+
+    save->crtc_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
+                 | (vsync_wid << 16)
+                 | ((mode->Flags & V_NVSYNC)
+                    ? R128_CRTC_V_SYNC_POL
+                    : 0));
+    save->crtc_pitch       = info->CurrentLayout.displayWidth / 8;
+
+    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
+           save->crtc_pitch, pScrn->virtualX, info->CurrentLayout.displayWidth));
+
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+    /* Change the endianness of the aperture */
+    switch (info->CurrentLayout.pixel_code) {
+    case 15:
+    case 16: save->config_cntl |= APER_0_BIG_ENDIAN_16BPP_SWAP; break;
+    case 32: save->config_cntl |= APER_0_BIG_ENDIAN_32BPP_SWAP; break;
+    default: break;
+    }
+#endif
+
+    return TRUE;
+}
+
+
 static void r128_crtc_load_lut(xf86CrtcPtr crtc);
 
 static void r128_crtc_dpms(xf86CrtcPtr crtc, int mode)
diff --git a/src/r128_driver.c b/src/r128_driver.c
index aaa4245..e0de694 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -2800,115 +2800,6 @@ Bool R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y)
     return TRUE;
 }
 
-/* Define CRTC registers for requested video mode. */
-Bool R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
-{
-    ScrnInfoPtr pScrn = crtc->scrn;
-    R128InfoPtr info  = R128PTR(pScrn);
-    xf86OutputPtr output = R128FirstOutput(crtc);
-    R128OutputPrivatePtr r128_output = output->driver_private;
-
-    int    format;
-    int    hsync_start;
-    int    hsync_wid;
-    int    hsync_fudge;
-    int    vsync_wid;
-    int    hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
-    int    hsync_fudge_fp[]      = { 0x12, 0x11, 0x09, 0x09, 0x05, 0x05 };
-//   int    hsync_fudge_fp_crt[]  = { 0x12, 0x10, 0x08, 0x08, 0x04, 0x04 };
-
-    switch (info->CurrentLayout.pixel_code) {
-    case 4:  format = 1; break;
-    case 8:  format = 2; break;
-    case 15: format = 3; break;      /*  555 */
-    case 16: format = 4; break;      /*  565 */
-    case 24: format = 5; break;      /*  RGB */
-    case 32: format = 6; break;      /* xRGB */
-    default:
-	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-		   "Unsupported pixel depth (%d)\n",
-		   info->CurrentLayout.bitsPerPixel);
-	return FALSE;
-    }
-
-    if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
-	hsync_fudge = hsync_fudge_fp[format-1];
-    else               
-        hsync_fudge = hsync_fudge_default[format-1];
-
-    save->crtc_gen_cntl = (R128_CRTC_EXT_DISP_EN
-			  | R128_CRTC_EN
-			  | (format << 8)
-			  | ((mode->Flags & V_DBLSCAN)
-			     ? R128_CRTC_DBL_SCAN_EN
-			     : 0)
-			  | ((mode->Flags & V_INTERLACE)
-			     ? R128_CRTC_INTERLACE_EN
-			     : 0)
-			  | ((mode->Flags & V_CSYNC)
-			     ? R128_CRTC_CSYNC_EN
-			     : 0));
-
-    if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
-        save->crtc_gen_cntl &= ~(R128_CRTC_DBL_SCAN_EN | R128_CRTC_INTERLACE_EN);
-
-    save->crtc_ext_cntl |= R128_VGA_ATI_LINEAR | R128_XCRT_CNT_EN;
-
-    save->crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
-			      | (((mode->CrtcHDisplay / 8) - 1) << 16));
-
-    hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
-    if (!hsync_wid)       hsync_wid = 1;
-    if (hsync_wid > 0x3f) hsync_wid = 0x3f;
-
-    hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
-
-    save->crtc_h_sync_strt_wid = ((hsync_start & 0xfff)
-				 | (hsync_wid << 16)
-				 | ((mode->Flags & V_NHSYNC)
-				    ? R128_CRTC_H_SYNC_POL
-				    : 0));
-
-#if 1
-				/* This works for double scan mode. */
-    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
-			      | ((mode->CrtcVDisplay - 1) << 16));
-#else
-				/* This is what cce/nbmode.c example code
-				   does -- is this correct? */
-    save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
-			      | ((mode->CrtcVDisplay
-				  * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
-				 << 16));
-#endif
-
-    vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
-    if (!vsync_wid)       vsync_wid = 1;
-    if (vsync_wid > 0x1f) vsync_wid = 0x1f;
-
-    save->crtc_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
-				 | (vsync_wid << 16)
-				 | ((mode->Flags & V_NVSYNC)
-				    ? R128_CRTC_V_SYNC_POL
-				    : 0));
-    save->crtc_pitch       = info->CurrentLayout.displayWidth / 8;
-
-    R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
-	       save->crtc_pitch, pScrn->virtualX, info->CurrentLayout.displayWidth));
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-    /* Change the endianness of the aperture */
-    switch (info->CurrentLayout.pixel_code) {
-    case 15:
-    case 16: save->config_cntl |= APER_0_BIG_ENDIAN_16BPP_SWAP; break;
-    case 32: save->config_cntl |= APER_0_BIG_ENDIAN_32BPP_SWAP; break;
-    default: break;
-    }
-#endif
-
-    return TRUE;
-}
-
 /* Define CRTC2 registers for requested video mode. */
 Bool R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
 {
commit 80158cdedb8b0c2320c917aefd10e90869b00ef8
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Jun 4 19:45:40 2018 -0500

    Move existing mode setting initialization code into R128LegacyMS
    
    In preparation of adding a new mode setting code path.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 0b30b83..aaa4245 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1226,11 +1226,47 @@ static const xf86CrtcConfigFuncsRec R128CRTCResizeFuncs = {
     R128CRTCResize
 };
 
+static Bool R128LegacyMS(ScrnInfoPtr pScrn)
+{
+    R128InfoPtr      info = R128PTR(pScrn);
+    xf86Int10InfoPtr pInt10 = NULL;
+    Bool ret = FALSE;
+
+    if (info->FBDev) {
+        /* check for linux framebuffer device */
+        if (!xf86LoadSubModule(pScrn, "fbdevhw")) goto exit;
+        if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) goto exit;
+        pScrn->SwitchMode    = fbdevHWSwitchModeWeak();
+        pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();
+        pScrn->ValidMode     = fbdevHWValidModeWeak();
+    } else {
+        if (!R128PreInitInt10(pScrn, &pInt10)) goto exit;
+    }
+
+    if (!R128PreInitConfig(pScrn)) goto freeInt10;
+
+    xf86CrtcSetSizeRange(pScrn, 320, 200, 4096, 4096);
+
+    /* Don't fail on this one */
+    info->DDC = R128PreInitDDC(pScrn, pInt10);
+
+    if (!R128PreInitControllers(pScrn, pInt10)) goto freeInt10;
+
+    ret = TRUE;
+freeInt10:
+    /* Free int10 info */
+    if (pInt10) {
+        xf86FreeInt10(pInt10);
+    }
+
+exit:
+    return ret;
+}
+
 /* R128PreInit is called once at server startup. */
 Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 {
     R128InfoPtr      info;
-    xf86Int10InfoPtr pInt10 = NULL;
 
     R128TRACE(("R128PreInit\n"));
 
@@ -1360,26 +1396,7 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
     /* Allocate an xf86CrtcConfig */
     xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
 
-    if (info->FBDev) {
-	/* check for linux framebuffer device */
-	if (!xf86LoadSubModule(pScrn, "fbdevhw")) return FALSE;
-	if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) return FALSE;
-	pScrn->SwitchMode    = fbdevHWSwitchModeWeak();
-	pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();
-	pScrn->ValidMode     = fbdevHWValidModeWeak();
-    }
-
-    if (!info->FBDev)
-	if (!R128PreInitInt10(pScrn, &pInt10))  goto fail;
-
-    if (!R128PreInitConfig(pScrn))              goto fail;
-
-    xf86CrtcSetSizeRange(pScrn, 320, 200, 4096, 4096);
-
-    /* Don't fail on this one */
-    info->DDC = R128PreInitDDC(pScrn, pInt10);
-
-    if (!R128PreInitControllers(pScrn, pInt10)) goto fail;
+    R128LegacyMS(pScrn);
 
     if (!xf86InitialConfiguration(pScrn, TRUE)) {
         xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
@@ -1417,10 +1434,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 	info->VBIOS = NULL;
     }
 
-				/* Free int10 info */
-    if (pInt10)
-	xf86FreeInt10(pInt10);
-
     if (info->MMIO) R128UnmapMMIO(pScrn);
     info->MMIO = NULL;
 
@@ -1435,10 +1448,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 	info->VBIOS = NULL;
     }
 
-				/* Free int10 info */
-    if (pInt10)
-	xf86FreeInt10(pInt10);
-
 #ifdef WITH_VGAHW
     if (info->VGAAccess)
            vgaHWFreeHWRec(pScrn);
commit 6572c6cd14e60994e5cd1dc2f8fcc6f88c895c36
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Jun 4 19:45:20 2018 -0500

    Move the location xf86CrtcConfigInit is called inside R128PreInit
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index dd3521c..0b30b83 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1278,9 +1278,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
     pScrn->racMemFlags  = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR;
 #endif
 
-    /* Allocate an xf86CrtcConfig */
-    xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
-
     info->fifo_slots  = 0;
     info->pix24bpp    = xf86GetBppFromDepth(pScrn, pScrn->depth);
     info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
@@ -1360,6 +1357,9 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 		   "Using framebuffer device\n");
     }
 
+    /* Allocate an xf86CrtcConfig */
+    xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
+
     if (info->FBDev) {
 	/* check for linux framebuffer device */
 	if (!xf86LoadSubModule(pScrn, "fbdevhw")) return FALSE;
commit 656f5c276a2a18204d923eabcc1d0d98144505f8
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Jun 4 19:44:59 2018 -0500

    Refactor R128PreInitWeight
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index b29b191..dd3521c 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -680,29 +680,31 @@ static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
 static Bool R128PreInitWeight(ScrnInfoPtr pScrn)
 {
     R128InfoPtr info          = R128PTR(pScrn);
-
-				/* Save flag for 6 bit DAC to use for
-				   setting CRTC registers.  Otherwise use
-				   an 8 bit DAC, even if xf86SetWeight sets
-				   pScrn->rgbBits to some value other than
-				   8. */
+    rgb defaultWeight = { 0, 0, 0 };
+
+    /* Save flag for 6 bit DAC to use for
+       setting CRTC registers.  Otherwise use
+       an 8 bit DAC, even if xf86SetWeight sets
+       pScrn->rgbBits to some value other than
+       8. */
+    pScrn->rgbBits = 8;
     info->dac6bits = FALSE;
+    if (pScrn->depth <= 8) {
+        if (xf86ReturnOptValBool(info->Options, OPTION_DAC_6BIT, FALSE)) {
+            pScrn->rgbBits = 6;
+            info->dac6bits = TRUE;
+        }
+    }
+
     if (pScrn->depth > 8) {
-	rgb defaultWeight = { 0, 0, 0 };
-	if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) return FALSE;
-    } else {
-	pScrn->rgbBits = 8;
-	if (xf86ReturnOptValBool(info->Options, OPTION_DAC_6BIT, FALSE)) {
-	    pScrn->rgbBits = 6;
-	    info->dac6bits = TRUE;
-	}
+        if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) return FALSE;
     }
+
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-	       "Using %d bits per RGB (%d bit DAC)\n",
-	       pScrn->rgbBits, info->dac6bits ? 6 : 8);
+               "Using %d bits per RGB (%d bit DAC)\n",
+               pScrn->rgbBits, info->dac6bits ? 6 : 8);
 
     return TRUE;
-
 }
 
 /* This is called by R128PreInit to handle config file overrides for things
commit 73cbe46437a9a5affcdd9d605421ceff38616a6a
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Jun 4 19:44:39 2018 -0500

    Remove R128ProbeDDC
    
    This removes a VBE (VESA BIOS Extension) related call when probing.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 5c526f7..b29b191 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1213,20 +1213,6 @@ static Bool R128PreInitControllers(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
     return !!found;
 }
 
-static void
-R128ProbeDDC(ScrnInfoPtr pScrn, int indx)
-{
-    vbeInfoPtr pVbe;
-
-#if !defined(__powerpc__) && !defined(__alpha__) && !defined(__sparc__)
-    if (xf86LoadSubModule(pScrn, "vbe")) {
-	pVbe = VBEInit(NULL,indx);
-	ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
-	vbeFree(pVbe);
-    }
-#endif
-}
-
 static Bool R128CRTCResize(ScrnInfoPtr pScrn, int width, int height)
 {
     pScrn->virtualX = width;
@@ -1246,6 +1232,10 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 
     R128TRACE(("R128PreInit\n"));
 
+    if (flags & PROBE_DETECT) {
+        return TRUE;
+    }
+
     pScrn->monitor = pScrn->confScreen->monitor;
 
     if (!R128PreInitVisual(pScrn)) {
@@ -1267,11 +1257,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
     info->pEnt          = xf86GetEntityInfo(pScrn->entityList[0]);
     if (info->pEnt->location.type != BUS_PCI) goto fail;
 
-    if (flags & PROBE_DETECT) {
-	R128ProbeDDC(pScrn, info->pEnt->index);
-	return TRUE;
-    }
-
     info->PciInfo       = xf86GetPciInfoForEntity(info->pEnt->index);
 
     xf86DrvMsg(pScrn->scrnIndex, X_INFO,
commit 600c2f47f0edc30adb67b58121be5c4d587ddff4
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Sun Jun 3 01:43:40 2018 -0500

    Move R128PreInitVisual and R128PreInitGamma calls
    
    This is similar to how the sample code for PreInit callback function
    shown in XFree86 DDX Design (ddxDesign.pdf) design guide does it.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 25ec1dc..5c526f7 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1248,6 +1248,14 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 
     pScrn->monitor = pScrn->confScreen->monitor;
 
+    if (!R128PreInitVisual(pScrn)) {
+        return FALSE;
+    }
+
+    if (!R128PreInitGamma(pScrn)) {
+        return FALSE;
+    }
+
     if (pScrn->numEntities != 1) return FALSE;
 
     if (!R128GetRec(pScrn)) return FALSE;
@@ -1286,12 +1294,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
     /* Allocate an xf86CrtcConfig */
     xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
 
-    if (!R128PreInitVisual(pScrn))    goto fail;
-
-    if (!R128PreInitGamma(pScrn)) {
-        goto fail;
-    }
-
     info->fifo_slots  = 0;
     info->pix24bpp    = xf86GetBppFromDepth(pScrn, pScrn->depth);
     info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
commit 237cfee9d77d8adca0ad00661e6dc99caa28ad26
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Sun Jun 3 01:43:39 2018 -0500

    Move the assignment to monitor field of ScrnInfoRec record
    
    This is similar to how the sample code for PreInit callback function
    shown in XFree86 DDX Design (ddxDesign.pdf) design guide does it.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 8bfa784..25ec1dc 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1246,6 +1246,8 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 
     R128TRACE(("R128PreInit\n"));
 
+    pScrn->monitor = pScrn->confScreen->monitor;
+
     if (pScrn->numEntities != 1) return FALSE;
 
     if (!R128GetRec(pScrn)) return FALSE;
@@ -1280,7 +1282,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 
     pScrn->racMemFlags  = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR;
 #endif
-    pScrn->monitor      = pScrn->confScreen->monitor;
 
     /* Allocate an xf86CrtcConfig */
     xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
commit 3c2a02971b423359747d328e1ce16e6f4f800d9a
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Sun Jun 3 01:43:38 2018 -0500

    Move assignment of color depth variables away from R128PreInitVisual
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 347c804..8bfa784 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -643,8 +643,6 @@ static Bool R128GetPLLParameters(ScrnInfoPtr pScrn)
 /* This is called by R128PreInit to set up the default visual. */
 static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
 {
-    R128InfoPtr info          = R128PTR(pScrn);
-
     if (!xf86SetDepthBpp(pScrn, 0, 0, 0, (Support24bppFb
 					  | Support32bppFb
 					  | SupportConvert32to24
@@ -666,23 +664,6 @@ static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
 
     xf86PrintDepthBpp(pScrn);
 
-    info->fifo_slots  = 0;
-    info->pix24bpp    = xf86GetBppFromDepth(pScrn, pScrn->depth);
-    info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
-    info->CurrentLayout.depth        = pScrn->depth;
-    info->CurrentLayout.pixel_bytes  = pScrn->bitsPerPixel / 8;
-    info->CurrentLayout.pixel_code   = (pScrn->bitsPerPixel != 16
-				       ? pScrn->bitsPerPixel
-				       : pScrn->depth);
-
-    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-	       "Pixel depth = %d bits stored in %d byte%s (%d bpp pixmaps)\n",
-	       pScrn->depth,
-	       info->CurrentLayout.pixel_bytes,
-	       info->CurrentLayout.pixel_bytes > 1 ? "s" : "",
-	       info->pix24bpp);
-
-
     if (!xf86SetDefaultVisual(pScrn, -1)) return FALSE;
 
     if (pScrn->depth > 8 && pScrn->defaultVisual != TrueColor) {
@@ -1310,6 +1291,22 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
         goto fail;
     }
 
+    info->fifo_slots  = 0;
+    info->pix24bpp    = xf86GetBppFromDepth(pScrn, pScrn->depth);
+    info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
+    info->CurrentLayout.depth        = pScrn->depth;
+    info->CurrentLayout.pixel_bytes  = pScrn->bitsPerPixel / 8;
+    info->CurrentLayout.pixel_code   = (pScrn->bitsPerPixel != 16
+                                       ? pScrn->bitsPerPixel
+                                       : pScrn->depth);
+
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+           "Pixel depth = %d bits stored in %d byte%s (%d bpp pixmaps)\n",
+           pScrn->depth,
+           info->CurrentLayout.pixel_bytes,
+           info->CurrentLayout.pixel_bytes > 1 ? "s" : "",
+           info->pix24bpp);
+
 				/* We can't do this until we have a
 				   pScrn->display. */
     xf86CollectOptions(pScrn, NULL);
commit 56ff44e0afd4d11d9a9daa4efd3031733b14d464
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Sun Jun 3 01:43:37 2018 -0500

    Move the location where R128PreInitGamma is called
    
    This is similar to how the sample code for PreInit callback function
    shown in XFree86 DDX Design (ddxDesign.pdf) design guide does it.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/r128_driver.c b/src/r128_driver.c
index 1ad111a..347c804 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1306,6 +1306,10 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 
     if (!R128PreInitVisual(pScrn))    goto fail;
 
+    if (!R128PreInitGamma(pScrn)) {
+        goto fail;
+    }
+
 				/* We can't do this until we have a
 				   pScrn->display. */
     xf86CollectOptions(pScrn, NULL);
@@ -1402,8 +1406,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
     /* Get ScreenInit function */
     if (!xf86LoadSubModule(pScrn, "fb")) return FALSE;
 
-    if (!R128PreInitGamma(pScrn))              goto fail;
-
     if (!R128PreInitCursor(pScrn))             goto fail;
 
 #ifdef R128DRI


More information about the xorg-commit mailing list