From ef103ab40d6ff47eb1f08c8d9e067fa0e5b1a6e1 Mon Sep 17 00:00:00 2001 From: liyiying Date: Wed, 22 Dec 2021 14:28:51 +0800 Subject: [PATCH] mod the sc89890h register config as the sc89890 datasheet, the REG04 Icc - Fast Charge Current offset is 0ma, LSB is 60ma the REG05 Itc - Tirckle Current offect is 60ma, LSB is 60ma the REG05 Iterm - Termination Current offect is 30ma, LSB is 60ma Change-Id: I6cd85cd48878492682c1c9802e5ce972e2db0664 Signed-off-by: liyiying Reviewed-on: https://gerrit.mot.com/2151683 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../power/bq2589x_chg_mmi/bq2589x_charger.c | 18 +++++++++++++++--- drivers/power/bq2589x_chg_mmi/bq2589x_reg.h | 6 ++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c index f71a27cbd25d..1283c640aa72 100644 --- a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c +++ b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c @@ -468,7 +468,11 @@ int bq2589x_set_chargecurrent(struct bq2589x *bq, int curr) { u8 ichg; - ichg = (curr - BQ2589X_ICHG_BASE)/BQ2589X_ICHG_LSB; + if (bq->part_no == SC89890H) { + ichg = (curr - SC89890H_ICHG_BASE)/SC89890H_ICHG_LSB; + } else { + ichg = (curr - BQ2589X_ICHG_BASE)/BQ2589X_ICHG_LSB; + } return bq2589x_update_bits(bq, BQ2589X_REG_04, BQ2589X_ICHG_MASK, ichg << BQ2589X_ICHG_SHIFT); } @@ -477,7 +481,11 @@ int bq2589x_set_term_current(struct bq2589x *bq, int curr) { u8 iterm; - iterm = (curr - BQ2589X_ITERM_BASE) / BQ2589X_ITERM_LSB; + if (bq->part_no == SC89890H) { + iterm = (curr - SC89890H_ITERM_BASE) / SC89890H_ITERM_LSB; + } else { + iterm = (curr - BQ2589X_ITERM_BASE) / BQ2589X_ITERM_LSB; + } return bq2589x_update_bits(bq, BQ2589X_REG_05, BQ2589X_ITERM_MASK, iterm << BQ2589X_ITERM_SHIFT); } @@ -487,7 +495,11 @@ int bq2589x_set_prechg_current(struct bq2589x *bq, int curr) { u8 iprechg; - iprechg = (curr - BQ2589X_IPRECHG_BASE) / BQ2589X_IPRECHG_LSB; + if (bq->part_no == SC89890H) { + iprechg = (curr - SC89890H_IPRECHG_BASE) / SC89890H_IPRECHG_LSB; + } else { + iprechg = (curr - BQ2589X_IPRECHG_BASE) / BQ2589X_IPRECHG_LSB; + } return bq2589x_update_bits(bq, BQ2589X_REG_05, BQ2589X_IPRECHG_MASK, iprechg << BQ2589X_IPRECHG_SHIFT); } diff --git a/drivers/power/bq2589x_chg_mmi/bq2589x_reg.h b/drivers/power/bq2589x_chg_mmi/bq2589x_reg.h index 6e2dfafd79ca..54a9387db8f0 100644 --- a/drivers/power/bq2589x_chg_mmi/bq2589x_reg.h +++ b/drivers/power/bq2589x_chg_mmi/bq2589x_reg.h @@ -100,6 +100,8 @@ #define BQ2589X_ICHG_SHIFT 0 #define BQ2589X_ICHG_BASE 0 #define BQ2589X_ICHG_LSB 64 +#define SC89890H_ICHG_BASE 0 +#define SC89890H_ICHG_LSB 60 /* Register 0x05*/ #define BQ2589X_REG_05 0x05 @@ -111,6 +113,10 @@ #define BQ2589X_IPRECHG_LSB 64 #define BQ2589X_ITERM_BASE 64 #define BQ2589X_ITERM_LSB 64 +#define SC89890H_IPRECHG_BASE 60 +#define SC89890H_IPRECHG_LSB 60 +#define SC89890H_ITERM_BASE 30 +#define SC89890H_ITERM_LSB 60 /* Register 0x06*/ #define BQ2589X_REG_06 0x06