mtkAndroid驱动各种调试记录【字符设备,TP等】

本文详细描述了在MTK平台上实现背部pogopin加按键功能的调试过程,涉及DWS文件的修改、设备树DTS文件配置GPIO27、28、44的中断以及驱动文件的相应调整,包括pinctrl方式和标准GPIO配置的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:MTK平台按键中断触发功能,TP调试简记

提示:仅供参考,学习笔记

例如:项目场景:背部pogopin加按键功能

原因分析:

提示:背部pogo引脚需要增加按键触发扫码功能,由此开始调试,硬件上需要拉高GPIO27、28、44,GPIO44为上拉触发中断的方式,GPIO27、28拉高使IC为GPIO44供电。

1、dws文件添加修改

系统使用DWS文件来编写设备树的源码,然后将DWS文件编译成DTS文件。最终,DTS文件将被编译成DTSI或DTSB文件,供Linux内核在启动时使用。
正常情况,使用vendor\mediatek\proprietary\tools\dct下的DrvGen.exe工具,在里面打开对应芯片文件如T695应该为mt6833文件夹下的dws文件,但T695需要在方案商定的其他路径修改,具体分别为kernel-4.19\drivers\misc\mediatek\dws\mt6853\codegen.dws和vendor\mediatek\proprietary\bootable\bootloader\lk\target\k6833v1_64_k419\dct\dct\codegen.dws这两文件,配置GPIO27、28、44。
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
在这里插入图片描述
dws文件设置具体如下
在这里插入图片描述在这里插入图片描述

2、dts文件修改

配置好dws文件后就需要配置dts文件,在设备树文件中也需要配好中断等。

---`@@ -786,14 +813,27 @@ awinic_haptic@5a{
   
    #endif
 #endif
    };
+    yft_customkey4_pin_eint_as_int:yft_customkey4_pin_def{
   
+#ifdef __YFT_CUSTOMKEY_F4_SUPPORT__
+    #if __YFT_CUSTOMKEY_F4_SUPPORT__
+           pins_cmd_dat {
   
+                       pinmux = <__YFT_CUSTOMKEY_F4_SUPPORT__>;
+                       slew-rate=<0>;        /*direction 0:in,1:out*/
+                       //bias-pull-up= <00> ;
+                       bias-disable;
+               };
+       #endif
+   #endif
+       };
 
 };
 &keypad{
   
-   pinctrl-names ="default","yft_customkey_as_int","yft_customkey2_as_int", "yft_customkey3_as_int";
+   pinctrl-names = "default", "yft_customkey_as_int","yft_customkey2_as_int","yft_customkey3_as_int","yft_customkey4_as_int";
    pinctrl-0 = <&yft_customkey_pin_default>;
    pinctrl-1 = <&yft_customkey_pin_eint_as_int>;
    pinctrl-2 = <&yft_customkey2_pin_eint_as_int>;
    pinctrl-3 = <&yft_customkey3_pin_eint_as_int>;
+   pinctrl-4 = <&yft_customkey4_pin_eint_as_int>;
 
    customkeyf1@__YFT_INTERCOMKEY_EINT_EN_PIN_NUM__ {
   
        compatible = "mediatek,yft_customkey";
@@ -827,8 +867,19 @@ awinic_haptic@5a{
   
    };
    #endif
 #endif
-};
+#ifdef __YFT_CUSTOMKEY_F4_SUPPORT__
+   #if __YFT_CUSTOMKEY_F4_SUPPORT__
+   customkeyf4@__YFT_INTERCOMKEY4_EINT_EN_PIN_NUM__ {
   
+       compatible = "mediatek,yft_customkey4";
+         interrupt-parent = <&pio>;
+       interrupts = <__YFT_INTERCOMKEY4_EINT_EN_PIN_NUM__ IRQ_TYPE_EDGE_FALLING __YFT_INTERCOMKEY4_EINT_EN_PIN_NUM__ 0>;
+       customkey_f4_gpio = <&pio __YFT_INTERCOMKEY4_EINT_GPIO_NUM__ 0>;
+       debounce = <__YFT_INTERCOMKEY4_EINT_EN_PIN_NUM__ 10>;
+    };
+    #endif
+#endif
+};
    #endif
 #endif
  上面是GPIO44的配置,使用pinctr的方式,需要在源码中找到中断对应的宏,把节点加好后要写好配置,且要在相应的驱动文件里面对该节点做解析,要注意,除了这些定义好还需要将新增的驱动文件和宏加入到相应的Makefile和对用的头文件中,如下:
diff --git a/kernel-4.19/drivers/input/keyboard/mediatek/Makefile b/kernel-4.19/drivers/input/keyboard/mediatek/Makefile
index 47d6650169e
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值