From d3d1583adbb1489e6d6e6c38dd018c77c0cfdcc1 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 20 Nov 2002 00:00:56 +0000 Subject: Added rtc_read_multiple() git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2862 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/rtc.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'firmware/drivers/rtc.c') diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c index c8e19aab53..d052247986 100644 --- a/firmware/drivers/rtc.c +++ b/firmware/drivers/rtc.c @@ -65,7 +65,6 @@ int rtc_write(unsigned char address, unsigned char value) return ret; } - int rtc_read(unsigned char address) { int value = -1; @@ -92,4 +91,37 @@ int rtc_read(unsigned char address) return value; } +int rtc_read_multiple(unsigned char address, unsigned char *buf, int numbytes) +{ + int ret = 0; + unsigned char obuf[1]; + int i; + + i2c_begin(); + + obuf[0] = address; + + /* send read command */ + if (i2c_write(RTC_DEV_READ, obuf, 1) >= 0) + { + i2c_start(); + i2c_outb(RTC_DEV_READ); + if (i2c_getack()) + { + for(i = 0;i < numbytes-1;i++) + buf[i] = i2c_inb(0); + + buf[i] = i2c_inb(1); + } + else + { + ret = -1; + } + } + + i2c_stop(); + + i2c_end(); + return ret; +} #endif -- cgit v1.2.3