From patchwork Tue Oct 13 22:09:33 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Fertser X-Patchwork-Id: 35906 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-yx0-f164.google.com (mail-yx0-f164.google.com [209.85.210.164]) by ozlabs.org (Postfix) with ESMTP id 1D618B7B74 for ; Wed, 14 Oct 2009 09:09:49 +1100 (EST) Received: by yxe36 with SMTP id 36so13254420yxe.11 for ; Tue, 13 Oct 2009 15:09:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:received:received:x-sender:x-apparently-to :received:received:received:received-spf:received:dkim-signature :domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references:reply-to:sender :precedence:x-google-loop:mailing-list:list-id:list-post:list-help :list-unsubscribe:x-beenthere-env:x-beenthere; bh=ouL069/qJYJhhaxFtmYz1K1DTvChGOGu1UCujI1XpsU=; b=WhHPXnbp1ZjKXraW08v8Qb7dw0G2gxjkHvYFl8mBp3n+1ZQyDKEhU4vFOQKZw8RZmh sNUaJa/UEhbontPaNL5l9fJXeFzsueX8bcaPn26Bj8q7FS2l3QsPSJsab0mqdwWecmlI FbelSVsIurR9II0mRzuT69aWH2+AXYtVVAHv8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlegroups.com; s=beta; h=x-sender:x-apparently-to:received-spf:authentication-results :dkim-signature:domainkey-signature:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references:reply-to:sender :precedence:x-google-loop:mailing-list:list-id:list-post:list-help :list-unsubscribe:x-beenthere-env:x-beenthere; b=sX+0TaHydLHIzUPzmhE9ij9RiV8qualcQuzRvOuqYNtQvBkjY94jurzyiXt6ckBVhl HKiIgalEtVSXNDMbN/Vr4948Noju5RvVmTDVsTwOAt7zRP2jpZEM7+SYC6HWHw2q3+G2 M+K2i3dsjbPvFyZA0ypQn9jGo8ecbiVBfZrl0= Received: by 10.90.190.16 with SMTP id n16mr422047agf.39.1255471787040; Tue, 13 Oct 2009 15:09:47 -0700 (PDT) Received: by 10.177.128.16 with SMTP id f16gr2957yqn.0; Tue, 13 Oct 2009 15:09:47 -0700 (PDT) X-Sender: fercerpav@gmail.com X-Apparently-To: rtc-linux@googlegroups.com Received: by 10.204.154.88 with SMTP id n24mr124404bkw.12.1255471786414; Tue, 13 Oct 2009 15:09:46 -0700 (PDT) Received: by 10.204.154.88 with SMTP id n24mr124403bkw.12.1255471786387; Tue, 13 Oct 2009 15:09:46 -0700 (PDT) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.156]) by gmr-mx.google.com with ESMTP id 15si328011fxm.1.2009.10.13.15.09.45; Tue, 13 Oct 2009 15:09:45 -0700 (PDT) Received-SPF: pass (google.com: domain of fercerpav@gmail.com designates 72.14.220.156 as permitted sender) client-ip=72.14.220.156; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of fercerpav@gmail.com designates 72.14.220.156 as permitted sender) smtp.mail=fercerpav@gmail.com; dkim=pass (test mode) header.i=@gmail.com Received: by fg-out-1718.google.com with SMTP id e21so59513fga.0 for ; Tue, 13 Oct 2009 15:09:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=6KCZvEiKPLPZu/8bUMWRv93WhyAt57nKjUBSXvSjTSo=; b=dFP3XKljjfQQVHPy5PCxgUgX2ibtlX09b7+fI7FTRyD69kOwizBeDzCvXqwfyQUYZn TGmuBzW7uB6KF4/lEfStrusQ/euHVJ5+sBCfpyrk+zQlMYWmKBlUux/ZTrerAefyuJIt o+uCpHahDabgOzWuXdYyZfBqVRB8PihnxRjxI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=Cod5ujJ0m/FRhHS/IDRoJF7Dh9Yr3hPrC2aZr4tpSzX9wzQzh2TGY0pnwKOXBxWj+M JUS8CdSrnyRgFzVOapd84on98AWpW8/wZTOtedV+JFn5giKFYGenmEnECTLCJwDsUqov MJMB/TXCHjGjnPxmdTKkvtGZHicBsgxD4oabQ= Received: by 10.87.66.2 with SMTP id t2mr6949345fgk.62.1255471785269; Tue, 13 Oct 2009 15:09:45 -0700 (PDT) Received: from localhost (ppp83-237-105-29.pppoe.mtu-net.ru [83.237.105.29]) by mx.google.com with ESMTPS id e3sm144602fga.24.2009.10.13.15.09.44 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 13 Oct 2009 15:09:44 -0700 (PDT) From: Paul Fertser To: Alessandro Zummo Cc: rtc-linux@googlegroups.com, Nelson Castillo , Werner Almesberger , Paul Fertser Subject: [rtc-linux] [PATCH 3/3] rtc: pcf50633: manage RTC alarm "pending" flag Date: Wed, 14 Oct 2009 02:09:33 +0400 Message-Id: <1255471773-29156-3-git-send-email-fercerpav@gmail.com> X-Mailer: git-send-email 1.6.0.6 In-Reply-To: <1255471773-29156-2-git-send-email-fercerpav@gmail.com> References: <1255471773-29156-1-git-send-email-fercerpav@gmail.com> <1255471773-29156-2-git-send-email-fercerpav@gmail.com> Reply-To: rtc-linux@googlegroups.com Sender: rtc-linux@googlegroups.com Precedence: bulk X-Google-Loop: groups Mailing-List: list rtc-linux@googlegroups.com; contact rtc-linux+owner@googlegroups.com List-Id: List-Post: List-Help: List-Unsubscribe: , X-BeenThere-Env: rtc-linux@googlegroups.com X-BeenThere: rtc-linux@googlegroups.com From: Werner Almesberger This patch adds setting and clearing of the "pending" flag of the RTC alarm. The semantics follow the UEFI specification 2.2 available at http://www.uefi.org/specs/, i.e., the "pending" flag is cleared by disabling the alarm, but not by any other condition (such as the passing of time, a successful wakeup, or setting of a new alarm.) Signed-off-by: Werner Almesberger Signed-off-by: Paul Fertser --- drivers/rtc/rtc-pcf50633.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c index 33a10c4..8669815 100644 --- a/drivers/rtc/rtc-pcf50633.c +++ b/drivers/rtc/rtc-pcf50633.c @@ -58,6 +58,7 @@ struct pcf50633_time { struct pcf50633_rtc { int alarm_enabled; int second_enabled; + int alarm_pending; struct pcf50633 *pcf; struct rtc_device *rtc_dev; @@ -209,6 +210,7 @@ static int pcf50633_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) rtc = dev_get_drvdata(dev); alrm->enabled = rtc->alarm_enabled; + alrm->pending = rtc->alarm_pending; ret = pcf50633_read_block(rtc->pcf, PCF50633_REG_RTCSCA, PCF50633_TI_EXTENT, &pcf_tm.time[0]); @@ -244,6 +246,8 @@ static int pcf50633_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) /* Returns 0 on success */ ret = pcf50633_write_block(rtc->pcf, PCF50633_REG_RTCSCA, PCF50633_TI_EXTENT, &pcf_tm.time[0]); + if (!alrm->enabled) + rtc->alarm_pending = 0; if (!alarm_masked || alrm->enabled) pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_ALARM); @@ -268,6 +272,7 @@ static void pcf50633_rtc_irq(int irq, void *data) switch (irq) { case PCF50633_IRQ_ALARM: rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); + rtc->alarm_pending = 1; break; case PCF50633_IRQ_SECOND: rtc_update_irq(rtc->rtc_dev, 1, RTC_UF | RTC_IRQF);