From patchwork Fri Sep 23 22:44:21 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Anders X-Patchwork-Id: 116192 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-yx0-f184.google.com (mail-yx0-f184.google.com [209.85.213.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 E8D11B6F80 for ; Sat, 24 Sep 2011 08:44:26 +1000 (EST) Received: by yxl11 with SMTP id 11sf4348102yxl.11 for ; Fri, 23 Sep 2011 15:44:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=x-beenthere:received-spf:x-yahoo-newman-property:x-yahoo-newman-id :x-ymail-osg:x-mailer:message-id:date:from:subject:to:cc :mime-version: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=D/0bjQg3FgiNwDCF2XrqTJuTMD+NVjU52yQ3zzSobz8=; b=egCYsPDlwqPgS77uP9n7+Xbrkj9KBEzOrnjrDV6f4+c7Q9hOolhKS+xKP4Wfx5dQA5 X6hLSuw5MWj2O9TQsFgv3ROBfgARf2JR2v96O31Plzry/iLy/M3Tn9AlVBbIJ7gH3of8 Tk6YYt0kpm2NVrQXXhDULgOWvObwZlJqsLYTs= Received: by 10.146.62.28 with SMTP id k28mr804369yaa.29.1316817862715; Fri, 23 Sep 2011 15:44:22 -0700 (PDT) X-BeenThere: rtc-linux@googlegroups.com Received: by 10.231.68.202 with SMTP id w10ls172613ibi.7.gmail; Fri, 23 Sep 2011 15:44:22 -0700 (PDT) Received: by 10.42.144.71 with SMTP id a7mr1785928icv.25.1316817862125; Fri, 23 Sep 2011 15:44:22 -0700 (PDT) Received: by 10.42.144.71 with SMTP id a7mr1785926icv.25.1316817862048; Fri, 23 Sep 2011 15:44:22 -0700 (PDT) Received: from nm27-vm1.bullet.mail.ne1.yahoo.com (nm27-vm1.bullet.mail.ne1.yahoo.com. [98.138.90.59]) by gmr-mx.google.com with SMTP id m4si2293885ict.6.2011.09.23.15.44.21; Fri, 23 Sep 2011 15:44:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of dave123rad@yahoo.com designates 98.138.90.59 as permitted sender) client-ip=98.138.90.59; Received: from [98.138.90.56] by nm27.bullet.mail.ne1.yahoo.com with NNFMP; 23 Sep 2011 22:44:21 -0000 Received: from [98.138.87.3] by tm9.bullet.mail.ne1.yahoo.com with NNFMP; 23 Sep 2011 22:44:21 -0000 Received: from [127.0.0.1] by omp1003.mail.ne1.yahoo.com with NNFMP; 23 Sep 2011 22:44:21 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 505155.83607.bm@omp1003.mail.ne1.yahoo.com Received: (qmail 84519 invoked by uid 60001); 23 Sep 2011 22:44:21 -0000 X-YMail-OSG: 73PweUcVM1mLAJD4DIQY6GAMai2Qtrs6SWgsUSfyJ7U3km6 kOq9DFrMJGyOJm900UCbMKM5h_.fBLA16aGqbaI3hYsNnOaxAZzFFcq4lAjf ANrRG8sS7H_7BHxkMnfrJhVps6uDt_D5q.gojCOND2riRZG6o86F0SHEb4fc cAgdxcsK7BnwLzVsgVXs67lzzlRCp3o2vBEPSDuHvI13Yv_2Cr_TybAx5zYO 1yykGm4OhU3MDK2OiH_WhqZe4m1voXW.aa.LvRi5RUEj49.tr7ZQ5WCZboZo SjMv61RSwEsLjU6SwVklHHpOkgjOgSpVEKX3vZgv.DMse9U6TcVWqc1XZ.Cr LxGq3HGcFruP2X5UU9aR2AKZEDS.Ckft5tLLxxt1gkIg- Received: from [192.91.66.186] by web120012.mail.ne1.yahoo.com via HTTP; Fri, 23 Sep 2011 15:44:21 PDT X-Mailer: YahooMailClassic/14.0.5 YahooMailWebService/0.8.114.317681 Message-ID: <1316817861.58485.YahooMailClassic@web120012.mail.ne1.yahoo.com> Date: Fri, 23 Sep 2011 15:44:21 -0700 (PDT) From: David Anders Subject: [rtc-linux] [PATCH] rtc: add initial support for mcp7941x parts To: rtc-linux@googlegroups.com Cc: danders@tincantools.com, a.zummo@towertech.it, w.sang@pengutronix.de MIME-Version: 1.0 X-Original-Sender: dave123rad@yahoo.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of dave123rad@yahoo.com designates 98.138.90.59 as permitted sender) smtp.mail=dave123rad@yahoo.com; dkim=pass (test mode) header.i=@yahoo.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-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , From 691dc915a8de8cb52c5d3e5a4e27c724d393f2d4 Mon Sep 17 00:00:00 2001 From: David Anders Date: Fri, 23 Sep 2011 17:32:47 -0500 Subject: [PATCH] rtc: add initial support for mcp7941x parts this patch adds initial support for the microchip mcp7941x series of real time clocks. the mcp7941x series is generally compatible with the ds1307 and ds1337 rtc devices from dallas semiconductor. minor differences include a backup battery enable bit, and the polarity of the oscillator enable bit. Signed-off-by: David Anders --- drivers/rtc/rtc-ds1307.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index b2005b4..52a8c8c 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -35,6 +35,7 @@ enum ds_type { ds_3231, m41t00, rx_8025, + mcp7941x, // rs5c372 too? different address... }; @@ -42,6 +43,7 @@ enum ds_type { /* RTC registers don't differ much, except for the century flag */ #define DS1307_REG_SECS 0x00 /* 00-59 */ # define DS1307_BIT_CH 0x80 +# define MCP7941X_BIT_ST 0x80 # define DS1340_BIT_nEOSC 0x80 #define DS1307_REG_MIN 0x01 /* 00-59 */ #define DS1307_REG_HOUR 0x02 /* 00-23, or 1-12{am,pm} */ @@ -50,6 +52,7 @@ enum ds_type { # define DS1340_BIT_CENTURY_EN 0x80 /* in REG_HOUR */ # define DS1340_BIT_CENTURY 0x40 /* in REG_HOUR */ #define DS1307_REG_WDAY 0x03 /* 01-07 */ +# define MCP7941X_BIT_VBATEN 0x08 #define DS1307_REG_MDAY 0x04 /* 01-31 */ #define DS1307_REG_MONTH 0x05 /* 01-12 */ # define DS1337_BIT_CENTURY 0x80 /* in REG_MONTH */ @@ -138,6 +141,8 @@ static const struct chip_desc chips[] = { [m41t00] = { }, [rx_8025] = { +}, +[mcp7941x] = { }, }; static const struct i2c_device_id ds1307_id[] = { @@ -151,6 +156,7 @@ static const struct i2c_device_id ds1307_id[] = { { "m41t00", m41t00 }, { "pt7c4338", ds_1307 }, { "rx8025", rx_8025 }, + { "mcp7941x", mcp7941x }, { } }; MODULE_DEVICE_TABLE(i2c, ds1307_id); @@ -365,6 +371,10 @@ static int ds1307_set_time(struct device *dev, struct rtc_time *t) buf[DS1307_REG_HOUR] |= DS1340_BIT_CENTURY_EN | DS1340_BIT_CENTURY; break; + case mcp7941x: + buf[DS1307_REG_SECS] |= MCP7941X_BIT_ST; + buf[DS1307_REG_WDAY] |= MCP7941X_BIT_VBATEN; + break; default: break; } @@ -809,6 +819,23 @@ read_rtc: dev_warn(&client->dev, "SET TIME!\n"); } break; + case mcp7941x: + /* make sure that the backup battery is enabled */ + if (!(ds1307->regs[DS1307_REG_WDAY] & MCP7941X_BIT_VBATEN)) { + i2c_smbus_write_byte_data(client, DS1307_REG_WDAY, + ds1307->regs[DS1307_REG_WDAY] + | MCP7941X_BIT_VBATEN); + } + + /* clock halted? turn it on, so clock can tick. */ + if (!(tmp & MCP7941X_BIT_ST)) { + i2c_smbus_write_byte_data(client, DS1307_REG_SECS, + MCP7941X_BIT_ST); + dev_warn(&client->dev, "SET TIME!\n"); + goto read_rtc; + } + + break; case rx_8025: case ds_1337: case ds_1339: -- 1.7.0.4