mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 15:49:17 -04:00
modules:sc89890h:bringup second master charger otg
Add second master charger patch from FAE 1.fix the otg current - Iboost 000:0.5A 001:0.75A 010:1.2A 011:1.4A 100:1.65A 101:1.875A 110:2.15A 111:2.45A 2.add disable charging and enable charging when enable otg and disable otg 3.Diable ILIM Pin HW current limit . Change-Id: I77a25f550819f383d0ccc806bc5e5c3090ae689b Signed-off-by: huaqin85 <huaqin85@motorola.com> Reviewed-on: https://gerrit.mot.com/2190530 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Huosheng Liao <liaohs@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
78f43eae07
commit
d33a40988a
2 changed files with 68 additions and 19 deletions
|
|
@ -287,22 +287,44 @@ static int bq2589x_set_otg_current(struct bq2589x *bq, int curr)
|
|||
{
|
||||
u8 temp;
|
||||
|
||||
if (curr >= 2400)
|
||||
temp = BQ2589X_BOOST_LIM_2400MA;
|
||||
else if (curr >= 2100)
|
||||
temp = BQ2589X_BOOST_LIM_2100MA;
|
||||
else if (curr >= 1800)
|
||||
temp = BQ2589X_BOOST_LIM_1800MA;
|
||||
else if (curr >= 1600)
|
||||
temp = BQ2589X_BOOST_LIM_1600MA;
|
||||
else if (curr >= 1300)
|
||||
temp = BQ2589X_BOOST_LIM_1300MA;
|
||||
else if (curr >= 1100)
|
||||
temp = BQ2589X_BOOST_LIM_1100MA;
|
||||
else if (curr >= 700)
|
||||
temp = BQ2589X_BOOST_LIM_700MA;
|
||||
else
|
||||
temp = BQ2589X_BOOST_LIM_500MA;
|
||||
if (bq->part_no == SC89890H) {
|
||||
if (curr < 600)
|
||||
temp = SC89890H_BOOST_LIM_500MA;
|
||||
else if (curr < 900)
|
||||
temp = SC89890H_BOOST_LIM_750MA;
|
||||
else if (curr < 1300)
|
||||
temp = SC89890H_BOOST_LIM_1200MA;
|
||||
else if (curr < 1500)
|
||||
temp = SC89890H_BOOST_LIM_1400MA;
|
||||
else if (curr < 1700)
|
||||
temp = SC89890H_BOOST_LIM_1650MA;
|
||||
else if (curr < 1900)
|
||||
temp = SC89890H_BOOST_LIM_1875MA;
|
||||
else if (curr < 2200)
|
||||
temp = SC89890H_BOOST_LIM_2150MA;
|
||||
else if (curr < 2500)
|
||||
temp = SC89890H_BOOST_LIM_2450MA;
|
||||
else
|
||||
temp = SC89890H_BOOST_LIM_1400MA;
|
||||
} else {
|
||||
if (curr >= 2400)
|
||||
temp = BQ2589X_BOOST_LIM_2400MA;
|
||||
else if (curr >= 2100)
|
||||
temp = BQ2589X_BOOST_LIM_2100MA;
|
||||
else if (curr >= 1800)
|
||||
temp = BQ2589X_BOOST_LIM_1800MA;
|
||||
else if (curr >= 1600)
|
||||
temp = BQ2589X_BOOST_LIM_1600MA;
|
||||
else if (curr >= 1300)
|
||||
temp = BQ2589X_BOOST_LIM_1300MA;
|
||||
else if (curr >= 1100)
|
||||
temp = BQ2589X_BOOST_LIM_1100MA;
|
||||
else if (curr >= 700)
|
||||
temp = BQ2589X_BOOST_LIM_700MA;
|
||||
else
|
||||
temp = BQ2589X_BOOST_LIM_500MA;
|
||||
}
|
||||
|
||||
|
||||
return bq2589x_update_bits(bq, BQ2589X_REG_0A, BQ2589X_BOOST_LIM_MASK, temp << BQ2589X_BOOST_LIM_SHIFT);
|
||||
}
|
||||
|
|
@ -995,6 +1017,11 @@ static int bq2589x_init_device(struct bq2589x *bq)
|
|||
int ret;
|
||||
|
||||
/*common initialization*/
|
||||
if (bq->part_no == SC89890H) {
|
||||
bq2589x_update_bits(bq, BQ2589X_REG_00, BQ2589X_ENILIM_MASK,
|
||||
BQ2589X_ENILIM_DISABLE << BQ2589X_ENILIM_SHIFT);
|
||||
}
|
||||
|
||||
bq2589x_disable_watchdog_timer(bq);
|
||||
|
||||
/*disable maxcharge en to allow qc2.0 detection*/
|
||||
|
|
@ -2486,12 +2513,20 @@ static int bq2589x_set_otg_enable(struct charger_device *chg_dev, bool enable)
|
|||
{
|
||||
struct bq2589x *bq = dev_get_drvdata(&chg_dev->dev);
|
||||
u8 val;
|
||||
int ret = 0;
|
||||
|
||||
if (enable)
|
||||
if (enable) {
|
||||
if (bq->part_no == SC89890H) {
|
||||
ret = bq2589x_disable_charger(bq);
|
||||
}
|
||||
val = BQ2589X_OTG_ENABLE << BQ2589X_OTG_CONFIG_SHIFT;
|
||||
else
|
||||
}
|
||||
else {
|
||||
val = BQ2589X_OTG_DISABLE << BQ2589X_OTG_CONFIG_SHIFT;
|
||||
|
||||
if (bq->part_no == SC89890H) {
|
||||
ret = bq2589x_enable_charger(bq);
|
||||
}
|
||||
}
|
||||
dev_info(bq->dev, "%s: %s otg\n", __func__, enable ? "enable" : "disable");
|
||||
|
||||
return bq2589x_update_bits(bq, BQ2589X_REG_03, BQ2589X_OTG_CONFIG_MASK, val);
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@
|
|||
#define BQ2589X_BOOSTV_SHIFT 4
|
||||
#define BQ2589X_BOOSTV_BASE 4550
|
||||
#define BQ2589X_BOOSTV_LSB 64
|
||||
#define SC89890H_BOOSTV_BASE 3900
|
||||
#define SC89890H_BOOSTV_LSB 100
|
||||
|
||||
|
||||
#define BQ2589X_BOOST_LIM_MASK 0x07
|
||||
|
|
@ -236,6 +238,14 @@
|
|||
#define BQ2589X_BOOST_LIM_1800MA 0x05
|
||||
#define BQ2589X_BOOST_LIM_2100MA 0x06
|
||||
#define BQ2589X_BOOST_LIM_2400MA 0x07
|
||||
#define SC89890H_BOOST_LIM_500MA 0x00
|
||||
#define SC89890H_BOOST_LIM_750MA 0x01
|
||||
#define SC89890H_BOOST_LIM_1200MA 0x02
|
||||
#define SC89890H_BOOST_LIM_1400MA 0x03
|
||||
#define SC89890H_BOOST_LIM_1650MA 0x04
|
||||
#define SC89890H_BOOST_LIM_1875MA 0x05
|
||||
#define SC89890H_BOOST_LIM_2150MA 0x06
|
||||
#define SC89890H_BOOST_LIM_2450MA 0x07
|
||||
|
||||
|
||||
/* Register 0x0B*/
|
||||
|
|
@ -295,6 +305,10 @@
|
|||
#define BQ2589X_VINDPM_BASE 2600
|
||||
#define BQ2589X_VINDPM_LSB 100
|
||||
|
||||
#define SC89890H_VINDPMOS_MASK 0x03
|
||||
#define SC89890H_VINDPMOS_SHIFT 0
|
||||
#define SC89890H_VINDPMOS_400MV 0
|
||||
#define SC89890H_VINDPMOS_600MV 1
|
||||
|
||||
/* Register 0x0E*/
|
||||
#define BQ2589X_REG_0E 0x0E
|
||||
|
|
|
|||
Loading…
Reference in a new issue