From 740eb36c10dd43b2307767f6101833d960399438 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Mon, 24 Jun 2002 13:23:01 +0000 Subject: Added first RTC functions git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1151 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/rtc.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 firmware/drivers/rtc.c (limited to 'firmware/drivers/rtc.c') diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c new file mode 100644 index 0000000000..66b37fccb7 --- /dev/null +++ b/firmware/drivers/rtc.c @@ -0,0 +1,73 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2002 by Linus Nielsen Feltzing + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#include "config.h" +#ifdef HAVE_RTC +#include "i2c.h" +#include "rtc.h" + +#define RTC_ADR 0xd0 +#define RTC_DEV_WRITE (RTC_ADR | 0x00) +#define RTC_DEV_READ (RTC_ADR | 0x01) + +int rtc_write(unsigned char address, unsigned char value) +{ + int ret = 0; + unsigned char buf[2]; + + i2c_begin(); + + buf[0] = address; + buf[1] = value; + + /* send run command */ + if (i2c_write(RTC_DEV_WRITE,buf,2)) + { + ret = -1; + } + + i2c_end(); + return ret; +} + + +int rtc_read(unsigned char address) +{ + int value = -1; + unsigned char buf[1]; + + i2c_begin(); + + buf[0] = address; + + /* send run command */ + if (i2c_write(RTC_DEV_READ,buf,1) >= 0) + { + i2c_start(); + i2c_outb(RTC_DEV_READ); + if (i2c_getack()) + { + value = i2c_inb(1); + } + } + + i2c_end(); + return value; +} + +#endif -- cgit v1.2.3