安卓11 uefi启动 lcd通过gpio读取lcm_id 兼容

安卓11 uefi启动 lcd通过gpio读取lcm_id 进行兼容
本地代码兼容文件路径如下
AMSS / BOOT.XF.4.1/boot_images/QcomPkg/SocPkg/KamortaPkg/Library/MDPPlatformLib/MDPPlatformLib.c

正常屏幕点亮不说了,主要写一下如何进行兼容,主要通过读取id脚高低来区分

定义如下读取id脚高低的函数,具体自行查看吧,不解释了

int panel_detect_lcd_id(void){
  UINT32                   lcd_id     = 1;
  EFI_STATUS status = EFI_SUCCESS;
  UINT32 idconfig;
  EFI_TLMM_PROTOCOL   *TLMMProtocol = NULL;


	if (EFI_SUCCESS != gBS->LocateProtocol(&gEfiTLMMProtocolGuid, NULL, (void**)&TLMMProtocol))
 {
    DEBUG((EFI_D_ERROR, "DisplayDxe: Locate TLMM protocol failed!\n"));
 }
else
 {    
		idconfig =  EFI_GPIO_CFG( LCD_ID_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA );
        status = TLMMProtocol->ConfigGpio((UINT32)idconfig,TLMM_GPIO_ENABLE);
        if (status != EFI_SUCCESS)
        {
            DEBUG((EFI_D_ERROR, "Faile to Configure MSM GPIO 34 ENABLE !!\n"));
        }

        status = TLMMProtocol->GpioIn(idconfig, &lcd_id);
 }
	return lcd_id;
}

设定的返回值就是高或低,找到原先屏幕的入口如下,具体位置自己找吧,可通过修改值确定

pPanelList = &uefiPanelList[1];                           //原来的屏
       if (panel_detect_lcd_id()){     //判断gpio读取的高低
			pPanelList = &uefiPanelList[0];    //新屏
	   }else{ 
		    pPanelList = &uefiPanelList[1];    //原来的
	   }

大致就是这样! 谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

招牌酱拌饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值