From c56229417c0aad311618ccf128849ce73a4ce3e9 Mon Sep 17 00:00:00 2001 From: Abhijeet Dharmapurikar Date: Thu, 18 Aug 2016 14:45:59 -0700 Subject: [PATCH] qcom-charger: smb138x: fix buck damage on v1.1 hardware Buck damage was seen to go away once the dead time were increased in addition to increasing the OOB comparator threshold. CRs-Fixed: 1055113 Change-Id: I8979d203fc7c35ec23e23874c8dd8f980a1cc619 Signed-off-by: Abhijeet Dharmapurikar --- drivers/power/qcom-charger/smb138x-charger.c | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/power/qcom-charger/smb138x-charger.c b/drivers/power/qcom-charger/smb138x-charger.c index 54cd5c158411..c77204482553 100644 --- a/drivers/power/qcom-charger/smb138x-charger.c +++ b/drivers/power/qcom-charger/smb138x-charger.c @@ -32,7 +32,11 @@ /* Registers that are not common to be mentioned in smb-reg.h */ #define SMB2CHG_MISC_ENG_SDCDC_CFG2 (MISC_BASE + 0xC1) -#define ENG_SDCDC_SEL_OOB_VTH_BIT BIT(0) +#define ENG_SDCDC_SEL_OOB_VTH_BIT BIT(0) + +#define SMB2CHG_MISC_ENG_SDCDC_CFG6 (MISC_BASE + 0xC5) +#define DEAD_TIME_MASK GENMASK(7, 4) +#define HIGH_DEAD_TIME_MASK GENMASK(7, 4) enum { OOB_COMP_WA_BIT = BIT(0), @@ -648,6 +652,14 @@ static int smb138x_init_hw(struct smb138x *chip) "Couldn't configure the oob comp threh rc = %d\n", rc); return rc; } + + rc = smblib_masked_write(chg, SMB2CHG_MISC_ENG_SDCDC_CFG6, + DEAD_TIME_MASK, HIGH_DEAD_TIME_MASK); + if (rc < 0) { + dev_err(chg->dev, + "Couldn't configure the sdcdc cfg 6 reg rc = %d\n", rc); + return rc; + } } return rc; @@ -927,6 +939,14 @@ static int smb138x_slave_probe(struct smb138x *chip) "Couldn't configure the oob comp threh rc = %d\n", rc); return rc; } + + rc = smblib_masked_write(chg, SMB2CHG_MISC_ENG_SDCDC_CFG6, + DEAD_TIME_MASK, HIGH_DEAD_TIME_MASK); + if (rc < 0) { + dev_err(chg->dev, + "Couldn't configure the sdcdc cfg 6 reg rc = %d\n", rc); + return rc; + } } /* suspend usb input */