From patchwork Mon Feb 21 23:55:36 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 83892 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-vx0-f184.google.com (mail-vx0-f184.google.com [209.85.220.184]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 4DBD3B716D for ; Tue, 22 Feb 2011 10:55:59 +1100 (EST) Received: by vxa37 with SMTP id 37sf1276019vxa.11 for ; Mon, 21 Feb 2011 15:55:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=domainkey-signature:mime-version:x-beenthere:received-spf:from:to :cc:subject:date:message-id:x-mailer:in-reply-to:references :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=9021JmyaQJ9Qxa8M+ZBRAZ/djUqVAv7Sa8xPjUfONvI=; b=X+tu8t6pGfmSl81mXLQsVyrybSv3fEGYj8L4en055yVz/lnBbu+W3jcj9Sm1/PtflU aiv8G6qdd8nz0HhnQEgGz8Gi8FF6HUG4ZkG+CMr+jF/BWc0U+gxJP1wKdjD55kR/21J2 6lDS9nNwWSQ8laTZHfYrV+q3MKZ6zsppMx39g= 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:in-reply-to:references: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=rtNrLVOimIoBTWyrI9p44Xc0jxA/dpDPqPxeuS5VTZ0CLM1H1r5IhM/0e2glc7g+uE VoQLYbLLZNViGZzokPAqTbQ04hsfYsCTA6W+bMqpX/xI1asZV7RCkf48a10mNcdlFaUy cOmXKEmrw+AcWc293njAqXWnCn1i3C+ENCoOM= Received: by 10.220.176.140 with SMTP id be12mr169458vcb.20.1298332555543; Mon, 21 Feb 2011 15:55:55 -0800 (PST) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.220.109.137 with SMTP id j9ls1691601vcp.0.p; Mon, 21 Feb 2011 15:55:54 -0800 (PST) Received: by 10.220.193.133 with SMTP id du5mr514335vcb.19.1298332554646; Mon, 21 Feb 2011 15:55:54 -0800 (PST) Received: by 10.220.193.133 with SMTP id du5mr514334vcb.19.1298332554610; Mon, 21 Feb 2011 15:55:54 -0800 (PST) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by gmr-mx.google.com with ESMTPS id m31si897491vcr.9.2011.02.21.15.55.54 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 21 Feb 2011 15:55:54 -0800 (PST) Received-SPF: pass (google.com: domain of jstultz@us.ibm.com designates 32.97.182.142 as permitted sender) client-ip=32.97.182.142; Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e2.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p1LNbj1s002659 for ; Mon, 21 Feb 2011 18:37:45 -0500 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p1LNtp3w321330 for ; Mon, 21 Feb 2011 18:55:52 -0500 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p1LNtpKi027523 for ; Mon, 21 Feb 2011 16:55:51 -0700 Received: from kernel.beaverton.ibm.com (kernel.beaverton.ibm.com [9.47.67.96]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p1LNtp8e027517; Mon, 21 Feb 2011 16:55:51 -0700 Received: by kernel.beaverton.ibm.com (Postfix, from userid 1056) id CF3EA1E7516; Mon, 21 Feb 2011 15:55:50 -0800 (PST) From: John Stultz To: LKML Cc: Marcelo Roberto Jimenez , Thomas Gleixner , Alessandro Zummo , rtc-linux@googlegroups.com, John Stultz Subject: [rtc-linux] [PATCH 08/10] RTC: Fix the cross interrupt issue on rtc-test. Date: Mon, 21 Feb 2011 15:55:36 -0800 Message-Id: <1298332538-31216-9-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.7.3.2.146.gca209 In-Reply-To: <1298332538-31216-1-git-send-email-john.stultz@linaro.org> References: <1298332538-31216-1-git-send-email-john.stultz@linaro.org> X-Original-Sender: john.stultz@linaro.org X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jstultz@us.ibm.com designates 32.97.182.142 as permitted sender) smtp.mail=jstultz@us.ibm.com 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: , From: Marcelo Roberto Jimenez The rtc-test driver is meant to provide a test/debug code for the RTC subsystem. The rtc-test driver simulates specific interrupts by echoing to the sys interface. Those were the update, alarm and periodic interrupts. As a side effect of the new implementation, any interrupt generated in the rtc-test driver would trigger the same code path in the generic code, and thus the distinction among interrupts gets lost. This patch preserves the previous behaviour of the rtc-test driver, where e.g. an update interrupt would not trigger an alarm or periodic interrupt, and vice-versa. In real world RTC drivers, this is not an issue, but in the rtc-test driver it may be interesting to distinguish these interrupts for testing purposes. CC: Thomas Gleixner CC: Alessandro Zummo CC: Marcelo Roberto Jimenez CC: rtc-linux@googlegroups.com Signed-off-by: Marcelo Roberto Jimenez Signed-off-by: John Stultz --- drivers/rtc/rtc-test.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/rtc/rtc-test.c b/drivers/rtc/rtc-test.c index 61ad5ab..34d5631 100644 --- a/drivers/rtc/rtc-test.c +++ b/drivers/rtc/rtc-test.c @@ -71,11 +71,16 @@ static ssize_t test_irq_store(struct device *dev, struct rtc_device *rtc = platform_get_drvdata(plat_dev); retval = count; - if (strncmp(buf, "tick", 4) == 0) + if (strncmp(buf, "tick", 4) == 0 && rtc->pie_enabled) rtc_update_irq(rtc, 1, RTC_PF | RTC_IRQF); - else if (strncmp(buf, "alarm", 5) == 0) - rtc_update_irq(rtc, 1, RTC_AF | RTC_IRQF); - else if (strncmp(buf, "update", 6) == 0) + else if (strncmp(buf, "alarm", 5) == 0) { + struct rtc_wkalrm alrm; + int err = rtc_read_alarm(rtc, &alrm); + + if (!err && alrm.enabled) + rtc_update_irq(rtc, 1, RTC_AF | RTC_IRQF); + + } else if (strncmp(buf, "update", 6) == 0 && rtc->uie_rtctimer.enabled) rtc_update_irq(rtc, 1, RTC_UF | RTC_IRQF); else retval = -EINVAL;