charging: add pd vdm verify IIO channel

add pd vdm verify IIO channel for getting
pd notify

Change-Id: Idd751759e30a631a70a5822ae01d7b068b90a6a0
Signed-off-by: mahj8 <mahj8@motorola.com>
Reviewed-on: https://gerrit.mot.com/2258493
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Lu Chai <chailu1@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
mahj8 2022-05-03 11:31:01 +08:00 • committed by Haijian Ma
commit c6b1717bbe
4 changed files with 26 additions and 0 deletions

View file

@ -2202,10 +2202,27 @@ int mmi_discrete_config_pd_active(struct mmi_discrete_charger *chip, int val)
return 0;
}
int mmi_charger_pd_vdm_verify(struct mmi_discrete_charger *chip, int val)
{
mmi_info(chip, "config pd_vdm_verify is %d old mode is %d\n", val, chip->pd_vdm_verify);
if (chip->pd_vdm_verify && chip->pd_vdm_verify == val)
return 0;
chip->pd_vdm_verify = val;
if (chip->usb_psy && chip->pd_vdm_verify)
power_supply_changed(chip->usb_psy);
return 0;
}
static int mmi_discrete_usb_plugout(struct mmi_discrete_charger * chip)
{
chip->real_charger_type = POWER_SUPPLY_TYPE_UNKNOWN;
chip->pd_active = MMI_POWER_SUPPLY_PD_INACTIVE;
chip->pd_vdm_verify = false;
if (chip->use_extcon)
mmi_notify_device_mode(chip, false);
vote(chip->usb_icl_votable, SW_ICL_MAX_VOTER, true, SDP_100_MA);

View file

@ -112,6 +112,7 @@ struct mmi_discrete_charger {
/*PD*/
struct adapter_device *pd_adapter_dev;
int pd_active;
int pd_vdm_verify;
bool pd_supported;
int dc_cl_ma;
@ -138,6 +139,7 @@ int mmi_discrete_otg_enable(struct mmi_discrete_charger *chip, bool en);
int mmi_discrete_is_usb_suspended(struct mmi_discrete_charger *chip);
int mmi_discrete_config_typec_mode(struct mmi_discrete_charger *chip, int val);
int mmi_discrete_config_pd_active(struct mmi_discrete_charger *chip, int val);
int mmi_charger_pd_vdm_verify(struct mmi_discrete_charger *chip, int val);
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);

View file

@ -48,6 +48,9 @@ static int mmi_discrete_iio_write_raw(struct iio_dev *indio_dev,
case PSY_IIO_CP_ENABLE:
chip->cp_active = !!val1;
break;
case PSY_IIO_MMI_PD_VDM_VERIFY:
rc = mmi_charger_pd_vdm_verify(chip, val1);
break;
default:
pr_err("Unsupported mmi_discrete IIO chan %d\n", chan->channel);
rc = -EINVAL;
@ -100,6 +103,9 @@ static int mmi_discrete_iio_read_raw(struct iio_dev *indio_dev,
case PSY_IIO_CP_ENABLE:
*val1 = chip->cp_active;
break;
case PSY_IIO_MMI_PD_VDM_VERIFY:
*val1 = chip->pd_vdm_verify;
break;
default:
pr_err("Unsupported mmi_discrete IIO chan %d\n", chan->channel);
rc = -EINVAL;

View file

@ -56,6 +56,7 @@ static const struct mmi_discrete_iio_channels mmi_discrete_iio_psy_channels[] =
MMI_DISCRETE_CHAN_INDEX("usb_qc3p_power", PSY_IIO_MMI_QC3P_POWER)
MMI_DISCRETE_CHAN_INDEX("typec_accessory_mode", PSY_IIO_TYPEC_ACCESSORY_MODE)
MMI_DISCRETE_CHAN_INDEX("mmi_cp_enabled_status", PSY_IIO_CP_ENABLE)
MMI_DISCRETE_CHAN_INDEX("mmi_pd_vdm_verify", PSY_IIO_MMI_PD_VDM_VERIFY)
};
int mmi_discrete_init_iio_psy(struct mmi_discrete_charger *chip,