Signed-off-by: Kevin Brace <[email protected]>
---
 src/lg_driver.c | 2712 +++++++++++++++++++++++------------------------
 1 file changed, 1338 insertions(+), 1374 deletions(-)

diff --git a/src/lg_driver.c b/src/lg_driver.c
index 60280df..6bbbc15 100644
--- a/src/lg_driver.c
+++ b/src/lg_driver.c
@@ -9,9 +9,9 @@
  *
  * This driver is derived from the cir_driver.c module.
  * Original authors and contributors list include:
- *     Radoslaw Kapitan, Andrew Vanderstock, Dirk Hohndel,
- *     David Dawes, Andrew E. Mileski, Leonard N. Zubkoff,
- *     Guy DESBIEF, Itai Nahshon.
+ *      Radoslaw Kapitan, Andrew Vanderstock, Dirk Hohndel,
+ *      David Dawes, Andrew E. Mileski, Leonard N. Zubkoff,
+ *      Guy DESBIEF, Itai Nahshon.
  */

 #ifdef HAVE_CONFIG_H
@@ -75,8 +75,8 @@ Bool LgPreInit(ScrnInfoPtr pScrn, int flags);
 Bool LgScreenInit(SCREEN_INIT_ARGS_DECL);
 Bool LgEnterVT(VT_FUNC_ARGS_DECL);
 void LgLeaveVT(VT_FUNC_ARGS_DECL);
-static Bool    LgCloseScreen(CLOSE_SCREEN_ARGS_DECL);
-static Bool    LgSaveScreen(ScreenPtr pScreen, Bool mode);
+static Bool LgCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+static Bool LgSaveScreen(ScreenPtr pScreen, Bool mode);

 /* Required if the driver supports mode switching */
 Bool LgSwitchMode(SWITCH_MODE_ARGS_DECL);
@@ -86,7 +86,7 @@ void LgAdjustFrame(ADJUST_FRAME_ARGS_DECL);
 /* Optional functions */
 void LgFreeScreen(FREE_SCREEN_ARGS_DECL);
 ModeStatus LgValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
-                      Bool verbose, int flags);
+                        Bool verbose, int flags);

 /* Internally used functions */
 static void LgRestoreLgRegs(ScrnInfoPtr pScrn, LgRegPtr lgReg);
@@ -95,7 +95,7 @@ static CARD16 LgSetClock(CirPtr pCir, vgaHWPtr hwp, int freq);
 static void lg_vgaHWSetMmioFunc(vgaHWPtr hwp, CARD8 *base);

 static void LgDisplayPowerManagementSet(ScrnInfoPtr pScrn,
-                                       int PowerManagementMode, int flags);
+                                        int PowerManagementMode, int flags);

 /*
  * This is intentionally screen-independent.  It indicates the binding
@@ -112,51 +112,50 @@ static int pix24bpp = 0;
  */

 typedef enum {
-       OPTION_HW_CURSOR,
-       OPTION_PCI_RETRY,
-       OPTION_ROTATE,
-       OPTION_SHADOW_FB,
-       OPTION_NOACCEL
+    OPTION_HW_CURSOR,
+    OPTION_PCI_RETRY,
+    OPTION_ROTATE,
+    OPTION_SHADOW_FB,
+    OPTION_NOACCEL
 } LgOpts;

 static const OptionInfoRec LgOptions[] = {
-    { OPTION_HW_CURSOR,                "HWcursor",     OPTV_BOOLEAN,   {0}, 
FALSE },
-    { OPTION_NOACCEL,          "NoAccel",      OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_SHADOW_FB,         "ShadowFB",    OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_ROTATE,           "Rotate",       OPTV_ANYSTR,    {0}, FALSE },
+    { OPTION_HW_CURSOR, "HWcursor", OPTV_BOOLEAN,   {0},    FALSE },
+    { OPTION_NOACCEL,   "NoAccel",  OPTV_BOOLEAN,   {0},    FALSE },
+    { OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN,   {0},    FALSE },
+    { OPTION_ROTATE,    "Rotate",   OPTV_ANYSTR,    {0},    FALSE },
     /* fifo_conservative/aggressive; fast/med/slow_dram; ... */
-    { -1,                                      NULL,           OPTV_NONE,      
        {0}, FALSE }
+    { -1,               NULL,       OPTV_NONE,      {0},    FALSE }
 };

-
 /*                                1/4bpp   8bpp   15/16bpp  24bpp  32bpp */
 static int gd5462_MaxClocks[] = { 170000, 170000, 135100, 135100,  85500 };
 static int gd5464_MaxClocks[] = { 170000, 250000, 170000, 170000, 135100 };
 static int gd5465_MaxClocks[] = { 170000, 250000, 170000, 170000, 135100 };

 LgLineDataRec LgLineData[] = {
-       { 5,  640, 0},          /* We're rather use skinny tiles, so put all of 
*/
-       { 8, 1024, 0},          /* them at the head of the table */
-       {10, 1280, 0},
-       {13, 1664, 0},
-       {16, 2048, 0},
-       {20, 2560, 0},
-       {10, 2560, 1},
-       {26, 3328, 0},
-       { 5, 1280, 1},
-       { 8, 2048, 1},
-       {13, 3328, 1},
-       {16, 4096, 1},
-       {20, 5120, 1},
-       {26, 6656, 1},
-       {-1, -1, -1}            /* Sentinal to indicate end of table */
+    { 5,  640, 0},  /* We're rather use skinny tiles, so put all of */
+    { 8, 1024, 0},  /* them at the head of the table */
+    {10, 1280, 0},
+    {13, 1664, 0},
+    {16, 2048, 0},
+    {20, 2560, 0},
+    {10, 2560, 1},
+    {26, 3328, 0},
+    { 5, 1280, 1},
+    { 8, 2048, 1},
+    {13, 3328, 1},
+    {16, 4096, 1},
+    {20, 5120, 1},
+    {26, 6656, 1},
+    {-1, -1,   -1}  /* Sentinal to indicate end of table */
 };

 static int LgLinePitches[4][11] = {
-       /*  8 */ { 640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656, 0 
},
-       /* 16 */ { 320,  512,  640,  832, 1024, 1280, 1664, 2048, 2560, 3328, 0 
},
-       /* 24 */ { 213,  341,  426,  554,  682,  853, 1109, 1365, 1706, 2218, 0 
},
-       /* 32 */ { 160,  256,  320,  416,  512,  640,  832, 1024, 1280, 1664, 0 
}
+    /*  8 */ { 640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656, 0 },
+    /* 16 */ { 320,  512,  640,  832, 1024, 1280, 1664, 2048, 2560, 3328, 0 },
+    /* 24 */ { 213,  341,  426,  554,  682,  853, 1109, 1365, 1706, 2218, 0 },
+    /* 32 */ { 160,  256,  320,  416,  512,  640,  832, 1024, 1280, 1664, 0 }
 };

 #ifdef XFree86LOADER
@@ -167,16 +166,16 @@ static int LgLinePitches[4][11] = {

 static XF86ModuleVersionInfo lgVersRec =
 {
-       "cirrus_laguna",
-       MODULEVENDORSTRING,
-       MODINFOSTRING1,
-       MODINFOSTRING2,
-       XORG_VERSION_CURRENT,
-       LG_MAJOR_VERSION, LG_MINOR_VERSION, LG_PATCHLEVEL,
-       ABI_CLASS_VIDEODRV,                     /* This is a video driver */
-       ABI_VIDEODRV_VERSION,
-       MOD_CLASS_NONE,
-       {0,0,0,0}
+    "cirrus_laguna",
+    MODULEVENDORSTRING,
+    MODINFOSTRING1,
+    MODINFOSTRING2,
+    XORG_VERSION_CURRENT,
+    LG_MAJOR_VERSION, LG_MINOR_VERSION, LG_PATCHLEVEL,
+    ABI_CLASS_VIDEODRV, /* This is a video driver */
+    ABI_VIDEODRV_VERSION,
+    MOD_CLASS_NONE,
+    {0,0,0,0}
 };

 /*
@@ -192,59 +191,49 @@ _X_EXPORT XF86ModuleData cirrus_lagunaModuleData = {
 #endif /* XFree86LOADER */

 _X_EXPORT const OptionInfoRec *
-LgAvailableOptions(int chipid)
-{
+LgAvailableOptions(int chipid) {
     return LgOptions;
 }

-_X_EXPORT ScrnInfoPtr
-LgProbe(int entity)
-{
+_X_EXPORT ScrnInfoPtr LgProbe(int entity) {
     ScrnInfoPtr pScrn = NULL;
     if ((pScrn = xf86ConfigPciEntity(pScrn, 0, entity, CIRPciChipsets,
-                                          NULL, NULL, NULL, NULL, NULL))) {
-       pScrn->PreInit          = LgPreInit;
-       pScrn->ScreenInit       = LgScreenInit;
-       pScrn->SwitchMode       = LgSwitchMode;
-       pScrn->AdjustFrame      = LgAdjustFrame;
-       pScrn->EnterVT          = LgEnterVT;
-       pScrn->LeaveVT          = LgLeaveVT;
-       pScrn->FreeScreen       = LgFreeScreen;
-       pScrn->ValidMode        = LgValidMode;
+    NULL, NULL, NULL, NULL, NULL))) {
+        pScrn->PreInit = LgPreInit;
+        pScrn->ScreenInit = LgScreenInit;
+        pScrn->SwitchMode = LgSwitchMode;
+        pScrn->AdjustFrame = LgAdjustFrame;
+        pScrn->EnterVT = LgEnterVT;
+        pScrn->LeaveVT = LgLeaveVT;
+        pScrn->FreeScreen = LgFreeScreen;
+        pScrn->ValidMode = LgValidMode;
     }
     return pScrn;
 }

+static Bool LgGetRec(ScrnInfoPtr pScrn) {
+    CirPtr pCir;

-static Bool
-LgGetRec(ScrnInfoPtr pScrn)
-{
-       CirPtr pCir;
-
-       if (pScrn->driverPrivate != NULL)
-               return TRUE;
+    if (pScrn->driverPrivate != NULL)
+        return TRUE;

-       pScrn->driverPrivate = xnfcalloc(sizeof(CirRec), 1);
-       ((CirPtr)pScrn->driverPrivate)->chip.lg = xnfcalloc(sizeof(LgRec),1);
+    pScrn->driverPrivate = xnfcalloc(sizeof(CirRec), 1);
+    ((CirPtr) pScrn->driverPrivate)->chip.lg = xnfcalloc(sizeof(LgRec), 1);

-       /* Initialize it */
-       pCir = CIRPTR(pScrn);
-       pCir->chip.lg->oldBitmask = 0x00000000;
+    /* Initialize it */
+    pCir = CIRPTR(pScrn);
+    pCir->chip.lg->oldBitmask = 0x00000000;

-       return TRUE;
+    return TRUE;
 }

-static void
-LgFreeRec(ScrnInfoPtr pScrn)
-{
-       if (pScrn->driverPrivate == NULL)
-               return;
-       free(pScrn->driverPrivate);
-       pScrn->driverPrivate = NULL;
+static void LgFreeRec(ScrnInfoPtr pScrn) {
+    if (pScrn->driverPrivate == NULL)
+        return;
+    free(pScrn->driverPrivate);
+    pScrn->driverPrivate = NULL;
 }

-
-
 /*
  * LgCountRAM --
  *
@@ -252,613 +241,614 @@ LgFreeRec(ScrnInfoPtr pScrn)
  */

 /* XXX We need to get rid of this PIO (MArk) */
-static int
-LgCountRam(ScrnInfoPtr pScrn)
-{
-       vgaHWPtr hwp = VGAHWPTR(pScrn);
-       CARD8 SR14;
+static int LgCountRam(ScrnInfoPtr pScrn) {
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    CARD8 SR14;

-       vgaHWProtect(pScrn, TRUE);
+    vgaHWProtect(pScrn, TRUE);

-       /* The ROM BIOS scratchpad registers contain,
-          among other things, the amount of installed
-          RDRAM on the laguna chip. */
-       SR14 = hwp->readSeq(hwp, 0x14);
+    /* The ROM BIOS scratchpad registers contain,
+     among other things, the amount of installed
+     RDRAM on the laguna chip. */
+    SR14 = hwp->readSeq(hwp, 0x14);

-       ErrorF("Scratch Pads: 0:%02x 1:%02x 2:%02x 3:%02x\n",
-               hwp->readSeq(hwp, 9), hwp->readSeq(hwp, 10),
-               SR14, hwp->readSeq(hwp, 0x15));
+    ErrorF("Scratch Pads: 0:%02x 1:%02x 2:%02x 3:%02x\n", hwp->readSeq(hwp, 9),
+            hwp->readSeq(hwp, 10), SR14, hwp->readSeq(hwp, 0x15));

-       vgaHWProtect(pScrn, FALSE);
+    vgaHWProtect(pScrn, FALSE);

-       return 1024 * ((SR14&0x7) + 1);
+    return 1024 * ((SR14 & 0x7) + 1);

-       /* !!! This function seems to be incorrect... */
+    /* !!! This function seems to be incorrect... */
 }

-static xf86MonPtr
-LgDoDDC(ScrnInfoPtr pScrn)
-{
-       CirPtr pCir = CIRPTR(pScrn);
-       xf86MonPtr MonInfo = NULL;
+static xf86MonPtr LgDoDDC(ScrnInfoPtr pScrn) {
+    CirPtr pCir = CIRPTR(pScrn);
+    xf86MonPtr MonInfo = NULL;

-       /* Map the CIR memory and MMIO areas */
-       if (!CirMapMem(pCir, pScrn->scrnIndex))
-               return FALSE;
+    /* Map the CIR memory and MMIO areas */
+    if (!CirMapMem(pCir, pScrn->scrnIndex))
+        return FALSE;

 #if LGuseI2C
-       if (!LgI2CInit(pScrn)) {
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "I2C initialization 
failed\n");
-
-               goto unmap_out;
-       }
-
-       /* Read and output monitor info using DDC2 over I2C bus */
-       MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, pCir->I2CPtr1);
-       xf86DrvMsg(pScrn->scrnIndex, X_INFO, "I2C Monitor info: %p\n",
-                  (void *)MonInfo);
-       xf86PrintEDID(MonInfo);
-       xf86DrvMsg(pScrn->scrnIndex, X_INFO, "end of I2C Monitor info\n\n");
+    if (!LgI2CInit(pScrn)) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "I2C initialization failed\n");
+
+        goto unmap_out;
+    }
+
+    /* Read and output monitor info using DDC2 over I2C bus */
+    MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, pCir->I2CPtr1);
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "I2C Monitor info: %p\n",
+            (void *)MonInfo);
+    xf86PrintEDID(MonInfo);
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "end of I2C Monitor info\n\n");
 #endif /* LGuseI2C */

-       xf86SetDDCproperties(pScrn, MonInfo);
+    xf86SetDDCproperties(pScrn, MonInfo);

 #if LGuseI2C
-unmap_out:
+    unmap_out:
 #endif /* LGuseI2C */
-       CirUnmapMem(pCir, pScrn->scrnIndex);
+    CirUnmapMem(pCir, pScrn->scrnIndex);

-       return MonInfo;
+    return MonInfo;
 }

 /* Mandatory */
-Bool
-LgPreInit(ScrnInfoPtr pScrn, int flags)
-{
-       CirPtr pCir;
-       vgaHWPtr hwp;
-       MessageType from;
-       int i;
-       ClockRangePtr clockRanges;
-       int fbPCIReg, ioPCIReg;
-       const char *s;
-
-       if (flags & PROBE_DETECT)  {
-         cirProbeDDC( pScrn, xf86GetEntityInfo(pScrn->entityList[0])->index );
-         return TRUE;
-       }
-
+Bool LgPreInit(ScrnInfoPtr pScrn, int flags) {
+    CirPtr pCir;
+    vgaHWPtr hwp;
+    MessageType from;
+    int i;
+    ClockRangePtr clockRanges;
+    int fbPCIReg, ioPCIReg;
+    const char *s;
+
+    if (flags & PROBE_DETECT) {
+        cirProbeDDC(pScrn, xf86GetEntityInfo(pScrn->entityList[0])->index);
+        return TRUE;
+    }
+
 #ifdef LG_DEBUG
-       ErrorF("LgPreInit\n");
+    ErrorF("LgPreInit\n");
 #endif

-       /* Check the number of entities, and fail if it isn't one. */
-       if (pScrn->numEntities != 1)
-               return FALSE;
+    /* Check the number of entities, and fail if it isn't one. */
+    if (pScrn->numEntities != 1)
+        return FALSE;

-       /* The vgahw module should be loaded here when needed */
-       if (!xf86LoadSubModule(pScrn, "vgahw"))
-               return FALSE;
+    /* The vgahw module should be loaded here when needed */
+    if (!xf86LoadSubModule(pScrn, "vgahw"))
+        return FALSE;

-       /*
-        * Allocate a vgaHWRec
-        */
-       if (!vgaHWGetHWRec(pScrn))
-               return FALSE;
+    /*
+     * Allocate a vgaHWRec
+     */
+    if (!vgaHWGetHWRec(pScrn))
+        return FALSE;

-       hwp = VGAHWPTR(pScrn);
-       vgaHWSetStdFuncs(hwp);
-       vgaHWGetIOBase(hwp);
+    hwp = VGAHWPTR(pScrn);
+    vgaHWSetStdFuncs(hwp);
+    vgaHWGetIOBase(hwp);

-       /* Allocate the LgRec driverPrivate */
-       if (!LgGetRec(pScrn))
-               return FALSE;
+    /* Allocate the LgRec driverPrivate */
+    if (!LgGetRec(pScrn))
+        return FALSE;

-       pCir = CIRPTR(pScrn);
-       pCir->pScrn = pScrn;
+    pCir = CIRPTR(pScrn);
+    pCir->pScrn = pScrn;

 #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
-       pCir->PIOReg = hwp->PIOOffset + 0x3CE;
+    pCir->PIOReg = hwp->PIOOffset + 0x3CE;
 #else
-       pCir->PIOReg = 0x3CE;
+    pCir->PIOReg = 0x3CE;
 #endif

-       /* Get the entity, and make sure it is PCI. */
-       pCir->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
-       if (pCir->pEnt->location.type != BUS_PCI)
-               return FALSE;
-       pCir->Chipset = pCir->pEnt->chipset;
+    /* Get the entity, and make sure it is PCI. */
+    pCir->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
+    if (pCir->pEnt->location.type != BUS_PCI)
+        return FALSE;
+    pCir->Chipset = pCir->pEnt->chipset;

-       /* Find the PCI info for this screen */
-       pCir->PciInfo = xf86GetPciInfoForEntity(pCir->pEnt->index);
+    /* Find the PCI info for this screen */
+    pCir->PciInfo = xf86GetPciInfoForEntity(pCir->pEnt->index);
 #ifndef XSERVER_LIBPCIACCESS
-       pCir->PciTag = pciTag(PCI_DEV_BUS(pCir->PciInfo),
-                             PCI_DEV_DEV(pCir->PciInfo),
-                             PCI_DEV_FUNC(pCir->PciInfo));
+    pCir->PciTag = pciTag(PCI_DEV_BUS(pCir->PciInfo),
+            PCI_DEV_DEV(pCir->PciInfo), PCI_DEV_FUNC(pCir->PciInfo));
 #endif

-       if (xf86LoadSubModule(pScrn, "int10")) {
-           xf86Int10InfoPtr int10InfoPtr;
-
-           int10InfoPtr = xf86InitInt10(pCir->pEnt->index);
-
-           if (int10InfoPtr)
-               xf86FreeInt10(int10InfoPtr);
-       }
-
-       /* Set pScrn->monitor */
-       pScrn->monitor = pScrn->confScreen->monitor;
-
-       /*
-        * The first thing we should figure out is the depth, bpp, etc.
-        * We support both 24bpp and 32bpp layouts, so indicate that.
-        */
-       if (!xf86SetDepthBpp(pScrn, 0, 0, 0, Support24bppFb | Support32bppFb |
-                                                       SupportConvert32to24 | 
PreferConvert32to24)) {
-               return FALSE;
+    if (xf86LoadSubModule(pScrn, "int10")) {
+        xf86Int10InfoPtr int10InfoPtr;
+
+        int10InfoPtr = xf86InitInt10(pCir->pEnt->index);
+
+        if (int10InfoPtr)
+            xf86FreeInt10(int10InfoPtr);
     }
-       /* Check that the returned depth is one we support */
-       switch (pScrn->depth) {
-       case 8:
-       case 15:
-       case 16:
-       case 24:
-       case 32:
-               /* OK */
-               break;
-       default:
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Given depth (%d) is not supported by this driver\n", 
pScrn->depth);
-               return FALSE;
-       }
-       xf86PrintDepthBpp(pScrn);
-
-       /* Get the depth24 pixmap format */
-       if (pScrn->depth == 24 && pix24bpp == 0)
-               pix24bpp = xf86GetBppFromDepth(pScrn, 24);
-
-       /*
-        * This must happen after pScrn->display has been set because
-        * xf86SetWeight references it.
-        */
-       if (pScrn->depth > 8) {
-               /* The defaults are OK for us */
-               rgb zeros = {0, 0, 0};
-
-               /* !!! I think we can force 5-6-5 weight for 16bpp here for
-                  the 5462. */
-
-               if (!xf86SetWeight(pScrn, zeros, zeros)) {
-                       return FALSE;
-               } else {
-                       /* XXX check that weight returned is supported */
-                       ;
-               }
-       }
-
-       if (!xf86SetDefaultVisual(pScrn, -1))
-               return FALSE;
-
-
-       /* Collect all of the relevant option flags (fill in pScrn->options) */
-       xf86CollectOptions(pScrn, NULL);
-
-       /* Process the options */
-       if (!(pCir->Options = malloc(sizeof(LgOptions))))
-               return FALSE;
-       memcpy(pCir->Options, LgOptions, sizeof(LgOptions));
-       xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pCir->Options);
-
-       pScrn->rgbBits = 6;
-       from = X_DEFAULT;
-       pCir->HWCursor = FALSE;
-       if (xf86GetOptValBool(pCir->Options, OPTION_HW_CURSOR, &pCir->HWCursor))
-               from = X_CONFIG;
-
-       xf86DrvMsg(pScrn->scrnIndex, from, "Using %s cursor\n",
-               pCir->HWCursor ? "HW" : "SW");
-       if (xf86ReturnOptValBool(pCir->Options, OPTION_NOACCEL, FALSE)) {
-               pCir->NoAccel = TRUE;
-               xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Acceleration 
disabled\n");
-       }
-       if (pScrn->bitsPerPixel < 8) {
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Cannot use in less than 8 bpp\n");
-               return FALSE;
-       }
-       /*
-        * Set the ChipRev, allowing config file entries to
-        * override.
-        */
-       if (pCir->pEnt->device->chipRev >= 0) {
-               pCir->ChipRev = pCir->pEnt->device->chipRev;
-               xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n",
-                       pCir->ChipRev);
-       } else {
-               pCir->ChipRev = PCI_DEV_REVISION(pCir->PciInfo);
-       }
-
-       /* Cirrus swapped the FB and IO registers in the 5465 (by design). */
-       if (PCI_CHIP_GD5465 == pCir->Chipset) {
-               fbPCIReg = 0;
-               ioPCIReg = 1;
-       } else {
-               fbPCIReg = 1;
-               ioPCIReg = 0;
-       }
-
-       /* Find the frame buffer base address */
-       if (pCir->pEnt->device->MemBase != 0) {
-               /* Require that the config file value matches one of the PCI 
values. */
-               if (!xf86CheckPciMemBase(pCir->PciInfo, 
pCir->pEnt->device->MemBase)) {
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                               "MemBase 0x%08lX doesn't match any PCI base 
register.\n",
-                               pCir->pEnt->device->MemBase);
-                       return FALSE;
-               }
-               pCir->FbAddress = pCir->pEnt->device->MemBase;
-               from = X_CONFIG;
-       } else {
-               if (PCI_REGION_BASE(pCir->PciInfo, fbPCIReg, REGION_MEM) != 0) {
-                       pCir->FbAddress = PCI_REGION_BASE(pCir->PciInfo, 
fbPCIReg, REGION_MEM) & 0xff000000;
-                       from = X_PROBED;
-               } else {
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                               "No valid FB address in PCI config space\n");
-                       LgFreeRec(pScrn);
-                       return FALSE;
-               }
-       }
-       xf86DrvMsg(pScrn->scrnIndex, from, "Linear framebuffer at 0x%lX\n",
-               (unsigned long)pCir->FbAddress);
-
-       /* Find the MMIO base address */
-       if (pCir->pEnt->device->IOBase != 0) {
-               /* Require that the config file value matches one of the PCI 
values. */
-               if (!xf86CheckPciMemBase(pCir->PciInfo, 
pCir->pEnt->device->IOBase)) {
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                               "IOBase 0x%08lX doesn't match any PCI base 
register.\n",
-                               pCir->pEnt->device->IOBase);
-                       return FALSE;
-               }
-               pCir->IOAddress = pCir->pEnt->device->IOBase;
-               from = X_CONFIG;
-       } else {
-               if (PCI_REGION_BASE(pCir->PciInfo, ioPCIReg, REGION_MEM) != 0) {
-                       pCir->IOAddress = PCI_REGION_BASE(pCir->PciInfo, 
ioPCIReg, REGION_MEM) & 0xfffff000;
-                       from = X_PROBED;
-               } else {
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "No valid MMIO address in PCI config space\n");
-               }
-       }
-       xf86DrvMsg(pScrn->scrnIndex, from, "MMIO registers at 0x%lX\n",
-               (unsigned long)pCir->IOAddress);
-
-       /*
-        * If the user has specified the amount of memory in the XF86Config
-        * file, we respect that setting.
-        */
-       if (pCir->pEnt->device->videoRam != 0) {
-               pScrn->videoRam = pCir->pEnt->device->videoRam;
-               from = X_CONFIG;
-       } else {
-               pScrn->videoRam = LgCountRam(pScrn);
-               from = X_PROBED;
-       }
-       if (2048 == pScrn->videoRam) {
-               /* Two-way interleaving */
-               pCir->chip.lg->memInterleave = 0x40;
-       } else if (4096 == pScrn->videoRam || 8192 == pScrn->videoRam) {
-               /* Four-way interleaving */
-               pCir->chip.lg->memInterleave = 0x80;
-       } else {
-               /* One-way interleaving */
-               pCir->chip.lg->memInterleave = 0x00;
-       }
-
-       xf86DrvMsg(pScrn->scrnIndex, from, "VideoRAM: %d kByte\n",
-                               pScrn->videoRam);
-
-       pCir->FbMapSize = pScrn->videoRam * 1024;
-       pCir->IoMapSize = 0x4000;       /* 16K for moment,  will increase */
+
+    /* Set pScrn->monitor */
+    pScrn->monitor = pScrn->confScreen->monitor;
+
+    /*
+     * The first thing we should figure out is the depth, bpp, etc.
+     * We support both 24bpp and 32bpp layouts, so indicate that.
+     */
+    if (!xf86SetDepthBpp(pScrn, 0, 0, 0, Support24bppFb | Support32bppFb |
+    SupportConvert32to24 | PreferConvert32to24)) {
+        return FALSE;
+    }
+    /* Check that the returned depth is one we support */
+    switch (pScrn->depth) {
+    case 8:
+    case 15:
+    case 16:
+    case 24:
+    case 32:
+        /* OK */
+        break;
+    default:
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                "Given depth (%d) is not supported by this driver\n",
+                pScrn->depth);
+        return FALSE;
+    }
+    xf86PrintDepthBpp(pScrn);
+
+    /* Get the depth24 pixmap format */
+    if (pScrn->depth == 24 && pix24bpp == 0)
+        pix24bpp = xf86GetBppFromDepth(pScrn, 24);
+
+    /*
+     * This must happen after pScrn->display has been set because
+     * xf86SetWeight references it.
+     */
+    if (pScrn->depth > 8) {
+        /* The defaults are OK for us */
+        rgb zeros = { 0, 0, 0 };
+
+        /* !!! I think we can force 5-6-5 weight for 16bpp here for
+         the 5462. */
+
+        if (!xf86SetWeight(pScrn, zeros, zeros)) {
+            return FALSE;
+        } else {
+            /* XXX check that weight returned is supported */
+            ;
+        }
+    }
+
+    if (!xf86SetDefaultVisual(pScrn, -1))
+        return FALSE;
+
+    /* Collect all of the relevant option flags (fill in pScrn->options) */
+    xf86CollectOptions(pScrn, NULL);
+
+    /* Process the options */
+    if (!(pCir->Options = malloc(sizeof(LgOptions))))
+        return FALSE;
+    memcpy(pCir->Options, LgOptions, sizeof(LgOptions));
+    xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pCir->Options);
+
+    pScrn->rgbBits = 6;
+    from = X_DEFAULT;
+    pCir->HWCursor = FALSE;
+    if (xf86GetOptValBool(pCir->Options, OPTION_HW_CURSOR, &pCir->HWCursor))
+        from = X_CONFIG;
+
+    xf86DrvMsg(pScrn->scrnIndex, from, "Using %s cursor\n",
+            pCir->HWCursor ? "HW" : "SW");
+    if (xf86ReturnOptValBool(pCir->Options, OPTION_NOACCEL, FALSE)) {
+        pCir->NoAccel = TRUE;
+        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Acceleration disabled\n");
+    }
+    if (pScrn->bitsPerPixel < 8) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                "Cannot use in less than 8 bpp\n");
+        return FALSE;
+    }
+    /*
+     * Set the ChipRev, allowing config file entries to
+     * override.
+     */
+    if (pCir->pEnt->device->chipRev >= 0) {
+        pCir->ChipRev = pCir->pEnt->device->chipRev;
+        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n",
+                pCir->ChipRev);
+    } else {
+        pCir->ChipRev = PCI_DEV_REVISION(pCir->PciInfo);
+    }
+
+    /* Cirrus swapped the FB and IO registers in the 5465 (by design). */
+    if (PCI_CHIP_GD5465 == pCir->Chipset) {
+        fbPCIReg = 0;
+        ioPCIReg = 1;
+    } else {
+        fbPCIReg = 1;
+        ioPCIReg = 0;
+    }
+
+    /* Find the frame buffer base address */
+    if (pCir->pEnt->device->MemBase != 0) {
+        /* Require that the config file value matches one of the PCI values. */
+        if (!xf86CheckPciMemBase(pCir->PciInfo, pCir->pEnt->device->MemBase)) {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "MemBase 0x%08lX doesn't match any PCI base register.\n",
+                    pCir->pEnt->device->MemBase);
+            return FALSE;
+        }
+        pCir->FbAddress = pCir->pEnt->device->MemBase;
+        from = X_CONFIG;
+    } else {
+        if (PCI_REGION_BASE(pCir->PciInfo, fbPCIReg, REGION_MEM) != 0) {
+            pCir->FbAddress =
+                    PCI_REGION_BASE(pCir->PciInfo, fbPCIReg, REGION_MEM)
+                            & 0xff000000;
+            from = X_PROBED;
+        } else {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "No valid FB address in PCI config space\n");
+            LgFreeRec(pScrn);
+            return FALSE;
+        }
+    }
+    xf86DrvMsg(pScrn->scrnIndex, from, "Linear framebuffer at 0x%lX\n",
+            (unsigned long) pCir->FbAddress);
+
+    /* Find the MMIO base address */
+    if (pCir->pEnt->device->IOBase != 0) {
+        /* Require that the config file value matches one of the PCI values. */
+        if (!xf86CheckPciMemBase(pCir->PciInfo, pCir->pEnt->device->IOBase)) {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "IOBase 0x%08lX doesn't match any PCI base register.\n",
+                    pCir->pEnt->device->IOBase);
+            return FALSE;
+        }
+        pCir->IOAddress = pCir->pEnt->device->IOBase;
+        from = X_CONFIG;
+    } else {
+        if (PCI_REGION_BASE(pCir->PciInfo, ioPCIReg, REGION_MEM) != 0) {
+            pCir->IOAddress =
+                    PCI_REGION_BASE(pCir->PciInfo, ioPCIReg, REGION_MEM)
+                            & 0xfffff000;
+            from = X_PROBED;
+        } else {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "No valid MMIO address in PCI config space\n");
+        }
+    }
+    xf86DrvMsg(pScrn->scrnIndex, from, "MMIO registers at 0x%lX\n",
+            (unsigned long) pCir->IOAddress);
+
+    /*
+     * If the user has specified the amount of memory in the XF86Config
+     * file, we respect that setting.
+     */
+    if (pCir->pEnt->device->videoRam != 0) {
+        pScrn->videoRam = pCir->pEnt->device->videoRam;
+        from = X_CONFIG;
+    } else {
+        pScrn->videoRam = LgCountRam(pScrn);
+        from = X_PROBED;
+    }
+    if (2048 == pScrn->videoRam) {
+        /* Two-way interleaving */
+        pCir->chip.lg->memInterleave = 0x40;
+    } else if (4096 == pScrn->videoRam || 8192 == pScrn->videoRam) {
+        /* Four-way interleaving */
+        pCir->chip.lg->memInterleave = 0x80;
+    } else {
+        /* One-way interleaving */
+        pCir->chip.lg->memInterleave = 0x00;
+    }
+
+    xf86DrvMsg(pScrn->scrnIndex, from, "VideoRAM: %d kByte\n", 
pScrn->videoRam);
+
+    pCir->FbMapSize = pScrn->videoRam * 1024;
+    pCir->IoMapSize = 0x4000; /* 16K for moment,  will increase */

 #ifndef XSERVER_LIBPCIACCESS
-       pScrn->racIoFlags =   RAC_COLORMAP
+    pScrn->racIoFlags = RAC_COLORMAP
 #ifndef EXPERIMENTAL
-         | RAC_VIEWPORT
+            | RAC_VIEWPORT
 #endif
-;
-       xf86SetOperatingState(resVgaMem, pCir->pEnt->index, ResUnusedOpr);
-
-       /* Register the PCI-assigned resources. */
-       if (xf86RegisterResources(pCir->pEnt->index, NULL, ResExclusive)) {
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "xf86RegisterResources() found resource conflicts\n");
-               return FALSE;
-       }
+            ;
+    xf86SetOperatingState(resVgaMem, pCir->pEnt->index, ResUnusedOpr);
+
+    /* Register the PCI-assigned resources. */
+    if (xf86RegisterResources(pCir->pEnt->index, NULL, ResExclusive)) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                "xf86RegisterResources() found resource conflicts\n");
+        return FALSE;
+    }
 #endif
-       if (!xf86LoadSubModule(pScrn, "ddc")) {
-               LgFreeRec(pScrn);
-               return FALSE;
-       }
+    if (!xf86LoadSubModule(pScrn, "ddc")) {
+        LgFreeRec(pScrn);
+        return FALSE;
+    }

 #if LGuseI2C
-       if (!xf86LoadSubModule(pScrn, "i2c")) {
-               LgFreeRec(pScrn);
-               return FALSE;
-       }
+    if (!xf86LoadSubModule(pScrn, "i2c")) {
+        LgFreeRec(pScrn);
+        return FALSE;
+    }
 #endif

-       /* Read and print the monitor DDC information */
-       pScrn->monitor->DDC = LgDoDDC(pScrn);
-
-       /* The gamma fields must be initialised when using the new cmap code */
-       if (pScrn->depth > 1) {
-               Gamma zeros = {0.0, 0.0, 0.0};
-
-               if (!xf86SetGamma(pScrn, zeros))
-                       return FALSE;
-       }
-       if (xf86GetOptValBool(pCir->Options,
-                             OPTION_SHADOW_FB,&pCir->shadowFB))
-           xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ShadowFB %s.\n",
-                      pCir->shadowFB ? "enabled" : "disabled");
-
-       if ((s = xf86GetOptValString(pCir->Options, OPTION_ROTATE))) {
-           if(!xf86NameCmp(s, "CW")) {
-               /* accel is disabled below for shadowFB */
-               pCir->shadowFB = TRUE;
-               pCir->rotate = 1;
-               xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-                          "Rotating screen clockwise - acceleration 
disabled\n");
-           } else if(!xf86NameCmp(s, "CCW")) {
-               pCir->shadowFB = TRUE;
-               pCir->rotate = -1;
-               xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,  "Rotating screen"
-                          "counter clockwise - acceleration disabled\n");
-           } else {
-               xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid"
-                          "value for Option \"Rotate\"\n", s);
-               xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                          "Valid options are \"CW\" or \"CCW\"\n");
-           }
-       }
-
-       if (pCir->shadowFB && !pCir->NoAccel) {
-           xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-                      "HW acceleration not supported with \"shadowFB\".\n");
-           pCir->NoAccel = TRUE;
-       }
-
-       if (pCir->rotate && pCir->HWCursor) {
-           xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-                      "HW cursor not supported with \"rotate\".\n");
-           pCir->HWCursor = FALSE;
-       }
-
-       /* We use a programmable clock */
-       pScrn->progClock = TRUE;
-
-       /* XXX Set HW cursor use */
-
-       /* Set the min pixel clock */
-       pCir->MinClock = 12000; /* XXX Guess, need to check this */
-       xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "Min pixel clock is %d MHz\n",
-                               pCir->MinClock / 1000);
-       /*
-        * If the user has specified ramdac speed in the XF86Config
-        * file, we respect that setting.
-        */
-       if (pCir->pEnt->device->dacSpeeds[0]) {
-               ErrorF("Do not specify a Clocks line for Cirrus chips\n");
-               return FALSE;
-       } else {
-               int speed;
-               int *p;
-               switch (pCir->Chipset) {
-               case PCI_CHIP_GD5462:
-                       p = gd5462_MaxClocks;
-                       break;
-               case PCI_CHIP_GD5464:
-               case PCI_CHIP_GD5464BD:
-                       p = gd5464_MaxClocks;
-                       break;
-               case PCI_CHIP_GD5465:
-                       p = gd5465_MaxClocks;
-                       break;
-               default:
-                       ErrorF("???\n");
-                       return FALSE;
-               }
-               switch (pScrn->bitsPerPixel) {
-               case 8:
-                       speed = p[1];
-                       break;
-               case 15:
-               case 16:
-                       speed = p[2];
-                       break;
-               case 24:
-                       speed = p[3];
-                       break;
-               case 32:
-                       speed = p[4];
-                       break;
-               default:
-                       /* Should not get here */
-                       speed = 0;
-                       break;
-               }
-               pCir->MaxClock = speed;
-               from = X_PROBED;
-       }
-       xf86DrvMsg(pScrn->scrnIndex, from, "Max pixel clock is %d MHz\n",
-                               pCir->MaxClock / 1000);
-
-       /*
-        * Setup the ClockRanges, which describe what clock ranges are 
available,
-        * and what sort of modes they can be used for.
-        */
-       clockRanges = xnfcalloc(sizeof(ClockRange), 1);
-       clockRanges->next = NULL;
-       clockRanges->minClock = pCir->MinClock;
-       clockRanges->maxClock = pCir->MaxClock;
-       clockRanges->clockIndex = -1;           /* programmable */
-       clockRanges->interlaceAllowed = FALSE;  /* XXX check this */
-       clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
-       clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
-       clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
-       clockRanges->ClockMulFactor = 1;
-       clockRanges->ClockDivFactor = 1;
-       clockRanges->PrivFlags = 0;
-
-       /* Depending upon what sized tiles used, either 128 or 256. */
-       /* Aw, heck.  Just say 128. */
-       pCir->Rounding = 128 >> pCir->BppShift;
-
-       /*
-        * xf86ValidateModes will check that the mode HTotal and VTotal values
-        * don't exceed the chipset's limit if pScrn->maxHValue and
-        * pScrn->maxVValue are set.  Since our CIRValidMode() already takes
-        * care of this, we don't worry about setting them here.
-        */
-
-       i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, 
pScrn->display->modes,
-                                                       clockRanges,
-                                                       
LgLinePitches[pScrn->bitsPerPixel / 8 - 1],
-                                                       0, 0, 128 * 8,
-                                                       0, 0, /* Any virtual 
height is allowed. */
-                                                       
pScrn->display->virtualX,
-                                                       
pScrn->display->virtualY,
-                                                       pCir->FbMapSize,
-                                                       LOOKUP_BEST_REFRESH);
-
-       pCir->chip.lg->lineDataIndex = LgFindLineData(pScrn->displayWidth,
-                                                                               
pScrn->bitsPerPixel);
-
-       if (i == -1) {
-               LgFreeRec(pScrn);
-               return FALSE;
-       }
-
-       /* Prune the modes marked as invalid */
-       xf86PruneDriverModes(pScrn);
-
-       if (i == 0 || pScrn->modes == NULL) {
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n");
-               LgFreeRec(pScrn);
-               return FALSE;
-       }
-
-       /*
-        * Set the CRTC parameters for all of the modes based on the type
-        * of mode, and the chipset's interlace requirements.
-        *
-        * Calling this is required if the mode->Crtc* values are used by the
-        * driver and if the driver doesn't provide code to set them.  They
-        * are not pre-initialised at all.
-        */
-       xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
-
-       /* Set the current mode to the first in the list */
-       pScrn->currentMode = pScrn->modes;
-
-       /* Print the list of modes being used */
-       xf86PrintModes(pScrn);
-
-       /* Set display resolution */
-       xf86SetDpi(pScrn, 0, 0);
-
-       /* Load bpp-specific modules */
-       switch (pScrn->bitsPerPixel) {
-       case 8:
-       case 16:
-       case 24:
-       case 32:
-           if (xf86LoadSubModule(pScrn, "fb") == NULL) {
-                LgFreeRec(pScrn);
-                return FALSE;
-           }
-           break;
-       }
-
-       /* Load XAA if needed */
-       if (!pCir->NoAccel) {
+    /* Read and print the monitor DDC information */
+    pScrn->monitor->DDC = LgDoDDC(pScrn);
+
+    /* The gamma fields must be initialised when using the new cmap code */
+    if (pScrn->depth > 1) {
+        Gamma zeros = { 0.0, 0.0, 0.0 };
+
+        if (!xf86SetGamma(pScrn, zeros))
+            return FALSE;
+    }
+    if (xf86GetOptValBool(pCir->Options, OPTION_SHADOW_FB, &pCir->shadowFB))
+        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ShadowFB %s.\n",
+                pCir->shadowFB ? "enabled" : "disabled");
+
+    if ((s = xf86GetOptValString(pCir->Options, OPTION_ROTATE))) {
+        if (!xf86NameCmp(s, "CW")) {
+            /* accel is disabled below for shadowFB */
+            pCir->shadowFB = TRUE;
+            pCir->rotate = 1;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+                    "Rotating screen clockwise - acceleration disabled\n");
+        } else if (!xf86NameCmp(s, "CCW")) {
+            pCir->shadowFB = TRUE;
+            pCir->rotate = -1;
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rotating screen"
+                    "counter clockwise - acceleration disabled\n");
+        } else {
+            xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid"
+                    "value for Option \"Rotate\"\n", s);
+            xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                    "Valid options are \"CW\" or \"CCW\"\n");
+        }
+    }
+
+    if (pCir->shadowFB && !pCir->NoAccel) {
+        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+                "HW acceleration not supported with \"shadowFB\".\n");
+        pCir->NoAccel = TRUE;
+    }
+
+    if (pCir->rotate && pCir->HWCursor) {
+        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+                "HW cursor not supported with \"rotate\".\n");
+        pCir->HWCursor = FALSE;
+    }
+
+    /* We use a programmable clock */
+    pScrn->progClock = TRUE;
+
+    /* XXX Set HW cursor use */
+
+    /* Set the min pixel clock */
+    pCir->MinClock = 12000; /* XXX Guess, need to check this */
+    xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "Min pixel clock is %d MHz\n",
+            pCir->MinClock / 1000);
+    /*
+     * If the user has specified ramdac speed in the XF86Config
+     * file, we respect that setting.
+     */
+    if (pCir->pEnt->device->dacSpeeds[0]) {
+        ErrorF("Do not specify a Clocks line for Cirrus chips\n");
+        return FALSE;
+    } else {
+        int speed;
+        int *p;
+        switch (pCir->Chipset) {
+        case PCI_CHIP_GD5462:
+            p = gd5462_MaxClocks;
+            break;
+        case PCI_CHIP_GD5464:
+        case PCI_CHIP_GD5464BD:
+            p = gd5464_MaxClocks;
+            break;
+        case PCI_CHIP_GD5465:
+            p = gd5465_MaxClocks;
+            break;
+        default:
+            ErrorF("???\n");
+            return FALSE;
+        }
+        switch (pScrn->bitsPerPixel) {
+        case 8:
+            speed = p[1];
+            break;
+        case 15:
+        case 16:
+            speed = p[2];
+            break;
+        case 24:
+            speed = p[3];
+            break;
+        case 32:
+            speed = p[4];
+            break;
+        default:
+            /* Should not get here */
+            speed = 0;
+            break;
+        }
+        pCir->MaxClock = speed;
+        from = X_PROBED;
+    }
+    xf86DrvMsg(pScrn->scrnIndex, from, "Max pixel clock is %d MHz\n",
+            pCir->MaxClock / 1000);
+
+    /*
+     * Setup the ClockRanges, which describe what clock ranges are available,
+     * and what sort of modes they can be used for.
+     */
+    clockRanges = xnfcalloc(sizeof(ClockRange), 1);
+    clockRanges->next = NULL;
+    clockRanges->minClock = pCir->MinClock;
+    clockRanges->maxClock = pCir->MaxClock;
+    clockRanges->clockIndex = -1; /* programmable */
+    clockRanges->interlaceAllowed = FALSE; /* XXX check this */
+    clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
+    clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
+    clockRanges->doubleScanAllowed = FALSE; /* XXX check this */
+    clockRanges->ClockMulFactor = 1;
+    clockRanges->ClockDivFactor = 1;
+    clockRanges->PrivFlags = 0;
+
+    /* Depending upon what sized tiles used, either 128 or 256. */
+    /* Aw, heck.  Just say 128. */
+    pCir->Rounding = 128 >> pCir->BppShift;
+
+    /*
+     * xf86ValidateModes will check that the mode HTotal and VTotal values
+     * don't exceed the chipset's limit if pScrn->maxHValue and
+     * pScrn->maxVValue are set.  Since our CIRValidMode() already takes
+     * care of this, we don't worry about setting them here.
+     */
+
+    i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, pScrn->display->modes,
+            clockRanges, LgLinePitches[pScrn->bitsPerPixel / 8 - 1], 0, 0,
+            128 * 8, 0, 0, /* Any virtual height is allowed. */
+            pScrn->display->virtualX, pScrn->display->virtualY, 
pCir->FbMapSize,
+            LOOKUP_BEST_REFRESH);
+
+    pCir->chip.lg->lineDataIndex = LgFindLineData(pScrn->displayWidth,
+            pScrn->bitsPerPixel);
+
+    if (i == -1) {
+        LgFreeRec(pScrn);
+        return FALSE;
+    }
+
+    /* Prune the modes marked as invalid */
+    xf86PruneDriverModes(pScrn);
+
+    if (i == 0 || pScrn->modes == NULL) {
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n");
+        LgFreeRec(pScrn);
+        return FALSE;
+    }
+
+    /*
+     * Set the CRTC parameters for all of the modes based on the type
+     * of mode, and the chipset's interlace requirements.
+     *
+     * Calling this is required if the mode->Crtc* values are used by the
+     * driver and if the driver doesn't provide code to set them.  They
+     * are not pre-initialised at all.
+     */
+    xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
+
+    /* Set the current mode to the first in the list */
+    pScrn->currentMode = pScrn->modes;
+
+    /* Print the list of modes being used */
+    xf86PrintModes(pScrn);
+
+    /* Set display resolution */
+    xf86SetDpi(pScrn, 0, 0);
+
+    /* Load bpp-specific modules */
+    switch (pScrn->bitsPerPixel) {
+    case 8:
+    case 16:
+    case 24:
+    case 32:
+        if (xf86LoadSubModule(pScrn, "fb") == NULL) {
+            LgFreeRec(pScrn);
+            return FALSE;
+        }
+        break;
+    }
+
+    /* Load XAA if needed */
+    if (!pCir->NoAccel) {
 #ifdef HAVE_XAA_H
-               if (!xf86LoadSubModule(pScrn, "xaa"))
+        if (!xf86LoadSubModule(pScrn, "xaa"))
 #else
-               if (1)
+        if (1)
 #endif
-                {
-                       xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-                                  "Falling back to shadowfb\n");
-                       pCir->NoAccel = TRUE;
-                       pCir->shadowFB = TRUE;
-               }
-       }
-
-       /* Load ramdac if needed */
-       if (pCir->HWCursor) {
-               if (!xf86LoadSubModule(pScrn, "ramdac")) {
-                       LgFreeRec(pScrn);
-                       return FALSE;
-               }
-       }
-
-       if (pCir->shadowFB) {
-           if (!xf86LoadSubModule(pScrn, "shadowfb")) {
-               LgFreeRec(pScrn);
-               return FALSE;
-           }
-       }
-
-       return TRUE;
+        {
+            xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Falling back to shadowfb\n");
+            pCir->NoAccel = TRUE;
+            pCir->shadowFB = TRUE;
+        }
+    }
+
+    /* Load ramdac if needed */
+    if (pCir->HWCursor) {
+        if (!xf86LoadSubModule(pScrn, "ramdac")) {
+            LgFreeRec(pScrn);
+            return FALSE;
+        }
+    }
+
+    if (pCir->shadowFB) {
+        if (!xf86LoadSubModule(pScrn, "shadowfb")) {
+            LgFreeRec(pScrn);
+            return FALSE;
+        }
+    }
+
+    return TRUE;
 }

 /*
  * This function saves the video state.
  */
-static void
-LgSave(ScrnInfoPtr pScrn)
-{
-       CirPtr pCir = CIRPTR(pScrn);
-       vgaHWPtr hwp = VGAHWPTR(pScrn);
+static void LgSave(ScrnInfoPtr pScrn) {
+    CirPtr pCir = CIRPTR(pScrn);
+    vgaHWPtr hwp = VGAHWPTR(pScrn);

 #ifdef LG_DEBUG
-       ErrorF("LgSave\n");
+    ErrorF("LgSave\n");
 #endif

-       vgaHWSave(pScrn, &VGAHWPTR(pScrn)->SavedReg, VGA_SR_ALL);
-
-       pCir->chip.lg->ModeReg.ExtVga[CR1A] = 
pCir->chip.lg->SavedReg.ExtVga[CR1A] = hwp->readCrtc(hwp, 0x1A);
-       pCir->chip.lg->ModeReg.ExtVga[CR1B] = 
pCir->chip.lg->SavedReg.ExtVga[CR1B] = hwp->readCrtc(hwp, 0x1B);
-       pCir->chip.lg->ModeReg.ExtVga[CR1D] = 
pCir->chip.lg->SavedReg.ExtVga[CR1D] = hwp->readCrtc(hwp, 0x1D);
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] = 
pCir->chip.lg->SavedReg.ExtVga[CR1E] = hwp->readCrtc(hwp, 0x1E);
-       pCir->chip.lg->ModeReg.ExtVga[SR07] = 
pCir->chip.lg->SavedReg.ExtVga[SR07] = hwp->readSeq(hwp, 0x07);
-       pCir->chip.lg->ModeReg.ExtVga[SR0E] = 
pCir->chip.lg->SavedReg.ExtVga[SR0E] = hwp->readSeq(hwp, 0x0E);
-       pCir->chip.lg->ModeReg.ExtVga[SR12] = 
pCir->chip.lg->SavedReg.ExtVga[SR12] = hwp->readSeq(hwp, 0x12);
-       pCir->chip.lg->ModeReg.ExtVga[SR13] = 
pCir->chip.lg->SavedReg.ExtVga[SR13] = hwp->readSeq(hwp, 0x13);
-       pCir->chip.lg->ModeReg.ExtVga[SR1E] = 
pCir->chip.lg->SavedReg.ExtVga[SR1E] = hwp->readSeq(hwp, 0x1E);
-
-       pCir->chip.lg->ModeReg.FORMAT = pCir->chip.lg->SavedReg.FORMAT = 
memrw(0xC0);
-
-       pCir->chip.lg->ModeReg.VSC = pCir->chip.lg->SavedReg.VSC = memrl(0x3FC);
-
-       pCir->chip.lg->ModeReg.DTTC = pCir->chip.lg->SavedReg.DTTC = 
memrw(0xEA);
-
-       if (pCir->Chipset == PCI_CHIP_GD5465) {
-           pCir->chip.lg->ModeReg.TileCtrl = pCir->chip.lg->SavedReg.TileCtrl 
= memrw(0x2C4);
-       }
-
-       pCir->chip.lg->ModeReg.TILE = pCir->chip.lg->SavedReg.TILE = 
memrb(0x407);
-
-       if (pCir->Chipset == PCI_CHIP_GD5465)
-           pCir->chip.lg->ModeReg.BCLK = pCir->chip.lg->SavedReg.BCLK = 
memrb(0x2C0);
-       else
-           pCir->chip.lg->ModeReg.BCLK = pCir->chip.lg->SavedReg.BCLK = 
memrb(0x8C);
-
-       pCir->chip.lg->ModeReg.CONTROL = pCir->chip.lg->SavedReg.CONTROL = 
memrw(0x402);
+    vgaHWSave(pScrn, &VGAHWPTR(pScrn)->SavedReg, VGA_SR_ALL);
+
+    pCir->chip.lg->ModeReg.ExtVga[CR1A] = pCir->chip.lg->SavedReg.ExtVga[CR1A] 
=
+            hwp->readCrtc(hwp, 0x1A);
+    pCir->chip.lg->ModeReg.ExtVga[CR1B] = pCir->chip.lg->SavedReg.ExtVga[CR1B] 
=
+            hwp->readCrtc(hwp, 0x1B);
+    pCir->chip.lg->ModeReg.ExtVga[CR1D] = pCir->chip.lg->SavedReg.ExtVga[CR1D] 
=
+            hwp->readCrtc(hwp, 0x1D);
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] = pCir->chip.lg->SavedReg.ExtVga[CR1E] 
=
+            hwp->readCrtc(hwp, 0x1E);
+    pCir->chip.lg->ModeReg.ExtVga[SR07] = pCir->chip.lg->SavedReg.ExtVga[SR07] 
=
+            hwp->readSeq(hwp, 0x07);
+    pCir->chip.lg->ModeReg.ExtVga[SR0E] = pCir->chip.lg->SavedReg.ExtVga[SR0E] 
=
+            hwp->readSeq(hwp, 0x0E);
+    pCir->chip.lg->ModeReg.ExtVga[SR12] = pCir->chip.lg->SavedReg.ExtVga[SR12] 
=
+            hwp->readSeq(hwp, 0x12);
+    pCir->chip.lg->ModeReg.ExtVga[SR13] = pCir->chip.lg->SavedReg.ExtVga[SR13] 
=
+            hwp->readSeq(hwp, 0x13);
+    pCir->chip.lg->ModeReg.ExtVga[SR1E] = pCir->chip.lg->SavedReg.ExtVga[SR1E] 
=
+            hwp->readSeq(hwp, 0x1E);
+
+    pCir->chip.lg->ModeReg.FORMAT = pCir->chip.lg->SavedReg.FORMAT = memrw(
+            0xC0);
+
+    pCir->chip.lg->ModeReg.VSC = pCir->chip.lg->SavedReg.VSC = memrl(0x3FC);
+
+    pCir->chip.lg->ModeReg.DTTC = pCir->chip.lg->SavedReg.DTTC = memrw(0xEA);
+
+    if (pCir->Chipset == PCI_CHIP_GD5465) {
+        pCir->chip.lg->ModeReg.TileCtrl = pCir->chip.lg->SavedReg.TileCtrl =
+                memrw(0x2C4);
+    }
+
+    pCir->chip.lg->ModeReg.TILE = pCir->chip.lg->SavedReg.TILE = memrb(0x407);
+
+    if (pCir->Chipset == PCI_CHIP_GD5465)
+        pCir->chip.lg->ModeReg.BCLK = pCir->chip.lg->SavedReg.BCLK = memrb(
+                0x2C0);
+    else
+        pCir->chip.lg->ModeReg.BCLK = pCir->chip.lg->SavedReg.BCLK = memrb(
+                0x8C);
+
+    pCir->chip.lg->ModeReg.CONTROL = pCir->chip.lg->SavedReg.CONTROL = memrw(
+            0x402);
 }

 /*
@@ -867,659 +857,661 @@ LgSave(ScrnInfoPtr pScrn)
  * be changed.
  */

-static Bool
-LgModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
-{
-       vgaHWPtr hwp;
-       CirPtr pCir;
-       int width;
-       Bool VDiv2 = FALSE;
-       CARD16 clockData;
-       LgLineDataPtr lineData;
+static Bool LgModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) {
+    vgaHWPtr hwp;
+    CirPtr pCir;
+    int width;
+    Bool VDiv2 = FALSE;
+    CARD16 clockData;
+    LgLineDataPtr lineData;

 #ifdef LG_DEBUG
-       ErrorF("LgModeInit %d bpp,   %d   %d %d %d %d   %d %d %d %d\n",
-                               pScrn->bitsPerPixel,
-                               mode->Clock,
-                               mode->HDisplay,
-                               mode->HSyncStart,
-                               mode->HSyncEnd,
-                               mode->HTotal,
-                               mode->VDisplay,
-                               mode->VSyncStart,
-                               mode->VSyncEnd,
-                               mode->VTotal);
-
-       ErrorF("LgModeInit: depth %d bits\n", pScrn->depth);
+    ErrorF("LgModeInit %d bpp,   %d   %d %d %d %d   %d %d %d %d\n",
+            pScrn->bitsPerPixel, mode->Clock, mode->HDisplay, mode->HSyncStart,
+            mode->HSyncEnd, mode->HTotal, mode->VDisplay, mode->VSyncStart,
+            mode->VSyncEnd, mode->VTotal);
+
+    ErrorF("LgModeInit: depth %d bits\n", pScrn->depth);
 #endif

-       pCir = CIRPTR(pScrn);
-       hwp = VGAHWPTR(pScrn);
-       vgaHWUnlock(hwp);
-
-       if (mode->VTotal >= 1024 && !(mode->Flags & V_INTERLACE)) {
-               /* For non-interlaced vertical timing >= 1024, the vertical 
timings */
-               /* are divided by 2 and VGA CRTC 0x17 bit 2 is set. */
-               if (!mode->CrtcVAdjusted) {
-                       mode->CrtcVDisplay >>= 1;
-                       mode->CrtcVSyncStart >>= 1;
-                       mode->CrtcVSyncEnd >>= 1;
-                       mode->CrtcVTotal >>= 1;
-                       mode->CrtcVAdjusted = TRUE;
-               }
-               VDiv2 = TRUE;
-       }
-
-       /* Initialise the ModeReg values */
-       if (!vgaHWInit(pScrn, mode))
-               return FALSE;
-       pScrn->vtSema = TRUE;
-
-       if (VDiv2)
-               hwp->ModeReg.CRTC[0x17] |= 0x04;
+    pCir = CIRPTR(pScrn);
+    hwp = VGAHWPTR(pScrn);
+    vgaHWUnlock(hwp);
+
+    if (mode->VTotal >= 1024 && !(mode->Flags & V_INTERLACE)) {
+        /* For non-interlaced vertical timing >= 1024, the vertical timings */
+        /* are divided by 2 and VGA CRTC 0x17 bit 2 is set. */
+        if (!mode->CrtcVAdjusted) {
+            mode->CrtcVDisplay >>= 1;
+            mode->CrtcVSyncStart >>= 1;
+            mode->CrtcVSyncEnd >>= 1;
+            mode->CrtcVTotal >>= 1;
+            mode->CrtcVAdjusted = TRUE;
+        }
+        VDiv2 = TRUE;
+    }
+
+    /* Initialise the ModeReg values */
+    if (!vgaHWInit(pScrn, mode))
+        return FALSE;
+    pScrn->vtSema = TRUE;
+
+    if (VDiv2)
+        hwp->ModeReg.CRTC[0x17] |= 0x04;

 #ifdef LG_DEBUG
-       ErrorF("SynthClock = %d\n", mode->SynthClock);
+    ErrorF("SynthClock = %d\n", mode->SynthClock);
 #endif
-       hwp->IOBase = 0x3D0;
-       hwp->ModeReg.MiscOutReg |= 0x01;
+    hwp->IOBase = 0x3D0;
+    hwp->ModeReg.MiscOutReg |= 0x01;
 #if 0 /* Mono address */
-       hwp->IOBase = 0x3B0;
-       hwp->ModeReg.MiscOutReg &= ~0x01;
+    hwp->IOBase = 0x3B0;
+    hwp->ModeReg.MiscOutReg &= ~0x01;
 #endif

+    /* ??? Should these be both ...End or ...Start, not one of each? */
+    pCir->chip.lg->ModeReg.ExtVga[CR1A] = (((mode->CrtcVSyncStart + 1) & 0x300)
+            >> 2) | (((mode->CrtcHSyncEnd >> 3) & 0xC0) >> 2);
+
+    width = pScrn->displayWidth * pScrn->bitsPerPixel / 8;
+    if (pScrn->bitsPerPixel == 1)
+        width <<= 2;
+    hwp->ModeReg.CRTC[0x13] = (width + 7) >> 3;
+    /* Offset extension (see CR13) */
+    pCir->chip.lg->ModeReg.ExtVga[CR1B] &= 0xEF;
+    pCir->chip.lg->ModeReg.ExtVga[CR1B] |=
+            (((width + 7) >> 3) & 0x100) ? 0x10 : 0x00;
+    pCir->chip.lg->ModeReg.ExtVga[CR1B] |= 0x22;
+    pCir->chip.lg->ModeReg.ExtVga[CR1D] =
+            (((width + 7) >> 3) & 0x200) ? 0x01 : 0x00;
+
+    /* Set the 28th bit to enable extended modes. */
+    pCir->chip.lg->ModeReg.VSC = 0x10000000;
+
+    /* Overflow register (sure are a lot of overflow bits around...) */
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] = 0x00;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcHTotal >> 3 & 0x0100) ? 1 : 0) << 7;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcHDisplay >> 3 & 0x0100) ? 1 : 0) << 6;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcHSyncStart >> 3 & 0x0100) ? 1 : 0) << 5;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcHSyncStart >> 3 & 0x0100) ? 1 : 0) << 4;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcVTotal & 0x0400) ? 1 : 
0)
+            << 3;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcVDisplay & 0x0400) ? 1 : 0) << 2;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcVSyncStart & 0x0400) ? 1 : 0) << 1;
+    pCir->chip.lg->ModeReg.ExtVga[CR1E] |= (
+            (mode->CrtcVSyncStart & 0x0400) ? 1 : 0) << 0;
+
+    lineData = &LgLineData[pCir->chip.lg->lineDataIndex];
+
+    pCir->chip.lg->ModeReg.TILE = lineData->tilesPerLine & 0x3F;
+
+    if (8 == pScrn->bitsPerPixel) {
+        pCir->chip.lg->ModeReg.FORMAT = 0x0000;
+
+        pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 8)
+                | 0x0080 | (lineData->width << 6);
+        pCir->chip.lg->ModeReg.CONTROL = 0x0000 | (lineData->width << 11);
+
+        /* There is an optimal FIFO threshold value (lower 5 bits of DTTC)
+         for every resolution and color depth combination.  We'll hit
+         the highlights here, and get close for anything that's not
+         covered. */
+        if (mode->CrtcHDisplay <= 640) {
+            /* BAD numbers:  0x1E */
+            /* GOOD numbers:  0x14 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0014);
+        } else if (mode->CrtcHDisplay <= 800) {
+            /* BAD numbers:  0x16 */
+            /* GOOD numbers:  0x13 0x14 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0014);
+        } else if (mode->CrtcHDisplay <= 1024) {
+            /* BAD numbers:  */
+            /* GOOD numbers: 0x15 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0015);
+        } else if (mode->CrtcHDisplay <= 1280) {
+            /* BAD numbers:  */
+            /* GOOD numbers:  0x16 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0016);
+        } else {
+            /* BAD numbers:  */
+            /* GOOD numbers:  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0017);
+        }
+    } else if (16 == pScrn->bitsPerPixel) {
+        /* !!! Assume 5-6-5 RGB mode (for now...) */
+        pCir->chip.lg->ModeReg.FORMAT = 0x1400;
+
+        if (pScrn->depth == 15)
+            pCir->chip.lg->ModeReg.FORMAT = 0x1600;
+
+        pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 8)
+                | 0x0080 | (lineData->width << 6);
+        pCir->chip.lg->ModeReg.CONTROL = 0x2000 | (lineData->width << 11);
+
+        if (mode->CrtcHDisplay <= 640) {
+            /* BAD numbers:  0x12 */
+            /* GOOD numbers: 0x10 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0010);
+        } else if (mode->CrtcHDisplay <= 800) {
+            /* BAD numbers:  0x13 */
+            /* GOOD numbers:  0x11 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0011);
+        } else if (mode->CrtcHDisplay <= 1024) {
+            /* BAD numbers:  0x14 */
+            /* GOOD numbers: 0x12  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0012);
+        } else if (mode->CrtcHDisplay <= 1280) {
+            /* BAD numbers:   0x08 0x10 */
+            /* Borderline numbers: 0x12 */
+            /* GOOD numbers:  0x15 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0015);
+        } else {
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0017);
+        }
+    } else if (24 == pScrn->bitsPerPixel) {
+        pCir->chip.lg->ModeReg.FORMAT = 0x2400;
+
+        pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 8)
+                | 0x0080 | (lineData->width << 6);
+        pCir->chip.lg->ModeReg.CONTROL = 0x4000 | (lineData->width << 11);
+
+        if (mode->CrtcHDisplay <= 640) {
+            /* BAD numbers:   */
+            /* GOOD numbers:  0x10 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0010);
+        } else if (mode->CrtcHDisplay <= 800) {
+            /* BAD numbers:   */
+            /* GOOD numbers:   0x11 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0011);
+        } else if (mode->CrtcHDisplay <= 1024) {
+            /* BAD numbers:  0x12 0x13 */
+            /* Borderline numbers:  0x15 */
+            /* GOOD numbers:  0x17 */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0017);
+        } else if (mode->CrtcHDisplay <= 1280) {
+            /* BAD numbers:   */
+            /* GOOD numbers:  0x1E */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x001E);
+        } else {
+            /* BAD numbers:   */
+            /* GOOD numbers:  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0020);
+        }
+    } else if (32 == pScrn->bitsPerPixel) {
+        pCir->chip.lg->ModeReg.FORMAT = 0x3400;
+
+        pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 8)
+                | 0x0080 | (lineData->width << 6);
+        pCir->chip.lg->ModeReg.CONTROL = 0x6000 | (lineData->width << 11);
+
+        if (mode->CrtcHDisplay <= 640) {
+            /* GOOD numbers:  0x0E */
+            /* BAD numbers:  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x000E);
+        } else if (mode->CrtcHDisplay <= 800) {
+            /* GOOD numbers:  0x17 */
+            /* BAD numbers:  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0017);
+        } else if (mode->CrtcHDisplay <= 1024) {
+            /* GOOD numbers: 0x1D */
+            /* OKAY numbers:  0x15 0x14 0x16 0x18 0x19 */
+            /* BAD numbers:  0x0E 0x12 0x13 0x0D */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x001D);
+        } else if (mode->CrtcHDisplay <= 1280) {
+            /* GOOD numbers:  */
+            /* BAD numbers:  */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0022); /* 10 */
+        } else {
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xFFE0)
+                    | (0x0024);
+        }
+    } else {
+        /* ??? What could it be?  Use some sane numbers. */
+    }

-       /* ??? Should these be both ...End or ...Start, not one of each? */
-       pCir->chip.lg->ModeReg.ExtVga[CR1A] = (((mode->CrtcVSyncStart + 1) & 
0x300 ) >> 2)
-                                                               | 
(((mode->CrtcHSyncEnd >> 3) & 0xC0) >> 2);
-
-       width = pScrn->displayWidth * pScrn->bitsPerPixel / 8;
-       if (pScrn->bitsPerPixel == 1)
-               width <<= 2;
-       hwp->ModeReg.CRTC[0x13] = (width + 7) >> 3;
-       /* Offset extension (see CR13) */
-       pCir->chip.lg->ModeReg.ExtVga[CR1B] &= 0xEF;
-       pCir->chip.lg->ModeReg.ExtVga[CR1B] |= (((width + 7) >> 3) & 
0x100)?0x10:0x00;
-       pCir->chip.lg->ModeReg.ExtVga[CR1B] |= 0x22;
-       pCir->chip.lg->ModeReg.ExtVga[CR1D] = (((width + 7) >> 3) & 
0x200)?0x01:0x00;
-
-       /* Set the 28th bit to enable extended modes. */
-       pCir->chip.lg->ModeReg.VSC = 0x10000000;
-
-       /* Overflow register (sure are a lot of overflow bits around...) */
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] = 0x00;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcHTotal>>3 & 
0x0100)?1:0)<<7;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcHDisplay>>3 & 
0x0100)?1:0)<<6;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcHSyncStart>>3 & 
0x0100)?1:0)<<5;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcHSyncStart>>3 & 
0x0100)?1:0)<<4;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcVTotal & 
0x0400)?1:0)<<3;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcVDisplay & 
0x0400)?1:0)<<2;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcVSyncStart & 
0x0400)?1:0)<<1;
-       pCir->chip.lg->ModeReg.ExtVga[CR1E] |= ((mode->CrtcVSyncStart & 
0x0400)?1:0)<<0;
-
-       lineData = &LgLineData[pCir->chip.lg->lineDataIndex];
-
-       pCir->chip.lg->ModeReg.TILE = lineData->tilesPerLine & 0x3F;
-
-       if (8 == pScrn->bitsPerPixel) {
-               pCir->chip.lg->ModeReg.FORMAT = 0x0000;
-
-               pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 
8) | 0x0080
-                                                       | (lineData->width << 
6);
-               pCir->chip.lg->ModeReg.CONTROL = 0x0000 | (lineData->width << 
11);
-
-
-               /* There is an optimal FIFO threshold value (lower 5 bits of 
DTTC)
-                  for every resolution and color depth combination.  We'll hit
-                  the highlights here, and get close for anything that's not
-                  covered. */
-               if (mode->CrtcHDisplay <= 640) {
-                       /* BAD numbers:  0x1E */
-                       /* GOOD numbers:  0x14 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0014);
-               } else if (mode->CrtcHDisplay <= 800) {
-                       /* BAD numbers:  0x16 */
-                       /* GOOD numbers:  0x13 0x14 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0014);
-               } else if (mode->CrtcHDisplay <= 1024) {
-                       /* BAD numbers:  */
-                       /* GOOD numbers: 0x15 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0015);
-               } else if (mode->CrtcHDisplay <= 1280) {
-                       /* BAD numbers:  */
-                       /* GOOD numbers:  0x16 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0016);
-               } else {
-                       /* BAD numbers:  */
-                       /* GOOD numbers:  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0017);
-               }
-       } else if (16 == pScrn->bitsPerPixel) {
-               /* !!! Assume 5-6-5 RGB mode (for now...) */
-               pCir->chip.lg->ModeReg.FORMAT = 0x1400;
-
-               if (pScrn->depth == 15)
-                       pCir->chip.lg->ModeReg.FORMAT = 0x1600;
-
-               pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 
8) | 0x0080
-                                                       | (lineData->width << 
6);
-               pCir->chip.lg->ModeReg.CONTROL = 0x2000 | (lineData->width << 
11);
-
-               if (mode->CrtcHDisplay <= 640) {
-                       /* BAD numbers:  0x12 */
-                       /* GOOD numbers: 0x10 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0010);
-               } else if (mode->CrtcHDisplay <= 800) {
-                       /* BAD numbers:  0x13 */
-                       /* GOOD numbers:  0x11 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0011);
-               } else if (mode->CrtcHDisplay <= 1024) {
-                       /* BAD numbers:  0x14 */
-                       /* GOOD numbers: 0x12  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0012);
-               } else if (mode->CrtcHDisplay <= 1280) {
-                       /* BAD numbers:   0x08 0x10 */
-                       /* Borderline numbers: 0x12 */
-                       /* GOOD numbers:  0x15 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0015);
-               } else {
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0017);
-               }
-       } else if (24 == pScrn->bitsPerPixel) {
-               pCir->chip.lg->ModeReg.FORMAT = 0x2400;
-
-               pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 
8) | 0x0080
-                                                       | (lineData->width << 
6);
-               pCir->chip.lg->ModeReg.CONTROL = 0x4000 | (lineData->width << 
11);
-
-               if (mode->CrtcHDisplay <= 640) {
-                       /* BAD numbers:   */
-                       /* GOOD numbers:  0x10 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0010);
-               } else if (mode->CrtcHDisplay <= 800) {
-                       /* BAD numbers:   */
-                       /* GOOD numbers:   0x11 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0011);
-               } else if (mode->CrtcHDisplay <= 1024) {
-                       /* BAD numbers:  0x12 0x13 */
-                       /* Borderline numbers:  0x15 */
-                       /* GOOD numbers:  0x17 */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0017);
-               } else if (mode->CrtcHDisplay <= 1280) {
-                       /* BAD numbers:   */
-                       /* GOOD numbers:  0x1E */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x001E);
-               } else {
-                       /* BAD numbers:   */
-                       /* GOOD numbers:  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0020);
-               }
-       } else if (32 == pScrn->bitsPerPixel) {
-               pCir->chip.lg->ModeReg.FORMAT = 0x3400;
-
-               pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.TILE << 
8) | 0x0080
-                                                       | (lineData->width << 
6);
-               pCir->chip.lg->ModeReg.CONTROL = 0x6000 | (lineData->width << 
11);
-
-               if (mode->CrtcHDisplay <= 640) {
-                       /* GOOD numbers:  0x0E */
-                       /* BAD numbers:  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x000E);
-               } else if (mode->CrtcHDisplay <= 800) {
-                       /* GOOD numbers:  0x17 */
-                       /* BAD numbers:  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0017);
-               } else if (mode->CrtcHDisplay <= 1024) {
-                       /* GOOD numbers: 0x1D */
-                       /* OKAY numbers:  0x15 0x14 0x16 0x18 0x19 */
-                       /* BAD numbers:  0x0E 0x12 0x13 0x0D */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x001D);
-               } else if (mode->CrtcHDisplay <= 1280) {
-                       /* GOOD numbers:  */
-                       /* BAD numbers:  */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0022); /* 10 */
-               } else {
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xFFE0) | (0x0024);
-               }
-       } else {
-               /* ??? What could it be?  Use some sane numbers. */
-       }
-
-       /* Setup the appropriate memory interleaving */
-       pCir->chip.lg->ModeReg.DTTC |= (pCir->chip.lg->memInterleave << 8);
-       pCir->chip.lg->ModeReg.TILE |= pCir->chip.lg->memInterleave & 0xC0;
-
-       if (PCI_CHIP_GD5465 == pCir->Chipset) {
-               /* The tile control information in the DTTC is also mirrored
-                  elsewhere. */
-               pCir->chip.lg->ModeReg.TileCtrl = pCir->chip.lg->ModeReg.DTTC & 
0xFFC0;
-
-               /* The 5465's DTTC records _fetches_ per line, not
-                  tiles per line.  Fetchs are 128-byte fetches. */
-               if (pCir->chip.lg->ModeReg.DTTC & 0x0040) {
-                       /* Using 256-byte wide tiles.  Double the fetches
-                          per line field. */
-                       pCir->chip.lg->ModeReg.DTTC = 
(pCir->chip.lg->ModeReg.DTTC & 0xC0FF)
-                                                               | 
((pCir->chip.lg->ModeReg.DTTC & 0x3F00) << 1);
-               }
-       }
-
-       /* Program the registers */
-       vgaHWProtect(pScrn, TRUE);
-       hwp->writeMiscOut(hwp, hwp->ModeReg.MiscOutReg);
-
-       clockData = LgSetClock(pCir, hwp, mode->SynthClock);
-       pCir->chip.lg->ModeReg.ExtVga[SR0E] = (clockData >> 8) & 0xFF;
-       pCir->chip.lg->ModeReg.ExtVga[SR1E] = clockData & 0xFF;
-
-       /* Write those registers out to the card. */
-       LgRestoreLgRegs(pScrn, &pCir->chip.lg->ModeReg);
-
-       /* Programme the registers */
-       vgaHWRestore(pScrn, &hwp->ModeReg, VGA_SR_MODE | VGA_SR_CMAP);
-
-       vgaHWProtect(pScrn, FALSE);
-
-       return TRUE;
+    /* Setup the appropriate memory interleaving */
+    pCir->chip.lg->ModeReg.DTTC |= (pCir->chip.lg->memInterleave << 8);
+    pCir->chip.lg->ModeReg.TILE |= pCir->chip.lg->memInterleave & 0xC0;
+
+    if (PCI_CHIP_GD5465 == pCir->Chipset) {
+        /* The tile control information in the DTTC is also mirrored
+         elsewhere. */
+        pCir->chip.lg->ModeReg.TileCtrl = pCir->chip.lg->ModeReg.DTTC & 0xFFC0;
+
+        /* The 5465's DTTC records _fetches_ per line, not
+         tiles per line.  Fetchs are 128-byte fetches. */
+        if (pCir->chip.lg->ModeReg.DTTC & 0x0040) {
+            /* Using 256-byte wide tiles.  Double the fetches
+             per line field. */
+            pCir->chip.lg->ModeReg.DTTC = (pCir->chip.lg->ModeReg.DTTC & 
0xC0FF)
+                    | ((pCir->chip.lg->ModeReg.DTTC & 0x3F00) << 1);
+        }
+    }
+
+    /* Program the registers */
+    vgaHWProtect(pScrn, TRUE);
+    hwp->writeMiscOut(hwp, hwp->ModeReg.MiscOutReg);
+
+    clockData = LgSetClock(pCir, hwp, mode->SynthClock);
+    pCir->chip.lg->ModeReg.ExtVga[SR0E] = (clockData >> 8) & 0xFF;
+    pCir->chip.lg->ModeReg.ExtVga[SR1E] = clockData & 0xFF;
+
+    /* Write those registers out to the card. */
+    LgRestoreLgRegs(pScrn, &pCir->chip.lg->ModeReg);
+
+    /* Programme the registers */
+    vgaHWRestore(pScrn, &hwp->ModeReg, VGA_SR_MODE | VGA_SR_CMAP);
+
+    vgaHWProtect(pScrn, FALSE);
+
+    return TRUE;
 }

-static int LgFindLineData(int displayWidth, int bpp)
-{
-       /* Find the smallest tile-line-pitch such that the total byte pitch
-        is greater than or equal to displayWidth*Bpp. */
-       int i;
-
-       /* Some pitch sizes are duplicates in the table.  BUT, the invariant is
-        that the _first_ time a pitch occurs in the table is always _before_
-        all other pitches greater than it.  Said in another way... if all
-        duplicate entries from the table were removed, then the resulting pitch
-        values are strictly increasing. */
-
-       for (i = 0; LgLineData[i].pitch > 0; i++)
-               if (LgLineData[i].pitch >= displayWidth*bpp>>3)
-                       return i;
-
-       /* Um, uh oh! */
-       return -1;
+static int LgFindLineData(int displayWidth, int bpp) {
+    /* Find the smallest tile-line-pitch such that the total byte pitch
+     is greater than or equal to displayWidth*Bpp. */
+    int i;
+
+    /* Some pitch sizes are duplicates in the table.  BUT, the invariant is
+     that the _first_ time a pitch occurs in the table is always _before_
+     all other pitches greater than it.  Said in another way... if all
+     duplicate entries from the table were removed, then the resulting pitch
+     values are strictly increasing. */
+
+    for (i = 0; LgLineData[i].pitch > 0; i++)
+        if (LgLineData[i].pitch >= displayWidth * bpp >> 3)
+            return i;
+
+    /* Um, uh oh! */
+    return -1;
 }

+static void LgRestoreLgRegs(ScrnInfoPtr pScrn, LgRegPtr lgReg) {
+    CirPtr pCir;
+    vgaHWPtr hwp;
+    CARD8 cr1D;

+    pCir = CIRPTR(pScrn);

+    /* First, VGAish registers. */
+    hwp = VGAHWPTR(pScrn);
+    hwp->writeCrtc(hwp, 0x1A, lgReg->ExtVga[CR1A]);
+    hwp->writeCrtc(hwp, 0x1B, lgReg->ExtVga[CR1B]);
+    cr1D = (hwp->readCrtc(hwp, 0x1D) & ~1) | (lgReg->ExtVga[CR1D] & 0x01);
+    hwp->writeCrtc(hwp, 0x1D, cr1D);
+    hwp->writeCrtc(hwp, 0x1E, lgReg->ExtVga[CR1E]);
+
+    hwp->writeSeq(hwp, 0x07, lgReg->ExtVga[SR07]);
+    hwp->writeSeq(hwp, 0x0E, lgReg->ExtVga[SR0E]);
+    hwp->writeSeq(hwp, 0x12, lgReg->ExtVga[SR12]);
+    hwp->writeSeq(hwp, 0x13, lgReg->ExtVga[SR13]);
+    hwp->writeSeq(hwp, 0x1E, lgReg->ExtVga[SR1E]);
+    memww(0xC0, lgReg->FORMAT);

-static void
-LgRestoreLgRegs(ScrnInfoPtr pScrn, LgRegPtr lgReg)
-{
-       CirPtr pCir;
-       vgaHWPtr hwp;
-       CARD8 cr1D;
-
-       pCir = CIRPTR(pScrn);
-
-       /* First, VGAish registers. */
-       hwp = VGAHWPTR(pScrn);
-       hwp->writeCrtc(hwp, 0x1A, lgReg->ExtVga[CR1A]);
-       hwp->writeCrtc(hwp, 0x1B, lgReg->ExtVga[CR1B]);
-       cr1D = (hwp->readCrtc(hwp, 0x1D) & ~1) | (lgReg->ExtVga[CR1D] & 0x01);
-       hwp->writeCrtc(hwp, 0x1D, cr1D);
-       hwp->writeCrtc(hwp, 0x1E, lgReg->ExtVga[CR1E]);
-
-       hwp->writeSeq(hwp, 0x07, lgReg->ExtVga[SR07]);
-       hwp->writeSeq(hwp, 0x0E, lgReg->ExtVga[SR0E]);
-       hwp->writeSeq(hwp, 0x12, lgReg->ExtVga[SR12]);
-       hwp->writeSeq(hwp, 0x13, lgReg->ExtVga[SR13]);
-       hwp->writeSeq(hwp, 0x1E, lgReg->ExtVga[SR1E]);
-       memww(0xC0, lgReg->FORMAT);
-
     /* Vendor Specific Control is touchy.  Only bit 28 is of concern. */
-       memwl(0x3FC, ((memrl(0x3FC) & ~(1<<28)) | (lgReg->VSC & (1<<28))));
-
-       memww(0xEA, lgReg->DTTC);
-
-       if (pCir->Chipset == PCI_CHIP_GD5465) {
-           memww(0x2C4, lgReg->TileCtrl);
-       }
-
-       memwb(0x407, lgReg->TILE);
-
-       if (pCir->Chipset == PCI_CHIP_GD5465)
-           memwb(0x2C0, lgReg->BCLK);
-       else
-           memwb(0x8C, lgReg->BCLK);
-
-       memww(0x402, lgReg->CONTROL);
+    memwl(0x3FC, ((memrl(0x3FC) & ~(1 << 28)) | (lgReg->VSC & (1 << 28))));
+
+    memww(0xEA, lgReg->DTTC);
+
+    if (pCir->Chipset == PCI_CHIP_GD5465) {
+        memww(0x2C4, lgReg->TileCtrl);
+    }
+
+    memwb(0x407, lgReg->TILE);
+
+    if (pCir->Chipset == PCI_CHIP_GD5465)
+        memwb(0x2C0, lgReg->BCLK);
+    else
+        memwb(0x8C, lgReg->BCLK);
+
+    memww(0x402, lgReg->CONTROL);
 }

 /*
  * Restore the initial (text) mode.
  */
-static void
-LgRestore(ScrnInfoPtr pScrn)
-{
-       vgaHWPtr hwp;
-       vgaRegPtr vgaReg;
-       CirPtr pCir;
-       LgRegPtr lgReg;
+static void LgRestore(ScrnInfoPtr pScrn) {
+    vgaHWPtr hwp;
+    vgaRegPtr vgaReg;
+    CirPtr pCir;
+    LgRegPtr lgReg;

 #ifdef LG_DEBUG
-       ErrorF("LgRestore  pScrn = %p\n", (void *)pScrn);
+    ErrorF("LgRestore  pScrn = %p\n", (void *) pScrn);
 #endif

-       pCir = CIRPTR(pScrn);
-       hwp = VGAHWPTR(pScrn);
-       vgaReg = &hwp->SavedReg;
-       lgReg = &pCir->chip.lg->SavedReg;
+    pCir = CIRPTR(pScrn);
+    hwp = VGAHWPTR(pScrn);
+    vgaReg = &hwp->SavedReg;
+    lgReg = &pCir->chip.lg->SavedReg;

-       vgaHWProtect(pScrn, TRUE);
+    vgaHWProtect(pScrn, TRUE);

-       LgRestoreLgRegs(pScrn, lgReg);
+    LgRestoreLgRegs(pScrn, lgReg);

-       vgaHWRestore(pScrn, vgaReg, VGA_SR_ALL);
-       vgaHWProtect(pScrn, FALSE);
+    vgaHWRestore(pScrn, vgaReg, VGA_SR_ALL);
+    vgaHWProtect(pScrn, FALSE);
 }

 /* Mandatory */

 /* This gets called at the start of each server generation */

-Bool
-LgScreenInit(SCREEN_INIT_ARGS_DECL)
-{
-       /* The vgaHW references will disappear one day */
-       ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-       vgaHWPtr hwp;
-       CirPtr pCir;
-       int i, ret;
-       VisualPtr visual;
-       int displayWidth,width,height;
-       unsigned char * FbBase = NULL;
+Bool LgScreenInit(SCREEN_INIT_ARGS_DECL) {
+    /* The vgaHW references will disappear one day */
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+    vgaHWPtr hwp;
+    CirPtr pCir;
+    int i, ret;
+    VisualPtr visual;
+    int displayWidth, width, height;
+    unsigned char * FbBase = NULL;

 #ifdef LG_DEBUG
-       ErrorF("LgScreenInit\n");
+    ErrorF("LgScreenInit\n");
 #endif

-       hwp = VGAHWPTR(pScrn);
+    hwp = VGAHWPTR(pScrn);

-       hwp->MapSize = 0x10000;         /* Standard 64k VGA window */
+    hwp->MapSize = 0x10000; /* Standard 64k VGA window */

-       pCir = CIRPTR(pScrn);
+    pCir = CIRPTR(pScrn);

-       /* Map the VGA memory and get the VGA IO base */
-       if (!vgaHWMapMem(pScrn))
-               return FALSE;
+    /* Map the VGA memory and get the VGA IO base */
+    if (!vgaHWMapMem(pScrn))
+        return FALSE;

-       /* Map the CIR memory and MMIO areas */
-       if (!CirMapMem(pCir, pScrn->scrnIndex))
-               return FALSE;
+    /* Map the CIR memory and MMIO areas */
+    if (!CirMapMem(pCir, pScrn->scrnIndex))
+        return FALSE;
 #ifdef EXPERIMENTAL
-       lg_vgaHWSetMmioFunc(hwp, pCir->IOBase);
+    lg_vgaHWSetMmioFunc(hwp, pCir->IOBase);
 #endif
-       vgaHWGetIOBase(hwp);
+    vgaHWGetIOBase(hwp);

-       /* Save the current state */
-       LgSave(pScrn);
+    /* Save the current state */
+    LgSave(pScrn);

-       /* Initialise the first mode */
-       if (!LgModeInit(pScrn, pScrn->currentMode))
-               return FALSE;
+    /* Initialise the first mode */
+    if (!LgModeInit(pScrn, pScrn->currentMode))
+        return FALSE;

-       /* Make things beautiful */
-       LgSaveScreen(pScreen, SCREEN_SAVER_ON);
+    /* Make things beautiful */
+    LgSaveScreen(pScreen, SCREEN_SAVER_ON);

-       /* Set the viewport */
-       LgAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
+    /* Set the viewport */
+    LgAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));

-       /*
-        * The next step is to setup the screen's visuals, and initialise the
-        * framebuffer code.  In cases where the framebuffer's default
-        * choices for things like visual layouts and bits per RGB are OK,
-        * this may be as simple as calling the framebuffer's ScreenInit()
-        * function.  If not, the visuals will need to be setup before calling
-        * a fb ScreenInit() function and fixed up after.
-        *
-        */
+    /*
+     * The next step is to setup the screen's visuals, and initialise the
+     * framebuffer code.  In cases where the framebuffer's default
+     * choices for things like visual layouts and bits per RGB are OK,
+     * this may be as simple as calling the framebuffer's ScreenInit()
+     * function.  If not, the visuals will need to be setup before calling
+     * a fb ScreenInit() function and fixed up after.
+     *
+     */

-       /*
-        * Reset the visual list.
-        */
-       miClearVisualTypes();
+    /*
+     * Reset the visual list.
+     */
+    miClearVisualTypes();

-       /* Setup the visuals we support. */
+    /* Setup the visuals we support. */

-       if (!miSetVisualTypes(pScrn->depth,
-                             miGetDefaultVisualMask(pScrn->depth),
-                             pScrn->rgbBits, pScrn->defaultVisual))
-         return FALSE;
+    if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth),
+            pScrn->rgbBits, pScrn->defaultVisual))
+        return FALSE;

-       miSetPixmapDepths ();
+    miSetPixmapDepths();

 #ifdef LG_DEBUG
-       ErrorF("LgScreenInit after miSetVisualTypes\n");
+    ErrorF("LgScreenInit after miSetVisualTypes\n");
 #endif
-       displayWidth = pScrn->displayWidth;
-       if (pCir->rotate) {
-           height = pScrn->virtualX;
-           width = pScrn->virtualY;
-       } else {
-           width = pScrn->virtualX;
-           height = pScrn->virtualY;
-       }
-
-       if(pCir->shadowFB) {
-           pCir->ShadowPitch = BitmapBytePad(pScrn->bitsPerPixel * width);
-           pCir->ShadowPtr = malloc(pCir->ShadowPitch * height);
-           displayWidth = pCir->ShadowPitch / (pScrn->bitsPerPixel >> 3);
-           FbBase = pCir->ShadowPtr;
-       } else {
-           pCir->ShadowPtr = NULL;
-           FbBase = pCir->FbBase;
-       }
-
-       /*
-        * Call the framebuffer layer's ScreenInit function, and fill in other
-        * pScreen fields.
-        */
-       switch (pScrn->bitsPerPixel) {
-       case 8:
-       case 16:
-       case 24:
-       case 32:
-           ret = fbScreenInit(pScreen, FbBase,
-                               width,height,
-                               pScrn->xDpi, pScrn->yDpi,
-                               displayWidth,pScrn->bitsPerPixel);
-           break;
-       default:
-               xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                          "X11: Internal error: invalid bpp (%d) in 
LgScreenInit\n",
-                          pScrn->bitsPerPixel);
-               ret = FALSE;
-               break;
-       }
-       if (!ret)
-               return FALSE;
+    displayWidth = pScrn->displayWidth;
+    if (pCir->rotate) {
+        height = pScrn->virtualX;
+        width = pScrn->virtualY;
+    } else {
+        width = pScrn->virtualX;
+        height = pScrn->virtualY;
+    }
+
+    if (pCir->shadowFB) {
+        pCir->ShadowPitch = BitmapBytePad(pScrn->bitsPerPixel * width);
+        pCir->ShadowPtr = malloc(pCir->ShadowPitch * height);
+        displayWidth = pCir->ShadowPitch / (pScrn->bitsPerPixel >> 3);
+        FbBase = pCir->ShadowPtr;
+    } else {
+        pCir->ShadowPtr = NULL;
+        FbBase = pCir->FbBase;
+    }
+
+    /*
+     * Call the framebuffer layer's ScreenInit function, and fill in other
+     * pScreen fields.
+     */
+    switch (pScrn->bitsPerPixel) {
+    case 8:
+    case 16:
+    case 24:
+    case 32:
+        ret = fbScreenInit(pScreen, FbBase, width, height, pScrn->xDpi,
+                pScrn->yDpi, displayWidth, pScrn->bitsPerPixel);
+        break;
+    default:
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                "X11: Internal error: invalid bpp (%d) in LgScreenInit\n",
+                pScrn->bitsPerPixel);
+        ret = FALSE;
+        break;
+    }
+    if (!ret)
+        return FALSE;

 #ifdef LG_DEBUG
-       ErrorF("LgScreenInit after depth dependent init\n");
+    ErrorF("LgScreenInit after depth dependent init\n");
 #endif

-       /* Override the default mask/offset settings */
-       if (pScrn->bitsPerPixel > 8) {
-               for (i = 0; i < pScreen->numVisuals; i++) {
-                       visual = &pScreen->visuals[i];
-                       if ((visual->class | DynamicClass) == DirectColor) {
-                               visual->offsetRed = pScrn->offset.red;
-                               visual->offsetGreen = pScrn->offset.green;
-                               visual->offsetBlue = pScrn->offset.blue;
-                               visual->redMask = pScrn->mask.red;
-                               visual->greenMask = pScrn->mask.green;
-                               visual->blueMask = pScrn->mask.blue;
-                       }
-               }
-       }
-
-       /* must be after RGB ordering fixed */
-
-       fbPictureInit(pScreen, 0, 0);
-
-       /*
-        * Set initial black & white colourmap indices.
-        */
-       xf86SetBlackWhitePixels(pScreen);
+    /* Override the default mask/offset settings */
+    if (pScrn->bitsPerPixel > 8) {
+        for (i = 0; i < pScreen->numVisuals; i++) {
+            visual = &pScreen->visuals[i];
+            if ((visual->class | DynamicClass) == DirectColor) {
+                visual->offsetRed = pScrn->offset.red;
+                visual->offsetGreen = pScrn->offset.green;
+                visual->offsetBlue = pScrn->offset.blue;
+                visual->redMask = pScrn->mask.red;
+                visual->greenMask = pScrn->mask.green;
+                visual->blueMask = pScrn->mask.blue;
+            }
+        }
+    }
+
+    /* must be after RGB ordering fixed */
+
+    fbPictureInit(pScreen, 0, 0);
+
+    /*
+     * Set initial black & white colourmap indices.
+     */
+    xf86SetBlackWhitePixels(pScreen);

 #ifdef HAVE_XAA_H
-       if (!pCir->NoAccel) { /* Initialize XAA functions */
-               if (!LgXAAInit(pScreen))
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not 
initialize XAA\n");
-       }
+    if (!pCir->NoAccel) { /* Initialize XAA functions */
+        if (!LgXAAInit(pScreen))
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not initialize XAA\n");
+    }
 #endif
 #if 1
-       pCir->DGAModeInit = LgModeInit;
-       if (!CirDGAInit(pScreen))
-         xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                    "DGA initialization failed\n");
+    pCir->DGAModeInit = LgModeInit;
+    if (!CirDGAInit(pScreen))
+        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "DGA initialization failed\n");
 #endif
-        xf86SetSilkenMouse(pScreen);
+    xf86SetSilkenMouse(pScreen);

-       /* Initialise cursor functions */
-       miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
+    /* Initialise cursor functions */
+    miDCInitialize(pScreen, xf86GetPointerScreenFuncs());

-       if (pCir->HWCursor) { /* Initialize HW cursor layer */
-               if (!LgHWCursorInit(pScreen))
-                       xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                               "Hardware cursor initialization failed\n");
-       }
+    if (pCir->HWCursor) { /* Initialize HW cursor layer */
+        if (!LgHWCursorInit(pScreen))
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "Hardware cursor initialization failed\n");
+    }

-       /* Initialise default colourmap */
-       if (!miCreateDefColormap(pScreen))
-               return FALSE;
+    /* Initialise default colourmap */
+    if (!miCreateDefColormap(pScreen))
+        return FALSE;

-       if (pScrn->bitsPerPixel > 1 && pScrn->bitsPerPixel <= 8)
-               vgaHWHandleColormaps(pScreen);
+    if (pScrn->bitsPerPixel > 1 && pScrn->bitsPerPixel <= 8)
+        vgaHWHandleColormaps(pScreen);

-       xf86DPMSInit(pScreen, LgDisplayPowerManagementSet, 0);
+    xf86DPMSInit(pScreen, LgDisplayPowerManagementSet, 0);

-       pScrn->memPhysBase = pCir->FbAddress;
-       pScrn->fbOffset = 0;
+    pScrn->memPhysBase = pCir->FbAddress;
+    pScrn->fbOffset = 0;

-       {
-               XF86VideoAdaptorPtr *ptr;
-               int n;
+    {
+        XF86VideoAdaptorPtr *ptr;
+        int n;

-               n = xf86XVListGenericAdaptors(pScrn,&ptr);
-               if (n)
-                       xf86XVScreenInit(pScreen, ptr, n);
-       }
+        n = xf86XVListGenericAdaptors(pScrn, &ptr);
+        if (n)
+            xf86XVScreenInit(pScreen, ptr, n);
+    }

-       /*
-        * Wrap the CloseScreen vector and set SaveScreen.
-        */
-       pScreen->SaveScreen = LgSaveScreen;
-       pCir->CloseScreen = pScreen->CloseScreen;
-       pScreen->CloseScreen = LgCloseScreen;
+    /*
+     * Wrap the CloseScreen vector and set SaveScreen.
+     */
+    pScreen->SaveScreen = LgSaveScreen;
+    pCir->CloseScreen = pScreen->CloseScreen;
+    pScreen->CloseScreen = LgCloseScreen;

-       /* Report any unused options (only for the first generation) */
-       if (serverGeneration == 1)
-               xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
+    /* Report any unused options (only for the first generation) */
+    if (serverGeneration == 1)
+        xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);

-       /* Done */
-       return TRUE;
+    /* Done */
+    return TRUE;
 }

-
 /* Usually mandatory */
-Bool
-LgSwitchMode(SWITCH_MODE_ARGS_DECL)
-{
-       SCRN_INFO_PTR(arg);
-       return LgModeInit(pScrn, mode);
+Bool LgSwitchMode(SWITCH_MODE_ARGS_DECL) {
+    SCRN_INFO_PTR(arg);
+    return LgModeInit(pScrn, mode);
 }

-#define ROUND_DOWN(x, mod)     (((x) / (mod)) * (mod))
-#define ROUND_UP(x, mod)       ((((x) + (mod) - 1) / (mod)) * (mod))
+#define ROUND_DOWN(x, mod) (((x) / (mod)) * (mod))
+#define ROUND_UP(x, mod) ((((x) + (mod) - 1) / (mod)) * (mod))

 /*
  * This function is used to initialize the Start Address - the first
  * displayed location in the video memory.
  */
 /* Usually mandatory */
-void
-LgAdjustFrame(ADJUST_FRAME_ARGS_DECL)
-{
-       SCRN_INFO_PTR(arg);
-       int Base, tmp;
-       CirPtr pCir = CIRPTR(pScrn);
-       vgaHWPtr hwp = VGAHWPTR(pScrn);
-       int cursorX, cursorY;
-       int middleX, middleY;
-       const LgLineDataPtr lineData = 
&LgLineData[pCir->chip.lg->lineDataIndex];
-       const int viewportXRes =
-               (PCI_CHIP_GD5465 == pCir->Chipset) ? 
(24==pScrn->bitsPerPixel?24:1) :
-                       (lineData->width?256:128) /
-                       (24==pScrn->bitsPerPixel?1:(pScrn->bitsPerPixel>>3));
-       const int viewportYRes =
-               (PCI_CHIP_GD5465 == pCir->Chipset) ? 1 : 
(24==pScrn->bitsPerPixel?3:1);
-
-       /* Where's the pointer? */
-       miPointerGetPosition(inputInfo.pointer, &cursorX, &cursorY);
-
-       /* Where's the middle of the screen?  We want to eventually know
-          which side of the screen the pointer is on. */
-       middleX = (pScrn->frameX1 + pScrn->frameX0) / 2;
-       middleY = (pScrn->frameY1 + pScrn->frameY0) / 2;
-
-       if (cursorX < middleX) {
-               /* Pointer is on left side of screen.  Round the frame value 
down. */
-               pScrn->frameX0 = ROUND_DOWN(pScrn->frameX0, viewportXRes);
-       } else {
-               /* Pointer is on right side of screen.  Round the frame value
-                  up.  A side effect of this rounding up is that we might 
expose
-                  a part of the screen that's actually on the far /left/ of the
-                  frame buffer.  That's because, although the virtual desktop 
might
-                  be an integral number of tiles, the display might not.  We'll
-                  just live with this artifact. */
-               pScrn->frameX0 = ROUND_UP(pScrn->frameX0, viewportXRes);
-       }
-       pScrn->frameX1 = pScrn->frameX0 + pScrn->currentMode->HDisplay - 1;
-
-       if (cursorY < middleY) {
-               pScrn->frameY0 = ROUND_DOWN(pScrn->frameY0, viewportYRes);
-       } else {
-               pScrn->frameY0 = ROUND_UP(pScrn->frameY0, viewportYRes);
-       }
-       pScrn->frameY1 = pScrn->frameY0 + pScrn->currentMode->VDisplay - 1;
-
-
-       if (x != pScrn->frameX0 || y != pScrn->frameY0) {
-               /* !!! */
-               /* We moved the frame from where xf86SetViewport() placed it.
-                  If we're using a SW cursor, that's okay -- the pointer 
exists in
-                  the framebuffer, and those bits are still all aligned.  But
-                  if we're using a HW cursor, then we need to re-align the 
pointer.
-                  Call SetCursorPosition() with the appropriate new pointer
-                  values, adjusted to be wrt the new frame. */
-
-               x = pScrn->frameX0;
-               y = pScrn->frameY0;
-       }
-
-       /* ??? Will this work for 1bpp?  */
-       Base = (y * lineData->pitch + (x*pScrn->bitsPerPixel/8)) / 4;
-
-       if ((Base & ~0x000FFFFF) != 0) {
-               /* ??? */
-               ErrorF("X11: Internal error: LgAdjustFrame: cannot handle 
overflow\n");
-               return;
-       }
-
-       hwp->writeCrtc(hwp, 0x0C, (Base >> 8) & 0xFF);
-       hwp->writeCrtc(hwp, 0x0D, Base & 0xFF);
-       tmp = hwp->readCrtc(hwp, 0x1B) & 0xF2;
-       tmp |= (Base >> 16) & 0x01;
-       tmp |= (Base >> 15) & 0x0C;
-       hwp->writeCrtc(hwp, 0x1B, tmp);
-       tmp = hwp->readCrtc(hwp, 0x1D) & 0xE7;
-       tmp |= (Base >> 16) & 0x18;
-       hwp->writeCrtc(hwp, 0x1D, tmp);
+void LgAdjustFrame(ADJUST_FRAME_ARGS_DECL) {
+    SCRN_INFO_PTR(arg);
+    int Base, tmp;
+    CirPtr pCir = CIRPTR(pScrn);
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    int cursorX, cursorY;
+    int middleX, middleY;
+    const LgLineDataPtr lineData = &LgLineData[pCir->chip.lg->lineDataIndex];
+    const int viewportXRes =
+            (PCI_CHIP_GD5465 == pCir->Chipset) ?
+                    (24 == pScrn->bitsPerPixel ? 24 : 1) :
+                    (lineData->width ? 256 : 128)
+                            / (24 == pScrn->bitsPerPixel ?
+                                    1 : (pScrn->bitsPerPixel >> 3));
+    const int viewportYRes =
+            (PCI_CHIP_GD5465 == pCir->Chipset) ?
+                    1 : (24 == pScrn->bitsPerPixel ? 3 : 1);
+
+    /* Where's the pointer? */
+    miPointerGetPosition(inputInfo.pointer, &cursorX, &cursorY);
+
+    /* Where's the middle of the screen?  We want to eventually know
+     which side of the screen the pointer is on. */
+    middleX = (pScrn->frameX1 + pScrn->frameX0) / 2;
+    middleY = (pScrn->frameY1 + pScrn->frameY0) / 2;
+
+    if (cursorX < middleX) {
+        /* Pointer is on left side of screen.  Round the frame value down. */
+        pScrn->frameX0 = ROUND_DOWN(pScrn->frameX0, viewportXRes);
+    } else {
+        /* Pointer is on right side of screen.  Round the frame value
+         up.  A side effect of this rounding up is that we might expose
+         a part of the screen that's actually on the far /left/ of the
+         frame buffer.  That's because, although the virtual desktop might
+         be an integral number of tiles, the display might not.  We'll
+         just live with this artifact. */
+        pScrn->frameX0 = ROUND_UP(pScrn->frameX0, viewportXRes);
+    }
+    pScrn->frameX1 = pScrn->frameX0 + pScrn->currentMode->HDisplay - 1;
+
+    if (cursorY < middleY) {
+        pScrn->frameY0 = ROUND_DOWN(pScrn->frameY0, viewportYRes);
+    } else {
+        pScrn->frameY0 = ROUND_UP(pScrn->frameY0, viewportYRes);
+    }
+    pScrn->frameY1 = pScrn->frameY0 + pScrn->currentMode->VDisplay - 1;
+
+    if (x != pScrn->frameX0 || y != pScrn->frameY0) {
+        /* !!! */
+        /* We moved the frame from where xf86SetViewport() placed it.
+         If we're using a SW cursor, that's okay -- the pointer exists in
+         the framebuffer, and those bits are still all aligned.  But
+         if we're using a HW cursor, then we need to re-align the pointer.
+         Call SetCursorPosition() with the appropriate new pointer
+         values, adjusted to be wrt the new frame. */
+
+        x = pScrn->frameX0;
+        y = pScrn->frameY0;
+    }
+
+    /* ??? Will this work for 1bpp?  */
+    Base = (y * lineData->pitch + (x * pScrn->bitsPerPixel / 8)) / 4;
+
+    if ((Base & ~0x000FFFFF) != 0) {
+        /* ??? */
+        ErrorF("X11: Internal error: LgAdjustFrame: cannot handle overflow\n");
+        return;
+    }
+
+    hwp->writeCrtc(hwp, 0x0C, (Base >> 8) & 0xFF);
+    hwp->writeCrtc(hwp, 0x0D, Base & 0xFF);
+    tmp = hwp->readCrtc(hwp, 0x1B) & 0xF2;
+    tmp |= (Base >> 16) & 0x01;
+    tmp |= (Base >> 15) & 0x0C;
+    hwp->writeCrtc(hwp, 0x1B, tmp);
+    tmp = hwp->readCrtc(hwp, 0x1D) & 0xE7;
+    tmp |= (Base >> 16) & 0x18;
+    hwp->writeCrtc(hwp, 0x1D, tmp);
 }

 /*
@@ -1530,25 +1522,22 @@ LgAdjustFrame(ADJUST_FRAME_ARGS_DECL)
  */

 /* Mandatory */
-Bool
-LgEnterVT(VT_FUNC_ARGS_DECL)
-{
-       SCRN_INFO_PTR(arg);
-       CirPtr pCir = CIRPTR(pScrn);
+Bool LgEnterVT(VT_FUNC_ARGS_DECL) {
+    SCRN_INFO_PTR(arg);
+    CirPtr pCir = CIRPTR(pScrn);
 #ifdef LG_DEBUG
-       ErrorF("LgEnterVT\n");
+    ErrorF("LgEnterVT\n");
 #endif

-       /* XXX Shouldn't this be in LeaveVT? */
-       /* Disable HW cursor */
-       if (pCir->HWCursor)
-               LgHideCursor(pScrn);
+    /* XXX Shouldn't this be in LeaveVT? */
+    /* Disable HW cursor */
+    if (pCir->HWCursor)
+        LgHideCursor(pScrn);

-       /* Should we re-save the text mode on each VT enter? */
-       return LgModeInit(pScrn, pScrn->currentMode);
+    /* Should we re-save the text mode on each VT enter? */
+    return LgModeInit(pScrn, pScrn->currentMode);
 }

-
 /*
  * This is called when VT switching away from the X server.  Its job is
  * to restore the previous (text) mode.
@@ -1557,26 +1546,23 @@ LgEnterVT(VT_FUNC_ARGS_DECL)
  */

 /* Mandatory */
-void
-LgLeaveVT(VT_FUNC_ARGS_DECL)
-{
-       SCRN_INFO_PTR(arg);
-       vgaHWPtr hwp = VGAHWPTR(pScrn);
-       CirPtr pCir = CIRPTR(pScrn);
+void LgLeaveVT(VT_FUNC_ARGS_DECL) {
+    SCRN_INFO_PTR(arg);
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    CirPtr pCir = CIRPTR(pScrn);
 #ifdef LG_DEBUG
-       ErrorF("LgLeaveVT\n");
+    ErrorF("LgLeaveVT\n");
 #endif

-       /* XXX Shouldn't this be in EnterVT? */
-       /* Enable HW cursor */
-       if (pCir->HWCursor)
-               LgShowCursor(pScrn);
+    /* XXX Shouldn't this be in EnterVT? */
+    /* Enable HW cursor */
+    if (pCir->HWCursor)
+        LgShowCursor(pScrn);

-       LgRestore(pScrn);
-       vgaHWLock(hwp);
+    LgRestore(pScrn);
+    vgaHWLock(hwp);
 }

-
 /*
  * This is called at the end of each server generation.  It restores the
  * original (text) mode.  It should also unmap the video memory, and free
@@ -1585,138 +1571,124 @@ LgLeaveVT(VT_FUNC_ARGS_DECL)
  */

 /* Mandatory */
-static Bool
-LgCloseScreen(CLOSE_SCREEN_ARGS_DECL)
-{
-       ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-       vgaHWPtr hwp = VGAHWPTR(pScrn);
-       CirPtr pCir = CIRPTR(pScrn);
+static Bool LgCloseScreen(CLOSE_SCREEN_ARGS_DECL) {
+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    CirPtr pCir = CIRPTR(pScrn);

-       if(pScrn->vtSema) {
-       LgRestore(pScrn);
-       if (pCir->HWCursor)
-           LgHideCursor(pScrn);
+    if (pScrn->vtSema) {
+        LgRestore(pScrn);
+        if (pCir->HWCursor)
+            LgHideCursor(pScrn);

-       vgaHWLock(hwp);
-
-       CirUnmapMem(pCir, pScrn->scrnIndex);
-       }
+        vgaHWLock(hwp);
+
+        CirUnmapMem(pCir, pScrn->scrnIndex);
+    }

 #ifdef HAVE_XAA_H
-       if (pCir->AccelInfoRec)
-               XAADestroyInfoRec(pCir->AccelInfoRec);
-       pCir->AccelInfoRec = NULL;
+    if (pCir->AccelInfoRec)
+    XAADestroyInfoRec(pCir->AccelInfoRec);
+    pCir->AccelInfoRec = NULL;
 #endif

-       if (pCir->CursorInfoRec)
-               xf86DestroyCursorInfoRec(pCir->CursorInfoRec);
-       pCir->CursorInfoRec = NULL;
-       if (pCir->DGAModes)
-               free(pCir->DGAModes);
-       pCir->DGAnumModes = 0;
-       pCir->DGAModes = NULL;
+    if (pCir->CursorInfoRec)
+        xf86DestroyCursorInfoRec(pCir->CursorInfoRec);
+    pCir->CursorInfoRec = NULL;
+    if (pCir->DGAModes)
+        free(pCir->DGAModes);
+    pCir->DGAnumModes = 0;
+    pCir->DGAModes = NULL;

-       pScrn->vtSema = FALSE;
+    pScrn->vtSema = FALSE;

-       pScreen->CloseScreen = pCir->CloseScreen;
-       return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
+    pScreen->CloseScreen = pCir->CloseScreen;
+    return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
 }

-
 /* Free up any persistent data structures */

 /* Optional */
-void
-LgFreeScreen(FREE_SCREEN_ARGS_DECL)
-{
-       SCRN_INFO_PTR(arg);
+void LgFreeScreen(FREE_SCREEN_ARGS_DECL) {
+    SCRN_INFO_PTR(arg);
 #ifdef LG_DEBUG
-       ErrorF("LgFreeScreen\n");
+    ErrorF("LgFreeScreen\n");
 #endif
-       /*
-        * This only gets called when a screen is being deleted.  It does not
-        * get called routinely at the end of a server generation.
-        */
-       if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
-               vgaHWFreeHWRec(pScrn);
-       LgFreeRec(pScrn);
+    /*
+     * This only gets called when a screen is being deleted.  It does not
+     * get called routinely at the end of a server generation.
+     */
+    if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
+        vgaHWFreeHWRec(pScrn);
+    LgFreeRec(pScrn);
 }

-
 /* Checks if a mode is suitable for the selected chipset. */

 /* Optional */
-ModeStatus
-LgValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
-{
-       int lace;
-
-       lace = 1 + ((mode->Flags & V_INTERLACE) != 0);
-
-       if ((mode->CrtcHDisplay <= 2048) &&
-               (mode->CrtcHSyncStart <= 4096) &&
-               (mode->CrtcHSyncEnd <= 4096) &&
-               (mode->CrtcHTotal <= 4096) &&
-               (mode->CrtcVDisplay <= 2048 * lace) &&
-               (mode->CrtcVSyncStart <= 4096 * lace) &&
-               (mode->CrtcVSyncEnd <= 4096 * lace) &&
-               (mode->CrtcVTotal <= 4096 * lace)) {
-               return(MODE_OK);
-       }
-       return(MODE_BAD);
+ModeStatus LgValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose,
+        int flags) {
+    int lace;
+
+    lace = 1 + ((mode->Flags & V_INTERLACE) != 0);
+
+    if ((mode->CrtcHDisplay <= 2048) && (mode->CrtcHSyncStart <= 4096)
+            && (mode->CrtcHSyncEnd <= 4096) && (mode->CrtcHTotal <= 4096)
+            && (mode->CrtcVDisplay <= 2048 * lace)
+            && (mode->CrtcVSyncStart <= 4096 * lace)
+            && (mode->CrtcVSyncEnd <= 4096 * lace)
+            && (mode->CrtcVTotal <= 4096 * lace)) {
+        return (MODE_OK);
+    }
+    return (MODE_BAD);
 }

-
 /* Do screen blanking */

 /* Mandatory */
-static Bool
-LgSaveScreen(ScreenPtr pScreen, int mode)
-{
-       CirPtr pCir = CIRPTR(xf86ScreenToScrn(pScreen));
-       ScrnInfoPtr pScrn = NULL;
-       Bool unblank;
-
-       unblank = xf86IsUnblank(mode);
-
-       if (pScreen != NULL)
-           pScrn = xf86ScreenToScrn(pScreen);
-
-       if (pScrn != NULL && pScrn->vtSema) {
-           if (unblank)
-               /* Power up the palette DAC */
-               memwb(0xB0,memrb(0xB0) & 0x7F);
-           else
-               /* Power down the palette DAC */
-               memwb(0xB0,memrb(0xB0) | 0x80);
-       }
-
-       return vgaHWSaveScreen(pScreen, mode);
+static Bool LgSaveScreen(ScreenPtr pScreen, int mode) {
+    CirPtr pCir = CIRPTR(xf86ScreenToScrn(pScreen));
+    ScrnInfoPtr pScrn = NULL;
+    Bool unblank;
+
+    unblank = xf86IsUnblank(mode);
+
+    if (pScreen != NULL)
+        pScrn = xf86ScreenToScrn(pScreen);
+
+    if (pScrn != NULL && pScrn->vtSema) {
+        if (unblank)
+            /* Power up the palette DAC */
+            memwb(0xB0, memrb(0xB0) & 0x7F);
+        else
+            /* Power down the palette DAC */
+            memwb(0xB0, memrb(0xB0) | 0x80);
+    }
+
+    return vgaHWSaveScreen(pScreen, mode);
 }

-static CARD16
-LgSetClock(CirPtr pCir, vgaHWPtr hwp, int freq)
-{
-       int ffreq, num, den;
-       CARD8 tmp;
+static CARD16 LgSetClock(CirPtr pCir, vgaHWPtr hwp, int freq) {
+    int ffreq, num, den;
+    CARD8 tmp;

-       ErrorF("LgSetClock freq=%d.%03dMHz\n", freq / 1000, freq % 1000);
+    ErrorF("LgSetClock freq=%d.%03dMHz\n", freq / 1000, freq % 1000);

-       ffreq = freq;
-       if (!CirrusFindClock(&ffreq, pCir->MaxClock, &num, &den))
-               return 0;
+    ffreq = freq;
+    if (!CirrusFindClock(&ffreq, pCir->MaxClock, &num, &den))
+        return 0;

-       ErrorF("LgSetClock: nom=%x den=%x ffreq=%d.%03dMHz\n",
-               num, den, ffreq / 1000, ffreq % 1000);
+    ErrorF("LgSetClock: nom=%x den=%x ffreq=%d.%03dMHz\n", num, den,
+            ffreq / 1000, ffreq % 1000);

-       /* Set VCLK3. */
-       /* The numerator and denominator registers are switched
-          around in the Laguna chips. */
-       tmp = hwp->readSeq(hwp, 0x0E);
-       hwp->writeSeq(hwp, 0x0E, (tmp & 0x80) | den);
-       hwp->writeSeq(hwp, 0x1E, num);
+    /* Set VCLK3. */
+    /* The numerator and denominator registers are switched
+     around in the Laguna chips. */
+    tmp = hwp->readSeq(hwp, 0x0E);
+    hwp->writeSeq(hwp, 0x0E, (tmp & 0x80) | den);
+    hwp->writeSeq(hwp, 0x1E, num);

-       return (den << 8) | num;
+    return (den << 8) | num;
 }

 /*
@@ -1724,70 +1696,62 @@ LgSetClock(CirPtr pCir, vgaHWPtr hwp, int freq)
  *
  * Sets VESA Display Power Management Signaling (DPMS) Mode.
  */
-static void
-LgDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode,
-                                                       int flags)
-{
-       unsigned char sr01, cr1a;
-       vgaHWPtr hwp;
+static void LgDisplayPowerManagementSet(ScrnInfoPtr pScrn,
+        int PowerManagementMode, int flags) {
+    unsigned char sr01, cr1a;
+    vgaHWPtr hwp;

 #ifdef LG_DEBUG
-       ErrorF("LgDisplayPowerManagementSet: %d\n", PowerManagementMode);
+    ErrorF("LgDisplayPowerManagementSet: %d\n", PowerManagementMode);
 #endif

-       hwp = VGAHWPTR(pScrn);
-
-       switch (PowerManagementMode) {
-       case DPMSModeOn:
-               /* Screen: On; HSync: On, VSync: On */
-               sr01 = 0x00;
-               cr1a = 0x00;
-               break;
-       case DPMSModeStandby:
-               /* Screen: Off; HSync: Off, VSync: On */
-               sr01 = 0x20;
-               cr1a = 0x08;
-               break;
-       case DPMSModeSuspend:
-               /* Screen: Off; HSync: On, VSync: Off */
-               sr01 = 0x20;
-               cr1a = 0x04;
-               break;
-       case DPMSModeOff:
-               /* Screen: Off; HSync: Off, VSync: Off */
-               sr01 = 0x20;
-               cr1a = 0x0c;
-               break;
-       default:
-               return;
-       }
-
-       sr01 |= hwp->readSeq(hwp, 0x01) & ~0x20;
-       hwp->writeSeq(hwp, 0x01, sr01);
-       cr1a |= hwp->readCrtc(hwp, 0x1A) & ~0x0C;
-       hwp->writeCrtc(hwp, 0x1A, cr1a);
+    hwp = VGAHWPTR(pScrn);
+
+    switch (PowerManagementMode) {
+    case DPMSModeOn:
+        /* Screen: On; HSync: On, VSync: On */
+        sr01 = 0x00;
+        cr1a = 0x00;
+        break;
+    case DPMSModeStandby:
+        /* Screen: Off; HSync: Off, VSync: On */
+        sr01 = 0x20;
+        cr1a = 0x08;
+        break;
+    case DPMSModeSuspend:
+        /* Screen: Off; HSync: On, VSync: Off */
+        sr01 = 0x20;
+        cr1a = 0x04;
+        break;
+    case DPMSModeOff:
+        /* Screen: Off; HSync: Off, VSync: Off */
+        sr01 = 0x20;
+        cr1a = 0x0c;
+        break;
+    default:
+        return;
+    }
+
+    sr01 |= hwp->readSeq(hwp, 0x01) & ~0x20;
+    hwp->writeSeq(hwp, 0x01, sr01);
+    cr1a |= hwp->readCrtc(hwp, 0x1A) & ~0x0C;
+    hwp->writeCrtc(hwp, 0x1A, cr1a);
 }

 #define minb(p) MMIO_IN8(hwp->MMIOBase, (p))
 #define moutb(p,v) MMIO_OUT8(hwp->MMIOBase, (p),(v))

-static void
-mmioWriteCrtc(vgaHWPtr hwp, CARD8 index, CARD8 value)
-{
-  moutb(index << 2, value);
+static void mmioWriteCrtc(vgaHWPtr hwp, CARD8 index, CARD8 value) {
+    moutb(index << 2, value);
 }

-static CARD8
-mmioReadCrtc(vgaHWPtr hwp, CARD8 index)
-{
-  return minb(index << 2);
+static CARD8 mmioReadCrtc(vgaHWPtr hwp, CARD8 index) {
+    return minb(index << 2);
 }

-static void
-lg_vgaHWSetMmioFunc(vgaHWPtr hwp, CARD8 *base)
-{
-    hwp->writeCrtc             = mmioWriteCrtc;
-    hwp->readCrtc              = mmioReadCrtc;
-    hwp->MMIOBase              = base;
-    hwp->MMIOOffset            = 0;
+static void lg_vgaHWSetMmioFunc(vgaHWPtr hwp, CARD8 *base) {
+    hwp->writeCrtc = mmioWriteCrtc;
+    hwp->readCrtc = mmioReadCrtc;
+    hwp->MMIOBase = base;
+    hwp->MMIOOffset = 0;
 }
--
2.17.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to