smb-lib: change debounce time to 20mS while in pr_swap
We observe that while PR_SWAP is done from PD stack, the typeC block could be running its tCC debounce timer. This causes the driver to prematurely declare that the cable is removed. Fix this by reducing the tCC debounce time to 20mS while in PR_SWAP. Change-Id: Ie8b3628cd6931ff2da92d95c153d0d2c7ddb20b2 Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
This commit is contained in:
parent
a5706c4fda
commit
35b0ff80d1
1 changed files with 11 additions and 0 deletions
|
@ -3629,6 +3629,11 @@ static void smblib_handle_typec_removal(struct smb_charger *chg)
|
|||
chg->pd_hard_reset = 0;
|
||||
chg->typec_legacy_valid = false;
|
||||
|
||||
/* reset back to 120mS tCC debounce */
|
||||
rc = smblib_masked_write(chg, MISC_CFG_REG, TCC_DEBOUNCE_20MS_BIT, 0);
|
||||
if (rc < 0)
|
||||
smblib_err(chg, "Couldn't set 120mS tCC debounce rc=%d\n", rc);
|
||||
|
||||
/* enable APSD CC trigger for next insertion */
|
||||
rc = smblib_masked_write(chg, TYPE_C_CFG_REG,
|
||||
APSD_START_ON_CC_BIT, APSD_START_ON_CC_BIT);
|
||||
|
@ -3867,12 +3872,18 @@ int smblib_get_prop_pr_swap_in_progress(struct smb_charger *chg,
|
|||
int smblib_set_prop_pr_swap_in_progress(struct smb_charger *chg,
|
||||
const union power_supply_propval *val)
|
||||
{
|
||||
int rc;
|
||||
|
||||
chg->pr_swap_in_progress = val->intval;
|
||||
/*
|
||||
* call the cc changed irq to handle real removals while
|
||||
* PR_SWAP was in progress
|
||||
*/
|
||||
smblib_usb_typec_change(chg);
|
||||
rc = smblib_masked_write(chg, MISC_CFG_REG, TCC_DEBOUNCE_20MS_BIT,
|
||||
val->intval ? TCC_DEBOUNCE_20MS_BIT : 0);
|
||||
if (rc < 0)
|
||||
smblib_err(chg, "Couldn't set tCC debounce rc=%d\n", rc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue