From patchwork Fri Mar 2 09:36:39 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatolij Gustschin X-Patchwork-Id: 144168 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-wi0-f184.google.com (mail-wi0-f184.google.com [209.85.212.184]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 14B56100801 for ; Fri, 2 Mar 2012 20:36:45 +1100 (EST) Received: by wibhi18 with SMTP id hi18sf1570673wib.11 for ; Fri, 02 Mar 2012 01:36:42 -0800 (PST) Received-SPF: pass (google.com: domain of rtc-linux+bncCAAQqanC-gQaBGMe1Fc@googlegroups.com designates 10.216.136.74 as permitted sender) client-ip=10.216.136.74; Authentication-Results: mr.google.com; spf=pass (google.com: domain of rtc-linux+bncCAAQqanC-gQaBGMe1Fc@googlegroups.com designates 10.216.136.74 as permitted sender) smtp.mail=rtc-linux+bncCAAQqanC-gQaBGMe1Fc@googlegroups.com; dkim=pass header.i=rtc-linux+bncCAAQqanC-gQaBGMe1Fc@googlegroups.com Received: from mr.google.com ([10.216.136.74]) by 10.216.136.74 with SMTP id v52mr383456wei.12.1330681002148 (num_hops = 1); Fri, 02 Mar 2012 01:36:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=mime-version:x-beenthere:received-spf:x-auth-info:from:to:cc :subject:date:message-id:x-mailer:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=5yC6NxGd2ni5iSEfRUHwFnL6Iel2yXmp6vYB1pvB5rI=; b=BHuVlK9OtQBpTX30MqWkjxIZv05lZVUkjvqnTqbNwyo4+pLslcKdlhM3KSf7b7b8IO 7VnSRLRBBvoTK7ZkEmJ0F5S3NPST+KObzyAx2l6i2A6XuqISjlcPnRx6PxQqHhO0ZiSc M+DpdYCQtv9AXFUTxsqAoaLvGr0OCXm977TMs= Received: by 10.216.136.74 with SMTP id v52mr101704wei.12.1330681001325; Fri, 02 Mar 2012 01:36:41 -0800 (PST) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.14.37.72 with SMTP id x48ls1261372eea.6.gmail; Fri, 02 Mar 2012 01:36:40 -0800 (PST) Received: by 10.14.122.69 with SMTP id s45mr3837452eeh.7.1330681000651; Fri, 02 Mar 2012 01:36:40 -0800 (PST) Received: by 10.14.122.69 with SMTP id s45mr3837451eeh.7.1330681000631; Fri, 02 Mar 2012 01:36:40 -0800 (PST) Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.10]) by gmr-mx.google.com with ESMTPS id s9si820889eei.3.2012.03.02.01.36.40 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 02 Mar 2012 01:36:40 -0800 (PST) Received-SPF: neutral (google.com: 212.18.0.10 is neither permitted nor denied by best guess record for domain of agust@denx.de) client-ip=212.18.0.10; Received: from frontend1.mail.m-online.net (frontend1.mail.intern.m-online.net [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3TzllC3HNsz3hhfL; Fri, 2 Mar 2012 10:36:39 +0100 (CET) X-Auth-Info: KLpYdyA3E+bGmbX6rv6xWFR4UnhL2JKzu0Dd/HOUN20= Received: from localhost (p4FC46C39.dip.t-dialin.net [79.196.108.57]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA id 3TzllC2zW6z4KK5n; Fri, 2 Mar 2012 10:36:39 +0100 (CET) From: Anatolij Gustschin To: rtc-linux@googlegroups.com Cc: Andreas Dumberger , Alessandro Zummo Subject: [rtc-linux] [PATCH] drivers/rtc/rtc-r9701.c: reset registers if invalid values are detected Date: Fri, 2 Mar 2012 10:36:39 +0100 Message-Id: <1330680999-4434-1-git-send-email-agust@denx.de> X-Mailer: git-send-email 1.7.1 X-Original-Sender: agust@denx.de X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.10 is neither permitted nor denied by best guess record for domain of agust@denx.de) smtp.mail=agust@denx.de Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , From: Andreas Dumberger hwclock refuses to set date/time if RTC registers contain invalid valies. Check the date/time register values at probe time and pre- initialize them to make hwclock happy. Signed-off-by: Andreas Dumberger Signed-off-by: Anatolij Gustschin Cc: Alessandro Zummo --- drivers/rtc/rtc-r9701.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/drivers/rtc/rtc-r9701.c b/drivers/rtc/rtc-r9701.c index 2853c2a..3b911b3 100644 --- a/drivers/rtc/rtc-r9701.c +++ b/drivers/rtc/rtc-r9701.c @@ -122,6 +122,7 @@ static const struct rtc_class_ops r9701_rtc_ops = { static int __devinit r9701_probe(struct spi_device *spi) { struct rtc_device *rtc; + struct rtc_time dt; unsigned char tmp; int res; @@ -132,6 +133,27 @@ static int __devinit r9701_probe(struct spi_device *spi) return -ENODEV; } + /* + * The device seems to be present. Now check if the registers + * contain invalid values. If so, try to write a default date: + * 2000/1/1 00:00:00 + */ + r9701_get_datetime(&spi->dev, &dt); + if (rtc_valid_tm(&dt)) { + dev_info(&spi->dev, "trying to repair invalid date/time\n"); + dt.tm_sec = 0; + dt.tm_min = 0; + dt.tm_hour = 0; + dt.tm_mday = 1; + dt.tm_mon = 0; + dt.tm_year = 100; + + if (r9701_set_datetime(&spi->dev, &dt)) { + dev_err(&spi->dev, "cannot repair RTC register\n"); + return -ENODEV; + } + } + rtc = rtc_device_register("r9701", &spi->dev, &r9701_rtc_ops, THIS_MODULE); if (IS_ERR(rtc))