一、HDMI初始化

1. kernel-3.18/drivers/misc/mediatek/ext_disp/mtk_extd_mgr.c

 static int __init mtk_extd_mgr_init(void)
{
int i = ;
int ret = ;
/* struct notifier_block notifier;*/ EXT_MGR_FUNC(); extd_driver[DEV_MHL] = EXTD_HDMI_Driver();
extd_driver[DEV_EINK] = EXTD_EPD_Driver();
extd_factory_driver[DEV_MHL] = EXTD_Factory_HDMI_Driver(); for (i = DEV_MHL; i < DEV_MAX_NUM - ; i++) {
if (extd_driver[i]->init)
extd_driver[i]->init();
} if (platform_driver_register(&external_display_driver)) {//注册external_display_driver驱动程序
EXT_MGR_ERR("failed to register mtkfb driver\n");
return -;
} notifier.notifier_call = fb_notifier_callback;
ret = fb_register_client(&notifier);
if (ret)
EXT_MGR_ERR("unable to register fb callback!\n"); #ifdef CONFIG_HAS_EARLYSUSPEND
register_early_suspend(&extd_early_suspend_handler);
#endif
return ;
}

 2. kernel-3.18/drivers/misc/mediatek/ext_disp/extd_hdmi.c

 int hdmi_init(void)
{
int ret = ; HDMI_ERR(" start\n");
/* for support hdmi hotplug, inform AP the event */
hdmi_switch_data.name = "hdmi";
hdmi_switch_data.index = ;
hdmi_switch_data.state = HDMI_STATE_NO_DEVICE;
ret = switch_dev_register(&hdmi_switch_data); if (ret)
HDMI_ERR("[hdmi][HDMI]switch_dev_register failed, returned:%d!\n", ret); hdmires_switch_data.name = "res_hdmi";
hdmires_switch_data.index = ;
hdmires_switch_data.state = ;
ret = switch_dev_register(&hdmires_switch_data); if (ret)
HDMI_ERR("[hdmi][HDMI]switch_dev_register failed, returned:%d!\n", ret);
HDMI_ERR(" done\n");
return ;
}

 3. kernel-3.18/drivers/misc/mediatek/ext_disp/mtk_extd_mgr.c

 static int mtk_extd_mgr_probe(struct platform_device *pdev)
{
int ret = ;
int i = ;
struct class_device *class_dev = NULL; EXT_MGR_FUNC(); /* Allocate device number for hdmi driver */
ret = alloc_chrdev_region(&extd_devno, , , EXTD_DEVNAME); if (ret) {
EXT_MGR_LOG("alloc_chrdev_region fail\n");
return -;
} /* For character driver register to system, device number binded to file operations */
extd_cdev = cdev_alloc();
extd_cdev->owner = THIS_MODULE;
extd_cdev->ops = &external_display_fops;
ret = cdev_add(extd_cdev, extd_devno, ); /* For device number binded to device name(hdmitx), one class is corresponeded to one node */
extd_class = class_create(THIS_MODULE, EXTD_DEVNAME);
/* mknod /dev/hdmitx */
class_dev = (struct class_device *)device_create(extd_class, NULL, extd_devno, NULL, EXTD_DEVNAME);
ext_dev_context = (struct device *)&(pdev->dev); for (i = DEV_MHL; i < DEV_MAX_NUM - ; i++) {
if (extd_driver[i]->post_init != )
extd_driver[i]->post_init();
} EXT_MGR_LOG("[%s] out\n", __func__);
return ;
}

最新文章

  1. spin_lock 和 spin_lock_irqsave
  2. 斯坦福第七课:正则化(Regularization)
  3. C#获取ftp文件最后修改时间
  4. Linux常用命令收集
  5. [AHOI2015 Junior] [Vijos P1943] 上学路上 【容斥+组合数】
  6. Java源程序结构
  7. jQuery实例1
  8. Java IO学习笔记(五)对象流
  9. dojo级联步骤
  10. cmake find_package 命令
  11. react Hooks
  12. Debian Security Advisory(Debian安全报告) DSA-4403-1 php7.0
  13. java导出csv文件使用Excel打开乱码问题
  14. OSPF补全计划-0 preface
  15. 解决mybatis generator无法覆盖XML
  16. 【读书笔记】iOS-如何推销你的Web应用
  17. 2017-2018 Exp9 网络欺诈技术防范 20155214
  18. docker重新安装后无法启动
  19. 【FindReport】图表快速部署开发
  20. CSS选择器详解(一)常用选择器

热门文章

  1. 如何防范SQL注入式攻击
  2. Sql语言复习
  3. 【环境配置】Linux的经常使用命令
  4. 【分布式计算】DFS &amp;amp;&amp;amp; BigTable
  5. 关于mysql的表名/字段名/字段值是否区分大小写的问题
  6. 【转载】C#扫盲之:带你掌握C#的扩展方法、以及探讨扩展方法的本质、注意事项
  7. svn 命令个
  8. 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
  9. iOS UI13_数据解析XML_,JSON
  10. Detours3.0 文档翻译