From d3872402c1c2caeff15340fb4fc89a8e22f5ae07 Mon Sep 17 00:00:00 2001 From: Kim Taejeong Date: Fri, 22 Feb 2019 15:26:59 +0900 Subject: [PATCH] [RAMEN9610-12449][COMMON] muic: skip vdnmon low when plug out Change-Id: Iaf6af296eee9cc6cb274f22b25f00c963bb5b3e8 Signed-off-by: Kim Taejeong --- drivers/muic/s2mu106-muic-afc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/muic/s2mu106-muic-afc.c b/drivers/muic/s2mu106-muic-afc.c index e694fabc0cb6..ca558cd2f4ad 100644 --- a/drivers/muic/s2mu106-muic-afc.c +++ b/drivers/muic/s2mu106-muic-afc.c @@ -203,6 +203,12 @@ static inline int s2mu106_hv_muic_get_vdnmon_status(struct s2mu106_muic_data* mu return ((s2mu106_hv_muic_read_reg(muic_data, S2MU106_REG_AFC_STATUS) >> STATUS_VDNMON_SHIFT) & 0x1); } +static inline int s2mu106_hv_muic_get_vbus_state(struct s2mu106_muic_data *muic_data) +{ + return (s2mu106_i2c_read_byte(muic_data->i2c, S2MU106_REG_DEVICE_APPLE) + & DEVICE_APPLE_VBUS_WAKEUP_MASK) >> DEVICE_APPLE_VBUS_WAKEUP_SHIFT; +} + #if defined(CONFIG_MUIC_SUPPORT_POWERMETER) static int s2mu106_hv_muic_get_vbus_voltage(struct s2mu106_muic_data *muic_data) { @@ -768,7 +774,11 @@ static irqreturn_t s2mu106_hv_muic_vdnmon_isr(int irq, void *data) pr_info("%s vdnmon(%s)\n", __func__, (vdnmon ? "High" : "Low")); if (muic_data->is_dp_drive && !vdnmon) { + msleep(50); + if (s2mu106_hv_muic_get_vbus_state(muic_data)) muic_core_hv_state_manager(muic_pdata, HV_TRANS_VDNMON_LOW); + else + pr_info("%s skip to handle vdnmon low: Invalid VBUS\n", __func__); } mutex_unlock(&muic_data->afc_mutex); -- 2.20.1