From patchwork Fri Oct 15 18:51:11 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 67993 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-wy0-f184.google.com (mail-wy0-f184.google.com [74.125.82.184]) by ozlabs.org (Postfix) with ESMTP id A227BB70E6 for ; Sat, 16 Oct 2010 05:52:03 +1100 (EST) Received: by wyg36 with SMTP id 36sf758231wyg.11 for ; Fri, 15 Oct 2010 11:52:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:received:mime-version:x-beenthere:received :received:received:received:received-spf:received:from:to:cc:subject :date:message-id:x-mailer:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:list-post:list-help:list-archive:sender:list-subscribe :list-unsubscribe:content-type; bh=APJA6N2HRYa3CNzLWKzbLp0DVs9xqCt+9OUlhz7eqvg=; b=S980u6Q6NteBKuU+Fz/8029a5PRRKbNu1kCHrv/9QU5BvDAc+adHa23f4bCxTwX7K2 hNHXGEjdtK5Ggv2FT56xJo9Wq9ff2GnhAZ7gTPTrsMtw1KzDSBTddx/OW8HGAbdGzOBA 2x6HJE5zkCzdyfghV1nu+nkjS57Ei4J2YLygI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlegroups.com; s=beta; h=mime-version:x-beenthere:received-spf:from:to:cc:subject:date :message-id:x-mailer:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:list-post:list-help:list-archive:sender:list-subscribe :list-unsubscribe:content-type; b=2VYejlRKpX7OU1xSRwg0wk7daJyA/60uYSXFcmLl1Lk5DDGh++lEn4kLZGtDB6orH+ g66oNafOINkm65gvfzrHdPSUqiRhsFTer0ek5/DRBo0+vogPZraiGhpCN6EfAdNN1f96 Cz0Au9J2Ini6HaoB2MbKrdlwAIE5/2INa9CYw= Received: by 10.216.47.201 with SMTP id t51mr212735web.16.1287168717289; Fri, 15 Oct 2010 11:51:57 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.227.198.213 with SMTP id ep21ls343404wbb.2.p; Fri, 15 Oct 2010 11:51:56 -0700 (PDT) Received: by 10.227.3.21 with SMTP id 21mr63631wbl.1.1287168716280; Fri, 15 Oct 2010 11:51:56 -0700 (PDT) Received: by 10.227.3.21 with SMTP id 21mr63630wbl.1.1287168716240; Fri, 15 Oct 2010 11:51:56 -0700 (PDT) Received: from marvin.crapouillou.net (marvin.crapouillou.net [82.233.222.246]) by gmr-mx.google.com with ESMTP id w33si3271076wbd.2.2010.10.15.11.51.56; Fri, 15 Oct 2010 11:51:56 -0700 (PDT) Received-SPF: pass (google.com: domain of paul@crapouillou.net designates 82.233.222.246 as permitted sender) client-ip=82.233.222.246; Received: from [89.204.137.255] (helo=localhost.localdomain) by marvin.crapouillou.net with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1P6pNP-0005jR-37; Fri, 15 Oct 2010 20:51:36 +0200 From: Paul Cercueil To: a.zummo@towertech.it Cc: gortmaker@yahoo.com, lars@metafoo.de, mcuos.com@gmail.com, rtc-linux@googlegroups.com, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [rtc-linux] [PATCH] Add the possibility to use the "alarm" function of the jz4740 RTC. Interrupts will now be raised when the "alarm" time is reached. Date: Fri, 15 Oct 2010 20:51:11 +0200 Message-Id: <1287168671-5378-1-git-send-email-paul@crapouillou.net> X-Mailer: git-send-email 1.7.0.4 X-Original-Sender: paul@crapouillou.net X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of paul@crapouillou.net designates 82.233.222.246 as permitted sender) smtp.mail=paul@crapouillou.net Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , Signed-off-by: Paul Cercueil --- drivers/rtc/rtc-jz4740.c | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 5 deletions(-) diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c index 2619d57..3ce8a42 100644 --- a/drivers/rtc/rtc-jz4740.c +++ b/drivers/rtc/rtc-jz4740.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2009-2010, Lars-Peter Clausen + * Copyright (C) 2010, Paul Cercueil * JZ4740 SoC RTC driver * * This program is free software; you can redistribute it and/or modify it @@ -161,7 +162,8 @@ static int jz4740_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_SEC_ALARM, secs); if (!ret) - ret = jz4740_rtc_ctrl_set_bits(rtc, JZ_RTC_CTRL_AE, alrm->enabled); + ret = jz4740_rtc_ctrl_set_bits(rtc, + JZ_RTC_CTRL_AE | JZ_RTC_CTRL_AF_IRQ, alrm->enabled); return ret; } @@ -258,6 +260,8 @@ static int __devinit jz4740_rtc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, rtc); + device_init_wakeup(&pdev->dev, 1); + rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, &jz4740_rtc_ops, THIS_MODULE); if (IS_ERR(rtc->rtc)) { @@ -318,12 +322,43 @@ static int __devexit jz4740_rtc_remove(struct platform_device *pdev) return 0; } + +#ifdef CONFIG_PM +static int jz4740_rtc_suspend(struct device *dev) +{ + struct jz4740_rtc *rtc = dev_get_drvdata(dev); + + if (device_may_wakeup(dev)) + enable_irq_wake(rtc->irq); + return 0; +} + +static int jz4740_rtc_resume(struct device *dev) +{ + struct jz4740_rtc *rtc = dev_get_drvdata(dev); + + if (device_may_wakeup(dev)) + disable_irq_wake(rtc->irq); + return 0; +} + +static const struct dev_pm_ops jz4740_pm_ops = { + .suspend = jz4740_rtc_suspend, + .resume = jz4740_rtc_resume, +}; +#define JZ4740_RTC_PM_OPS (&jz4740_pm_ops) + +#else +#define JZ4740_RTC_PM_OPS NULL +#endif /* CONFIG_PM */ + struct platform_driver jz4740_rtc_driver = { - .probe = jz4740_rtc_probe, - .remove = __devexit_p(jz4740_rtc_remove), - .driver = { - .name = "jz4740-rtc", + .probe = jz4740_rtc_probe, + .remove = __devexit_p(jz4740_rtc_remove), + .driver = { + .name = "jz4740-rtc", .owner = THIS_MODULE, + .pm = JZ4740_RTC_PM_OPS, }, };