Loading drivers/video/platinumfb.c +26 −22 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ * more details. */ #undef DEBUG #include <linux/module.h> #include <linux/kernel.h> #include <linux/errno.h> Loading Loading @@ -535,33 +537,35 @@ static int __devinit platinumfb_probe(struct of_device* odev, volatile __u8 *fbuffer; int bank0, bank1, bank2, bank3, rc; printk(KERN_INFO "platinumfb: Found Apple Platinum video hardware\n"); dev_info(&odev->dev, "Found Apple Platinum video hardware\n"); info = framebuffer_alloc(sizeof(*pinfo), &odev->dev); if (info == NULL) if (info == NULL) { dev_err(&odev->dev, "Failed to allocate fbdev !\n"); return -ENOMEM; } pinfo = info->par; if (of_address_to_resource(dp, 0, &pinfo->rsrc_reg) || of_address_to_resource(dp, 1, &pinfo->rsrc_fb)) { printk(KERN_ERR "platinumfb: Can't get resources\n"); framebuffer_release(info); return -ENXIO; } if (!request_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.start - pinfo->rsrc_reg.end + 1, "platinumfb registers")) { dev_err(&odev->dev, "Can't get resources\n"); framebuffer_release(info); return -ENXIO; } dev_dbg(&odev->dev, " registers : 0x%llx...0x%llx\n", (unsigned long long)pinfo->rsrc_reg.start, (unsigned long long)pinfo->rsrc_reg.end); dev_dbg(&odev->dev, " framebuffer: 0x%llx...0x%llx\n", (unsigned long long)pinfo->rsrc_fb.start, (unsigned long long)pinfo->rsrc_fb.end); /* Do not try to request register space, they overlap with the * northbridge and that can fail. Only request framebuffer */ if (!request_mem_region(pinfo->rsrc_fb.start, pinfo->rsrc_fb.start - pinfo->rsrc_fb.end + 1, pinfo->rsrc_fb.end - pinfo->rsrc_fb.start + 1, "platinumfb framebuffer")) { release_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.end - pinfo->rsrc_reg.start + 1); printk(KERN_ERR "platinumfb: Can't request framebuffer !\n"); framebuffer_release(info); return -ENXIO; } Loading Loading @@ -600,7 +604,8 @@ static int __devinit platinumfb_probe(struct of_device* odev, bank2 = fbuffer[0x200000] == 0x56; bank3 = fbuffer[0x300000] == 0x78; pinfo->total_vram = (bank0 + bank1 + bank2 + bank3) * 0x100000; printk(KERN_INFO "platinumfb: Total VRAM = %dMB (%d%d%d%d)\n", (int) (pinfo->total_vram / 1024 / 1024), printk(KERN_INFO "platinumfb: Total VRAM = %dMB (%d%d%d%d)\n", (unsigned int) (pinfo->total_vram / 1024 / 1024), bank3, bank2, bank1, bank0); /* Loading Loading @@ -644,16 +649,15 @@ static int __devexit platinumfb_remove(struct of_device* odev) unregister_framebuffer (info); /* Unmap frame buffer and registers */ iounmap(pinfo->frame_buffer); iounmap(pinfo->platinum_regs); iounmap(pinfo->cmap_regs); release_mem_region(pinfo->rsrc_fb.start, pinfo->rsrc_fb.end - pinfo->rsrc_fb.start + 1); release_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.end - pinfo->rsrc_reg.start + 1); iounmap(pinfo->frame_buffer); iounmap(pinfo->platinum_regs); release_mem_region(pinfo->cmap_regs_phys, 0x1000); iounmap(pinfo->cmap_regs); framebuffer_release(info); Loading Loading
drivers/video/platinumfb.c +26 −22 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ * more details. */ #undef DEBUG #include <linux/module.h> #include <linux/kernel.h> #include <linux/errno.h> Loading Loading @@ -535,33 +537,35 @@ static int __devinit platinumfb_probe(struct of_device* odev, volatile __u8 *fbuffer; int bank0, bank1, bank2, bank3, rc; printk(KERN_INFO "platinumfb: Found Apple Platinum video hardware\n"); dev_info(&odev->dev, "Found Apple Platinum video hardware\n"); info = framebuffer_alloc(sizeof(*pinfo), &odev->dev); if (info == NULL) if (info == NULL) { dev_err(&odev->dev, "Failed to allocate fbdev !\n"); return -ENOMEM; } pinfo = info->par; if (of_address_to_resource(dp, 0, &pinfo->rsrc_reg) || of_address_to_resource(dp, 1, &pinfo->rsrc_fb)) { printk(KERN_ERR "platinumfb: Can't get resources\n"); framebuffer_release(info); return -ENXIO; } if (!request_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.start - pinfo->rsrc_reg.end + 1, "platinumfb registers")) { dev_err(&odev->dev, "Can't get resources\n"); framebuffer_release(info); return -ENXIO; } dev_dbg(&odev->dev, " registers : 0x%llx...0x%llx\n", (unsigned long long)pinfo->rsrc_reg.start, (unsigned long long)pinfo->rsrc_reg.end); dev_dbg(&odev->dev, " framebuffer: 0x%llx...0x%llx\n", (unsigned long long)pinfo->rsrc_fb.start, (unsigned long long)pinfo->rsrc_fb.end); /* Do not try to request register space, they overlap with the * northbridge and that can fail. Only request framebuffer */ if (!request_mem_region(pinfo->rsrc_fb.start, pinfo->rsrc_fb.start - pinfo->rsrc_fb.end + 1, pinfo->rsrc_fb.end - pinfo->rsrc_fb.start + 1, "platinumfb framebuffer")) { release_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.end - pinfo->rsrc_reg.start + 1); printk(KERN_ERR "platinumfb: Can't request framebuffer !\n"); framebuffer_release(info); return -ENXIO; } Loading Loading @@ -600,7 +604,8 @@ static int __devinit platinumfb_probe(struct of_device* odev, bank2 = fbuffer[0x200000] == 0x56; bank3 = fbuffer[0x300000] == 0x78; pinfo->total_vram = (bank0 + bank1 + bank2 + bank3) * 0x100000; printk(KERN_INFO "platinumfb: Total VRAM = %dMB (%d%d%d%d)\n", (int) (pinfo->total_vram / 1024 / 1024), printk(KERN_INFO "platinumfb: Total VRAM = %dMB (%d%d%d%d)\n", (unsigned int) (pinfo->total_vram / 1024 / 1024), bank3, bank2, bank1, bank0); /* Loading Loading @@ -644,16 +649,15 @@ static int __devexit platinumfb_remove(struct of_device* odev) unregister_framebuffer (info); /* Unmap frame buffer and registers */ iounmap(pinfo->frame_buffer); iounmap(pinfo->platinum_regs); iounmap(pinfo->cmap_regs); release_mem_region(pinfo->rsrc_fb.start, pinfo->rsrc_fb.end - pinfo->rsrc_fb.start + 1); release_mem_region(pinfo->rsrc_reg.start, pinfo->rsrc_reg.end - pinfo->rsrc_reg.start + 1); iounmap(pinfo->frame_buffer); iounmap(pinfo->platinum_regs); release_mem_region(pinfo->cmap_regs_phys, 0x1000); iounmap(pinfo->cmap_regs); framebuffer_release(info); Loading