/*
 * shutdown.c
 */

extern void device_shutdown(void);


#ifdef CONFIG_PM

/*
 * main.c
 */

/*
 * Used to synchronize global power management operations.
 */
extern struct semaphore dpm_sem;

/*
 * Used to serialize changes to the dpm_* lists.
 */
extern struct semaphore dpm_list_sem;

/*
 * The PM lists.
 */
extern struct list_head dpm_active;
extern struct list_head dpm_off;
extern struct list_head dpm_off_irq;


static inline struct dev_pm_info * to_pm_info(struct list_head * entry)
{
	return container_of(entry, struct dev_pm_info, entry);
}

static inline struct device * to_device(struct list_head * entry)
{
	return container_of(to_pm_info(entry), struct device, power);
}

extern int device_pm_add(struct device *);
extern void device_pm_remove(struct device *);

/*
 * sysfs.c
 */

extern int dpm_sysfs_add(struct device *);
extern void dpm_sysfs_remove(struct device *);

/*
 * resume.c
 */

extern void dpm_resume(void);
extern void dpm_power_up(void);
extern int resume_device(struct device *);

/*
 * suspend.c
 */
extern int suspend_device(struct device *, pm_message_t);


/*
 * runtime.c
 */

#else /* CONFIG_PM */


static inline int device_pm_add(struct device * dev)
{
	return 0;
}
static inline void device_pm_remove(struct device * dev)
{

}

#endif
