From patchwork Tue May 3 09:54:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mylene Josserand X-Patchwork-Id: 617878 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-wm0-x238.google.com (mail-wm0-x238.google.com [IPv6:2a00:1450:400c:c09::238]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qzc3k1zh5z9sCj for ; Tue, 3 May 2016 19:55:14 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.b=gSD5f88G; dkim-atps=neutral Received: by mail-wm0-x238.google.com with SMTP id 4sf11216030wma.1 for ; Tue, 03 May 2016 02:55:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references:mime-version:content-transfer-encoding :x-original-sender:x-original-authentication-results:reply-to :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post :list-help:list-archive:list-subscribe:list-unsubscribe; bh=RzX24xeYD4g4bkPnqXcOTMwUkJWNjg34ELrnnapwTKw=; b=gSD5f88GcJJLiACI1zgBiGkPFRZc3WrG/96LVnrpHNxxOJQF5WLpPpzv4tADcO3KN3 yj2f1vDME3g5MhA4clGJBw0Z6DUg3rc4/5ipzOkTZ39J93TmQaqbRrkB6VCbrT+SQcR5 YEfOr08UnAQQ2oJIdLfbn8PJA9R6v9IZ1Z8mcrM0X5gHPfhKpfYnjY+Xs0z5OXiNsaYZ mlW0b/I5q3m47mZ1zUW363XtrvRVM552xeOENz0yCwI+qgY13pUZ/EOzpj6FZqvKto4V ThOWgBNyk+WV/kjJMQmeCddIQ8fu429eNqQBhVrRvmkgd7p1PAhQ0CfL4vZW+T3CXQxd lTFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references:mime-version :content-transfer-encoding:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=RzX24xeYD4g4bkPnqXcOTMwUkJWNjg34ELrnnapwTKw=; b=icZ0ZLR1EWOnsQPU1ZxOhVj1yEBa7Y8C3WWSV79QLyPjJMt54IbJpfTYIaGG45KQNb PnuYWRi8h0SF4pxdQHQT8w2mXr1XS+F0GnTEjSzr3yFVcGrRf6N2DvlS6BeJ/BmvSCG6 crtCLf1ciOLTCweFjS1Gn8gYvwJZhjOh3+XxYCgVz8BQmltn+Nnr7ibaXWY0iah94tBV IEO29VkRJXm8DF0PMSPdWsV7uIY4ioq+z7BJX43Pna91x6csn8twGT4dCkdsoPOMxd4y lqNS2IotH4AtvqhpVe6geu4nWQQk4zTB/qC6WJSRRljaT+d1k2itxrZme/mqGg+06HaV 3yhQ== Sender: rtc-linux@googlegroups.com X-Gm-Message-State: AOPr4FV8Sg3Rhg4T67YvShVA4cZMxpN7l9rOFHGacN+lZqVLqNcwoQcOo2aGKkVNsUzPyg== X-Received: by 10.25.211.196 with SMTP id k187mr26699lfg.14.1462269311870; Tue, 03 May 2016 02:55:11 -0700 (PDT) X-BeenThere: rtc-linux@googlegroups.com Received: by 10.25.167.138 with SMTP id q132ls36526lfe.21.gmail; Tue, 03 May 2016 02:55:11 -0700 (PDT) X-Received: by 10.112.198.230 with SMTP id jf6mr200562lbc.12.1462269311485; Tue, 03 May 2016 02:55:11 -0700 (PDT) Received: from mail.free-electrons.com (down.free-electrons.com. [37.187.137.238]) by gmr-mx.google.com with ESMTP id a124si125698wme.0.2016.05.03.02.55.11 for ; Tue, 03 May 2016 02:55:11 -0700 (PDT) Received-SPF: pass (google.com: domain of mylene.josserand@free-electrons.com designates 37.187.137.238 as permitted sender) client-ip=37.187.137.238; Received: by mail.free-electrons.com (Postfix, from userid 110) id E95E6EB9; Tue, 3 May 2016 11:55:10 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from dell-desktop.home (AMarseille-656-1-608-34.w86-210.abo.wanadoo.fr [86.210.13.34]) by mail.free-electrons.com (Postfix) with ESMTPSA id 7931A3EE; Tue, 3 May 2016 11:55:00 +0200 (CEST) From: =?UTF-8?q?Myl=C3=A8ne=20Josserand?= To: alexandre.belloni@free-electrons.com, rtc-linux@googlegroups.com Cc: Alessandro Zummo , linux-kernel@vger.kernel.org, mylene.josserand@free-electrons.com Subject: [rtc-linux] [PATCH V3 5/7] rtc: rv3029: fix alarm support Date: Tue, 3 May 2016 11:54:36 +0200 Message-Id: <7ae6fa71518f6df8eec00a5784b437a80436d0c1.1462268107.git.mylene.josserand@free-electrons.com> X-Mailer: git-send-email 2.8.0.rc3 In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Original-Sender: mylene.josserand@free-electrons.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of mylene.josserand@free-electrons.com designates 37.187.137.238 as permitted sender) smtp.mailfrom=mylene.josserand@free-electrons.com Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: rtc-linux@googlegroups.com X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , The RTC RV3029 handles different types of alarms : seconds, minutes, ... These alarms can be enabled or disabled individually using an AE_x bit which is the last bit (BIT(7)) on each alarm registers. To prepare the alarm IRQ support, the current code enables all the alarm types by setting each AE_x to 1. It also fixes others alarms issues : - month and weekday errors : it was performing -1 instead of +1. - wrong use of bit mask with bin2bcd Signed-off-by: Mylène Josserand --- drivers/rtc/rtc-rv3029c2.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/rtc/rtc-rv3029c2.c b/drivers/rtc/rtc-rv3029c2.c index cf8d465..88a0c18 100644 --- a/drivers/rtc/rtc-rv3029c2.c +++ b/drivers/rtc/rtc-rv3029c2.c @@ -76,6 +76,7 @@ #define RV3029_A_DW 0x14 #define RV3029_A_MO 0x15 #define RV3029_A_YR 0x16 +#define RV3029_A_AE_X BIT(7) #define RV3029_ALARM_SECTION_LEN 0x07 /* timer section */ @@ -436,14 +437,22 @@ static int rv3029_set_alarm(struct device *dev, struct rtc_wkalrm *alarm) dev_err(dev, "%s: reading SR failed\n", __func__); return -EIO; } - regs[RV3029_A_SC - RV3029_A_SC] = bin2bcd(tm->tm_sec & 0x7f); - regs[RV3029_A_MN - RV3029_A_SC] = bin2bcd(tm->tm_min & 0x7f); - regs[RV3029_A_HR - RV3029_A_SC] = bin2bcd(tm->tm_hour & 0x3f); - regs[RV3029_A_DT - RV3029_A_SC] = bin2bcd(tm->tm_mday & 0x3f); - regs[RV3029_A_MO - RV3029_A_SC] = bin2bcd((tm->tm_mon & 0x1f) - 1); - regs[RV3029_A_DW - RV3029_A_SC] = bin2bcd((tm->tm_wday & 7) - 1); - regs[RV3029_A_YR - RV3029_A_SC] = bin2bcd((tm->tm_year & 0x7f) - 100); + /* Activate all the alarms with AE_x bit */ + regs[RV3029_A_SC - RV3029_A_SC] = bin2bcd(tm->tm_sec) | RV3029_A_AE_X; + regs[RV3029_A_MN - RV3029_A_SC] = bin2bcd(tm->tm_min) | RV3029_A_AE_X; + regs[RV3029_A_HR - RV3029_A_SC] = (bin2bcd(tm->tm_hour) & 0x3f) + | RV3029_A_AE_X; + regs[RV3029_A_DT - RV3029_A_SC] = (bin2bcd(tm->tm_mday) & 0x3f) + | RV3029_A_AE_X; + regs[RV3029_A_MO - RV3029_A_SC] = (bin2bcd(tm->tm_mon + 1) & 0x1f) + | RV3029_A_AE_X; + regs[RV3029_A_DW - RV3029_A_SC] = (bin2bcd(tm->tm_wday + 1) & 0x7) + | RV3029_A_AE_X; + regs[RV3029_A_YR - RV3029_A_SC] = (bin2bcd(tm->tm_year - 100)) + | RV3029_A_AE_X; + + /* Write the alarm */ ret = rv3029_write_regs(dev, RV3029_A_SC, regs, RV3029_ALARM_SECTION_LEN); if (ret < 0)