Commit c62f2e46 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman

staging: xgifb: eliminate global XGIhw_ext data

Move xgi_hw_device_info into xgi_video_info.
Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 19c1e88e
...@@ -184,9 +184,6 @@ static int XGIfb_tvplug = -1; ...@@ -184,9 +184,6 @@ static int XGIfb_tvplug = -1;
/* TW: For ioctl XGIFB_GET_INFO */ /* TW: For ioctl XGIFB_GET_INFO */
/* XGIfb_info XGIfbinfo; */ /* XGIfb_info XGIfbinfo; */
/* TW: Hardware extension; contains data on hardware */
static struct xgi_hw_device_info XGIhw_ext;
/* TW: XGI private structure */ /* TW: XGI private structure */
static struct vb_device_info XGI_Pr; static struct vb_device_info XGI_Pr;
......
...@@ -543,6 +543,7 @@ static int XGIfb_GetXG21LVDSData(void) ...@@ -543,6 +543,7 @@ static int XGIfb_GetXG21LVDSData(void)
static int XGIfb_validate_mode(int myindex) static int XGIfb_validate_mode(int myindex)
{ {
u16 xres, yres; u16 xres, yres;
struct xgi_hw_device_info *hw_info = &xgi_video_info.hw_info;
if (xgi_video_info.chip == XG21) { if (xgi_video_info.chip == XG21) {
if ((xgi_video_info.disp_state & DISPTYPE_DISP2) if ((xgi_video_info.disp_state & DISPTYPE_DISP2)
...@@ -573,7 +574,7 @@ static int XGIfb_validate_mode(int myindex) ...@@ -573,7 +574,7 @@ static int XGIfb_validate_mode(int myindex)
switch (xgi_video_info.disp_state & DISPTYPE_DISP2) { switch (xgi_video_info.disp_state & DISPTYPE_DISP2) {
case DISPTYPE_LCD: case DISPTYPE_LCD:
switch (XGIhw_ext.ulCRT2LCDType) { switch (hw_info->ulCRT2LCDType) {
case LCD_640x480: case LCD_640x480:
xres = 640; xres = 640;
yres = 480; yres = 480;
...@@ -629,13 +630,13 @@ static int XGIfb_validate_mode(int myindex) ...@@ -629,13 +630,13 @@ static int XGIfb_validate_mode(int myindex)
return -1; return -1;
if (XGIbios_mode[myindex].yres > yres) if (XGIbios_mode[myindex].yres > yres)
return -1; return -1;
if ((XGIhw_ext.ulExternalChip == 0x01) || /* LVDS */ if ((hw_info->ulExternalChip == 0x01) || /* LVDS */
(XGIhw_ext.ulExternalChip == 0x05)) { /* LVDS+Chrontel */ (hw_info->ulExternalChip == 0x05)) { /* LVDS+Chrontel */
switch (XGIbios_mode[myindex].xres) { switch (XGIbios_mode[myindex].xres) {
case 512: case 512:
if (XGIbios_mode[myindex].yres != 512) if (XGIbios_mode[myindex].yres != 512)
return -1; return -1;
if (XGIhw_ext.ulCRT2LCDType == LCD_1024x600) if (hw_info->ulCRT2LCDType == LCD_1024x600)
return -1; return -1;
break; break;
case 640: case 640:
...@@ -653,13 +654,13 @@ static int XGIfb_validate_mode(int myindex) ...@@ -653,13 +654,13 @@ static int XGIfb_validate_mode(int myindex)
(XGIbios_mode[myindex].yres != 768)) (XGIbios_mode[myindex].yres != 768))
return -1; return -1;
if ((XGIbios_mode[myindex].yres == 600) && if ((XGIbios_mode[myindex].yres == 600) &&
(XGIhw_ext.ulCRT2LCDType != LCD_1024x600)) (hw_info->ulCRT2LCDType != LCD_1024x600))
return -1; return -1;
break; break;
case 1152: case 1152:
if ((XGIbios_mode[myindex].yres) != 768) if ((XGIbios_mode[myindex].yres) != 768)
return -1; return -1;
if (XGIhw_ext.ulCRT2LCDType != LCD_1152x768) if (hw_info->ulCRT2LCDType != LCD_1152x768)
return -1; return -1;
break; break;
case 1280: case 1280:
...@@ -667,7 +668,7 @@ static int XGIfb_validate_mode(int myindex) ...@@ -667,7 +668,7 @@ static int XGIfb_validate_mode(int myindex)
(XGIbios_mode[myindex].yres != 1024)) (XGIbios_mode[myindex].yres != 1024))
return -1; return -1;
if ((XGIbios_mode[myindex].yres == 768) && if ((XGIbios_mode[myindex].yres == 768) &&
(XGIhw_ext.ulCRT2LCDType != LCD_1280x768)) (hw_info->ulCRT2LCDType != LCD_1280x768))
return -1; return -1;
break; break;
case 1400: case 1400:
...@@ -705,7 +706,7 @@ static int XGIfb_validate_mode(int myindex) ...@@ -705,7 +706,7 @@ static int XGIfb_validate_mode(int myindex)
(XGIbios_mode[myindex].yres != 1024)) (XGIbios_mode[myindex].yres != 1024))
return -1; return -1;
if (XGIbios_mode[myindex].yres == 960) { if (XGIbios_mode[myindex].yres == 960) {
if (XGIhw_ext.ulCRT2LCDType == if (hw_info->ulCRT2LCDType ==
LCD_1400x1050) LCD_1400x1050)
return -1; return -1;
} }
...@@ -1161,7 +1162,7 @@ static void XGIfb_post_setmode(void) ...@@ -1161,7 +1162,7 @@ static void XGIfb_post_setmode(void)
static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive, static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive,
struct fb_info *info) struct fb_info *info)
{ {
struct xgi_hw_device_info *hw_info = &xgi_video_info.hw_info;
unsigned int htotal = var->left_margin + var->xres + var->right_margin unsigned int htotal = var->left_margin + var->xres + var->right_margin
+ var->hsync_len; + var->hsync_len;
unsigned int vtotal = var->upper_margin + var->yres + var->lower_margin unsigned int vtotal = var->upper_margin + var->yres + var->lower_margin
...@@ -1248,7 +1249,7 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive, ...@@ -1248,7 +1249,7 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive,
if (isactive) { if (isactive) {
XGIfb_pre_setmode(); XGIfb_pre_setmode();
if (XGISetModeNew(&XGIhw_ext, XGIfb_mode_no) == 0) { if (XGISetModeNew(hw_info, XGIfb_mode_no) == 0) {
printk(KERN_ERR "XGIfb: Setting mode[0x%x] failed\n", printk(KERN_ERR "XGIfb: Setting mode[0x%x] failed\n",
XGIfb_mode_no); XGIfb_mode_no);
return -EINVAL; return -EINVAL;
...@@ -1987,8 +1988,9 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -1987,8 +1988,9 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
int ret; int ret;
bool xgi21_drvlcdcaplist = false; bool xgi21_drvlcdcaplist = false;
struct fb_info *fb_info; struct fb_info *fb_info;
struct xgi_hw_device_info *hw_info = &xgi_video_info.hw_info;
memset(&XGIhw_ext, 0, sizeof(struct xgi_hw_device_info)); memset(hw_info, 0, sizeof(struct xgi_hw_device_info));
fb_info = framebuffer_alloc(sizeof(struct fb_info), &pdev->dev); fb_info = framebuffer_alloc(sizeof(struct fb_info), &pdev->dev);
if (!fb_info) if (!fb_info)
return -ENOMEM; return -ENOMEM;
...@@ -1998,7 +2000,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -1998,7 +2000,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
pci_read_config_byte(pdev, pci_read_config_byte(pdev,
PCI_REVISION_ID, PCI_REVISION_ID,
&xgi_video_info.revision_id); &xgi_video_info.revision_id);
XGIhw_ext.jChipRevision = xgi_video_info.revision_id; hw_info->jChipRevision = xgi_video_info.revision_id;
xgi_video_info.pcibus = pdev->bus->number; xgi_video_info.pcibus = pdev->bus->number;
xgi_video_info.pcislot = PCI_SLOT(pdev->devfn); xgi_video_info.pcislot = PCI_SLOT(pdev->devfn);
...@@ -2010,7 +2012,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2010,7 +2012,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
xgi_video_info.mmio_base = pci_resource_start(pdev, 1); xgi_video_info.mmio_base = pci_resource_start(pdev, 1);
xgi_video_info.mmio_size = pci_resource_len(pdev, 1); xgi_video_info.mmio_size = pci_resource_len(pdev, 1);
xgi_video_info.vga_base = pci_resource_start(pdev, 2) + 0x30; xgi_video_info.vga_base = pci_resource_start(pdev, 2) + 0x30;
XGIhw_ext.pjIOAddress = (unsigned char *)xgi_video_info.vga_base; hw_info->pjIOAddress = (unsigned char *)xgi_video_info.vga_base;
/* XGI_Pr.RelIO = ioremap(pci_resource_start(pdev, 2), 128) + 0x30; */ /* XGI_Pr.RelIO = ioremap(pci_resource_start(pdev, 2), 128) + 0x30; */
printk("XGIfb: Relocate IO address: %lx [%08lx]\n", printk("XGIfb: Relocate IO address: %lx [%08lx]\n",
(unsigned long)pci_resource_start(pdev, 2), XGI_Pr.RelIO); (unsigned long)pci_resource_start(pdev, 2), XGI_Pr.RelIO);
...@@ -2020,7 +2022,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2020,7 +2022,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
goto error; goto error;
} }
XGIRegInit(&XGI_Pr, (unsigned long)XGIhw_ext.pjIOAddress); XGIRegInit(&XGI_Pr, (unsigned long)hw_info->pjIOAddress);
xgifb_reg_set(XGISR, IND_XGI_PASSWORD, XGI_PASSWORD); xgifb_reg_set(XGISR, IND_XGI_PASSWORD, XGI_PASSWORD);
reg1 = xgifb_reg_get(XGISR, IND_XGI_PASSWORD); reg1 = xgifb_reg_get(XGISR, IND_XGI_PASSWORD);
...@@ -2063,20 +2065,20 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2063,20 +2065,20 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
} }
printk("XGIfb:chipid = %x\n", xgi_video_info.chip); printk("XGIfb:chipid = %x\n", xgi_video_info.chip);
XGIhw_ext.jChipType = xgi_video_info.chip; hw_info->jChipType = xgi_video_info.chip;
if ((xgi_video_info.chip == XG21) || (XGIfb_userom)) { if ((xgi_video_info.chip == XG21) || (XGIfb_userom)) {
XGIhw_ext.pjVirtualRomBase = xgifb_copy_rom(pdev); hw_info->pjVirtualRomBase = xgifb_copy_rom(pdev);
if (XGIhw_ext.pjVirtualRomBase) if (hw_info->pjVirtualRomBase)
printk(KERN_INFO "XGIfb: Video ROM found and mapped to %p\n", printk(KERN_INFO "XGIfb: Video ROM found and mapped to %p\n",
XGIhw_ext.pjVirtualRomBase); hw_info->pjVirtualRomBase);
else else
printk(KERN_INFO "XGIfb: Video ROM not found\n"); printk(KERN_INFO "XGIfb: Video ROM not found\n");
} else { } else {
XGIhw_ext.pjVirtualRomBase = NULL; hw_info->pjVirtualRomBase = NULL;
printk(KERN_INFO "XGIfb: Video ROM usage disabled\n"); printk(KERN_INFO "XGIfb: Video ROM usage disabled\n");
} }
XGIhw_ext.pQueryVGAConfigSpace = &XGIfb_query_VGA_config_space; hw_info->pQueryVGAConfigSpace = &XGIfb_query_VGA_config_space;
if (XGIfb_get_dram_size()) { if (XGIfb_get_dram_size()) {
printk(KERN_INFO "XGIfb: Fatal error: Unable to determine RAM size.\n"); printk(KERN_INFO "XGIfb: Fatal error: Unable to determine RAM size.\n");
...@@ -2091,7 +2093,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2091,7 +2093,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
/* Enable 2D accelerator engine */ /* Enable 2D accelerator engine */
xgifb_reg_or(XGISR, IND_XGI_MODULE_ENABLE, XGI_ENABLE_2D); xgifb_reg_or(XGISR, IND_XGI_MODULE_ENABLE, XGI_ENABLE_2D);
XGIhw_ext.ulVideoMemorySize = xgi_video_info.video_size; hw_info->ulVideoMemorySize = xgi_video_info.video_size;
if (!request_mem_region(xgi_video_info.video_base, if (!request_mem_region(xgi_video_info.video_base,
xgi_video_info.video_size, xgi_video_info.video_size,
...@@ -2112,7 +2114,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2112,7 +2114,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
goto error_0; goto error_0;
} }
xgi_video_info.video_vbase = XGIhw_ext.pjVideoMemoryAddress = xgi_video_info.video_vbase = hw_info->pjVideoMemoryAddress =
ioremap(xgi_video_info.video_base, xgi_video_info.video_size); ioremap(xgi_video_info.video_base, xgi_video_info.video_size);
xgi_video_info.mmio_vbase = ioremap(xgi_video_info.mmio_base, xgi_video_info.mmio_vbase = ioremap(xgi_video_info.mmio_base,
xgi_video_info.mmio_size); xgi_video_info.mmio_size);
...@@ -2126,7 +2128,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2126,7 +2128,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
xgi_video_info.mmio_base, xgi_video_info.mmio_vbase, xgi_video_info.mmio_base, xgi_video_info.mmio_vbase,
xgi_video_info.mmio_size / 1024); xgi_video_info.mmio_size / 1024);
printk("XGIfb: XGIInitNew() ..."); printk("XGIfb: XGIInitNew() ...");
if (XGIInitNew(&XGIhw_ext)) if (XGIInitNew(hw_info))
printk("OK\n"); printk("OK\n");
else else
printk("Fail\n"); printk("Fail\n");
...@@ -2152,62 +2154,62 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2152,62 +2154,62 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
XGIfb_get_VB_type(); XGIfb_get_VB_type();
} }
XGIhw_ext.ujVBChipID = VB_CHIP_UNKNOWN; hw_info->ujVBChipID = VB_CHIP_UNKNOWN;
XGIhw_ext.ulExternalChip = 0; hw_info->ulExternalChip = 0;
switch (xgi_video_info.hasVB) { switch (xgi_video_info.hasVB) {
case HASVB_301: case HASVB_301:
reg = xgifb_reg_get(XGIPART4, 0x01); reg = xgifb_reg_get(XGIPART4, 0x01);
if (reg >= 0xE0) { if (reg >= 0xE0) {
XGIhw_ext.ujVBChipID = VB_CHIP_302LV; hw_info->ujVBChipID = VB_CHIP_302LV;
printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg); printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg);
} else if (reg >= 0xD0) { } else if (reg >= 0xD0) {
XGIhw_ext.ujVBChipID = VB_CHIP_301LV; hw_info->ujVBChipID = VB_CHIP_301LV;
printk(KERN_INFO "XGIfb: XGI301LV bridge detected (revision 0x%02x)\n", reg); printk(KERN_INFO "XGIfb: XGI301LV bridge detected (revision 0x%02x)\n", reg);
} }
/* else if (reg >= 0xB0) { /* else if (reg >= 0xB0) {
XGIhw_ext.ujVBChipID = VB_CHIP_301B; hw_info->ujVBChipID = VB_CHIP_301B;
reg1 = xgifb_reg_get(XGIPART4, 0x23); reg1 = xgifb_reg_get(XGIPART4, 0x23);
printk("XGIfb: XGI301B bridge detected\n"); printk("XGIfb: XGI301B bridge detected\n");
} */ } */
else { else {
XGIhw_ext.ujVBChipID = VB_CHIP_301; hw_info->ujVBChipID = VB_CHIP_301;
printk("XGIfb: XGI301 bridge detected\n"); printk("XGIfb: XGI301 bridge detected\n");
} }
break; break;
case HASVB_302: case HASVB_302:
reg = xgifb_reg_get(XGIPART4, 0x01); reg = xgifb_reg_get(XGIPART4, 0x01);
if (reg >= 0xE0) { if (reg >= 0xE0) {
XGIhw_ext.ujVBChipID = VB_CHIP_302LV; hw_info->ujVBChipID = VB_CHIP_302LV;
printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg); printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg);
} else if (reg >= 0xD0) { } else if (reg >= 0xD0) {
XGIhw_ext.ujVBChipID = VB_CHIP_301LV; hw_info->ujVBChipID = VB_CHIP_301LV;
printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg); printk(KERN_INFO "XGIfb: XGI302LV bridge detected (revision 0x%02x)\n", reg);
} else if (reg >= 0xB0) { } else if (reg >= 0xB0) {
reg1 = xgifb_reg_get(XGIPART4, 0x23); reg1 = xgifb_reg_get(XGIPART4, 0x23);
XGIhw_ext.ujVBChipID = VB_CHIP_302B; hw_info->ujVBChipID = VB_CHIP_302B;
} else { } else {
XGIhw_ext.ujVBChipID = VB_CHIP_302; hw_info->ujVBChipID = VB_CHIP_302;
printk(KERN_INFO "XGIfb: XGI302 bridge detected\n"); printk(KERN_INFO "XGIfb: XGI302 bridge detected\n");
} }
break; break;
case HASVB_LVDS: case HASVB_LVDS:
XGIhw_ext.ulExternalChip = 0x1; hw_info->ulExternalChip = 0x1;
printk(KERN_INFO "XGIfb: LVDS transmitter detected\n"); printk(KERN_INFO "XGIfb: LVDS transmitter detected\n");
break; break;
case HASVB_TRUMPION: case HASVB_TRUMPION:
XGIhw_ext.ulExternalChip = 0x2; hw_info->ulExternalChip = 0x2;
printk(KERN_INFO "XGIfb: Trumpion Zurac LVDS scaler detected\n"); printk(KERN_INFO "XGIfb: Trumpion Zurac LVDS scaler detected\n");
break; break;
case HASVB_CHRONTEL: case HASVB_CHRONTEL:
XGIhw_ext.ulExternalChip = 0x4; hw_info->ulExternalChip = 0x4;
printk(KERN_INFO "XGIfb: Chrontel TV encoder detected\n"); printk(KERN_INFO "XGIfb: Chrontel TV encoder detected\n");
break; break;
case HASVB_LVDS_CHRONTEL: case HASVB_LVDS_CHRONTEL:
XGIhw_ext.ulExternalChip = 0x5; hw_info->ulExternalChip = 0x5;
printk(KERN_INFO "XGIfb: LVDS transmitter and Chrontel TV encoder detected\n"); printk(KERN_INFO "XGIfb: LVDS transmitter and Chrontel TV encoder detected\n");
break; break;
default: default:
...@@ -2233,17 +2235,17 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2233,17 +2235,17 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
if (!enable_dstn) { if (!enable_dstn) {
reg = xgifb_reg_get(XGICR, IND_XGI_LCD_PANEL); reg = xgifb_reg_get(XGICR, IND_XGI_LCD_PANEL);
reg &= 0x0f; reg &= 0x0f;
XGIhw_ext.ulCRT2LCDType = XGI310paneltype[reg]; hw_info->ulCRT2LCDType = XGI310paneltype[reg];
} else { } else {
/* TW: FSTN/DSTN */ /* TW: FSTN/DSTN */
XGIhw_ext.ulCRT2LCDType = LCD_320x480; hw_info->ulCRT2LCDType = LCD_320x480;
} }
} }
if ((XGIhw_ext.ujVBChipID == VB_CHIP_302B) || if ((hw_info->ujVBChipID == VB_CHIP_302B) ||
(XGIhw_ext.ujVBChipID == VB_CHIP_301LV) || (hw_info->ujVBChipID == VB_CHIP_301LV) ||
(XGIhw_ext.ujVBChipID == VB_CHIP_302LV)) { (hw_info->ujVBChipID == VB_CHIP_302LV)) {
int tmp; int tmp;
tmp = xgifb_reg_get(XGICR, 0x34); tmp = xgifb_reg_get(XGICR, 0x34);
if (tmp <= 0x13) { if (tmp <= 0x13) {
...@@ -2371,10 +2373,10 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2371,10 +2373,10 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
XGIfb_bpp_to_var(&default_var); XGIfb_bpp_to_var(&default_var);
default_var.pixclock = (u32) (1000000000 / default_var.pixclock = (u32) (1000000000 /
XGIfb_mode_rate_to_dclock(&XGI_Pr, &XGIhw_ext, XGIfb_mode_rate_to_dclock(&XGI_Pr, hw_info,
XGIfb_mode_no, XGIfb_rate_idx)); XGIfb_mode_no, XGIfb_rate_idx));
if (XGIfb_mode_rate_to_ddata(&XGI_Pr, &XGIhw_ext, if (XGIfb_mode_rate_to_ddata(&XGI_Pr, hw_info,
XGIfb_mode_no, XGIfb_rate_idx, XGIfb_mode_no, XGIfb_rate_idx,
&default_var.left_margin, &default_var.right_margin, &default_var.left_margin, &default_var.right_margin,
&default_var.upper_margin, &default_var.lower_margin, &default_var.upper_margin, &default_var.lower_margin,
...@@ -2437,7 +2439,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2437,7 +2439,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
release_mem_region(xgi_video_info.video_base, release_mem_region(xgi_video_info.video_base,
xgi_video_info.video_size); xgi_video_info.video_size);
error: error:
vfree(XGIhw_ext.pjVirtualRomBase); vfree(hw_info->pjVirtualRomBase);
framebuffer_release(fb_info); framebuffer_release(fb_info);
return ret; return ret;
} }
...@@ -2461,7 +2463,7 @@ static void __devexit xgifb_remove(struct pci_dev *pdev) ...@@ -2461,7 +2463,7 @@ static void __devexit xgifb_remove(struct pci_dev *pdev)
iounmap(xgifb_info->video_vbase); iounmap(xgifb_info->video_vbase);
release_mem_region(xgifb_info->mmio_base, xgifb_info->mmio_size); release_mem_region(xgifb_info->mmio_base, xgifb_info->mmio_size);
release_mem_region(xgifb_info->video_base, xgifb_info->video_size); release_mem_region(xgifb_info->video_base, xgifb_info->video_size);
vfree(XGIhw_ext.pjVirtualRomBase); vfree(xgifb_info->hw_info.pjVirtualRomBase);
framebuffer_release(fb_info); framebuffer_release(fb_info);
pci_set_drvdata(pdev, NULL); pci_set_drvdata(pdev, NULL);
} }
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include <linux/types.h> #include <linux/types.h>
#include "vgatypes.h"
#define DISPTYPE_CRT1 0x00000008L #define DISPTYPE_CRT1 0x00000008L
#define DISPTYPE_CRT2 0x00000004L #define DISPTYPE_CRT2 0x00000004L
#define DISPTYPE_LCD 0x00000002L #define DISPTYPE_LCD 0x00000002L
...@@ -54,6 +56,7 @@ enum xgi_tv_plug { /* vicki@030226 */ ...@@ -54,6 +56,7 @@ enum xgi_tv_plug { /* vicki@030226 */
struct video_info { struct video_info {
struct fb_info *fb_info; struct fb_info *fb_info;
struct xgi_hw_device_info hw_info;
int chip_id; int chip_id;
unsigned int video_size; unsigned int video_size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment