From d3c84c683b91709e4b3efe8dd3448cfe70bef6ae Mon Sep 17 00:00:00 2001 From: xuwei9 Date: Fri, 27 Oct 2023 18:03:21 +0800 Subject: [PATCH] add reset charger pump cmd during power down Some pump ic's register do not reset to defaul value after shutdown for example cps2023, if acdrv mos set to manual mode and Usb mos at off status. phone can not boot up by cable. Reset register after power down for this case. Change-Id: I2749c185f6504ccf7352238d686d7b77688b725c Signed-off-by: xuwei9 Reviewed-on: https://gerrit.mot.com/2779131 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- .../qti_glink_charger/qti_glink_charger.c | 31 +++++++++++++++++++ .../qti_glink_charger/qti_glink_charger.h | 1 + 2 files changed, 32 insertions(+) diff --git a/drivers/power/qti_glink_charger/qti_glink_charger.c b/drivers/power/qti_glink_charger/qti_glink_charger.c index e6d08cb8da16..ef2adbae0788 100644 --- a/drivers/power/qti_glink_charger/qti_glink_charger.c +++ b/drivers/power/qti_glink_charger/qti_glink_charger.c @@ -2814,6 +2814,36 @@ static int qti_charger_init(struct qti_charger *chg) return 0; } +bool qti_charger_reset_chargepump(struct qti_charger *chg) +{ + unsigned long reset = 0x1; + int rc ; + + if(!chg) { + pr_err("QTI: chip not valid"); + return false; + } + + rc = qti_charger_write(chg, OEM_PROP_MASTER_SWITCHEDCAP_RESET, &reset, sizeof(reset)); + if(rc) { + mmi_err(chg, "qit charger reset charger pump register fail:%d\n", rc); + } + + return true; +} + +static void qti_charger_shutdown(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct qti_charger *chg= dev_get_drvdata(dev); + + //reset charger pump register before shutdown. + qti_charger_reset_chargepump(chg); + mmi_info(chg, "qti_charger_shutdown\n"); + + return; +} + static void qti_charger_deinit(struct qti_charger *chg) { int rc; @@ -3096,6 +3126,7 @@ static struct platform_driver qti_charger_driver = { }, .probe = qti_charger_probe, .remove = qti_charger_remove, + .shutdown = qti_charger_shutdown, }; module_platform_driver(qti_charger_driver); diff --git a/drivers/power/qti_glink_charger/qti_glink_charger.h b/drivers/power/qti_glink_charger/qti_glink_charger.h index 8493199b5f35..e2ed4eb662e8 100644 --- a/drivers/power/qti_glink_charger/qti_glink_charger.h +++ b/drivers/power/qti_glink_charger/qti_glink_charger.h @@ -73,6 +73,7 @@ enum oem_property_type { OEM_PROP_MSB_DEV_INFO, OEM_PROP_MASTER_SWITCHEDCAP_INFO, OEM_PROP_SLAVE_SWITCHEDCAP_INFO, + OEM_PROP_MASTER_SWITCHEDCAP_RESET, OEM_PROP_MAX, };