From patchwork Sat Apr 21 00:23:50 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 8001 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 62B3523E13 for ; Sat, 21 Apr 2012 00:24:03 +0000 (UTC) Received: from mail-iy0-f180.google.com (mail-iy0-f180.google.com [209.85.210.180]) by fiordland.canonical.com (Postfix) with ESMTP id 0A26CA182C0 for ; Sat, 21 Apr 2012 00:24:02 +0000 (UTC) Received: by iage36 with SMTP id e36so19291903iag.11 for ; Fri, 20 Apr 2012 17:24:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:mime-version:content-type :content-transfer-encoding:x-content-scanned:x-cbid :x-gm-message-state; bh=1hcth5+xDQCYoCucwLp+G6NWPMcN/L+Xx84qFiW93v8=; b=ZjTL75gSXMVQaUkmAuQYYUe1DqMNqyCUppw9uB96PlOREqmZ4ho3pr9zHYrm1G6xad 5POfCWr4rz8/3WnzQUUpBeSPpMNUXClOzvr6Mp57jjegK7j66bwehz6/CRovOYOv2bSO aIWVR+CyzuzBxRtz0dgxz2uLzx+zD+iXshJSQ7jEI9mbuvFNvjzBc/NbT4Emmpz7FHIs e4rRmNRdUTbHtDYk0rX9BM3ehquFdD8QDHXjO/FGVfgR2ffvNU0CnTIjI7b+5cgCdNbD SOiSu1pA8L2UO1lRtp1XexSi9AgwXSqP27uxFyTxZrib2vu0EJdoJd8hGzbX958CF+5H eqlg== Received: by 10.50.41.201 with SMTP id h9mr592081igl.19.1334967842324; Fri, 20 Apr 2012 17:24:02 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.231.137.198 with SMTP id x6csp67357ibt; Fri, 20 Apr 2012 17:24:01 -0700 (PDT) Received: by 10.182.179.68 with SMTP id de4mr11852556obc.13.1334967840759; Fri, 20 Apr 2012 17:24:00 -0700 (PDT) Received: from e37.co.us.ibm.com (e37.co.us.ibm.com. [32.97.110.158]) by mx.google.com with ESMTPS id k3si4503631obl.71.2012.04.20.17.24.00 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 20 Apr 2012 17:24:00 -0700 (PDT) Received-SPF: pass (google.com: domain of jstultz@us.ibm.com designates 32.97.110.158 as permitted sender) client-ip=32.97.110.158; Authentication-Results: mx.google.com; spf=pass (google.com: domain of jstultz@us.ibm.com designates 32.97.110.158 as permitted sender) smtp.mail=jstultz@us.ibm.com Received: from /spool/local by e37.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 20 Apr 2012 18:24:00 -0600 Received: from d03dlp03.boulder.ibm.com (9.17.202.179) by e37.co.us.ibm.com (192.168.1.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 20 Apr 2012 18:23:58 -0600 Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 1106D19D804F; Fri, 20 Apr 2012 18:23:48 -0600 (MDT) Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q3L0NveX213380; Fri, 20 Apr 2012 18:23:57 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q3L0Nugj020877; Fri, 20 Apr 2012 18:23:56 -0600 Received: from kernel.beaverton.ibm.com (kernel.beaverton.ibm.com [9.47.67.96]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q3L0Nugx020856; Fri, 20 Apr 2012 18:23:56 -0600 Received: by kernel.beaverton.ibm.com (Postfix, from userid 1056) id 679CFC05C3; Fri, 20 Apr 2012 17:23:55 -0700 (PDT) From: John Stultz To: Linux Kernel Cc: John Stultz , Colin Cross , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Greg KH , Android Kernel Team Subject: [PATCH] [RFC] android-alarm: Switch from wakelocks to wakeup sources Date: Fri, 20 Apr 2012 17:23:50 -0700 Message-Id: <1334967830-26624-1-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.7.3.2.146.gca209 MIME-Version: 1.0 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12042100-7408-0000-0000-0000046320EA X-Gm-Message-State: ALoCoQlX0KRcOZ65AfotZtl0Zk1rzzEbnzd63xm9/HgEXvtTYxKD19Ln5ELgAuMbxFk8iGieKTaV In their current AOSP tree, the Android in-kernel wakelock infrastructure has been reimplemented in terms of wakeup sources: http://git.linaro.org/gitweb?p=people/jstultz/android.git;a=commitdiff;h=e9911f4efdc55af703b8b3bb8c839e6f5dd173bb The Android alarm driver currently has stubbed out calls to wakelock functionality. So this patch simply converts the stubbed out wakelock calls to wakeup source calls, and removes the empty wakelock macros This is something I'd like to propose for staging, but wanted to get some input from Arve, Colin or other member of the Android team first. Thoughts or objections? CC: Colin Cross CC: Arve Hjønnevåg CC: Greg KH CC: Android Kernel Team Signed-off-by: John Stultz --- drivers/staging/android/alarm-dev.c | 26 +++++++------------------- 1 files changed, 7 insertions(+), 19 deletions(-) diff --git a/drivers/staging/android/alarm-dev.c b/drivers/staging/android/alarm-dev.c index 04075b3..53ce6ec 100644 --- a/drivers/staging/android/alarm-dev.c +++ b/drivers/staging/android/alarm-dev.c @@ -25,17 +25,6 @@ #include #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) @@ -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; @@ -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); @@ -192,7 +181,7 @@ from_old_alarm_set: 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); @@ -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; } @@ -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); @@ -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);