[PATCH 3/5] fbdev: savage: Convert to managed PCI and ioremap API
From: <hidden>
Date: 2026-08-13 12:50:52
Also in:
dri-devel, lkml
Subsystem:
framebuffer layer, s3 savage framebuffer driver, the rest · Maintainers:
Helge Deller, Antonino Daplas, Linus Torvalds
From: Shixiong Ou <redacted> 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 <redacted> --- 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