From: Shixiong Ou <[email protected]>
Fix missing pci_disable_device() in probe and remove.
Use pcim_enable_device(), pcim_request_all_regions(),
devm_ioremap() and devm_ioremap_wc() to replace manual resource
management. Remove all pci_release_regions() and iounmap() calls.
Merge failed_init label into failed_enable.
Signed-off-by: Shixiong Ou <[email protected]>
---
drivers/video/fbdev/savage/savagefb_driver.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c
index 7789196d2eb5..56ff3c50cd29 100644
--- a/drivers/video/fbdev/savage/savagefb_driver.c
+++ b/drivers/video/fbdev/savage/savagefb_driver.c
@@ -1728,7 +1728,7 @@ static int savage_map_mmio(struct fb_info *info)
par->mmio.len = SAVAGE_NEWMMIO_REGSIZE;
- par->mmio.vbase = ioremap(par->mmio.pbase, par->mmio.len);
+ par->mmio.vbase = devm_ioremap(&par->pcidev->dev, par->mmio.pbase, par->mmio.len);
if (!par->mmio.vbase) {
printk("savagefb: unable to map memory mapped IO\n");
return -ENOMEM;
@@ -1755,7 +1755,6 @@ static void savage_unmap_mmio(struct fb_info *info)
savage_disable_mmio(par);
if (par->mmio.vbase) {
- iounmap(par->mmio.vbase);
par->mmio.vbase = NULL;
}
}
@@ -1774,7 +1773,7 @@ static int savage_map_video(struct fb_info *info, int video_len)
par->video.pbase = pci_resource_start(par->pcidev, resource);
par->video.len = video_len;
- par->video.vbase = ioremap_wc(par->video.pbase, par->video.len);
+ par->video.vbase = devm_ioremap_wc(&par->pcidev->dev, par->video.pbase, par->video.len);
if (!par->video.vbase) {
printk("savagefb: unable to map screen memory\n");
@@ -1802,7 +1801,6 @@ static void savage_unmap_video(struct fb_info *info)
if (par->video.vbase) {
arch_phys_wc_del(par->video.wc_cookie);
- iounmap(par->video.vbase);
par->video.vbase = NULL;
info->screen_base = NULL;
}
@@ -2188,11 +2186,12 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
return -ENOMEM;
par = info->par;
mutex_init(&par->open_lock);
- err = pci_enable_device(dev);
+ err = pcim_enable_device(dev);
if (err)
goto failed_enable;
- if ((err = pci_request_regions(dev, "savagefb"))) {
+ err = pcim_request_all_regions(dev, "savagefb");
+ if (err) {
printk(KERN_ERR "cannot request PCI regions\n");
goto failed_enable;
}
@@ -2200,7 +2199,7 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
err = -ENOMEM;
if ((err = savage_init_fb_info(info, dev, id)))
- goto failed_init;
+ goto failed_enable;
err = savage_map_mmio(info);
if (err)
@@ -2331,8 +2330,6 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
savage_unmap_mmio(info);
failed_mmio:
kfree(info->pixmap.addr);
- failed_init:
- pci_release_regions(dev);
failed_enable:
framebuffer_release(info);
@@ -2355,7 +2352,6 @@ static void savagefb_remove(struct pci_dev *dev)
savage_unmap_video(info);
savage_unmap_mmio(info);
kfree(info->pixmap.addr);
- pci_release_regions(dev);
framebuffer_release(info);
}
}
--
2.25.1
No virus found
Checked by Hillstone Network AntiVirus
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.