]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/video/pmagb-b-fb.c
Merge branch 'kmemtrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-omap-h63xx.git] / drivers / video / pmagb-b-fb.c
index 7a0ce7d5af6bf2c150d1d12cbe8760d5ba19e9be..98748723af9f88cf5e433de72889f69e6b0f7ef0 100644 (file)
@@ -254,16 +254,23 @@ static int __init pmagbbfb_probe(struct device *dev)
        struct pmagbbfb_par *par;
        char freq0[12], freq1[12];
        u32 vid_base;
+       int err;
 
        info = framebuffer_alloc(sizeof(struct pmagbbfb_par), dev);
-       if (!info)
+       if (!info) {
+               printk(KERN_ERR "%s: Cannot allocate memory\n", dev_name(dev));
                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_name(dev));
+               err = -ENOMEM;
                goto err_alloc;
+       }
 
        info->fbops = &pmagbbfb_ops;
        info->fix = pmagbbfb_fix;
@@ -273,22 +280,32 @@ static int __init pmagbbfb_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_name(dev))) {
+               printk(KERN_ERR "%s: Cannot reserve FB region\n",
+                      dev_name(dev));
+               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_name(dev));
+               err = -ENOMEM;
                goto err_resource;
+       }
        par->sfb = par->mmio + PMAGB_B_SFB;
        par->dac = par->mmio + PMAGB_B_BT459;
 
        /* Frame buffer mapping setup.  */
        info->fix.smem_start = start + PMAGB_B_FBMEM;
        par->smem = ioremap_nocache(info->fix.smem_start, info->fix.smem_len);
-       if (!par->smem)
+       if (!par->smem) {
+               printk(KERN_ERR "%s: Cannot map FB\n", dev_name(dev));
+               err = -ENOMEM;
                goto err_mmio_map;
+       }
        vid_base = sfb_read(par, SFB_REG_VID_BASE);
        info->screen_base = (void __iomem *)par->smem + vid_base * 0x1000;
        info->screen_size = info->fix.smem_len - 2 * vid_base * 0x1000;
@@ -297,8 +314,12 @@ static int __init pmagbbfb_probe(struct device *dev)
        pmagbbfb_screen_setup(info);
        pmagbbfb_osc_setup(info);
 
-       if (register_framebuffer(info) < 0)
+       err = register_framebuffer(info);
+       if (err < 0) {
+               printk(KERN_ERR "%s: Cannot register framebuffer\n",
+                      dev_name(dev));
                goto err_smem_map;
+       }
 
        get_device(dev);
 
@@ -308,7 +329,7 @@ static int __init pmagbbfb_probe(struct device *dev)
                 par->osc1 / 1000, par->osc1 % 1000);
 
        pr_info("fb%d: %s frame buffer device at %s\n",
-               info->node, info->fix.id, dev->bus_id);
+               info->node, info->fix.id, dev_name(dev));
        pr_info("fb%d: Osc0: %s, Osc1: %s, Osc%u selected\n",
                info->node, freq0, par->osc1 ? freq1 : "disabled",
                par->osc1 != 0);
@@ -330,7 +351,7 @@ err_cmap:
 
 err_alloc:
        framebuffer_release(info);
-       return -ENXIO;
+       return err;
 }
 
 static int __exit pmagbbfb_remove(struct device *dev)