blob: a036f63c14a3900a175e45bab0750062cf216f7e [file] [log] [blame]
/* Copyright (C) 2013 Google, Inc.
*
* Author:
* Derek Basehore <dbasehore@chromium.org>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _LINUX_PM_DARK_RESUME_H
#define _LINUX_PM_DARK_RESUME_H
#include <linux/device.h>
#include <linux/pm.h>
#include <linux/types.h>
#ifdef CONFIG_PM_SLEEP
extern void dev_dark_resume_set_active(struct device *dev, bool is_active);
extern void dev_dark_resume_add_consumer(struct device *dev);
extern void dev_dark_resume_remove_consumer(struct device *dev);
extern bool pm_dark_resume_active(void);
extern bool pm_dark_resume_always(void);
extern void pm_dark_resume_set_always(bool always);
extern void pm_dark_resume_set_enabled(bool state);
/*
* Wrapper for device drivers to check if it should do anything different for a
* dark resume and whether the global dark resume state is set.
*/
static inline bool dev_dark_resume_active(struct device *dev)
{
return dev->power.use_dark_resume & pm_dark_resume_active();
}
#else
static inline void dev_dark_resume_set_active(struct device *dev,
bool is_active) { }
static inline void dev_dark_resume_add_consumer(struct device *dev) { }
static inline void dev_dark_resume_remove_consumer(struct device *dev) { }
static inline bool pm_dark_resume_active(void)
{
return false;
}
static inline bool dev_dark_resume_active(struct device *dev)
{
return false;
}
#endif /* !CONFIG_PM_SLEEP */
#endif /* _LINUX_PM_DARK_RESUME_H */