设为首页 加入收藏

TOP

Linux LCD驱动分析(四)
2014-11-24 11:52:45 来源: 作者: 【 】 浏览:1
Tags:Linux LCD 驱动 分析
ot get irq %d - err %d\n", irq, ret);
916 ret = -EBUSY;
917 goto release_regs;



918 }
919
920 info->clk = clk_get(NULL, "lcd");
921 if (!info->clk || IS_ERR(info->clk)) {
922 printk(KERN_ERR "failed to get lcd clock source\n");
923 ret = -ENOENT;
924 goto release_irq;
925 }
926
927 clk_enable(info->clk);
928 dprintk("got and enabled clock\n");
929
930 msleep(1);
931
932 info->clk_rate = clk_get_rate(info->clk);
933
934 /* find maximum required memory size for display */
935 for (i = 0; i < mach_info->num_displays; i++) {
936 unsigned long smem_len = mach_info->displays[i].xres;
937
938 smem_len *= mach_info->displays[i].yres;
939 smem_len *= mach_info->displays[i].bpp;
940 smem_len >>= 3;
941 if (fbinfo->fix.smem_len < smem_len)
942 fbinfo->fix.smem_len = smem_len;
943 }



944
945 /* Initialize video memory */
946 ret = s3c2410fb_map_video_memory(fbinfo);
947 if (ret) {
948 printk(KERN_ERR "Failed to allocate video RAM: %d\n", ret);
949 ret = -ENOMEM;
950 goto release_clock;
951 }
952
953 dprintk("got video memory\n");
954
955 fbinfo->var.xres = display->xres;
956 fbinfo->var.yres = display->yres;
957 fbinfo->var.bits_per_pixel = display->bpp;
958
959 s3c2410fb_init_registers(fbinfo);
960
961 s3c2410fb_check_var(&fbinfo->var, fbinfo);
962
963 ret = s3c2410fb_cpufreq_register(info);
964 if (ret < 0) {
965 dev_err(&pdev->dev, "Failed to register cpufreq\n");
966 goto free_video_memory;
967 }
968
969 ret = register_framebuffer(fbinfo);



970 if (ret < 0) {
971 printk(KERN_ERR "Failed to register framebuffer device: %d\n",
972 ret);
973 goto free_cpufreq;
974 }
975
976 /* create device files */
977 ret = device_create_file(&pdev->dev, &dev_attr_debug);
978 if (ret) {
979 printk(KERN_ERR "failed to add debug attribute\n");
980 }
981
982 printk(KERN_INFO "fb%d: %s frame buffer device\n",
983 fbinfo->node, fbinfo->fix.id);
984
985 return 0;
986
987 free_cpufreq:
988 s3c2410fb_cpufreq_deregister(info);
989 free_video_memory:
990 s3c2410fb_unmap_video_memory(fbinfo);
991 release_clock:
992 clk_disable(info->clk);



993 clk_put(info->clk);
994 release_irq:
995 free_irq(irq, info);
996 release_regs:
997 iounmap(info->io);
998 release_mem:
999 release_resource(info->mem);
1000 kfree(info->mem);
1001 dealloc_fb:
1002 platform_set_drvdata(pdev, NULL);
1003 framebuffer_release(fbinfo);
1004 return ret;
1005 }
1006
1007 static int __init s3c2410

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用Java代码实现ARP攻击 下一篇Struts 2整合Spring

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)
·Redis - The Real-ti (2025-12-26 08:20:50)
·Bash 脚本教程——Li (2025-12-26 07:53:35)
·实战篇!Linux shell (2025-12-26 07:53:32)