Loading drivers/video/hitfb.c +35 −14 Original line number Diff line number Diff line Loading @@ -44,9 +44,6 @@ static struct fb_fix_screeninfo hitfb_fix __initdata = { .accel = FB_ACCEL_NONE, }; static u32 pseudo_palette[16]; static struct fb_info fb_info; static inline void hitfb_accel_wait(void) { while (fb_readw(HD64461_GRCFGR) & HD64461_GRCFGR_ACCSTATUS) ; Loading Loading @@ -331,6 +328,8 @@ static struct fb_ops hitfb_ops = { static int __init hitfb_probe(struct platform_device *dev) { unsigned short lcdclor, ldr3, ldvndr; struct fb_info *info; int ret; if (fb_get_options("hitfb", NULL)) return -ENODEV; Loading Loading @@ -384,28 +383,50 @@ static int __init hitfb_probe(struct platform_device *dev) break; } fb_info.fbops = &hitfb_ops; fb_info.var = hitfb_var; fb_info.fix = hitfb_fix; fb_info.pseudo_palette = pseudo_palette; fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | info = framebuffer_alloc(sizeof(u32) * 16, &dev->dev); if (unlikely(!info)) return -ENOMEM; info->fbops = &hitfb_ops; info->var = hitfb_var; info->fix = hitfb_fix; info->pseudo_palette = info->par; info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; fb_info.screen_base = (void *)hitfb_fix.smem_start; info->screen_base = (void *)hitfb_fix.smem_start; fb_alloc_cmap(&fb_info.cmap, 256, 0); ret = fb_alloc_cmap(&info->cmap, 256, 0); if (unlikely(ret < 0)) goto err_fb; if (register_framebuffer(&fb_info) < 0) return -EINVAL; ret = register_framebuffer(info); if (unlikely(ret < 0)) goto err; platform_set_drvdata(dev, info); printk(KERN_INFO "fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); info->node, info->fix.id); return 0; err: fb_dealloc_cmap(&info->cmap); err_fb: framebuffer_release(info); return ret; } static int __exit hitfb_remove(struct platform_device *dev) { return unregister_framebuffer(&fb_info); struct fb_info *info = platform_get_drvdata(dev); unregister_framebuffer(info); fb_dealloc_cmap(&info->cmap); framebuffer_release(info); return 0; } #ifdef CONFIG_PM Loading Loading
drivers/video/hitfb.c +35 −14 Original line number Diff line number Diff line Loading @@ -44,9 +44,6 @@ static struct fb_fix_screeninfo hitfb_fix __initdata = { .accel = FB_ACCEL_NONE, }; static u32 pseudo_palette[16]; static struct fb_info fb_info; static inline void hitfb_accel_wait(void) { while (fb_readw(HD64461_GRCFGR) & HD64461_GRCFGR_ACCSTATUS) ; Loading Loading @@ -331,6 +328,8 @@ static struct fb_ops hitfb_ops = { static int __init hitfb_probe(struct platform_device *dev) { unsigned short lcdclor, ldr3, ldvndr; struct fb_info *info; int ret; if (fb_get_options("hitfb", NULL)) return -ENODEV; Loading Loading @@ -384,28 +383,50 @@ static int __init hitfb_probe(struct platform_device *dev) break; } fb_info.fbops = &hitfb_ops; fb_info.var = hitfb_var; fb_info.fix = hitfb_fix; fb_info.pseudo_palette = pseudo_palette; fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | info = framebuffer_alloc(sizeof(u32) * 16, &dev->dev); if (unlikely(!info)) return -ENOMEM; info->fbops = &hitfb_ops; info->var = hitfb_var; info->fix = hitfb_fix; info->pseudo_palette = info->par; info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA; fb_info.screen_base = (void *)hitfb_fix.smem_start; info->screen_base = (void *)hitfb_fix.smem_start; fb_alloc_cmap(&fb_info.cmap, 256, 0); ret = fb_alloc_cmap(&info->cmap, 256, 0); if (unlikely(ret < 0)) goto err_fb; if (register_framebuffer(&fb_info) < 0) return -EINVAL; ret = register_framebuffer(info); if (unlikely(ret < 0)) goto err; platform_set_drvdata(dev, info); printk(KERN_INFO "fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); info->node, info->fix.id); return 0; err: fb_dealloc_cmap(&info->cmap); err_fb: framebuffer_release(info); return ret; } static int __exit hitfb_remove(struct platform_device *dev) { return unregister_framebuffer(&fb_info); struct fb_info *info = platform_get_drvdata(dev); unregister_framebuffer(info); fb_dealloc_cmap(&info->cmap); framebuffer_release(info); return 0; } #ifdef CONFIG_PM Loading