LCD移植过程中需要注意:
1.拿到屏的原理图。(会看引脚),规格书(会看初始化参数),电路图(会看上拉下拉),gpio口配置表格
2.拿到lcm屏的硬件,确认gpio口的上下拉脚情况。
3.先配置gpio口
4.配置驱动
5.屏不亮,如果一个屏不亮,一个亮,看串口log分析。
LK 阶段,在 lcm_compare_id 函数进行对 LCM 的识别。
对任意新屏可先将 lcm_compare_id 的代码注释,直接 return 1 强制匹配;确认 LCM 单点是能亮的,再去考虑读id、兼容等问题。
static unsigned int lcm_compare_id(void) { return 1; };
LK的标准流程:上电 --> 复位 --> 读取id
将第1点到第4点理解,配置GPIO和EINT
DrvGen 工具路径:
vendor/mediatek/proprietary/scripts/dct/DrvGen.exe
dws 文件路径(pl/kernel建议同时修改):
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(project)/dct/dct/codegen.dws
$(kernel)/drivers/misc/mediatek/dws/$(platform)/$(project).dws
(1)EINT 配置:
(2)GPIO 配置:
1.LK阶段:
1.1、添加JD9161Z的驱动程序及Makefile文件,路径如下:
vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\
1.2、在[project].mk文件中添加LCM配置信息,文件路径如下: vendor\mediatek\proprietary\bootable\bootloader\lk\project[project].mk
1.3、将LCM结构体及名字添加到LCM list文件中:
vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\mt65xx_lcm_list.c
2、kernel阶段:
2.1、添加JD9161Z的驱动程序及Makefile文件,路径如下:
[kernel]\driver\misc\mediatek\lcm\
2.2、将LCM结构体及名字添加到LCM list文件中:
[kernel]\driver\misc\mediatek\lcm\mt65xx_lcm_list.h及65xx_lcm_list.c文件中;2.3、在项目配置文件中修改LCM_WIDTH、LCM_HEIGHT、及CUSTOM_KERNEL_LCM
读取id
CMI 和BOE id = 0x00009161一样;CMI读取到id为接高,BOE也读取到id为-1。
JD9161Z[lcd-lk] [lcm_compare_id, 353] csp GMI: JD9161 BOE lcm_compare_id, id = 0x00009161 get_lcd_id:1
JD9161Z[lcd-lk] [get_lcd_id, 292] JD9161Z_QICAI_CMI_MIPI2_FWVGA get_lcd_id 292
[2987] cmdline: console=tty0 console=ttyMT0,921600n1 vmalloc=400M slub_debug=OFZPU page_owner=on swiotlb=noforce cgroup.memory=nosocket,n
[2989] : okmem androidboot.hardware=mt6739 maxcpus=8 firmware_class.path=/vendor/firmware loop.max_part=7 has_battery_removed=1 lo
[2990] : op.max_part=7 androidboot.boot_devices=bootdevice,soc/11230000.mmc,11230000.mmc,soc/11230000.msdc,11230000.msdc ramoops.mem_add
[2992] : ress=0x44410000 ramoops.mem_size=0xe0000 ramoops.pmsg_size=0x10000 ramoops.console_size=0x40000 bootopt=64S3,32S1,32S1 buildvar
[2994] : iant=userdebug root=/dev/ram androidboot.vbmeta.device=PARTUUID=756d934c-50e3-4c91-af46-02d824169ca7 androidboot.vbmeta.avb_ver
[2996] : sion=1.2 androidboot.vbmeta.device_state=locked androidboot.veritymode=enforcing androidboot.veritymode.managed=yes androidboot
[2997] : .slot_suffix=_a androidboot.slot=a androidboot.verifiedbootstate=green androidboot.atm=disabled androidboot.force_normal_boot=1
[2999] : androidboot.meta_log_disable=0 ro.segment.code=0xc8 ro.segment.name=D445837363537514 mtk_printk_ctrl.disable_uart=1 lcm=1-JD91
[3001] : 61Z_QICAI_CMI_MIPI2_FWVGA androidboot.serialno=XMOX552211180595 androidboot.bootreason=PowerKey gpt=1 usb2jtag_mode=0 androidbo
[3003] : ot.dtb_idx=0 androidboot.dtbo_idx=0
[3003] lk boot mode = 0
[3004] lk boot reason = 0
[3004] lk finished --> jump to linux kernel 32Bit
BOE
[2920] [avb] cmdline = androidboot.vbmeta.device=PARTUUID=756d934c-50e3-4c91-af46-02d824169ca7 androidboot.vbmeta.avb_version=1.2 androidboot.vbmeta.device_state=locked androidboot.veritymode=enforcing androidboot.veritymode.managed=yes
[2923] [SEC_POLICY] sboot_state = 0x0
[2924] [SEC_POLICY] lock_state(default) = 0x4
[2924] [avb] img_auth_required = 0
[2925] [avb] boot/recovery vfy time = 663 ms
[2925] mblock_create mblock start: 0xb5d00000 size: 0x8c00000 name: avb
[2926] [avb] avb_ret = 0
[2926] [avb] ret = 0
[2927] [LK] check_ota_result = 0
[2928] [LK] ota-fail
CMI 亮,BOE不亮,后来发现是主板的问题。