高通平台关机充电直接开机

高通平台关机充电直接开机

修改文件及记录如下:
bootable/bootloader/lk/app/aboot/aboot.c

diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 2419b95..855f685 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -537,6 +537,8 @@ unsigned char *update_cmdline(const char * cmdline)
        if(is_mdtp_activated)
                cmdline_len += strlen(mdtp_activated_flag);
 #endif
+
+    dprintf(DEBUG, "UpdateCmdLine ====== device.charger_screen_enabled ============= %d\n",device.charger_screen_enabled);
        if (boot_into_ffbm) {
    
    
                cmdline_len += strlen(androidboot_mode);
 
@@ -548,7 +550,8 @@ unsigned char *update_cmdline(const char * cmdline)
                cmdline_len += strlen(loglevel);
        } else if (boot_reason_alarm) {
    
    
                cmdline_len += strlen(alarmboot_cmdline);
-       } else if (target_pause_for_battery_charge() && !boot_into_recovery) {
    
    
+        /* modify by hhm for ID1086449 on 2021-10-11*/
+       } else if (device.charger_screen_enabled && target_pause_for_battery_charge() && !boot_into_recovery) {
    
    
                pause_at_bootup = 1;
                cmdline_len += strlen(battchg_pause);
        }

除此修改之外,debug版本也可以通过fastboot指令实现此功能
fastboot 指令主要通过修改charger_screen_enabled。相关代码块如下,有兴趣可以研究下


fastboot oem enable-charger-screen  打开关机充电功能
fastboot oem disable-charger-screen  关闭关机充电功能
struct fastboot_cmd_desc cmd_list[] = {
    
    
                        /* By default the enabled list is empty. */
                        {
    
    "", NULL},
                        /* move commands enclosed within the below ifndef to here
                         * if they need to be enabled in user build.
                         */
#ifndef DISABLE_FASTBOOT_CMDS
                        /* Register the following commands only for non-user builds */
                        {
    
    "flash:", cmd_flash},
                        {
    
    "erase:", cmd_erase},
                        {
    
    "boot", cmd_boot},
                        {
    
    "continue", cmd_continue},
                        {
    
    "reboot", cmd_reboot},
                        {
    
    "reboot-bootloader", cmd_reboot_bootloader},
                        {
    
    "oem unlock", cmd_oem_unlock},
                        {
    
    "oem unlock-go", cmd_oem_unlock_go},
                        {
    
    "oem lock", cmd_oem_lock},
                        {
    
    "flashing unlock", cmd_oem_unlock},
                        {
    
    "flashing lock", cmd_oem_lock},
                        {
    
    "flashing lock_critical", cmd_flashing_lock_critical},
                        {
    
    "flashing unlock_critical", cmd_flashing_unlock_critical},
                        {
    
    "flashing get_unlock_ability", cmd_flashing_get_unlock_ability},
                        {
    
    "oem device-info", cmd_oem_devinfo},
                        {
    
    "preflash", cmd_preflash},
                        {
    
    "oem enable-charger-screen", cmd_oem_enable_charger_screen},                                                                                                                       
                        {
    
    "oem disable-charger-screen", cmd_oem_disable_charger_screen},
                        {
    
    "oem off-mode-charge", cmd_oem_off_mode_charger},
                        {
    
    "oem select-display-panel", cmd_oem_select_display_panel},
                        {
    
    "set_active",cmd_set_active},
#if DYNAMIC_PARTITION_SUPPORT
                        {
    
    "reboot-fastboot",cmd_reboot_fastboot},
                        {
    
    "reboot-recovery",cmd_reboot_recovery},
#endif
#if UNITTEST_FW_SUPPORT
                        {
    
    "oem run-tests", cmd_oem_runtests},
#endif
#endif
                        };

void cmd_oem_enable_charger_screen(const char *arg, void *data, unsigned size)
{
    
    
    dprintf(INFO, "Enabling charger screen check\n");
    device.charger_screen_enabled = 1;                                                                                                                                                                      
    write_device_info(&device);
    fastboot_okay("");
}

void cmd_oem_disable_charger_screen(const char *arg, void *data, unsigned size)
{
    
    
    dprintf(INFO, "Disabling charger screen check\n");
    device.charger_screen_enabled = 0;
    write_device_info(&device);
    fastboot_okay("");
}

猜你喜欢

转载自blog.csdn.net/weixin_45080805/article/details/120737974