Commit 4736783c authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman
Browse files

staging: xgifb: XGI_GetLcdPtr: use real pointers for data tables



Use real pointers for LCD data tables to simplify the code.

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 515e9a60
Loading
Loading
Loading
Loading
+2 −315
Original line number Diff line number Diff line
@@ -1310,7 +1310,7 @@ static void *XGI_GetLcdPtr(unsigned short BX, unsigned short ModeNo,
		unsigned short RefreshRateTableIndex,
		struct vb_device_info *pVBInfo)
{
	unsigned short i, tempdx, tempbx, tempal, modeflag, table;
	unsigned short i, tempdx, tempbx, tempal, modeflag;

	struct XGI330_LCDDataTablStruct *tempdi = NULL;

@@ -1365,7 +1365,6 @@ static void *XGI_GetLcdPtr(unsigned short BX, unsigned short ModeNo,
	if (tempdi == NULL) /* OEMUtil */
		return NULL;

	table = tempbx;
	i = 0;

	while (tempdi[i].PANELID != 0xff) {
@@ -1392,319 +1391,7 @@ static void *XGI_GetLcdPtr(unsigned short BX, unsigned short ModeNo,
		i++;
	}

	if (table == 0) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_LVDSCRT11024x768_1_H[tempal];
			break;
		case 1:
			return &XGI_LVDSCRT11024x768_2_H[tempal];
			break;
		case 2:
			return &XGI_LVDSCRT11280x1024_1_H[tempal];
			break;
		case 3:
			return &XGI_LVDSCRT11280x1024_2_H[tempal];
			break;
		case 4:
			return &XGI_LVDSCRT11400x1050_1_H[tempal];
			break;
		case 5:
			return &XGI_LVDSCRT11400x1050_2_H[tempal];
			break;
		case 6:
			return &XGI_LVDSCRT11600x1200_1_H[tempal];
			break;
		case 7:
			return &XGI_LVDSCRT11024x768_1_Hx75[tempal];
			break;
		case 8:
			return &XGI_LVDSCRT11024x768_2_Hx75[tempal];
			break;
		case 9:
			return &XGI_LVDSCRT11280x1024_1_Hx75[tempal];
			break;
		case 10:
			return &XGI_LVDSCRT11280x1024_2_Hx75[tempal];
			break;
		default:
			break;
		}
	} else if (table == 1) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_LVDSCRT11024x768_1_V[tempal];
			break;
		case 1:
			return &XGI_LVDSCRT11024x768_2_V[tempal];
			break;
		case 2:
			return &XGI_LVDSCRT11280x1024_1_V[tempal];
			break;
		case 3:
			return &XGI_LVDSCRT11280x1024_2_V[tempal];
			break;
		case 4:
			return &XGI_LVDSCRT11400x1050_1_V[tempal];
			break;
		case 5:
			return &XGI_LVDSCRT11400x1050_2_V[tempal];
			break;
		case 6:
			return &XGI_LVDSCRT11600x1200_1_V[tempal];
			break;
		case 7:
			return &XGI_LVDSCRT11024x768_1_Vx75[tempal];
			break;
		case 8:
			return &XGI_LVDSCRT11024x768_2_Vx75[tempal];
			break;
		case 9:
			return &XGI_LVDSCRT11280x1024_1_Vx75[tempal];
			break;
		case 10:
			return &XGI_LVDSCRT11280x1024_2_Vx75[tempal];
			break;
		default:
			break;
		}
	} else if (table == 2) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_LVDS1024x768Data_1[tempal];
			break;
		case 1:
			return &XGI_LVDS1024x768Data_2[tempal];
			break;
		case 2:
			return &XGI_LVDS1280x1024Data_1[tempal];
			break;
		case 3:
			return &XGI_LVDS1280x1024Data_2[tempal];
			break;
		case 4:
			return &XGI_LVDS1400x1050Data_1[tempal];
			break;
		case 5:
			return &XGI_LVDS1400x1050Data_2[tempal];
			break;
		case 6:
			return &XGI_LVDS1600x1200Data_1[tempal];
			break;
		case 7:
			return &XGI_LVDSNoScalingData[tempal];
			break;
		case 8:
			return &XGI_LVDS1024x768Data_1x75[tempal];
			break;
		case 9:
			return &XGI_LVDS1024x768Data_2x75[tempal];
			break;
		case 10:
			return &XGI_LVDS1280x1024Data_1x75[tempal];
			break;
		case 11:
			return &XGI_LVDS1280x1024Data_2x75[tempal];
			break;
		case 12:
			return &XGI_LVDSNoScalingDatax75[tempal];
			break;
		default:
			break;
		}
	} else if (table == 3) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_LVDS1024x768Des_1[tempal];
			break;
		case 1:
			return &XGI_LVDS1024x768Des_3[tempal];
			break;
		case 2:
			return &XGI_LVDS1024x768Des_2[tempal];
			break;
		case 3:
			return &XGI_LVDS1280x1024Des_1[tempal];
			break;
		case 4:
			return &XGI_LVDS1280x1024Des_2[tempal];
			break;
		case 5:
			return &XGI_LVDS1400x1050Des_1[tempal];
			break;
		case 6:
			return &XGI_LVDS1400x1050Des_2[tempal];
			break;
		case 7:
			return &XGI_LVDS1600x1200Des_1[tempal];
			break;
		case 8:
			return &XGI_LVDSNoScalingDesData[tempal];
			break;
		case 9:
			return &XGI_LVDS1024x768Des_1x75[tempal];
			break;
		case 10:
			return &XGI_LVDS1024x768Des_3x75[tempal];
			break;
		case 11:
			return &XGI_LVDS1024x768Des_2x75[tempal];
			break;
		case 12:
			return &XGI_LVDS1280x1024Des_1x75[tempal];
			break;
		case 13:
			return &XGI_LVDS1280x1024Des_2x75[tempal];
			break;
		case 14:
			return &XGI_LVDSNoScalingDesDatax75[tempal];
			break;
		default:
			break;
		}
	} else if (table == 4) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_ExtLCD1024x768Data[tempal];
			break;
		case 1:
			return &XGI_StLCD1024x768Data[tempal];
			break;
		case 2:
			return &XGI_CetLCD1024x768Data[tempal];
			break;
		case 3:
			return &XGI_ExtLCD1280x1024Data[tempal];
			break;
		case 4:
			return &XGI_StLCD1280x1024Data[tempal];
			break;
		case 5:
			return &XGI_CetLCD1280x1024Data[tempal];
			break;
		case 6:
		case 7:
			return &xgifb_lcd_1400x1050[tempal];
			break;
		case 8:
			return &XGI_CetLCD1400x1050Data[tempal];
			break;
		case 9:
			return &XGI_ExtLCD1600x1200Data[tempal];
			break;
		case 10:
			return &XGI_StLCD1600x1200Data[tempal];
			break;
		case 11:
			return &XGI_NoScalingData[tempal];
			break;
		case 12:
			return &XGI_ExtLCD1024x768x75Data[tempal];
			break;
		case 13:
			return &XGI_ExtLCD1024x768x75Data[tempal];
			break;
		case 14:
			return &XGI_CetLCD1024x768x75Data[tempal];
			break;
		case 15:
		case 16:
			return &xgifb_lcd_1280x1024x75[tempal];
			break;
		case 17:
			return &XGI_CetLCD1280x1024x75Data[tempal];
			break;
		case 18:
			return &XGI_NoScalingDatax75[tempal];
			break;
		default:
			break;
		}
	} else if (table == 5 && ((pVBInfo->VBType & VB_SIS301LV) ||
				  (pVBInfo->VBType & VB_SIS302LV))) {
		switch (tempdi[i].DATAPTR) {
		case 0: return &XGI_ExtLCDDes1024x768Data[tempal];
		case 1: return &XGI_StLCDDes1024x768Data[tempal];
		case 2: return &XGI_CetLCDDes1024x768Data[tempal];
		case 3: return &XGI_ExtLCDDLDes1280x1024Data[tempal];
		case 4: return &XGI_StLCDDLDes1280x1024Data[tempal];
		case 5: return &XGI_CetLCDDLDes1280x1024Data[tempal];
		case 6:
		case 7: return &xgifb_lcddldes_1400x1050[tempal];
		case 8: return &XGI_CetLCDDes1400x1050Data[tempal];
		case 9: return &XGI_CetLCDDes1400x1050Data2[tempal];
		case 10: return &XGI_ExtLCDDLDes1600x1200Data[tempal];
		case 11: return &XGI_StLCDDLDes1600x1200Data[tempal];
		case 12: return &XGI_NoScalingDesData[tempal];
		case 13:
		case 14: return &xgifb_lcddes_1024x768x75[tempal];
		case 15: return &XGI_CetLCDDes1024x768x75Data[tempal];
		case 16:
		case 17: return &xgifb_lcddldes_1280x1024x75[tempal];
		case 18: return &XGI_CetLCDDLDes1280x1024x75Data[tempal];
		case 19: return &XGI_NoScalingDesDatax75[tempal];
		}
	} else if (table == 5) {
		switch (tempdi[i].DATAPTR) {
		case 0:
			return &XGI_ExtLCDDes1024x768Data[tempal];
			break;
		case 1:
			return &XGI_StLCDDes1024x768Data[tempal];
			break;
		case 2:
			return &XGI_CetLCDDes1024x768Data[tempal];
			break;
		case 3:
			return &XGI_ExtLCDDes1280x1024Data[tempal];
			break;
		case 4:
			return &XGI_StLCDDes1280x1024Data[tempal];
			break;
		case 5:
			return &XGI_CetLCDDes1280x1024Data[tempal];
			break;
		case 6:
		case 7:
			return &xgifb_lcddes_1400x1050[tempal];
			break;
		case 8:
			return &XGI_CetLCDDes1400x1050Data[tempal];
			break;
		case 9:
			return &XGI_CetLCDDes1400x1050Data2[tempal];
			break;
		case 10:
			return &XGI_ExtLCDDes1600x1200Data[tempal];
			break;
		case 11:
			return &XGI_StLCDDes1600x1200Data[tempal];
			break;
		case 12:
			return &XGI_NoScalingDesData[tempal];
			break;
		case 13:
		case 14:
			return &xgifb_lcddes_1024x768x75[tempal];
			break;
		case 15:
			return &XGI_CetLCDDes1024x768x75Data[tempal];
			break;
		case 16:
		case 17:
			return &xgifb_lcddes_1280x1024x75[tempal];
			break;
		case 18:
			return &XGI_CetLCDDes1280x1024x75Data[tempal];
			break;
		case 19:
			return &XGI_NoScalingDesDatax75[tempal];
			break;
		default:
			break;
		}
	}
	return NULL;
	return tempdi[i].DATAPTR;
}

static struct SiS_TVData const *XGI_GetTVPtr(unsigned short ModeNo,
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ struct XGI330_LCDDataTablStruct {
	unsigned char  PANELID;
	unsigned short MASK;
	unsigned short CAP;
	unsigned short DATAPTR;
	void *DATAPTR;
};

struct XGI330_TVDataTablStruct {
+116 −129
Original line number Diff line number Diff line
@@ -1749,153 +1749,140 @@ static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {

/*add for new UNIVGABIOS*/
static struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
	{Panel_1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCD1024x768Data */
	{Panel_1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCD1024x768Data */
	{Panel_1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCD1024x768Data */
	{Panel_1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCD1280x1024Data */
	{Panel_1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCD1280x1024Data */
	{Panel_1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCD1280x1024Data */
	{Panel_1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCD1400x1050Data */
	{Panel_1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCD1400x1050Data */
	{Panel_1400x1050, 0x0018, 0x0010, 8}, /* XGI_CetLCD1400x1050Data */
	{Panel_1600x1200, 0x0019, 0x0001, 9}, /* XGI_ExtLCD1600x1200Data */
	{Panel_1600x1200, 0x0019, 0x0000, 10}, /* XGI_StLCD1600x1200Data */
	{PanelRef60Hz, 0x0008, 0x0008, 11}, /* XGI_NoScalingData */
	{Panel_1024x768x75, 0x0019, 0x0001, 12}, /* XGI_ExtLCD1024x768x75Data */
	{Panel_1024x768x75, 0x0019, 0x0000, 13}, /* XGI_StLCD1024x768x75Data */
	{Panel_1024x768x75, 0x0018, 0x0010, 14}, /* XGI_CetLCD1024x768x75Data */
	/* XGI_ExtLCD1280x1024x75Data */
	{Panel_1280x1024x75, 0x0019, 0x0001, 15},
	/* XGI_StLCD1280x1024x75Data */
	{Panel_1280x1024x75, 0x0019, 0x0000, 16},
	/* XGI_CetLCD1280x1024x75Data */
	{Panel_1280x1024x75, 0x0018, 0x0010, 17},
	{PanelRef75Hz, 0x0008, 0x0008, 18}, /* XGI_NoScalingDatax75 */
	{0xFF, 0x0000, 0x0000, 0} /* End of table */
	{Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCD1024x768Data },
	{Panel_1024x768, 0x0019, 0x0000, XGI_StLCD1024x768Data },
	{Panel_1024x768, 0x0018, 0x0010, XGI_CetLCD1024x768Data },
	{Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCD1280x1024Data },
	{Panel_1280x1024, 0x0019, 0x0000, XGI_StLCD1280x1024Data },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCD1280x1024Data },
	{Panel_1400x1050, 0x0019, 0x0001, xgifb_lcd_1400x1050 },
	{Panel_1400x1050, 0x0019, 0x0000, xgifb_lcd_1400x1050 },
	{Panel_1400x1050, 0x0018, 0x0010, XGI_CetLCD1400x1050Data },
	{Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCD1600x1200Data },
	{Panel_1600x1200, 0x0019, 0x0000, XGI_StLCD1600x1200Data },
	{PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingData },
	{Panel_1024x768x75, 0x0019, 0x0001, XGI_ExtLCD1024x768x75Data },
	{Panel_1024x768x75, 0x0019, 0x0000, XGI_ExtLCD1024x768x75Data },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCD1024x768x75Data },
	{Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcd_1280x1024x75 },
	{Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcd_1280x1024x75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCD1280x1024x75Data },
	{PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDatax75 },
	{0xFF, 0x0000, 0x0000, NULL } /* End of table */
};

static struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
	{Panel_1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCDDes1024x768Data */
	{Panel_1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCDDes1024x768Data */
	{Panel_1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCDDes1024x768Data */
	{Panel_1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCDDes1280x1024Data */
	{Panel_1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCDDes1280x1024Data */
	{Panel_1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCDDes1280x1024Data */
	{Panel_1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCDDes1400x1050Data */
	{Panel_1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCDDes1400x1050Data */
	{Panel_1400x1050, 0x0418, 0x0010, 8}, /* XGI_CetLCDDes1400x1050Data */
	{Panel_1400x1050, 0x0418, 0x0410, 9}, /* XGI_CetLCDDes1400x1050Data2 */
	{Panel_1600x1200, 0x0019, 0x0001, 10}, /* XGI_ExtLCDDes1600x1200Data */
	{Panel_1600x1200, 0x0019, 0x0000, 11}, /* XGI_StLCDDes1600x1200Data */
	{PanelRef60Hz, 0x0008, 0x0008, 12}, /* XGI_NoScalingDesData */
	/* XGI_ExtLCDDes1024x768x75Data */
	{Panel_1024x768x75, 0x0019, 0x0001, 13},
	/* XGI_StLCDDes1024x768x75Data */
	{Panel_1024x768x75, 0x0019, 0x0000, 14},
	/* XGI_CetLCDDes1024x768x75Data */
	{Panel_1024x768x75, 0x0018, 0x0010, 15},
	/* XGI_ExtLCDDes1280x1024x75Data */
	{Panel_1280x1024x75, 0x0019, 0x0001, 16},
	/* XGI_StLCDDes1280x1024x75Data */
	{Panel_1280x1024x75, 0x0019, 0x0000, 17},
	/* XGI_CetLCDDes1280x1024x75Data */
	{Panel_1280x1024x75, 0x0018, 0x0010, 18},
	{PanelRef75Hz, 0x0008, 0x0008, 19}, /* XGI_NoScalingDesDatax75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
	{Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
	{Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
	{Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDes1280x1024Data },
	{Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDes1280x1024Data },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDes1280x1024Data },
	{Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddes_1400x1050 },
	{Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddes_1400x1050 },
	{Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
	{Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
	{Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDes1600x1200Data },
	{Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDes1600x1200Data },
	{PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
	{Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
	{Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
	{Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddes_1280x1024x75 },
	{Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddes_1280x1024x75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDes1280x1024x75Data },
	{PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static struct XGI330_LCDDataTablStruct xgifb_lcddldes[] = {
	{Panel_1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCDDes1024x768Data */
	{Panel_1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCDDes1024x768Data */
	{Panel_1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCDDes1024x768Data */
	{Panel_1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCDDLDes1280x1024Data */
	{Panel_1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCDDLDes1280x1024Data */
	{Panel_1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCDDLDes1280x1024Data */
	{Panel_1400x1050, 0x0019, 0x0001, 6}, /* xgifb_lcddldes_1400x1050 */
	{Panel_1400x1050, 0x0019, 0x0000, 7}, /* xgifb_lcddldes_1400x1050 */
	{Panel_1400x1050, 0x0418, 0x0010, 8}, /* XGI_CetLCDDes1400x1050Data */
	{Panel_1400x1050, 0x0418, 0x0410, 9}, /* XGI_CetLCDDes1400x1050Data2 */
	{Panel_1600x1200, 0x0019, 0x0001, 10}, /* XGI_ExtLCDDLDes1600x1200Data */
	{Panel_1600x1200, 0x0019, 0x0000, 11}, /* XGI_StLCDDes1600x1200Data */
	{PanelRef60Hz, 0x0008, 0x0008, 12}, /* XGI_NoScalingDesData */
	{Panel_1024x768x75, 0x0019, 0x0001, 13}, /* xgifb_lcddes_1024x768x75 */
	{Panel_1024x768x75, 0x0019, 0x0000, 14}, /* xgifb_lcddes_1024x768x75 */
	{Panel_1024x768x75, 0x0018, 0x0010, 15}, /* XGI_CetLCDDes1024x768x75Data */
	{Panel_1280x1024x75, 0x0019, 0x0001, 16}, /* xgifb_lcddldes_1280x1024x75 */
	{Panel_1280x1024x75, 0x0019, 0x0000, 17}, /* xgifb_lcddldes_1280x1024x75 */
	{Panel_1280x1024x75, 0x0018, 0x0010, 18}, /* XGI_CetLCDDes1280x1024x75Data */
	{PanelRef75Hz, 0x0008, 0x0008, 19}, /* XGI_NoScalingDesDatax75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
	{Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
	{Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
	{Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDLDes1280x1024Data },
	{Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDLDes1280x1024Data },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024Data },
	{Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddldes_1400x1050 },
	{Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddldes_1400x1050 },
	{Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
	{Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
	{Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDLDes1600x1200Data },
	{Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDLDes1600x1200Data },
	{PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
	{Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
	{Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
	{Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddldes_1280x1024x75 },
	{Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddldes_1280x1024x75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024x75Data },
	{PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_h[] = {
	{Panel_1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDSCRT11024x768_1_H */
	{Panel_1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDSCRT11024x768_2_H */
	{Panel_1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDSCRT11280x1024_1_H */
	{Panel_1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDSCRT11280x1024_2_H */
	{Panel_1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDSCRT11400x1050_1_H */
	{Panel_1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDSCRT11400x1050_2_H */
	{Panel_1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDSCRT11600x1200_1_H */
	{Panel_1024x768x75, 0x0018, 0x0000, 7}, /* XGI_LVDSCRT11024x768_1_Hx75 */
	{Panel_1024x768x75, 0x0018, 0x0010, 8}, /* XGI_LVDSCRT11024x768_2_Hx75 */
	{Panel_1280x1024x75, 0x0018, 0x0000, 9}, /*XGI_LVDSCRT11280x1024_1_Hx75 */
	{Panel_1280x1024x75, 0x0018, 0x0010, 10},/*XGI_LVDSCRT11280x1024_2_Hx75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_H },
	{Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_H },
	{Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_H },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_H },
	{Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_H },
	{Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_H },
	{Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_H },
	{Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Hx75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Hx75 },
	{Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Hx75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Hx75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_v[] = {
	{Panel_1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDSCRT11024x768_1_V */
	{Panel_1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDSCRT11024x768_2_V */
	{Panel_1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDSCRT11280x1024_1_V */
	{Panel_1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDSCRT11280x1024_2_V */
	{Panel_1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDSCRT11400x1050_1_V */
	{Panel_1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDSCRT11400x1050_2_V */
	{Panel_1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDSCRT11600x1200_1_V */
	{Panel_1024x768x75, 0x0018, 0x0000, 7}, /* XGI_LVDSCRT11024x768_1_Vx75 */
	{Panel_1024x768x75, 0x0018, 0x0010, 8}, /* XGI_LVDSCRT11024x768_2_Vx75 */
	{Panel_1280x1024x75, 0x0018, 0x0000, 9}, /*XGI_LVDSCRT11280x1024_1_Vx75 */
	{Panel_1280x1024x75, 0x0018, 0x0010, 10},/*XGI_LVDSCRT11280x1024_2_Vx75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_V },
	{Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_V },
	{Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_V },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_V },
	{Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_V },
	{Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_V },
	{Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_V },
	{Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Vx75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Vx75 },
	{Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Vx75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Vx75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
	{Panel_1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Data_1 */
	{Panel_1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDS1024x768Data_2 */
	{Panel_1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDS1280x1024Data_1 */
	{Panel_1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDS1280x1024Data_2 */
	{Panel_1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDS1400x1050Data_1 */
	{Panel_1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDS1400x1050Data_2 */
	{Panel_1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDS1600x1200Data_1 */
	{PanelRef60Hz, 0x0008, 0x0008, 7}, /* XGI_LVDSNoScalingData */
	{Panel_1024x768x75, 0x0018, 0x0000, 8}, /* XGI_LVDS1024x768Data_1x75 */
	{Panel_1024x768x75, 0x0018, 0x0010, 9}, /* XGI_LVDS1024x768Data_2x75 */
	/* XGI_LVDS1280x1024Data_1x75 */
	{Panel_1280x1024x75, 0x0018, 0x0000, 10},
	/* XGI_LVDS1280x1024Data_2x75 */
	{Panel_1280x1024x75, 0x0018, 0x0010, 11},
	{PanelRef75Hz, 0x0008, 0x0008, 12}, /* XGI_LVDSNoScalingDatax75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Data_1 },
	{Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Data_2 },
	{Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1 },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2 },
	{Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Data_1 },
	{Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Data_2 },
	{Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Data_1 },
	{PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingData },
	{Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Data_1x75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Data_2x75 },
	{Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1x75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2x75 },
	{PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDatax75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
	{Panel_1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Des_1 */
	{Panel_1024x768, 0x0618, 0x0410, 1}, /* XGI_LVDS1024x768Des_3 */
	{Panel_1024x768, 0x0018, 0x0010, 2}, /* XGI_LVDS1024x768Des_2 */
	{Panel_1280x1024, 0x0018, 0x0000, 3}, /* XGI_LVDS1280x1024Des_1 */
	{Panel_1280x1024, 0x0018, 0x0010, 4}, /* XGI_LVDS1280x1024Des_2 */
	{Panel_1400x1050, 0x0018, 0x0000, 5}, /* XGI_LVDS1400x1050Des_1 */
	{Panel_1400x1050, 0x0018, 0x0010, 6}, /* XGI_LVDS1400x1050Des_2 */
	{Panel_1600x1200, 0x0018, 0x0000, 7}, /* XGI_LVDS1600x1200Des_1 */
	{PanelRef60Hz, 0x0008, 0x0008, 8},  /* XGI_LVDSNoScalingDesData */
	{Panel_1024x768x75, 0x0018, 0x0000, 9}, /* XGI_LVDS1024x768Des_1x75 */
	{Panel_1024x768x75, 0x0618, 0x0410, 10}, /* XGI_LVDS1024x768Des_3x75 */
	{Panel_1024x768x75, 0x0018, 0x0010, 11}, /* XGI_LVDS1024x768Des_2x75 */
	/* XGI_LVDS1280x1024Des_1x75 */
	{Panel_1280x1024x75, 0x0018, 0x0000, 12},
	/* XGI_LVDS1280x1024Des_2x75 */
	{Panel_1280x1024x75, 0x0018, 0x0010, 13},
	{PanelRef75Hz, 0x0008, 0x0008, 14}, /* XGI_LVDSNoScalingDesDatax75 */
	{0xFF, 0x0000, 0x0000, 0}
	{Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Des_1 },
	{Panel_1024x768, 0x0618, 0x0410, XGI_LVDS1024x768Des_3 },
	{Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Des_2 },
	{Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1 },
	{Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2 },
	{Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Des_1 },
	{Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Des_2 },
	{Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Des_1 },
	{PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesData },
	{Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Des_1x75 },
	{Panel_1024x768x75, 0x0618, 0x0410, XGI_LVDS1024x768Des_3x75 },
	{Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Des_2x75 },
	{Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1x75 },
	{Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2x75 },
	{PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesDatax75 },
	{0xFF, 0x0000, 0x0000, NULL }
};

static const struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {