discrete:add enable termination iio definition

Add main charger enable termination
iio definition.

Change-Id: I80ba57a4c669c44561bab152a2f7d3f1a887b325
Signed-off-by: xuwei9 <xuwei9@lenovo.com>
Reviewed-on: https://gerrit.mot.com/2148136
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
xuwei9 2021-12-17 22:09:56 +08:00 • committed by Wei Xu
commit 247b2c7d64
6 changed files with 34 additions and 1 deletions

View file

@ -71,6 +71,16 @@ int charger_dev_enable_charging(struct charger_device *chg_dev, bool en)
}
EXPORT_SYMBOL(charger_dev_enable_charging);
int charger_dev_enable_termination(struct charger_device *chg_dev, bool en)
{
if (chg_dev != NULL && chg_dev->ops != NULL &&
chg_dev->ops->enable_termination)
return chg_dev->ops->enable_termination(chg_dev, en);
return -ENOTSUPP;
}
EXPORT_SYMBOL(charger_dev_enable_termination);
int charger_dev_is_enabled_charging(struct charger_device *chg_dev, bool *en)
{
if (chg_dev != NULL && chg_dev->ops != NULL &&

View file

@ -1952,6 +1952,21 @@ int mmi_discrete_config_charging_enabled(struct mmi_discrete_charger *chip, int
return rc;
}
int mmi_discrete_config_termination_enabled(struct mmi_discrete_charger *chip, int val)
{
int rc = 0;
mmi_dbg(chip, "mmi_discrete_config_termination_enabled val:%d\n",val);
rc = charger_dev_enable_termination(chip->master_chg_dev,
val ? true:false);
if (rc)
mmi_err(chip, "Couldn't %s termination rc=%d\n",
val ? "enable":"disable", rc);
return rc;
}
int mmi_discrete_get_charging_enabled(struct mmi_discrete_charger *chip, bool *val)
{
int rc = 0;

View file

@ -137,5 +137,6 @@ int mmi_discrete_get_hw_current_max(struct mmi_discrete_charger *chip, int *val)
int mmi_discrete_config_charging_enabled(struct mmi_discrete_charger *chip, int val);
int mmi_discrete_get_charging_enabled(struct mmi_discrete_charger *chip, bool *val);
int mmi_discrete_config_input_current_settled(struct mmi_discrete_charger *chip, int val);
int mmi_discrete_config_termination_enabled(struct mmi_discrete_charger *chip, int val);
#endif
#endif

View file

@ -35,6 +35,9 @@ static int mmi_discrete_iio_write_raw(struct iio_dev *indio_dev,
case PSY_IIO_INPUT_CURRENT_SETTLED:
rc = mmi_discrete_config_input_current_settled(chip, val1);
break;
case PSY_IIO_USB_TERMINATION_ENABLED:
rc = mmi_discrete_config_termination_enabled(chip, val1);
break;
default:
pr_err("Unsupported mmi_discrete IIO chan %d\n", chan->channel);
rc = -EINVAL;

View file

@ -47,6 +47,7 @@ static const struct mmi_discrete_iio_channels mmi_discrete_iio_psy_channels[] =
MMI_DISCRETE_CHAN_INDEX("hw_current_max", PSY_IIO_HW_CURRENT_MAX)
MMI_DISCRETE_CHAN_INDEX("charging_enabled", PSY_IIO_USB_CHARGING_ENABLED)
MMI_DISCRETE_CHAN_INDEX("input_current_settled", PSY_IIO_INPUT_CURRENT_SETTLED)
MMI_DISCRETE_CHAN_INDEX("termination_enabled", PSY_IIO_USB_TERMINATION_ENABLED)
};
int mmi_discrete_init_iio_psy(struct mmi_discrete_charger *chip,

View file

@ -80,6 +80,7 @@ struct charger_ops {
int (*is_charge_halted)(struct charger_device *dev, bool *en);
int (*dump_registers)(struct charger_device *dev, struct seq_file *m);
int (*enable_termination)(struct charger_device *dev, bool en);
};
#define to_charger_device(obj) container_of(obj, struct charger_device, dev)
@ -106,6 +107,8 @@ extern int charger_dev_get_charging_current(struct charger_device *chg_dev, u32
extern int charger_dev_enable_charging(struct charger_device *chg_dev, bool en);
extern int charger_dev_enable_termination(struct charger_device *chg_dev, bool en);
extern int charger_dev_is_enabled_charging(struct charger_device *chg_dev, bool *en);
extern int charger_dev_dump_registers(struct charger_device *chg_dev, struct seq_file *m);