Loading drivers/staging/xgifb/XGI_main.h +12 −12 Original line number Diff line number Diff line Loading @@ -326,19 +326,19 @@ static const struct _XGI_crt2type { int tvplug_no; } XGI_crt2type[] = { {"NONE", 0, -1}, {"LCD", DISPTYPE_LCD, -1}, {"TV", DISPTYPE_TV, -1}, {"VGA", DISPTYPE_CRT2, -1}, {"SVIDEO", DISPTYPE_TV, TVPLUG_SVIDEO}, {"COMPOSITE", DISPTYPE_TV, TVPLUG_COMPOSITE}, {"SCART", DISPTYPE_TV, TVPLUG_SCART}, {"LCD", XGIFB_DISP_LCD, -1}, {"TV", XGIFB_DISP_TV, -1}, {"VGA", XGIFB_DISP_CRT, -1}, {"SVIDEO", XGIFB_DISP_TV, TVPLUG_SVIDEO}, {"COMPOSITE", XGIFB_DISP_TV, TVPLUG_COMPOSITE}, {"SCART", XGIFB_DISP_TV, TVPLUG_SCART}, {"none", 0, -1}, {"lcd", DISPTYPE_LCD, -1}, {"tv", DISPTYPE_TV, -1}, {"vga", DISPTYPE_CRT2, -1}, {"svideo", DISPTYPE_TV, TVPLUG_SVIDEO}, {"composite", DISPTYPE_TV, TVPLUG_COMPOSITE}, {"scart", DISPTYPE_TV, TVPLUG_SCART}, {"lcd", XGIFB_DISP_LCD, -1}, {"tv", XGIFB_DISP_TV, -1}, {"vga", XGIFB_DISP_CRT, -1}, {"svideo", XGIFB_DISP_TV, TVPLUG_SVIDEO}, {"composite", XGIFB_DISP_TV, TVPLUG_COMPOSITE}, {"scart", XGIFB_DISP_TV, TVPLUG_SCART}, {"\0", -1, -1} }; Loading drivers/staging/xgifb/XGI_main_26.c +25 −25 Original line number Diff line number Diff line Loading @@ -507,8 +507,7 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) struct xgi_hw_device_info *hw_info = &xgifb_info->hw_info; if (xgifb_info->chip == XG21) { if ((xgifb_info->disp_state & DISPTYPE_DISP2) == DISPTYPE_LCD) { if (xgifb_info->display2 == XGIFB_DISP_LCD) { xres = XGI21_LCDCapList[0].LVDSHDE; yres = XGI21_LCDCapList[0].LVDSVDE; if (XGIbios_mode[myindex].xres > xres) Loading @@ -533,8 +532,8 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) if (!(XGIbios_mode[myindex].chipset & MD_XGI315)) return -1; switch (xgifb_info->disp_state & DISPTYPE_DISP2) { case DISPTYPE_LCD: switch (xgifb_info->display2) { case XGIFB_DISP_LCD: switch (hw_info->ulCRT2LCDType) { case LCD_640x480: xres = 640; Loading Loading @@ -685,7 +684,7 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) } } break; case DISPTYPE_TV: case XGIFB_DISP_TV: switch (XGIbios_mode[myindex].xres) { case 512: case 640: Loading Loading @@ -715,10 +714,12 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) return -1; } break; case DISPTYPE_CRT2: case XGIFB_DISP_CRT: if (XGIbios_mode[myindex].xres > 1280) return -1; break; case XGIFB_DISP_NONE: break; } return myindex; Loading Loading @@ -857,16 +858,16 @@ static void XGIfb_pre_setmode(struct xgifb_video_info *xgifb_info) cr31 = xgifb_reg_get(XGICR, 0x31); cr31 &= ~0x60; switch (xgifb_info->disp_state & DISPTYPE_DISP2) { case DISPTYPE_CRT2: switch (xgifb_info->display2) { case XGIFB_DISP_CRT: cr30 = (XGI_VB_OUTPUT_CRT2 | XGI_SIMULTANEOUS_VIEW_ENABLE); cr31 |= XGI_DRIVER_MODE; break; case DISPTYPE_LCD: case XGIFB_DISP_LCD: cr30 = (XGI_VB_OUTPUT_LCD | XGI_SIMULTANEOUS_VIEW_ENABLE); cr31 |= XGI_DRIVER_MODE; break; case DISPTYPE_TV: case XGIFB_DISP_TV: if (xgifb_info->TV_type == TVMODE_HIVISION) cr30 = (XGI_VB_OUTPUT_HIVISION | XGI_SIMULTANEOUS_VIEW_ENABLE); Loading Loading @@ -916,7 +917,7 @@ static void XGIfb_post_setmode(struct xgifb_video_info *xgifb_info) } /* TW: We can't switch off CRT1 on 301B-DH * in 8bpp Modes if using LCD */ if (xgifb_info->disp_state & DISPTYPE_LCD) if (xgifb_info->display2 == XGIFB_DISP_LCD) doit = 0; } Loading @@ -940,8 +941,8 @@ static void XGIfb_post_setmode(struct xgifb_video_info *xgifb_info) xgifb_reg_and(XGISR, IND_XGI_RAMDAC_CONTROL, ~0x04); if ((xgifb_info->disp_state & DISPTYPE_TV) && (xgifb_info->hasVB == HASVB_301)) { if (xgifb_info->display2 == XGIFB_DISP_TV && xgifb_info->hasVB == HASVB_301) { reg = xgifb_reg_get(XGIPART4, 0x01); Loading Loading @@ -1339,7 +1340,7 @@ static int XGIfb_pan_var(struct xgifb_video_info *xgifb_info, xgifb_reg_set(XGISR, 0x37, (base >> 24) & 0x03); xgifb_reg_and_or(XGISR, 0x37, 0xDF, (base >> 21) & 0x04); if (xgifb_info->disp_state & DISPTYPE_DISP2) { if (xgifb_info->display2 != XGIFB_DISP_NONE) { xgifb_reg_or(XGIPART1, IND_XGI_CRT2_WRITE_ENABLE_315, 0x01); xgifb_reg_set(XGIPART1, 0x06, (base & 0xFF)); xgifb_reg_set(XGIPART1, 0x05, ((base >> 8) & 0xFF)); Loading Loading @@ -1395,7 +1396,7 @@ static int XGIfb_setcolreg(unsigned regno, unsigned red, unsigned green, outb((red >> 10), XGIDACD); outb((green >> 10), XGIDACD); outb((blue >> 10), XGIDACD); if (xgifb_info->disp_state & DISPTYPE_DISP2) { if (xgifb_info->display2 != XGIFB_DISP_NONE) { outb(regno, XGIDAC2A); outb((red >> 8), XGIDAC2D); outb((green >> 8), XGIDAC2D); Loading Loading @@ -1806,15 +1807,15 @@ static void XGIfb_detect_VB(struct xgifb_video_info *xgifb_info) if (XGIfb_crt2type != -1) /* TW: Override with option */ xgifb_info->disp_state = XGIfb_crt2type; xgifb_info->display2 = XGIfb_crt2type; else if (cr32 & XGI_VB_TV) xgifb_info->disp_state = DISPTYPE_TV; xgifb_info->display2 = XGIFB_DISP_TV; else if (cr32 & XGI_VB_LCD) xgifb_info->disp_state = DISPTYPE_LCD; xgifb_info->display2 = XGIFB_DISP_LCD; else if (cr32 & XGI_VB_CRT2) xgifb_info->disp_state = DISPTYPE_CRT2; xgifb_info->display2 = XGIFB_DISP_CRT; else xgifb_info->disp_state = 0; xgifb_info->display2 = XGIFB_DISP_NONE; if (XGIfb_tvplug != -1) /* PR/TW: Override with option */ Loading Loading @@ -1932,7 +1933,7 @@ static int __init XGIfb_setup(char *options) } else if (!strncmp(this_opt, "dstn", 4)) { enable_dstn = 1; /* TW: DSTN overrules forcecrt2type */ XGIfb_crt2type = DISPTYPE_LCD; XGIfb_crt2type = XGIFB_DISP_LCD; } else if (!strncmp(this_opt, "noypan", 6)) { XGIfb_ypan = 0; } else if (!strncmp(this_opt, "userom:", 7)) { Loading Loading @@ -2126,7 +2127,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, } else if (xgifb_info->chip == XG21) { CR38 = xgifb_reg_get(XGICR, 0x38); if ((CR38&0xE0) == 0xC0) { xgifb_info->disp_state = DISPTYPE_LCD; xgifb_info->display2 = XGIFB_DISP_LCD; if (!XGIfb_GetXG21LVDSData(xgifb_info)) xgi21_drvlcdcaplist = true; } else if ((CR38&0xE0) == 0x60) { Loading Loading @@ -2204,7 +2205,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, if (xgifb_info->hasVB != HASVB_NONE) XGIfb_detect_VB(xgifb_info); if (xgifb_info->disp_state & DISPTYPE_LCD) { if (xgifb_info->display2 == XGIFB_DISP_LCD) { if (!enable_dstn) { reg = xgifb_reg_get(XGICR, IND_XGI_LCD_PANEL); reg &= 0x0f; Loading Loading @@ -2261,8 +2262,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, XGIfb_validate_mode(xgifb_info, xgifb_info->mode_idx); if (xgifb_info->mode_idx < 0) { if ((xgifb_info->disp_state & DISPTYPE_DISP2) == DISPTYPE_LCD && if (xgifb_info->display2 == XGIFB_DISP_LCD && xgifb_info->chip == XG21) xgifb_info->mode_idx = XGIfb_GetXG21DefaultLVDSModeIdx(); Loading drivers/staging/xgifb/XGIfb.h +7 −5 Original line number Diff line number Diff line Loading @@ -6,10 +6,12 @@ #include "vb_struct.h" #include "vgatypes.h" #define DISPTYPE_CRT2 0x00000004L #define DISPTYPE_LCD 0x00000002L #define DISPTYPE_TV 0x00000001L #define DISPTYPE_DISP2 (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV) enum xgifb_display_type { XGIFB_DISP_NONE = 0, XGIFB_DISP_CRT, XGIFB_DISP_LCD, XGIFB_DISP_TV, }; #define HASVB_NONE 0x00 #define HASVB_301 0x01 Loading Loading @@ -83,7 +85,7 @@ struct xgifb_video_info { int video_linelength; unsigned int refresh_rate; unsigned long disp_state; enum xgifb_display_type display2; /* the second display output type */ unsigned char hasVB; unsigned char TV_type; unsigned char TV_plug; Loading Loading
drivers/staging/xgifb/XGI_main.h +12 −12 Original line number Diff line number Diff line Loading @@ -326,19 +326,19 @@ static const struct _XGI_crt2type { int tvplug_no; } XGI_crt2type[] = { {"NONE", 0, -1}, {"LCD", DISPTYPE_LCD, -1}, {"TV", DISPTYPE_TV, -1}, {"VGA", DISPTYPE_CRT2, -1}, {"SVIDEO", DISPTYPE_TV, TVPLUG_SVIDEO}, {"COMPOSITE", DISPTYPE_TV, TVPLUG_COMPOSITE}, {"SCART", DISPTYPE_TV, TVPLUG_SCART}, {"LCD", XGIFB_DISP_LCD, -1}, {"TV", XGIFB_DISP_TV, -1}, {"VGA", XGIFB_DISP_CRT, -1}, {"SVIDEO", XGIFB_DISP_TV, TVPLUG_SVIDEO}, {"COMPOSITE", XGIFB_DISP_TV, TVPLUG_COMPOSITE}, {"SCART", XGIFB_DISP_TV, TVPLUG_SCART}, {"none", 0, -1}, {"lcd", DISPTYPE_LCD, -1}, {"tv", DISPTYPE_TV, -1}, {"vga", DISPTYPE_CRT2, -1}, {"svideo", DISPTYPE_TV, TVPLUG_SVIDEO}, {"composite", DISPTYPE_TV, TVPLUG_COMPOSITE}, {"scart", DISPTYPE_TV, TVPLUG_SCART}, {"lcd", XGIFB_DISP_LCD, -1}, {"tv", XGIFB_DISP_TV, -1}, {"vga", XGIFB_DISP_CRT, -1}, {"svideo", XGIFB_DISP_TV, TVPLUG_SVIDEO}, {"composite", XGIFB_DISP_TV, TVPLUG_COMPOSITE}, {"scart", XGIFB_DISP_TV, TVPLUG_SCART}, {"\0", -1, -1} }; Loading
drivers/staging/xgifb/XGI_main_26.c +25 −25 Original line number Diff line number Diff line Loading @@ -507,8 +507,7 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) struct xgi_hw_device_info *hw_info = &xgifb_info->hw_info; if (xgifb_info->chip == XG21) { if ((xgifb_info->disp_state & DISPTYPE_DISP2) == DISPTYPE_LCD) { if (xgifb_info->display2 == XGIFB_DISP_LCD) { xres = XGI21_LCDCapList[0].LVDSHDE; yres = XGI21_LCDCapList[0].LVDSVDE; if (XGIbios_mode[myindex].xres > xres) Loading @@ -533,8 +532,8 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) if (!(XGIbios_mode[myindex].chipset & MD_XGI315)) return -1; switch (xgifb_info->disp_state & DISPTYPE_DISP2) { case DISPTYPE_LCD: switch (xgifb_info->display2) { case XGIFB_DISP_LCD: switch (hw_info->ulCRT2LCDType) { case LCD_640x480: xres = 640; Loading Loading @@ -685,7 +684,7 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) } } break; case DISPTYPE_TV: case XGIFB_DISP_TV: switch (XGIbios_mode[myindex].xres) { case 512: case 640: Loading Loading @@ -715,10 +714,12 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) return -1; } break; case DISPTYPE_CRT2: case XGIFB_DISP_CRT: if (XGIbios_mode[myindex].xres > 1280) return -1; break; case XGIFB_DISP_NONE: break; } return myindex; Loading Loading @@ -857,16 +858,16 @@ static void XGIfb_pre_setmode(struct xgifb_video_info *xgifb_info) cr31 = xgifb_reg_get(XGICR, 0x31); cr31 &= ~0x60; switch (xgifb_info->disp_state & DISPTYPE_DISP2) { case DISPTYPE_CRT2: switch (xgifb_info->display2) { case XGIFB_DISP_CRT: cr30 = (XGI_VB_OUTPUT_CRT2 | XGI_SIMULTANEOUS_VIEW_ENABLE); cr31 |= XGI_DRIVER_MODE; break; case DISPTYPE_LCD: case XGIFB_DISP_LCD: cr30 = (XGI_VB_OUTPUT_LCD | XGI_SIMULTANEOUS_VIEW_ENABLE); cr31 |= XGI_DRIVER_MODE; break; case DISPTYPE_TV: case XGIFB_DISP_TV: if (xgifb_info->TV_type == TVMODE_HIVISION) cr30 = (XGI_VB_OUTPUT_HIVISION | XGI_SIMULTANEOUS_VIEW_ENABLE); Loading Loading @@ -916,7 +917,7 @@ static void XGIfb_post_setmode(struct xgifb_video_info *xgifb_info) } /* TW: We can't switch off CRT1 on 301B-DH * in 8bpp Modes if using LCD */ if (xgifb_info->disp_state & DISPTYPE_LCD) if (xgifb_info->display2 == XGIFB_DISP_LCD) doit = 0; } Loading @@ -940,8 +941,8 @@ static void XGIfb_post_setmode(struct xgifb_video_info *xgifb_info) xgifb_reg_and(XGISR, IND_XGI_RAMDAC_CONTROL, ~0x04); if ((xgifb_info->disp_state & DISPTYPE_TV) && (xgifb_info->hasVB == HASVB_301)) { if (xgifb_info->display2 == XGIFB_DISP_TV && xgifb_info->hasVB == HASVB_301) { reg = xgifb_reg_get(XGIPART4, 0x01); Loading Loading @@ -1339,7 +1340,7 @@ static int XGIfb_pan_var(struct xgifb_video_info *xgifb_info, xgifb_reg_set(XGISR, 0x37, (base >> 24) & 0x03); xgifb_reg_and_or(XGISR, 0x37, 0xDF, (base >> 21) & 0x04); if (xgifb_info->disp_state & DISPTYPE_DISP2) { if (xgifb_info->display2 != XGIFB_DISP_NONE) { xgifb_reg_or(XGIPART1, IND_XGI_CRT2_WRITE_ENABLE_315, 0x01); xgifb_reg_set(XGIPART1, 0x06, (base & 0xFF)); xgifb_reg_set(XGIPART1, 0x05, ((base >> 8) & 0xFF)); Loading Loading @@ -1395,7 +1396,7 @@ static int XGIfb_setcolreg(unsigned regno, unsigned red, unsigned green, outb((red >> 10), XGIDACD); outb((green >> 10), XGIDACD); outb((blue >> 10), XGIDACD); if (xgifb_info->disp_state & DISPTYPE_DISP2) { if (xgifb_info->display2 != XGIFB_DISP_NONE) { outb(regno, XGIDAC2A); outb((red >> 8), XGIDAC2D); outb((green >> 8), XGIDAC2D); Loading Loading @@ -1806,15 +1807,15 @@ static void XGIfb_detect_VB(struct xgifb_video_info *xgifb_info) if (XGIfb_crt2type != -1) /* TW: Override with option */ xgifb_info->disp_state = XGIfb_crt2type; xgifb_info->display2 = XGIfb_crt2type; else if (cr32 & XGI_VB_TV) xgifb_info->disp_state = DISPTYPE_TV; xgifb_info->display2 = XGIFB_DISP_TV; else if (cr32 & XGI_VB_LCD) xgifb_info->disp_state = DISPTYPE_LCD; xgifb_info->display2 = XGIFB_DISP_LCD; else if (cr32 & XGI_VB_CRT2) xgifb_info->disp_state = DISPTYPE_CRT2; xgifb_info->display2 = XGIFB_DISP_CRT; else xgifb_info->disp_state = 0; xgifb_info->display2 = XGIFB_DISP_NONE; if (XGIfb_tvplug != -1) /* PR/TW: Override with option */ Loading Loading @@ -1932,7 +1933,7 @@ static int __init XGIfb_setup(char *options) } else if (!strncmp(this_opt, "dstn", 4)) { enable_dstn = 1; /* TW: DSTN overrules forcecrt2type */ XGIfb_crt2type = DISPTYPE_LCD; XGIfb_crt2type = XGIFB_DISP_LCD; } else if (!strncmp(this_opt, "noypan", 6)) { XGIfb_ypan = 0; } else if (!strncmp(this_opt, "userom:", 7)) { Loading Loading @@ -2126,7 +2127,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, } else if (xgifb_info->chip == XG21) { CR38 = xgifb_reg_get(XGICR, 0x38); if ((CR38&0xE0) == 0xC0) { xgifb_info->disp_state = DISPTYPE_LCD; xgifb_info->display2 = XGIFB_DISP_LCD; if (!XGIfb_GetXG21LVDSData(xgifb_info)) xgi21_drvlcdcaplist = true; } else if ((CR38&0xE0) == 0x60) { Loading Loading @@ -2204,7 +2205,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, if (xgifb_info->hasVB != HASVB_NONE) XGIfb_detect_VB(xgifb_info); if (xgifb_info->disp_state & DISPTYPE_LCD) { if (xgifb_info->display2 == XGIFB_DISP_LCD) { if (!enable_dstn) { reg = xgifb_reg_get(XGICR, IND_XGI_LCD_PANEL); reg &= 0x0f; Loading Loading @@ -2261,8 +2262,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, XGIfb_validate_mode(xgifb_info, xgifb_info->mode_idx); if (xgifb_info->mode_idx < 0) { if ((xgifb_info->disp_state & DISPTYPE_DISP2) == DISPTYPE_LCD && if (xgifb_info->display2 == XGIFB_DISP_LCD && xgifb_info->chip == XG21) xgifb_info->mode_idx = XGIfb_GetXG21DefaultLVDSModeIdx(); Loading
drivers/staging/xgifb/XGIfb.h +7 −5 Original line number Diff line number Diff line Loading @@ -6,10 +6,12 @@ #include "vb_struct.h" #include "vgatypes.h" #define DISPTYPE_CRT2 0x00000004L #define DISPTYPE_LCD 0x00000002L #define DISPTYPE_TV 0x00000001L #define DISPTYPE_DISP2 (DISPTYPE_CRT2 | DISPTYPE_LCD | DISPTYPE_TV) enum xgifb_display_type { XGIFB_DISP_NONE = 0, XGIFB_DISP_CRT, XGIFB_DISP_LCD, XGIFB_DISP_TV, }; #define HASVB_NONE 0x00 #define HASVB_301 0x01 Loading Loading @@ -83,7 +85,7 @@ struct xgifb_video_info { int video_linelength; unsigned int refresh_rate; unsigned long disp_state; enum xgifb_display_type display2; /* the second display output type */ unsigned char hasVB; unsigned char TV_type; unsigned char TV_plug; Loading