From 7eb49b32510798f8cafa2f927192d2ad32de925a Mon Sep 17 00:00:00 2001 From: Anirudh Ghayal Date: Mon, 7 Aug 2017 14:27:36 +0530 Subject: [PATCH] qcom: qpnp-haptic: Disable haptics when enable time specified is zero The vibrator HAL expects vibration to be disabled when the 'enable' time specified is 0. Fix this. CRs-Fixed: 2083994 Change-Id: I12843233da5429ed2fd53f33617952b1dd0ddcd5 Signed-off-by: Anirudh Ghayal --- drivers/soc/qcom/qpnp-haptic.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/soc/qcom/qpnp-haptic.c b/drivers/soc/qcom/qpnp-haptic.c index d86f8671705a..38cc86963181 100644 --- a/drivers/soc/qcom/qpnp-haptic.c +++ b/drivers/soc/qcom/qpnp-haptic.c @@ -2233,13 +2233,23 @@ static void qpnp_hap_td_enable(struct timed_output_dev *dev, int time_ms) timed_dev); int rc; - if (time_ms <= 0) + if (time_ms < 0) return; + mutex_lock(&hap->lock); + + if (time_ms == 0) { + /* disable haptics */ + hrtimer_cancel(&hap->hap_timer); + hap->state = 0; + schedule_work(&hap->work); + mutex_unlock(&hap->lock); + return; + } + if (time_ms < 10) time_ms = 10; - mutex_lock(&hap->lock); if (is_sw_lra_auto_resonance_control(hap)) hrtimer_cancel(&hap->auto_res_err_poll_timer);