Skip to content

Commit

Permalink
drivers/video/pmag-ba-fb.c: improve diagnostics
Browse files Browse the repository at this point in the history
Add error messages to the probe call.

While they may rarely trigger, they may be useful when something weird is
going on.  Also this is good style.

[akpm@linux-foundation.org: remove unneeded initialisation]
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Maciej W. Rozycki authored and Linus Torvalds committed Oct 16, 2007
1 parent 0b693ea commit 53ee1b5
Showing 1 changed file with 27 additions and 7 deletions.
34 changes: 27 additions & 7 deletions drivers/video/pmag-ba-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,16 +147,23 @@ static int __init pmagbafb_probe(struct device *dev)
resource_size_t start, len;
struct fb_info *info;
struct pmagbafb_par *par;
int err;

info = framebuffer_alloc(sizeof(struct pmagbafb_par), dev);
if (!info)
if (!info) {
printk(KERN_ERR "%s: Cannot allocate memory\n", dev->bus_id);
return -ENOMEM;
}

par = info->par;
dev_set_drvdata(dev, info);

if (fb_alloc_cmap(&info->cmap, 256, 0) < 0)
if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
printk(KERN_ERR "%s: Cannot allocate color map\n",
dev->bus_id);
err = -ENOMEM;
goto err_alloc;
}

info->fbops = &pmagbafb_ops;
info->fix = pmagbafb_fix;
Expand All @@ -166,28 +173,41 @@ static int __init pmagbafb_probe(struct device *dev)
/* Request the I/O MEM resource. */
start = tdev->resource.start;
len = tdev->resource.end - start + 1;
if (!request_mem_region(start, len, dev->bus_id))
if (!request_mem_region(start, len, dev->bus_id)) {
printk(KERN_ERR "%s: Cannot reserve FB region\n", dev->bus_id);
err = -EBUSY;
goto err_cmap;
}

/* MMIO mapping setup. */
info->fix.mmio_start = start;
par->mmio = ioremap_nocache(info->fix.mmio_start, info->fix.mmio_len);
if (!par->mmio)
if (!par->mmio) {
printk(KERN_ERR "%s: Cannot map MMIO\n", dev->bus_id);
err = -ENOMEM;
goto err_resource;
}
par->dac = par->mmio + PMAG_BA_BT459;

/* Frame buffer mapping setup. */
info->fix.smem_start = start + PMAG_BA_FBMEM;
info->screen_base = ioremap_nocache(info->fix.smem_start,
info->fix.smem_len);
if (!info->screen_base)
if (!info->screen_base) {
printk(KERN_ERR "%s: Cannot map FB\n", dev->bus_id);
err = -ENOMEM;
goto err_mmio_map;
}
info->screen_size = info->fix.smem_len;

pmagbafb_erase_cursor(info);

if (register_framebuffer(info) < 0)
err = register_framebuffer(info);
if (err < 0) {
printk(KERN_ERR "%s: Cannot register framebuffer\n",
dev->bus_id);
goto err_smem_map;
}

get_device(dev);

Expand All @@ -211,7 +231,7 @@ static int __init pmagbafb_probe(struct device *dev)

err_alloc:
framebuffer_release(info);
return -ENXIO;
return err;
}

static int __exit pmagbafb_remove(struct device *dev)
Expand Down

0 comments on commit 53ee1b5

Please sign in to comment.