1. LCD
1.1怎样新建一个LCD驱动
LCD模组主要包括LCD显示屏和驱动IC。比如LF040DNYB16a模组的驱动IC型号为NT35510。要在MT577平台上新建这个lcd的驱动,步骤如下:
A. 新建文件夹nt35510:
\mediatek\custom\common\kernel\lcm\nt35510
\mediatek\custom\common\lk\lcm\nt35510 //\mediatek\custom\common\uboot\lcm\nt35510
B.修改\mediatek\custom\common\kernel\lcm\mt65xx_lcm_list.c, 在lcm_driver_list [ lcm_count ] 中增加nt35510_lcm_drv。
C.打开mediatek\config\ginwave73_gb\ProjectConfig.mk:
BUILD_LK=yes //BUILD_UBOOT=yes
BOOT_LOGO=wsvganl
CUSTOM_KERNEL_LCM = nt35510
CUSTOM_LK_LCM= nt35510 // CUSTOM_UBOOT_LCM =nt35510
LCM_WIDTH=600
LCM_HEIGHT=1024
驱动文件移植原则:
根据具体平台,填充对应的函数,不能直接复制整个文件,避免不必要编译和接口错误。
1.3 LCD显示旋转(横竖屏旋转,关联到很多界面,需要统一修改)
方式一:横竖屏分辨率修改(还需要修改TP驱动):
LCM_WIDTH=1024
LCM_HEIGHT=600
方式二:lcm显示旋转,只需要修改:(还需要旋转camera驱动)
MTK_LCM_PHYSICAL_ROTATION=90
MTK_TOUCH_PHYSICAL_ROTATION_RELATIVE_TO_LCM=90
camera 旋转
Z:\jb2\_131217\alps\mediatek\custom\\hal\imgsensor\src\cfg_setting_imgsensor.cpp
static SensorOrientation_T const inst = {
u4Degree_0 : 180,//90, // main sensor in degree (0, 90,180, 270)
u4Degree_1 : 0,//90, // sub sensor in degree (0, 90, 180, 270)
1.4 lcm参数修改
\mediatek\custom\common\kernel\lcm\rgb_mt8193
staticvoid lcm_get_params(LCM_PARAMS *params){}
lcd rgb频率:
//params->dpi.mipi_pll_clk_ref =536870912;
params->dpi.mipi_pll_clk_ref= (33.3*(16777216*8*2))/26; //33.3MHz
//params->dpi.mipi_pll_clk_ref= 536870912; //52.0MHz
colorformat 修改
params->dpi.format = LCM_DPI_FORMAT_RGB888; // format is 24 bit//LCM_DPI_FORMAT_RGB666
1.5 修改显示分辨率:
1.5.1配置修改:
打开mediatek\config\ginwave73_gb\ProjectConfig.mk:
LCM_WIDTH=600
LCM_HEIGHT=1024
Lk_logo= wsvganl 及相关logo文件修改
15.2 lcm驱动分辨率修改,可自行手动修改(注意横竖数值对应)
对应的lcm :\mediatek\custom\common\kernel\lcm\rgb_mt8193
#defineFRAME_WIDTH (1024)
#defineFRAME_HEIGHT (600)
15.3 tpsensor driver修改,对应分辨率驱动(fae sensor提供驱动代码)。
\alps\mediatek\custom\prj\kernel\touchpanel\GSLx680\GSLx680.h
#defineSCREEN_MAX_X 480
#defineSCREEN_MAX_Y 800
2. leds 配置
CUSTOM_KERNEL_LEDS= mt65xx
mediatek\custom\prj\kernel\leds\mt65xx\cust_leds.c
mediatek\custom\prj\lk\cust_leds.c
static structcust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
{"red",MT65XX_LED_MODE_NONE, -1,{0}},
{"green",MT65XX_LED_MODE_NONE, -1,{0}},
{"blue",MT65XX_LED_MODE_NONE, -1,{0}},
{"jogball-backlight",MT65XX_LED_MODE_NONE, -1,{0}},
{"keyboard-backlight",MT65XX_LED_MODE_NONE,-1,{0}},
{"button-backlight", MT65XX_LED_MODE_NONE, -1,{0}}, // modify
{"lcd-backlight",MT65XX_LED_MODE_PWM,PWM1,{PWM_CLK_NEW_MODE_BLOCK,CLK_DIV128,4,4}}, //modify
//{"lcd-backlight",MT65XX_LED_MODE_CUST,(int)DISP_SetBacklight,{0}},
};
..\mediatek\platform\mt6582\kernel\drivers\leds\leds.c
mt65xx_flashlight_on(){}
mt65xx_flashlight_off(){}
2.1 LED背光亮度修改:
mediatek\source\kernel\drivers\leds\leds.c
验证方式:adb shell查看:
shell@android:/sys/class/leds/lcd-backlight$ cat max_brightness
备注:MMI层最亮、最暗背光调节代码:
./config.xml:
<integername="config_screenBrightnessDim">20</integer>
\alps\frameworks\base\core\java\android\os\PowerManager.java:
private staticfinal int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;
3. Flash配置:
3.1 型号配置:
3.1.1 CUSTOM_MEMORY_HDR(需要确认是否是MTK认证的flash ic)
mediatek\custom\$(PROJECT)\preloader\inc\custom_MemoryDevice.h
#defineBOARD_ID MT6577_EVB
#defineCS_PART_NUMBER[0] H9TP32A4GDMCPR_KDM
#defineCS_PART_NUMBER[1] KMKUS000VM_B410
备注:新增flash ic添加到此处,flash可以做到兼容;不能兼容相同IC Id的memeory ic.
3.2 特定项目不同类型分区定义信息(是否定义、顺序):
mediatek\custom\\kernel\core\src\partition.c
structpart_name_map g_part_name_map[PART_MAX_COUNT] = {
{"preloader", PART_PRELOADER, "rawdata", 0, 0, 0},
{"dsp_bl", PART_DSP_DL, "rawdata", 1, 0, 0},
{"mbr", PART_MBR, "raw data", 2, 1, 1},
{"ebr1", PART_EBR1, "raw data", 3, 1, 1},
{"pmt", PART_PMT, "raw data", 4, 0, 0},
{"nvram", PART_NVRAM, "rawdata", 5, 0, 0},
{"seccfg", PART_SECURE, "raw data", 6, 0, 0},
{"uboot", PART_UBOOT, "raw data", 7, 1, 1},
{"boot", PART_BOOTIMG, "raw data", 8, 1, 1},
{"recovery", PART_RECOVERY, "rawdata", 9, 1, 1},
{"sec_ro", PART_SECSTATIC, "ext4", 10, 0, 0},
{"misc", PART_MISC, "raw data", 11, 0, 0},
{"logo", PART_LOGO, "raw data", 12, 1, 1},
{"expdb", PART_APANIC, "raw data", 13, 0, 0},
{"system", PART_ANDSYSIMG, "ext4", 14, 1, 1},
{"cache", PART_CACHE, "ext4", 15, 1, 1},
{"userdata", PART_USER, "ext4", 16, 1, 1},
{"fat", PART_FAT, "fat", 17, 0, 0},
};
3.3 emmc scat 分区大小设置(emmc) :
可对emmc进行分区,修改preloader\systemimage\userdata\FAT等各个分区。
\alps\mediatek\build\tools\ptgen\MT6577\partition_table_MT6577.xls
备注:Cache分区需要保持在512mb左右,否则系统会比较慢,响应迟缓。
3.4 FLASH参数配置文件位置(MemoryDeviceList_MT6577.xls):
MEMORY_DEVICE_XLS =
mediatek\build\tools\emigen\$(MTK_PLATFORM)\MemoryDeviceList_$(MTK_PLATFORM).xls