1、project-1998-trunk-bootable-bootloader-lk-project:   复制zaw1998aa_platform.mk为zaw2000aa_platform.mk
里面修改:
CONFIG_CUSTOM_LK_LCM="hx8394d_dsi_vdo_zaw1998 zx_dsi_vdo_zaw2000"

2、project-1998-trunk-bootable-bootloader-lk-dev-lcm:   ...._lcm_list.c里面加extern
#if defined(ZX_DSI_VDO_ZAW2000)                               //自定义
extern LCM_DRIVER zx_dsi_vdo_zaw2000_lcm_drv;
#endif
LCM_DRIVER* lcm_driver_list[] =
{
#if defined(ZX_DSI_VDO_ZAW2000)
        &zx_dsi_vdo_zaw2000_lcm_drv,
        #endif
....
}
3、project-1998-trunk-bootable-bootloader-lk-dev-lcm:   3.1在添加的屏的文件夹zx_dsi_vdo_zaw2000里面的makefile文件里修改
obj-y += hx8394d_dsi_vdo_zaw1998.o zx_dsi_vdo_zaw2000.o
在驱动文件zx_dsi_vdo_zaw2000里面修改
LCM_DRIVER zx_dsi_vdo_zaw2000_lcm_drv =  
{
    .name            = "zx_dsi_vdo_zaw2000"
    ....
}

4、trunk-kernal-3.10-arch-arm-configs:                  platform_debug_defconfig
zaw1998aa_platform_debug_defconfig和zaw1998aa_platform_defconfig的区别:带debug是eng版本的,不带是user版本的
在1166行原来:
CONFIG_CUSTOM_KERNEL_LCM="hx8394d_dsi_vdo_zaw1998"
修改后:CONFIG_CUSTOM_KERNEL_LCM="hx8394d_dsi_vdo_zaw1998 zx_dsi_vdo_zaw2000"

5、trunk-kernal-3.10-drivers-misc-mediatek-lcm—:       .._lcm_list.c里面加extern

kernal\  Mtkfb.c:___mtkfb_probe(struct device *dev)___disp_drv_.c\DISP_SelectDevice(NULL)___disp_hal_.c\LCM_DRIVER  *disphal_get_lcm_driver___lcm = lcm_driver_list[0]____Mt65xx_lcm_list.c\LCM_DRIVER* lcm_driver_list[]=

bootloader\lk\platform\mt6735\platform.c
mt_disp_Init((void)*g_fb_base)
 DISP_CHECK_RET(DISP_Init((UINT32)lcdbase, (UINT32)lcdbase, FALSE));
disp_drv_init_context()
 DISP_DetectDevice()
lcm_drv = disp_drv_get_lcm_driver(NULL);

kernal-3.10-drivers-misc-mediatek-video-mt6582:  disp_hal_.c   *disphal_get_lcm_driver(const char *lcm_name)

platform总线注册:kernal/init :Main.c    asmlinkage void __init start_kernel(void)(内核的初始化过程由start_kernel函数开始,它完成了内核的大部分初始化工作)——>rest_init——>kernel_thread(这个线程创建很重要)——>kernel_init——>kernel_init_freeable——>do_basic_setup——>void __init driver_init(void)(kernal/driver/base/Init.c)——>platform_bus_init(kernal/driver/base/platform.c)

kernal\drivers\base
platform_driver_registe:向系统注册设备——>driver_register——>bus_add_driver——>void driver_attach(struct device_driver * drv):——>  bus_for_each_dev(drv->bus, NULL, drv, __driver_attach):遍历总线上的设备,执行一次__driver_attach(),看能不能将驱动关联(attach)到某个设备上去——>__driver_attach——>driver_match_device——>drv->bus->match——>(*match)(struct device *dev, struct device_driver *drv)==0;——>driver_probe_device(drv, dev)——>driver_probe_device(drv, dev)——>really_probe——>dev->bus->probe(dev)
这里找到总线类型中的match函数,这里只是个函数指针,很明显platform_bus_type结构下有具体match的实现,匹配后会自动调用驱动下的probe函数:platform_drv_prober(在platform_driver_registe函数中定义了指针函数,使probe指向platform_drv_probe:drv->driver.probe = platform_drv_probe)

而每当我们向一根bus添加一个硬件时时,套路是这样

kernal\drivers\base:platform.c
plateform_device_register
platform_device_add
kernal\drivers\base:core.c
device_add()
\\ device_add 中有很多操作kobject,注册sysfs,形成硬件hiberarchy结构的代码。
如果您忘记了,先回头去参考参考"我是sysfs"
-> bus_probe_device(struct device *dev) -> device_attach() (driver/base:dd.c)->bus_for_each_drv()
bus_for_each_drv与bus_for_each_dev类似,遍历该总线上所有的driver,执行一次__device_attach(),看能不能将设备关联(attach)到某个已登记的驱动上去。
__device_attach()
->driver_probe_device() //后面与上面一样

platform_driver结构体:platform_device.h
static struct platform_device mt6575_device_fb  :Mt_devs.c(定义设备与资源的地方)

LCM兼容的更多相关文章

  1. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

  2. 高通平台MSM8916LCM模块移植(一)-bootloader部分【转】

    本文转载自:http://www.mobile-open.com/2016/970947.html 高通平台中的bootloader叫做LK(Little Kernel,对于LCM来说LK部分相当重要 ...

  3. 不同分辨率的LCM进行兼容

    1.读取不同LCM ID的时序不同,如何处理? 2.开机后android会自动resize图片资源的大小,但开机logo无法自行resize,如何操作?保证识别到不同分辨率的LCM后开机logo可以正 ...

  4. mtk lcm驱动加载流程 (转载)

    平台:mt6582 + Android 4.4 前面就说过,在mtk代码中支持屏是可兼容的,通过调用驱动中的compare_id函数来匹配驱动和屏,这里来细看一下代码. 1. LK部分(mediate ...

  5. MSM8909中LK阶段LCM屏适配与显示流程分析(一)

    1.前言 在驱动开发中,我们往往需要适配一些新的屏幕或者调试一些屏幕的参数等,对于Qualcomm的MSM8909这款SoC,当启动Android系统时,会有一个LK阶段,该阶段用来启动Linux内核 ...

  6. 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程

    读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...

  7. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  8. APP多版本共存,服务端如何兼容?

    做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易.下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种 ...

  9. ie6 ie7 ie8 ie9兼容问题终极解决方案

    放下包袱,解决低版本兼容问题   这是一个老生常谈的问题,自然解决这个问题的方案也比较多,下面整理了一些解决方法: 1.强制使用高版本渲染模式. 强制使用Edge模式来解析网页代码 <meta ...

随机推荐

  1. linux下echo命令详解(转)

      linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,一般起到一个 ...

  2. hdwiki 数据库结构说明

    HDWiki数据库结构说明          以下标有“A”的表示该列为自增列,标有“P”的表示该列为主码,标有“I”的表示该列为索引列,标有“U”的表示该列为唯一列,标有“F”的表示全文搜索.   ...

  3. List与Set的contains方法效率问题

    今天看到网上一篇文章说:Set检索元素效率低下,删除和插入效率高:List查找元素效率高,插入删除元素效率低.于是想到List虽然用get(index)方法查询效率高,但是若用contains方法查询 ...

  4. textarea不能提交html格式的代码

    解决方法:web.config中<system.web>节点添加 <httpRuntime targetFramework="4.5" requestValida ...

  5. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

  6. poj3270 Cow Sorting

    给定有序数组a[1...n]的一个置换a[σ(1)...σ(n)], 通过交换数组元素把置换后的数组恢复为有序, 定义进行一次交换的代价为两元素之和,试问此过程的最小总代价. 实际上一种置换即定义S ...

  7. 【20160924】GOCVHelper MFC增强算法(1)

        //递归读取目录下全部文件(flag为r的时候递归)     void getFiles(string path, vector<string>& files,string ...

  8. linux lamp服务器安装配置

    1 安装Apache服务器 yum -y install httpd httpd-devel 如何查看服务: systemctl  | grep httpd 启动apache: service htt ...

  9. 土豪聪要请客(stol)

    土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多…… 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...

  10. marquee滚动,无缝连接的代码

    页面的自动滚动效果,可由javascript来实现, 但是有一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 使用marquee ...