Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
0
//[---]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;
}