From c22b699846c1603664513431ca228897f10ddb3e Mon Sep 17 00:00:00 2001 From: Haijian Ma Date: Tue, 9 Jan 2024 19:56:17 +0800 Subject: [PATCH] [Miami] Fix logic of the charger pump state machine Current logic of the charger pump for Miami misinterprets MMI_CP_SWITCH_BIT, preventing state machine to stick at states involving it, and never reaching others depending on them. External symptoms can be summarized as high current fluctuation and overall slow recharge. This change inverts the result of the AND-clause involving MMI_CP_SWITCH_BIT, thereby yielding the correct logic value for the machine to proceed to the next steps within each concerning state. Change-Id: I2aba14391772b01f7cb5f35b73d5191a3b6ce588 Signed-off-by: Haijian Ma Signed-off-by: Hugo Cuffa Reviewed-on: https://gerrit.mot.com/2849108 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Levy Gabriel Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../mmi_discrete_turbo_charger/mmi_charger_pump_policy.c | 8 ++++---- .../power/mmi_discrete_turbo_charger/mmi_qc3p_cp_policy.c | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_pump_policy.c b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_pump_policy.c index ff8718793175..7bdad49837a0 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_pump_policy.c +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_pump_policy.c @@ -704,7 +704,7 @@ void mmi_chrg_sm_work_func(struct work_struct *work) heartbeat_dely_ms = HEARTBEAT_NEXT_STATE_MS; if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, Enter into " "SW directly\n"); chip->pps_volt_comp = PPS_INIT_VOLT_COMP; @@ -753,7 +753,7 @@ void mmi_chrg_sm_work_func(struct work_struct *work) if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, " "Enter into SW directly\n"); chip->pps_volt_comp = PPS_INIT_VOLT_COMP; @@ -822,7 +822,7 @@ void mmi_chrg_sm_work_func(struct work_struct *work) chrg_step->chrg_step_cv_volt); if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, Enter into SW directly\n"); chip->pps_volt_comp = PPS_INIT_VOLT_COMP; mmi_chrg_sm_move_state(chip, PM_STATE_SW_ENTRY); @@ -957,7 +957,7 @@ void mmi_chrg_sm_work_func(struct work_struct *work) chrg_step->chrg_step_cv_tapper_curr); if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, Enter into SW directly\n"); chip->pps_volt_comp = PPS_INIT_VOLT_COMP; mmi_chrg_sm_move_state(chip, PM_STATE_SW_ENTRY); diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p_cp_policy.c b/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p_cp_policy.c index b55818e23264..bf3d9670faab 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p_cp_policy.c +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p_cp_policy.c @@ -662,7 +662,7 @@ void mmi_qc3p_chrg_sm_work_func(struct work_struct *work) if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, " "Enter into SW directly\n"); chip->qc3p_volt_comp = QC3P_INIT_VOLT_COMP; @@ -721,7 +721,7 @@ void mmi_qc3p_chrg_sm_work_func(struct work_struct *work) chrg_step->chrg_step_cv_volt); if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, Enter into SW directly\n"); chip->qc3p_volt_comp = QC3P_INIT_VOLT_COMP; mmi_chrg_qc3p_sm_move_state(chip, PM_QC3P_STATE_SW_ENTRY); @@ -799,7 +799,7 @@ void mmi_qc3p_chrg_sm_work_func(struct work_struct *work) chrg_step->chrg_step_cv_tapper_curr); if (chrg_list->cp_master && (!chrg_list->chrg_dev[CP_MASTER]->charger_enabled - || (chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { + || !(chrg_list->chrg_dev[CP_MASTER]->charger_error.chrg_err_type & (1<< MMI_CP_SWITCH_BIT)))) { mmi_chrg_info(chip,"CP MASTER was disabled, Enter into SW directly\n"); chip->qc3p_volt_comp = QC3P_INIT_VOLT_COMP; mmi_chrg_qc3p_sm_move_state(chip, PM_QC3P_STATE_SW_ENTRY);