discrete:optimize charging enabled interface

Consider the input suspend status
to charging enabled interface.

Change-Id: Ie49bc9f02cafdbc7471b06b6660c140970ca8ab8
Signed-off-by: xuwei9 <xuwei9@lenovo.com>
Reviewed-on: https://gerrit.mot.com/2169116
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Wang Wang <wangwang1@lenovo.com>
Submit-Approved: Jira Key
This commit is contained in:
xuwei9 2022-01-13 11:50:40 +08:00 • committed by Wei Xu
commit 061526fb73
3 changed files with 33 additions and 3 deletions

View file

@ -1998,6 +1998,31 @@ int mmi_discrete_get_charging_enabled(struct mmi_discrete_charger *chip, bool *v
return rc;
}
int mmi_discrete_get_charger_suspend(struct mmi_discrete_charger *chip, bool *val)
{
int i;
bool charger_suspend = false;
struct mmi_charger_cfg *cfg;
if (!chip->chg_clients || !chip->chg_client_num) {
mmi_err(chip, "Invalid charger client\n");
return -1;
}
for (i = 0; i < chip->chg_client_num; i++) {
cfg = &chip->chg_clients[i].chg_cfg;
if (cfg->charger_suspend) {
charger_suspend = true;
break;
}
}
*val = charger_suspend;
mmi_dbg(chip, "mmi_discrete_get_charger_suspend val:%d\n",*val);
return 0;
}
int mmi_discrete_get_qc3p_power(struct mmi_discrete_charger *chip, int *val)
{
int rc = 0;

View file

@ -141,5 +141,6 @@ int mmi_discrete_config_termination_enabled(struct mmi_discrete_charger *chip, i
int mmi_discrete_get_qc3p_power(struct mmi_discrete_charger *chip, int *val);
int mmi_discrete_get_pulse_cnt(struct mmi_discrete_charger *chip, int *count);
int mmi_discrete_set_dp_dm(struct mmi_discrete_charger *chip, int val);
int mmi_discrete_get_charger_suspend(struct mmi_discrete_charger *chip, bool *val);
#endif

View file

@ -64,7 +64,7 @@ static int mmi_discrete_iio_read_raw(struct iio_dev *indio_dev,
{
struct mmi_discrete_charger *chip = iio_priv(indio_dev);
int rc = 0;
bool val_bool = false;
bool val_bool = false, val_suspend = false;
*val1 = 0;
switch (chan->channel) {
@ -75,8 +75,12 @@ static int mmi_discrete_iio_read_raw(struct iio_dev *indio_dev,
rc = mmi_discrete_get_hw_current_max(chip, val1);
break;
case PSY_IIO_USB_CHARGING_ENABLED:
rc = mmi_discrete_get_charging_enabled(chip, &val_bool);
*val1 = val_bool?1:0;
mmi_discrete_get_charging_enabled(chip, &val_bool);
mmi_discrete_get_charger_suspend(chip, &val_suspend);
if(val_bool && !val_suspend)
*val1 = 1;
else
*val1 = 0;
break;
case PSY_IIO_MMI_QC3P_POWER:
rc = mmi_discrete_get_qc3p_power(chip, val1);