static int __init sprd_init_vibrator(void) { int ret = 0; vibrator_hw_init(); #if defined(CONFIG_HAS_WAKELOCK) wake_lock_init(&vib_wl, WAKE_LOCK_SUSPEND, __stringify(vib_wl)); #endif ret = timed_output_dev_register(&sprd_vibrator); if (ret < 0) { printk(KERN_ERR "Vibrator: timed_output dev registration failure\n"); goto error; } vib_workqueue = create_workqueue("vib_wq"); INIT_DELAYED_WORK(&vibrator_off_work, vibrator_off_worker); return 0; error: #if defined(CONFIG_HAS_WAKELOCK) wake_lock_destroy(&vib_wl); #endif return ret; }
static int __init sprd_init_vibrator(void) { vibrator_hw_init(); INIT_WORK(&vibrator_work, update_vibrator); vibe_state = 0; hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); vibe_timer.function = vibrator_timer_func; timed_output_dev_register(&sprd_vibrator); return 0; }