diff options
| author | Abhijeet Dharmapurikar <adharmap@codeaurora.org> | 2016-10-06 17:25:01 -0700 |
|---|---|---|
| committer | Abhijeet Dharmapurikar <adharmap@codeaurora.org> | 2016-10-17 11:54:09 -0700 |
| commit | ebdc69997401fa8f92597cbfe1ff574a8265a930 (patch) | |
| tree | f3a4e2cbee00de23a519f5c36cad65787a652afd /drivers | |
| parent | f080134002472e9fb20e331e0a3dddce587458fa (diff) | |
qpnp-smb2: update to USB_PD type when pd is active
Since the USB_PD type is no more set by the PD driver, it is
expected that the type be set based on pd_active property being
ACTIVE. So set the type and update the userspace when it changes.
Change-Id: I0f76f092d3e8de7a916e995e4d825fe0da79bf78
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/power/qcom-charger/qpnp-smb2.c | 8 | ||||
| -rw-r--r-- | drivers/power/qcom-charger/smb-lib.c | 15 | ||||
| -rw-r--r-- | drivers/power/qcom-charger/smb-lib.h | 2 |
3 files changed, 10 insertions, 15 deletions
diff --git a/drivers/power/qcom-charger/qpnp-smb2.c b/drivers/power/qcom-charger/qpnp-smb2.c index b0edacb98edf..57ab9fe758c7 100644 --- a/drivers/power/qcom-charger/qpnp-smb2.c +++ b/drivers/power/qcom-charger/qpnp-smb2.c @@ -455,14 +455,6 @@ static int smb2_usb_set_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_CURRENT_MAX: rc = smblib_set_prop_usb_current_max(chg, val); break; - case POWER_SUPPLY_PROP_TYPE: - if (chg->pd_active && val->intval == POWER_SUPPLY_TYPE_USB_PD) { - chg->usb_psy_desc.type = val->intval; - } else { - pr_err("set type %d not allowed\n", val->intval); - rc = -EINVAL; - } - break; case POWER_SUPPLY_PROP_TYPEC_POWER_ROLE: rc = smblib_set_prop_typec_power_role(chg, val); break; diff --git a/drivers/power/qcom-charger/smb-lib.c b/drivers/power/qcom-charger/smb-lib.c index f5b0c6a21193..bc1b8b2bf03e 100644 --- a/drivers/power/qcom-charger/smb-lib.c +++ b/drivers/power/qcom-charger/smb-lib.c @@ -434,8 +434,10 @@ static int smblib_update_usb_type(struct smb_charger *chg) const struct apsd_result *apsd_result; /* if PD is active, APSD is disabled so won't have a valid result */ - if (chg->pd_active) - return rc; + if (chg->pd_active) { + chg->usb_psy_desc.type = POWER_SUPPLY_TYPE_USB_PD; + return 0; + } apsd_result = smblib_get_apsd_result(chg); chg->usb_psy_desc.type = apsd_result->pst; @@ -1884,11 +1886,10 @@ int smblib_set_prop_pd_active(struct smb_charger *chg, */ if (val->intval) { rc = smblib_read(chg, TYPE_C_STATUS_4_REG, &stat); - if (rc < 0) { - dev_err(chg->dev, - "Couldn't read TYPE_C_STATUS_4 rc=%d\n", + if (rc < 0) { + dev_err(chg->dev, "Couldn't read TYPE_C_STATUS_4 rc=%d\n", rc); - return rc; + return rc; } stat &= CC_ORIENTATION_BIT; @@ -1913,6 +1914,8 @@ int smblib_set_prop_pd_active(struct smb_charger *chg, chg->pd_active = (bool)val->intval; smblib_update_usb_type(chg); + power_supply_changed(chg->usb_psy); + return rc; } diff --git a/drivers/power/qcom-charger/smb-lib.h b/drivers/power/qcom-charger/smb-lib.h index 804c5bbff013..fc1c3ba94a15 100644 --- a/drivers/power/qcom-charger/smb-lib.h +++ b/drivers/power/qcom-charger/smb-lib.h @@ -169,7 +169,7 @@ struct smb_charger { /* cached status */ int voltage_min_uv; int voltage_max_uv; - bool pd_active; + int pd_active; bool vbus_present; int system_temp_level; |
