From c6b1717bbe5e4b8bbb3184e32e5f2698aeb82dda Mon Sep 17 00:00:00 2001 From: mahj8 Date: Tue, 3 May 2022 11:31:01 +0800 Subject: [PATCH] charging: add pd vdm verify IIO channel add pd vdm verify IIO channel for getting pd notify Change-Id: Idd751759e30a631a70a5822ae01d7b068b90a6a0 Signed-off-by: mahj8 Reviewed-on: https://gerrit.mot.com/2258493 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Lu Chai Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../mmi_discrete_charger_core.c | 17 +++++++++++++++++ .../mmi_discrete_charger_core.h | 2 ++ .../mmi_discrete_charger_iio.c | 6 ++++++ .../mmi_discrete_charger_iio.h | 1 + 4 files changed, 26 insertions(+) diff --git a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.c b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.c index 6edf3d3370c4..7856dba3fcd3 100644 --- a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.c +++ b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.c @@ -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); diff --git a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.h b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.h index 13e74278f6dd..003e05f92f65 100644 --- a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.h +++ b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_core.h @@ -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); diff --git a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.c b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.c index 9b34ec465eb1..0b165557ab7c 100644 --- a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.c +++ b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.c @@ -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; diff --git a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.h b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.h index 8c7e4217ce38..5ca844fb596e 100644 --- a/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.h +++ b/drivers/power/mmi_discrete_charger/mmi_discrete_charger_iio.h @@ -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,