msm_vibrator.c uses hrtimer to switch off the phone vibration as follows- hrtimer_start(&vibe_timer, ktime_set(value / 1000, (value % 1000) * 1000000), HRTIMER_MODE_REL); However, hrtimer does not get fired after the CPU suspends. Hence, if the CPU suspends before the timer gets fired, the phone continues vibrating until the next time when CPU wakes up causing unnecessary battery drain (which can be as long as 15 minutes). IMHO, one way to fix it would be to replace hrtimer by android alarm timer. Thanks Abhilash Jindal -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html