summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2007-09-26 10:51:08 -0700
committerIan Romanick <idr@us.ibm.com>2007-09-26 10:51:08 -0700
commit10b446279b3a0d27a3c8a8bfc051742801a937fe (patch)
tree76fc4df378d183a2923d6f8b43a862b539f1d2b2
parentf2568de7e3b1649b194b47464fd6130db5c82286 (diff)
Code clean up, extra error messages.
-rw-r--r--src/xg47_bios.c102
1 files changed, 55 insertions, 47 deletions
diff --git a/src/xg47_bios.c b/src/xg47_bios.c
index a6eaf32..b5ff82c 100644
--- a/src/xg47_bios.c
+++ b/src/xg47_bios.c
@@ -1000,6 +1000,10 @@ void XG47BiosValueInit(ScrnInfoPtr pScrn)
OUTB(XGI_REG_CRX+1, (INB(XGI_REG_CRX+1) | 0x80));
}
+#define ALL_TV_FORMATS \
+ (ZVMX_ATTRIB_NTSCJ | ZVMX_ATTRIB_NTSC \
+ | ZVMX_ATTRIB_PALM | ZVMX_ATTRIB_PAL)
+
/*
* Validate Video Mode.
*
@@ -1009,44 +1013,39 @@ void XG47BiosValueInit(ScrnInfoPtr pScrn)
* Return: video mode information if none zero value, otherwise does not
* support this mode.
*/
-Bool XG47BiosValidMode(ScrnInfoPtr pScrn,
- XGIAskModePtr pMode,
- CARD32 dualView)
+ModeStatus XG47BiosValidMode(ScrnInfoPtr pScrn, XGIAskModePtr pMode,
+ CARD32 dualView)
{
XGIPtr pXGI = XGIPTR(pScrn);
XGIAskModePtr pMode0, pMode1;
CARD32 temp;
+ CARD32 test=~0xF0;
XGIGetSetChipSupportDevice(pXGI, FALSE);
pMode0 = pMode;
- /* Jong 09/12/2006; test */
- CARD32 test=~0xF0;
- /* Jong 09/15/2006; single view or first view of dual view mode */
- if (!dualView || (pXGI->FirstView)) /* single view */
- {
+ /* Single view or first view of dual view mode */
+ if (!dualView || pXGI->FirstView) {
pMode1 = NULL;
pMode0->condition &= test;
- }
- else /* dual view */
- {
- /* Jong 09/12/2006; pMode1 has wrong data; seems not to initialize */
+ } else {
+ /* dual view */
+ /* pMode1 has wrong data; seems not to initialize */
pMode1 = pMode0 + 1;
- /* Jong 09/12/2006; why not to &= ~0x0F */
+
+ /* Jong 09/12/2006; why not to &= ~0x0F */
pMode1->condition &= test;
- pMode0=NULL;
+ pMode0=NULL;
}
#if 0
- if (!dualView) /* single view */
- {
+ if (!dualView) {
pMode1 = NULL;
pMode0->condition &= ~0xF0;
- }
- else /* dual view */
- {
+ } else {
+ /* dual view */
pMode1 = pMode0 + 1;
pMode1->condition &= ~0xF0;
}
@@ -1055,39 +1054,48 @@ Bool XG47BiosValidMode(ScrnInfoPtr pScrn,
/* get current all display device status and information */
temp = XGIGetDisplayStatus(pXGI, 0);
- /* Jong 09/15/2006; support dual view */
- if(pMode0)
- {
- /* check 1st display device input data */
- if (!(pMode0->condition & 0x0F))
- pMode0->condition |= (temp & 0x0F);
-
- /* Check LCD information (Expansion/Centering) */
- if (!(pMode0->condition & 0x0001C00))
- pMode0->condition |= (temp & 0x0001C00);
-
- /* Check TV format information */
- if (!(pMode0->condition & (ZVMX_ATTRIB_NTSCJ | ZVMX_ATTRIB_PALM | ZVMX_ATTRIB_PAL | ZVMX_ATTRIB_NTSC)))
- {
- pMode0->condition |= (temp & (ZVMX_ATTRIB_NTSCJ | ZVMX_ATTRIB_PALM | ZVMX_ATTRIB_PAL | ZVMX_ATTRIB_NTSC));
- }
- /* Check TV Overscan/Underscan mode info */
- if (!(pMode0->condition & 0x00C0000))
- pMode0->condition |= (temp & 0x00C0000);
-
- /* check valid 1st display device */
- if ((pMode0->condition & 0x0F) != (pXGI->biosDevSupport & (pMode0->condition & 0x0F)))
- return FALSE;
- }
-
- if (pMode1)
- {
+ if (pMode0) {
+ /* check 1st display device input data */
+ if (!(pMode0->condition & 0x0F))
+ pMode0->condition |= (temp & 0x0F);
+
+ /* Check LCD information (Expansion/Centering) */
+ if (!(pMode0->condition & 0x0001C00))
+ pMode0->condition |= (temp & 0x0001C00);
+
+ /* Check TV format information */
+ if (!(pMode0->condition & ALL_TV_FORMATS)) {
+ pMode0->condition |= (temp & ALL_TV_FORMATS);
+ }
+
+ /* Check TV Overscan/Underscan mode info */
+ if (!(pMode0->condition & 0x00C0000))
+ pMode0->condition |= (temp & 0x00C0000);
+
+ /* check valid 1st display device */
+ if ((pMode0->condition & 0x0F) !=
+ (pXGI->biosDevSupport & (pMode0->condition & 0x0F))) {
+ xf86DrvMsg(pXGI->pScrn->scrnIndex, X_ERROR,
+ "1st display device not supported by BIOS: 0x%02x 0x%02x\n",
+ (pMode0->condition & 0x0f),
+ (pXGI->biosDevSupport & 0x0f));
+ return FALSE;
+ }
+ }
+
+ if (pMode1) {
if (!(pMode1->condition & 0x0000C00))
pMode1->condition |= (temp & 0x0000C00);
/* check valid 2nd display device */
- if ((pMode1->condition & 0x0F) != (pXGI->biosDevSupport & (pMode1->condition & 0x0F)))
+ if ((pMode1->condition & 0x0F)
+ != (pXGI->biosDevSupport & (pMode1->condition & 0x0F))) {
+ xf86DrvMsg(pXGI->pScrn->scrnIndex, X_ERROR,
+ "2nd display device not supported by BIOS: 0x%02x 0x%02x\n",
+ (pMode1->condition & 0x0f),
+ (pXGI->biosDevSupport & 0x0f));
return FALSE;
+ }
}
return XG47GetValidMode(pXGI, pMode0, pMode1);