Skip to content

Commit 897d540

Browse files
committed
Merge tag 'fbdev-for-7.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev
Pull fbdev fixes from Helge Deller: - request memory region before use (cobalt_lcdfb, clps711x-fb, hgafb) - reference cleanups in failure path (offb, savage) - a spelling fix (atyfb) * tag 'fbdev-for-7.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: fbdev: hgafb: Request memory region before ioremap fbdev: clps711x-fb: Request memory region for MMIO fbdev: cobalt_lcdfb: Request memory region fbdev: atyfb: Fix spelling mistake "enfore" -> "enforce" fbdev: savage: fix probe-path EDID cleanup leaks fbdev: offb: fix PCI device reference leak on probe failure
2 parents 129d6eb + 448aaf5 commit 897d540

6 files changed

Lines changed: 22 additions & 19 deletions

File tree

drivers/video/fbdev/aty/radeon_monitor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ static void radeon_fixup_panel_info(struct radeonfb_info *rinfo)
654654
{
655655
#ifdef CONFIG_PPC
656656
/*
657-
* LCD Flat panels should use fixed dividers, we enfore that on
657+
* LCD Flat panels should use fixed dividers, we enforce that on
658658
* PPC only for now...
659659
*/
660660
if (!rinfo->panel_info.use_bios_dividers && rinfo->mon1_type == MT_LCD

drivers/video/fbdev/clps711x-fb.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,9 @@ static int clps711x_fb_probe(struct platform_device *pdev)
216216
cfb = info->par;
217217
platform_set_drvdata(pdev, info);
218218

219-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
220-
if (!res)
221-
goto out_fb_release;
222-
cfb->base = devm_ioremap(dev, res->start, resource_size(res));
223-
if (!cfb->base) {
224-
ret = -ENOMEM;
219+
cfb->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
220+
if (IS_ERR(cfb->base)) {
221+
ret = PTR_ERR(cfb->base);
225222
goto out_fb_release;
226223
}
227224

drivers/video/fbdev/cobalt_lcdfb.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -295,19 +295,13 @@ static int cobalt_lcdfb_probe(struct platform_device *dev)
295295
if (!info)
296296
return -ENOMEM;
297297

298-
res = platform_get_resource(dev, IORESOURCE_MEM, 0);
299-
if (!res) {
298+
info->screen_base = devm_platform_get_and_ioremap_resource(dev, 0, &res);
299+
if (IS_ERR(info->screen_base)) {
300300
framebuffer_release(info);
301-
return -EBUSY;
301+
return PTR_ERR(info->screen_base);
302302
}
303303

304304
info->screen_size = resource_size(res);
305-
info->screen_base = devm_ioremap(&dev->dev, res->start,
306-
info->screen_size);
307-
if (!info->screen_base) {
308-
framebuffer_release(info);
309-
return -ENOMEM;
310-
}
311305

312306
info->fbops = &cobalt_lcd_fbops;
313307
info->fix = cobalt_lcdfb_fix;

drivers/video/fbdev/hgafb.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,19 @@ static void hga_blank(int blank_mode)
276276
spin_unlock_irqrestore(&hga_reg_lock, flags);
277277
}
278278

279-
static int hga_card_detect(void)
279+
static int hga_card_detect(struct platform_device *pdev)
280280
{
281281
int count = 0;
282282
void __iomem *p, *q;
283283
unsigned short p_save, q_save;
284284

285285
hga_vram_len = 0x08000;
286286

287+
if (!devm_request_mem_region(&pdev->dev, 0xb0000, hga_vram_len, "hgafb")) {
288+
dev_err(&pdev->dev, "cannot reserve video memory at 0xb0000\n");
289+
return -EBUSY;
290+
}
291+
287292
hga_vram = ioremap(0xb0000, hga_vram_len);
288293
if (!hga_vram)
289294
return -ENOMEM;
@@ -568,7 +573,7 @@ static int hgafb_probe(struct platform_device *pdev)
568573
struct fb_info *info;
569574
int ret;
570575

571-
ret = hga_card_detect();
576+
ret = hga_card_detect(pdev);
572577
if (ret)
573578
return ret;
574579

drivers/video/fbdev/offb.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,13 @@ static void offb_init_nodriver(struct platform_device *parent, struct device_nod
640640
vid = be32_to_cpup(vidp);
641641
did = be32_to_cpup(didp);
642642
pdev = pci_get_device(vid, did, NULL);
643-
if (!pdev || pci_enable_device(pdev))
643+
if (!pdev)
644644
return;
645+
646+
if (pci_enable_device(pdev)) {
647+
pci_dev_put(pdev);
648+
return;
649+
}
645650
}
646651
#endif
647652
/* kludge for valkyrie */

drivers/video/fbdev/savage/savagefb_driver.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2322,6 +2322,8 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
23222322
failed:
23232323
#ifdef CONFIG_FB_SAVAGE_I2C
23242324
savagefb_delete_i2c_busses(info);
2325+
fb_destroy_modelist(&info->modelist);
2326+
fb_destroy_modedb(info->monspecs.modedb);
23252327
#endif
23262328
fb_alloc_cmap(&info->cmap, 0, 0);
23272329
savage_unmap_video(info);

0 commit comments

Comments
 (0)