/** * acpi_remove_pm_notifier - Unregister PM notifier from given ACPI device. * @adev: ACPI device to remove the notifier from. */ acpi_status acpi_remove_pm_notifier(struct acpi_device *adev) { acpi_status status = AE_BAD_PARAMETER; mutex_lock(&acpi_pm_notifier_lock); if (!adev->wakeup.flags.notifier_present) goto out; status = acpi_remove_notify_handler(adev->handle, ACPI_SYSTEM_NOTIFY, acpi_pm_notify_handler); if (ACPI_FAILURE(status)) goto out; if (adev->wakeup.context.work.func) { cancel_work_sync(&adev->wakeup.context.work); adev->wakeup.context.work.func = NULL; } adev->wakeup.context.dev = NULL; wakeup_source_unregister(adev->wakeup.ws); adev->wakeup.flags.notifier_present = false; out: mutex_unlock(&acpi_pm_notifier_lock); return status; }
int __init pm_autosleep_init(void) { autosleep_ws = wakeup_source_register("autosleep"); if (!autosleep_ws) return -ENOMEM; autosleep_wq = alloc_ordered_workqueue("autosleep", 0); if (autosleep_wq) return 0; wakeup_source_unregister(autosleep_ws); return -ENOMEM; }
static int bcm2079x_remove(struct i2c_client *client) { struct bcm2079x_dev *bcm2079x_dev; bcm2079x_dev = i2c_get_clientdata(client); free_irq(client->irq, bcm2079x_dev); misc_deregister(&bcm2079x_dev->bcm2079x_device); mutex_destroy(&bcm2079x_dev->read_mutex); wakeup_source_unregister(bcm2079x_dev->host_wake_ws); gpio_free(bcm2079x_dev->irq_gpio); gpio_free(bcm2079x_dev->en_gpio); gpio_free(bcm2079x_dev->wake_gpio); kfree(bcm2079x_dev); return 0; }
int __init pm_autosleep_init(void) { int ret; ret = sysfs_create_group(power_kobj, &attr_group); if (ret) { pr_err("pm_autosleep_init: sysfs_create_group failed\n"); } autosleep_ws = wakeup_source_register("autosleep"); if (!autosleep_ws) return -ENOMEM; autosleep_wq = alloc_ordered_workqueue("autosleep", 0); if (autosleep_wq) return 0; wakeup_source_unregister(autosleep_ws); return -ENOMEM; }
//[---]Debug for active wakelock before entering suspend int __init pm_autosleep_init(void) { //[+++]Debug for active wakelock before entering suspend int ret; pmsp_dev.name = "PowerManagerServicePrinter"; pmsp_dev.index = 0; INIT_WORK(&pms_printer, pms_printer_func); ret = switch_dev_register(&pmsp_dev); if (ret < 0) printk("%s:fail to register switch power_manager_printer \n",__func__); else printk("%s:success to register pmsp switch \n",__func__); //[---]Debug for active wakelock before entering suspend autosleep_ws = wakeup_source_register("autosleep"); if (!autosleep_ws) return -ENOMEM; autosleep_wq = alloc_ordered_workqueue("autosleep", 0); if (autosleep_wq) return 0; wakeup_source_unregister(autosleep_ws); return -ENOMEM; }