static int adp5588_remove(struct i2c_client *client) { struct adp5588_keypad_data *kp = i2c_get_clientdata(client); dev_dbg(&client->dev, "%s: enter.\n", __FUNCTION__); if ( adp5588_data.device_type ) /* it is MOTUS */ { switch_dev_unregister(&adp5588_data.sw_lid_dev); input_unregister_handler(&lid_switch_handler); } else { /* morrison */ switch_dev_unregister(&adp5588_data.sw_mute_dev); } // if (kp->use_irq) // { free_irq(client->irq, kp); // }else hrtimer_cancel(&kp->timer); gpio_free( ADP5588_KEYPAD_RESET_GPIO); input_unregister_device(kp->input_dev); kfree(kp); return 0; }
static inline void sysrq_unregister_handler(void) { if (sysrq_handler_registered) { input_unregister_handler(&sysrq_handler); sysrq_handler_registered = false; } }
static void __exit sweep2wake_exit(void) { input_unregister_handler(&s2s_input_handler); destroy_workqueue(s2s_input_wq); input_unregister_device(sweep2wake_pwrdev); input_free_device(sweep2wake_pwrdev); return; }
static void __exit cfboost_exit(void) { /* stop input events */ input_unregister_handler(&cfb_input_handler); /* cancel pending work requests */ cancel_work_sync(&boost); cancel_delayed_work_sync(&unboost); /* clean up */ destroy_workqueue(cfb_wq); pm_qos_remove_request(&qos_req); }
static void __exit doubletap2wake_exit(void) { #ifndef ANDROID_TOUCH_DECLARED kobject_del(android_touch_kobj); #endif input_unregister_handler(&dt2w_input_handler); destroy_workqueue(dt2w_input_wq); input_unregister_device(doubletap2wake_pwrdev); input_free_device(doubletap2wake_pwrdev); return; }
static void kgdboc_restore_input_helper(struct work_struct *dummy) { /* */ mutex_lock(&kgdboc_reset_mutex); if (input_register_handler(&kgdboc_reset_handler) == 0) input_unregister_handler(&kgdboc_reset_handler); mutex_unlock(&kgdboc_reset_mutex); }
static void kgdboc_restore_input_helper(struct work_struct *dummy) { /* * We need to take a mutex to prevent several instances of * this work running on different CPUs so they don't try * to register again already registered handler. */ mutex_lock(&kgdboc_reset_mutex); if (input_register_handler(&kgdboc_reset_handler) == 0) input_unregister_handler(&kgdboc_reset_handler); mutex_unlock(&kgdboc_reset_mutex); }
static void __exit wake_gestures_exit(void) { kobject_del(android_touch_kobj); input_unregister_handler(&wg_input_handler); destroy_workqueue(s2w_input_wq); destroy_workqueue(dt2w_input_wq); input_free_device(wake_dev); wake_lock_destroy(&dt2w_wakelock); #if (WAKE_GESTURES_ENABLED) input_unregister_device(gesture_dev); input_free_device(gesture_dev); #endif return; }
static void __exit wake_gestures_exit(void) { kobject_del(android_touch_kobj); input_unregister_handler(&wg_input_handler); input_free_device(wake_dev); #ifdef CONFIG_POWERSUSPEND unregister_power_suspend(&wk_power_suspend_handler); #endif #if (WAKE_GESTURES_ENABLED) input_unregister_device(gesture_dev); input_free_device(gesture_dev); #endif return; }
static void __exit ate_exit(void) { sysfs_remove_file(hw_ate_kobj, &dev_attr_input_device_filter.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_file_save_user_ops.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_playback_continuance_ms.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_playback_delay_ms.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_parse_user_ops_file.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_play_user_ops.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_record_user_ops.attr); sysfs_remove_file(hw_ate_kobj, &dev_attr_inputevents_count.attr); kobject_del(hw_ate_kobj); wake_unlock(&ate_dt->wake_lock); wake_lock_destroy(&ate_dt->wake_lock); kfree(ate_dt->ie_dt); kfree(ate_dt); input_unregister_handler(&ate_handler); }
static int my_stop(void) { //shutdown kthread lock_kernel(); init_MUTEX_LOCKED(&sleep_sem); mb(); terminate = 1; mb(); kill_proc(thread->pid, SIGKILL, 1); flush_scheduled_work(); down(&sleep_sem); kill_proc(2, SIGCHLD, 1); remove_proc_entry(KB_PROC_LOCATION, 0); input_unregister_handler(&kbinput_handler); return 0; }
void __exit rfkill_handler_exit(void) { input_unregister_handler(&rfkill_handler); cancel_delayed_work_sync(&rfkill_op_work); }
static void __exit apmpower_exit(void) { input_unregister_handler(&apmpower_handler); }
static void mac_hid_stop_emulation(void) { input_unregister_handler(&mac_hid_emumouse_handler); mac_hid_destroy_emumouse(); }
void __exit evbug_exit(void) { input_unregister_handler(&evbug_handler); }
void cleanup_module(void) { kbd_ledfunc = NULL; input_unregister_handler(&keybdev_handler); }
static void __exit force_crash_exit(void) { del_timer_sync(&force_crash_timer); input_unregister_handler(&force_crash_handler); }
static void __exit keybdev_exit(void) { kbd_ledfunc = NULL; input_unregister_handler(&keybdev_handler); }
static void __exit boost_exit(void) { flush_work(&touchboost_wk); input_unregister_handler(&touchboost_handler); pm_qos_remove_request(&touchboost_cpu_qos_min); }