1 一、配置GPIO

2 二、配置emmc

3 三、配置LCM

3.1 1、增加LCM驱动文件

3.2 2、配置驱动文件

3.3 3、配置背光

4 四、配置touch panel

4.1 1、通过dct配置gipo及其对应的别名

4.2 2、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk

4.3 3、增加 tp 驱动目录及驱动文件

4.4 4、配置刚刚添加的驱动文件

4.5 5、配置pmic供电

5 五、注意事项

6 六、附录

一、配置GPIO

通过工具:

mediatek/source/dct/DrvGen.exe

配置并替换dws文件:

mediatek/custom/bbk75_emmc_gb2/kernel/dct/dct/codegen.dws

配置GPIO的主要目的是使系统在uboot,甚至preloader阶段时保持BB管脚的状态;在kernel启动阶段加载驱动模块时,不少驱动是会重新设置其用的gpio功能的,所以这一阶段并不要求非常严格,然而同时也必须要保证gpio所配置的初始状态不会影响到系统的启动,如死机、复位等等。

二、配置emmc

1、在下面文件的MTK6575标签栏添加对应的flash芯片型号信息:

mediatek/build/tools/emigen/MT6575/MemoryDeviceList_MT6575.xls

2、从以下文件获取flash芯片对应的序号(从第1列为0,开始数,如到第L列则为11): mediatek/build/tools/ptgen/emmc_region.xls

3、mediatek/custom/bbk15_td_ics/preloader/inc/custom_MemoryDevice.h

#define BOARD_ID                LENOVO75

#define CS_PART_NUMBER[0]       KMSJS000KM_B308

将上面的宏更改为MemoryDeviceList_MT6575.xls中对应的内容

4,mediatek/config/bbk15_td_ics/ProjectConfig.mk

将EMMC_CHIP更改为第2步获取的数值,如EMMC_CHIP = 11。



三、配置LCM

1、增加LCM驱动文件

(1)、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk

CUSTOM_KERNEL_LCM = sharp_S6D05A1X12_mcu

CUSTOM_UBOOT_LCM = sharp_S6D05A1X12_mcu

LCM_WIDTH = 320

LCM_HEIGHT = 480

BOOT_LOGO = cmcc_hvga

(2)、增加 lcm 驱动目录及文件

mediatek/custom/common/kernel/lcm/sharp_S6D05A1X12_mcu/

ps.如果是从其他平台拷贝而来,注意更改包含对应的头文件: 

#ifdef BUILD_UBOOT

#include 

#define print(x...) printf(x)

#else

#include 

#define print(x...) printk(x)

#endif

改为: 

#ifdef BUILD_UBOOT

#include 

#define print(x...) printf(x)

#else

#include 

#define print(x...) printk(x)

#endif

(3)、修改 mt65xx_lcm_list.c 使支持刚添加的驱动

mediatek/custom/common/kernel/lcm/mt65xx_lcm_list.c

extern LCM_DRIVER sharp_S6D05A1X12_mcu_drv;

...

#if defined(SHARP_S6D05A1X12_MCU)

 &sharp_S6D05A1X12_mcu_drv,

#endif

ps.对于2、3步,uboot lcm驱动对应的驱动目录mediatek/custom/common/uboot/lcm/本也要添加,不过现在我们这一版本uboot/lcm/就是link到kernel/lcm/的,故省去这一步

2、配置驱动文件

打开 mediatek/custom/common/kernel/lcm/sharp_S6D05A1X12_mcu/sharp_S6D05A1X12_mcu.c,根据BB管脚定义和实际硬件连接,更改如下GPIO宏定义:

#define LSA0_GPIO_PIN (GPIO49)

#define LSCE_GPIO_PIN (GPIO47)

#define LSCK_GPIO_PIN (GPIO51)

#define LSDA_GPIO_PIN (GPIO52)



#define DPICK_GPIO_PIN (GPIO41)

#define DPIDE_GPIO_PIN (GPIO30)

#define DPIVSYNC_GPIO_PIN (GPIO21)

#define DPIHSYNC_GPIO_PIN (GPIO19)

3、配置背光

背光配置包括uboot和kernal中的文件:

mediatek/custom/bbk15_td_ics/kernel/leds/mt65xx/cust_leds.c

mediatek/custom/bbk15_td_ics/uboot/cust_leds.c

主要配置

...

{"lcd-backlight",     MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight},

...

中的响应函数"Cust_SetBacklight",在其中要保证背光能亮,由于是打版软件,这里只先配置成gpio让其保持最亮。

查背光IC datasheet可知,只需设置VFB为低、CE为高即可:

...

//GPIO162->BL_EN->CE

mt_set_gpio_mode(GPIO162,GPIO_MODE_00);

mt_set_gpio_dir(GPIO162,GPIO_DIR_OUT);

mt_set_gpio_out(GPIO162,GPIO_OUT_ONE);

//GPIO67->PWM1->VFB

mt_set_gpio_mode(GPIO67,GPIO_MODE_00);

mt_set_gpio_dir(GPIO67,GPIO_DIR_OUT);

mt_set_gpio_out(GPIO67,GPIO_OUT_ZERO);

...

ps.uboot/cust_leds.c中还要包含头文件"#include ",否则编译会出错

6.1 1、i2C配置的两种方法

6.2 2、将触屏配置成点触模式

四、配置touch panel

1、通过dct配置gipo及其对应的别名

如:



#define GPIO_CTP_RST_PIN         GPIO100

#define GPIO_CTP_RST_PIN_M_GPIO  GPIO_MODE_00

#define GPIO_CTP_EINT_PIN         GPIO75

#define GPIO_CTP_EINT_PIN_M_GPIO  GPIO_MODE_00

#define GPIO_CTP_EINT_PIN_M_EINT  GPIO_MODE_01

#define GPIO_CTP_EINT_PIN_M_PWM  GPIO_MODE_02

2、配置mediatek/config/bbk15_td_ics/ProjectConfig.mk

CUSTOM_KERNEL_TOUCHPANEL = qt602240

3、增加 tp 驱动目录及驱动文件

添加头文件:

mediatek/custom/bbk15_td_ics/kernel/touchpanel/qt602240/

添加C文件:

mediatek/custom/common/kernel/touchpanel/qt602240/

4、配置刚刚添加的驱动文件

mediatek/custom/bbk15_td_ics/kernel/touchpanel/qt602240/

更改以下宏定义为对应平台:

#define TPD_POWER_SOURCE         MT6575_POWER_VGP2

check触摸屏驱动ic的i2c地址,确保代码与datasheet中保持一致:

static unsigned short force[] = {3, 0x4a, I2C_CLIENT_END,I2C_CLIENT_END}; //0x4a则为i2c地址

ps: 在mtk6575_dev.c中的地址必须是除去读写位后的地址,而force里的则里的从机地址则需包含读写位的8位标志,如0x94(即mtk对i2c地址的规定和其他地方不一样,一般情况下说i2c的地址都是不包含读写位的,但mtk则将最后一位读写标志算进去了,这点要注意一下).

另外注意check一下此头文件中的其他宏定义信息,确保触屏与LCM适配,如:

//#define TPD_RES_X                480

//#define TPD_RES_Y                800

//#define TPD_CALIBRATION_MATRIX  {962,0,0,0,1600,0,0,0};

#define TPD_CALIBRATION_MATRIX  {320*2,0,0,0,480*2,0,0,0};

5、配置pmic供电

一般在对应的.detect(重新供电操作), .suspend(关闭供电操作), .resume(打开供电操作)中添加进行相关操作,供电功能函数如下:

hwPowerDown(TPD_POWER_SOURCE,"TP"); //停止供电

hwPowerOn(TPD_POWER_SOURCE,VOL_2800,"TP");  //开始供电

另外也可直接在pmic的probe函数中配置(注意找对对应的pm电压输出口和电压大小):

mediatek/platform/mt6575/kernel/drivers/power/pmic_mt6329.c

static int mt6329_driver_probe(struct i2c_client *client, const struct i2c_device_id *id) {             

...

    pmic_ldo_enable(MT65XX_POWER_LDO_VGP2,KAL_TRUE);

    pmic_ldo_vol_sel(MT65XX_POWER_LDO_VGP2,UPMU_VOLT_2_8_0_0_V);

...

}

五、注意事项

在配置完音量键后,每次开机都会进入recovery mode(这一点在显示屏无显示时可通过串口抓打印消息验证,显示屏能显示时当然就一目了然了)。

刚开始怀疑是硬件上的有问题,是不是哪里将音量键拉低了,因为我们是配置成开机时按住音量键才会进入recovery的,但电子的同事测试波形之后反馈说只有开机一小段时间输出低,后续便输出高了,于是再次将目光转到软件上来,后来我们查看dct得知连接volume的输入线芯片默认是内部拉低的,于是用dct将其配置成pull up,再开机,一切ok.

六、附录

1、i2C配置的两种方法

方法一:在force中进行i2c id的指定,然后用i2c_add_driver挂载到对应的i2c总线上去:

static unsigned short force[] = {3, 0x4a, I2C_CLIENT_END,I2C_CLIENT_END};

注意:若使用mtk的硬件i2c注意上面的i2c地址要包括读写标志位,如上述的0x4a应改为0x94.

方法二:在mtk6575_dev.c中进行设置:

static struct i2c_board_info __initdata i2c_devs0[]={

  { I2C_BOARD_INFO("fan5405", (0xd4>>1)),},  

  { I2C_BOARD_INFO("qt602240ts", (0x94>>1)),}, 

};

2、将触屏配置成点触模式

qt602240ts在配置完成时默认是使用鼠标模式,此时可将以下文件push到 /system/usr/idc/ 即可设置为点触模式:

out/target/product/bbk15_td_ics/system/usr/idc/qt602240ts.idc

# Basic Parameters

touch.deviceType = touchScreen

touch.orientationAware = 1

# Size

touch.size.calibration = diameter

touch.size.scale = 10

touch.size.bias = 0

touch.size.isSummed = 0

# Pressure

# Driver reports signal strength as pressure.

#

# A normal thumb touch typically registers about 200 signal strength

# units although we don\'t expect these values to be accurate.

touch.pressure.calibration = amplitude

touch.pressure.scale = 0.005

# Orientation

touch.orientation.calibration = none

MTK6515 android打版软件配置(DrvGen.exe 使用)的更多相关文章

  1. 网络编程之PC版与Android手机版带断点续传的多线程下载

    一.多线程下载         多线程下载就是抢占服务器资源         原理:服务器CPU 分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服 ...

  2. 微软官方的Excel android 移动版的折腾

    微软官方的Excel android 移动版,有重大bug.害我折腾了一天多时间.最终确认是Excel自身的问题. 现象描述:手机上新建或是保存excel后.放到电脑上,不能打开.提示”Excel在B ...

  3. 四则运算(Android)版

    实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...

  4. 第一行代码 Android 第二版到货啦

    今日android第一行代码[第二版]已到,收获的季节到了 先看一下封面 书签: 以后就把空闲时间送给它吧 先来看一下本书的目录: 第1章 开始启程--你的第1行Android代码 第2章 先从看得到 ...

  5. [Unity+Android]横版扫描二维码

    原地址:http://blog.csdn.net/dingxiaowei2013/article/details/25086835 终于解决了一个忧伤好久的问题,严重拖了项目进度,深感惭愧!一直被一系 ...

  6. Android 发版的小工具

    Android加固包签名 我们知道自己的apk在上传市场的时候, 为了更好的包含我们的代码需要加固服务, 加固后的apk是不能直接安装的, 需要我们手动签名. 关于Android签名的知识就不在赘述了 ...

  7. Tomcat免安装版执行tomcat9.exe闪退

    Tomcat免安装版点击startup.bat可成功启动,但是执行tomcat9.exe时却闪退,这是因为免安装版的tomcat不会自动把tomcat注册到windows服务里,需要手动注册. 解决办 ...

  8. 屏幕适配1(Android 增强版百分比布局库 为了适配而扩展)

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46767825: 本文出自:[张鸿洋的博客] 这篇博文写得太好了,让我很激动,分 ...

  9. vlc android 移植版编译

    同步发表于http://avenwu.net/2015/07/27/vlc-android-compiling 安装必备工具/解决环境问题 环境准备什么的如果没配置过需要一步步配置,主要是sdk/nd ...

随机推荐

  1. 【BZOJ】【2938】【POI2000】病毒

    AC自动机 好题>_<(其实是一次AC有些感动) 嗯要找到无限长的一个字符串不包含任何一个模板串,就意味着在AC自动机(Trie图)上找到一个不经过任何一个危险结点的环,深搜一下就好了…… ...

  2. [百度空间] [转]DLL地狱及其解决方案

    DLL地狱及其解决方案 原作者:Ivan S Zapreev 译者:陆其明概要 本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题.首先我会列出自己的研究结果,其中包括其它一些研 ...

  3. RCC 2014 Warmup (Div. 2)

    一场很很多HACK的比赛,PREtest太弱了,真的很多坑!平时练习的时候很少注意这些东西了! A:开始一直在模拟,后来发现自己的思路逻辑很乱,果然做比赛不给力! 直接在代码中解释了 #include ...

  4. Shell日期时间和时间戳的转换

    Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.ta ...

  5. KIP-32 Add timestamps to Kafka message

    通过KIP32,Kafka的每条消息都加进了时间戳,这个KIP在0.10.0.0被加入. 说到“时间”,先贴张图,娱乐一下(如果对星球大战系列电影不熟的话,请自动略过……) 这个KIP的文档在 KIP ...

  6. Python中的两种列表

    python中有两种类型的列表:其中一种是用[]创建的列表,这种列表具有伸缩性,可以动态改变,而另外一种列表是用()创建,成为元组,元组一旦创建,在任何状况下都不能再改变,是一种常量列表. movie ...

  7. MVC 中 Razor 无限分类的展示

    在MVC的Razor视图展示无级分类的办法,在网上看了很多资料,大多搞得很高大上.可能本人水平有限,实在是不会用. 那我就用最简单爆力的办法来做. Model: public class NewsCa ...

  8. [STL]deque和stack、queue

    怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deq ...

  9. SqlBulkCopy大批量数据插入到sql表中

    alter TYPE TableType AS TABLE ( Name VARCHAR() , code VARCHAR() ) GO alter PROCEDURE usp_InsertProdu ...

  10. MongoDB (五) MongoDB 数据库操作

    一.MongoDB创建数据库: use 命令 MongoDB use DATABASE_NAME 用于创建数据库.该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库. 语法: use D ...