Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 235988
b: refs/heads/master
c: bb29223
h: refs/heads/master
v: v3
  • Loading branch information
Aaro Koskinen authored and Greg Kroah-Hartman committed Feb 18, 2011
1 parent c2763a3 commit 93352b9
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: decebabf24ca179749dcac8a3fb87f7186bdf898
refs/heads/master: bb29223453061b9b738e3659f7810c1f61165df2
39 changes: 28 additions & 11 deletions trunk/drivers/staging/xgifb/XGI_main_26.c
Original file line number Diff line number Diff line change
Expand Up @@ -2935,6 +2935,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
u16 reg16;
u8 reg, reg1;
u8 CR48, CR38;
int ret;

if (XGIfb_off)
return -ENXIO;

Expand Down Expand Up @@ -2966,8 +2968,10 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
printk("XGIfb: Relocate IO address: %lx [%08lx]\n",
(unsigned long)pci_resource_start(pdev, 2), XGI_Pr.RelIO);

if (pci_enable_device(pdev))
return -EIO;
if (pci_enable_device(pdev)) {
ret = -EIO;
goto error;
}

XGIRegInit(&XGI_Pr, (unsigned long)XGIhw_ext.pjIOAddress);

Expand All @@ -2976,7 +2980,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,

if (reg1 != 0xa1) { /*I/O error */
printk("\nXGIfb: I/O error!!!");
return -EIO;
ret = -EIO;
goto error;
}

switch (xgi_video_info.chip_id) {
Expand Down Expand Up @@ -3011,7 +3016,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
XGIfb_CRT2_write_enable = IND_XGI_CRT2_WRITE_ENABLE_315;
break;
default:
return -ENODEV;
ret = -ENODEV;
goto error;
}

printk("XGIfb:chipid = %x\n", xgi_video_info.chip);
Expand Down Expand Up @@ -3052,15 +3058,17 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
XGIhw_ext.pSR = vmalloc(sizeof(struct XGI_DSReg) * SR_BUFFER_SIZE);
if (XGIhw_ext.pSR == NULL) {
printk(KERN_ERR "XGIfb: Fatal error: Allocating SRReg space failed.\n");
return -ENODEV;
ret = -ENODEV;
goto error;
}
XGIhw_ext.pSR[0].jIdx = XGIhw_ext.pSR[0].jVal = 0xFF;

XGIhw_ext.pCR = vmalloc(sizeof(struct XGI_DSReg) * CR_BUFFER_SIZE);
if (XGIhw_ext.pCR == NULL) {
vfree(XGIhw_ext.pSR);
printk(KERN_ERR "XGIfb: Fatal error: Allocating CRReg space failed.\n");
return -ENODEV;
ret = -ENODEV;
goto error;
}
XGIhw_ext.pCR[0].jIdx = XGIhw_ext.pCR[0].jVal = 0xFF;

Expand Down Expand Up @@ -3100,7 +3108,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
vfree(XGIhw_ext.pSR);
vfree(XGIhw_ext.pCR);
printk(KERN_INFO "XGIfb: Fatal error: Unable to determine RAM size.\n");
return -ENODEV;
ret = -ENODEV;
goto error;
}

if ((xgifb_mode_idx < 0) || ((XGIbios_mode[xgifb_mode_idx].mode_no) != 0xFF)) {
Expand All @@ -3118,15 +3127,17 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
printk(KERN_ERR "XGIfb: Is there another framebuffer driver active?\n");
vfree(XGIhw_ext.pSR);
vfree(XGIhw_ext.pCR);
return -ENODEV;
ret = -ENODEV;
goto error;
}

if (!request_mem_region(xgi_video_info.mmio_base, XGIfb_mmio_size, "XGIfb MMIO")) {
printk(KERN_ERR "XGIfb: Fatal error: Unable to reserve MMIO region\n");
release_mem_region(xgi_video_info.video_base, xgi_video_info.video_size);
vfree(XGIhw_ext.pSR);
vfree(XGIhw_ext.pCR);
return -ENODEV;
ret = -ENODEV;
goto error;
}

xgi_video_info.video_vbase = XGIhw_ext.pjVideoMemoryAddress =
Expand Down Expand Up @@ -3413,8 +3424,10 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
printk(KERN_INFO "XGIfb: Added MTRRs\n");
#endif

if (register_framebuffer(fb_info) < 0)
return -EINVAL;
if (register_framebuffer(fb_info) < 0) {
ret = -EINVAL;
goto error;
}

XGIfb_registered = 1;

Expand All @@ -3426,6 +3439,10 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
dumpVGAReg();

return 0;

error:
framebuffer_release(fb_info);
return ret;
}

/*****************************************************/
Expand Down

0 comments on commit 93352b9

Please sign in to comment.