【mt8735】如何实现插上电池自动开机

2019-07-14 03:39发布

需求:有些特殊的行业应用,需要上电自动开机。我司就接到一客户的订单,需要一台不需要按PowerKey键上电自动开机的工业平板。    实现步骤:
实现插上电池自动开机需要从两个方面入手,第一,在硬件上将PowerKey键直接接地;第二,在软件上掉长按关机或者重启的功能;这里主要讲述如何在软件中去掉长按关机或重启的功能。
     
【1】在文件kernel-3.10/drivers/misc/mediatek/mach/$(platform)/$(project)//keypad/mtk_kpd.h中删除如下定义:
//#define ONEKEY_REBOOT_NORMAL_MODE
     
【2】在文件kernel-3.10/drivers/misc/mediatek/power/$(platform)/pmic.c的pmic_mt_probe函数中增加如下函数

  1. #if defined(CONFIG_ARCH_MT6753)
  2.         PMICLOG("[PMIC_INIT_SETTING_V1] delay to MT6311 init ");
  3. #else
  4.         PMIC_INIT_SETTING_V1();
  5.         pmic_config_interface(RG_PWRKEY_RST, val, MASK, SHIFT);     // 增加的函数
  6.         PMICLOG("[PMIC_INIT_SETTING_V1] Done ");
  7. #endif

  8.     PMIC_CUSTOM_SETTING_V1();
  9.     pmic_config_interface(RG_PWRKEY_RST, val, MASK, SHIFT);     // 增加的函数
  10.     PMICLOG("[PMIC_CUSTOM_SETTING_V1] Done ");

     
【3】
对于 pmic_config_interface(RG_PWRKEY_RST, val, MASK, SHIFT);     // 增加的函数 中RG_PWRKEY_RST, val, MASK, SHIFT的值,可下表常用平台对应的实际参数:
PLATFORMPMICRG_PWRKEY_RSTvalMASKSHIFT6582/72/92/2601MT63230x011A0x00x166580MT63500x011A0x20x356753/35/35M/8735MT63280x02A00x00x196752MT63250x028A0x00x196755MT63510x02B60x00x19示例:
mt8735平台  pmic_config_interface(0x02A0,0x0,0x1,9);
     
【4】修改之后对系统重新编译,将新系统更新到相应的mt8735设备(如我司的工业平板),更新完之后,拔掉USB,重新插上电池,即可实现自动开机。
     
【5】不足及解决方法:
不足--> PowerKey键直接接地之后,PowerKey键将失去作用,关机只能拔掉电池,息屏系统休眠将不能唤醒,不能更新下载系统。
解决方法--> 能够解决上述问题的方法之一是,将自弹式按键更换为自锁式按键。关机状态下,自锁式按键按下时PowerKey键直接接地,接上电池即可开机;自锁式按键弹起时,可使用USB更新系统;开机状态下,关机可将自锁式按键按下,系统将出现关机对话框,即可点击关机按钮关机;息屏系统休眠可按下自锁式按键,再按弹起即可唤醒。

【6】效果展示展示视频