51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
|
/*
|
||
|
* -------------------------------------------------------------------------
|
||
|
* <linux_root>/drivers/stm/pm_notify.c
|
||
|
* -------------------------------------------------------------------------
|
||
|
* Copyright (C) 2010 STMicroelectronics
|
||
|
* Author: Francesco M. Virlinzi <francesco.virlinzi@st.com>
|
||
|
*
|
||
|
* May be copied or modified under the terms of the GNU General Public
|
||
|
* License V.2 ONLY. See linux/COPYING for more information.
|
||
|
*
|
||
|
* ------------------------------------------------------------------------- */
|
||
|
#include <linux/irqflags.h>
|
||
|
#include <linux/module.h>
|
||
|
#include <linux/errno.h>
|
||
|
#include <linux/mutex.h>
|
||
|
#include <linux/stm/pm_notify.h>
|
||
|
|
||
|
static DEFINE_MUTEX(pm_notify_mutex);
|
||
|
static struct stm_pm_notify *stm_notifier;
|
||
|
|
||
|
enum stm_pm_notify_return
|
||
|
stm_pm_prepare_enter(enum stm_pm_type type)
|
||
|
{
|
||
|
if (stm_notifier && stm_notifier->pre_enter)
|
||
|
return stm_notifier->pre_enter(type);
|
||
|
|
||
|
return STM_PM_RET_OK;
|
||
|
}
|
||
|
|
||
|
enum stm_pm_notify_return
|
||
|
stm_pm_post_enter(enum stm_pm_type type, int wkirq)
|
||
|
{
|
||
|
if (stm_notifier && stm_notifier->post_enter)
|
||
|
return stm_notifier->post_enter(type, wkirq);
|
||
|
|
||
|
return STM_PM_RET_OK;
|
||
|
}
|
||
|
|
||
|
int stm_register_pm_notify(struct stm_pm_notify *notify)
|
||
|
{
|
||
|
if (stm_notifier || !notify)
|
||
|
return -EINVAL;
|
||
|
|
||
|
mutex_lock(&pm_notify_mutex);
|
||
|
stm_notifier = notify;
|
||
|
mutex_unlock(&pm_notify_mutex);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
EXPORT_SYMBOL(stm_register_pm_notify);
|