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; }
int hardlimit_init(void) { #ifdef CPUFREQ_HARDLIMIT_LEGACY_INTERFACE int legacy_hardlimit_retval; #endif int hardlimit_retval; /* Enable the legacy sysfs interface */ #ifdef CPUFREQ_HARDLIMIT_LEGACY_INTERFACE legacy_hardlimit_kobj = kobject_create_and_add("cpufreq", kernel_kobj); if (!legacy_hardlimit_kobj) { return -ENOMEM; } legacy_hardlimit_retval = sysfs_create_group(legacy_hardlimit_kobj, &legacy_hardlimit_attr_group); if (legacy_hardlimit_retval) kobject_put(legacy_hardlimit_kobj); #endif /* Enable the new sysfs interface */ hardlimit_kobj = kobject_create_and_add("cpufreq_hardlimit", kernel_kobj); if (!hardlimit_kobj) { return -ENOMEM; } hardlimit_retval = sysfs_create_group(hardlimit_kobj, &hardlimit_attr_group); if (hardlimit_retval) kobject_put(hardlimit_kobj); #ifdef CPUFREQ_HARDLIMIT_LEGACY_INTERFACE if (!hardlimit_retval && !legacy_hardlimit_retval) { #else if (!hardlimit_retval) { #endif /* Only register to powersuspend and delayed work if we were able to create the sysfs interface */ register_power_suspend(&cpufreq_hardlimit_suspend_data); INIT_DELAYED_WORK_DEFERRABLE(&stop_wakeup_kick_work, stop_wakeup_kick); } return (hardlimit_retval); } /* end sysfs interface */ void hardlimit_exit(void) { unregister_power_suspend(&cpufreq_hardlimit_suspend_data); kobject_put(hardlimit_kobj); }
static void ssp_shutdown(struct i2c_client *client) { struct ssp_data *data = i2c_get_clientdata(client); func_dbg(); if (data->bProbeIsDone == false) goto exit; if (data->fw_dl_state >= FW_DL_STATE_SCHEDULED && data->fw_dl_state < FW_DL_STATE_DONE) { pr_err("%s, cancel_delayed_work_sync state = %d\n", __func__, data->fw_dl_state); cancel_delayed_work_sync(&data->work_firmware); } ssp_enable(data, false); #ifdef CONFIG_POWERSUSPEND unregister_power_suspend(&data->power_suspend); #endif disable_debug_timer(data); free_irq(data->iIrq, data); gpio_free(data->client->irq); remove_sysfs(data); remove_event_symlink(data); remove_input_dev(data); #ifdef CONFIG_SENSORS_SSP_SENSORHUB ssp_sensorhub_remove(data); #endif del_timer_sync(&data->debug_timer); cancel_work_sync(&data->work_debug); destroy_workqueue(data->debug_wq); wake_lock_destroy(&data->ssp_wake_lock); #ifdef CONFIG_SENSORS_SSP_SHTC1 mutex_destroy(&data->cp_temp_adc_lock); #endif toggle_mcu_reset(data); // data->set_mcu_reset(0); exit: kfree(data); }
static void __exit ledtrig_sleep_exit(void) { unregister_power_suspend(&ledtrig_sleep_power_suspend_handler); unregister_pm_notifier(&ledtrig_sleep_pm_notifier); led_trigger_unregister_simple(ledtrig_sleep); }