Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 304420
b: refs/heads/master
c: a180c0d
h: refs/heads/master
v: v3
  • Loading branch information
John Stultz authored and Greg Kroah-Hartman committed Apr 24, 2012
1 parent 7cf6afb commit 12a057f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 22fa2fe0a496b6a0c0a75df862cfa7269babcb74
refs/heads/master: a180c0d659f604568637336a00c0c3ca2f7b094a
26 changes: 7 additions & 19 deletions trunk/drivers/staging/android/alarm-dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,6 @@
#include <linux/alarmtimer.h>
#include "android_alarm.h"

/* XXX - Hack out wakelocks, while they are out of tree */
struct wake_lock {
int i;
};
#define wake_lock(x)
#define wake_lock_timeout(x, y)
#define wake_unlock(x)
#define WAKE_LOCK_SUSPEND 0
#define wake_lock_init(x, y, z) ((x)->i = 1)
#define wake_lock_destroy(x)

#define ANDROID_ALARM_PRINT_INFO (1U << 0)
#define ANDROID_ALARM_PRINT_IO (1U << 1)
#define ANDROID_ALARM_PRINT_INT (1U << 2)
Expand All @@ -61,7 +50,7 @@ module_param_named(debug_mask, debug_mask, int, S_IRUGO | S_IWUSR | S_IWGRP);

static int alarm_opened;
static DEFINE_SPINLOCK(alarm_slock);
static struct wake_lock alarm_wake_lock;
static struct wakeup_source alarm_wake_lock;
static DECLARE_WAIT_QUEUE_HEAD(alarm_wait_queue);
static uint32_t alarm_pending;
static uint32_t alarm_enabled;
Expand Down Expand Up @@ -154,7 +143,7 @@ static long alarm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
if (alarm_pending) {
alarm_pending &= ~alarm_type_mask;
if (!alarm_pending && !wait_pending)
wake_unlock(&alarm_wake_lock);
__pm_relax(&alarm_wake_lock);
}
alarm_enabled &= ~alarm_type_mask;
spin_unlock_irqrestore(&alarm_slock, flags);
Expand Down Expand Up @@ -192,7 +181,7 @@ static long alarm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
spin_lock_irqsave(&alarm_slock, flags);
pr_alarm(IO, "alarm wait\n");
if (!alarm_pending && wait_pending) {
wake_unlock(&alarm_wake_lock);
__pm_relax(&alarm_wake_lock);
wait_pending = 0;
}
spin_unlock_irqrestore(&alarm_slock, flags);
Expand Down Expand Up @@ -284,7 +273,7 @@ static int alarm_release(struct inode *inode, struct file *file)
if (alarm_pending)
pr_alarm(INFO, "alarm_release: clear "
"pending alarms %x\n", alarm_pending);
wake_unlock(&alarm_wake_lock);
__pm_relax(&alarm_wake_lock);
wait_pending = 0;
alarm_pending = 0;
}
Expand All @@ -302,7 +291,7 @@ static void devalarm_triggered(struct devalarm *alarm)
pr_alarm(INT, "devalarm_triggered type %d\n", alarm->type);
spin_lock_irqsave(&alarm_slock, flags);
if (alarm_enabled & alarm_type_mask) {
wake_lock_timeout(&alarm_wake_lock, 5 * HZ);
__pm_wakeup_event(&alarm_wake_lock, 5000); /* 5secs */
alarm_enabled &= ~alarm_type_mask;
alarm_pending |= alarm_type_mask;
wake_up(&alarm_wait_queue);
Expand Down Expand Up @@ -368,15 +357,14 @@ static int __init alarm_dev_init(void)
alarms[i].u.hrt.function = devalarm_hrthandler;
}

wake_lock_init(&alarm_wake_lock, WAKE_LOCK_SUSPEND, "alarm");

wakeup_source_init(&alarm_wake_lock, "alarm");
return 0;
}

static void __exit alarm_dev_exit(void)
{
misc_deregister(&alarm_device);
wake_lock_destroy(&alarm_wake_lock);
wakeup_source_trash(&alarm_wake_lock);
}

module_init(alarm_dev_init);
Expand Down

0 comments on commit 12a057f

Please sign in to comment.