diff -purN ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/Makefile ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/Makefile
--- ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/Makefile	1970-01-01 05:30:00.000000000 +0530
+++ ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/Makefile	2010-02-24 15:21:33.000000000 +0530
@@ -0,0 +1,28 @@
+#
+#  Copyright (c) Larsen & Toubro Infotech Ltd., 2010
+#
+#  This program is free software;  you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY;  without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+#  the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program;  if not, write to the Free Software
+#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#
+
+CFLAGS = -O2 -Wall 
+SRC = test_rtc.c
+
+
+all: $(SRC)
+	$(CC) $(CFLAGS) $(SRC) -o rtc-test
+
+clean:
+	rm -f rtc-test
diff -purN ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/README ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/README
--- ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/README	1970-01-01 05:30:00.000000000 +0530
+++ ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/README	2010-02-24 14:34:01.000000000 +0530
@@ -0,0 +1,29 @@
+test_rtc.c : Test the Real Time Clock driver
+
+Tests supported as of now 
+--------------------------
+1. Read test : This reads the time/date from the RTC 
+   ioctls tested :- RTC_RD_TIME.
+  
+2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it rings.
+   ioctls tested :- RTC_ALM_SET, RTC_ALM_READ,  RTC_AIE_ON, RTC_AIE_OFF.
+
+3. Update interrupts test : Sets Update interrupts enable on, waits for five 
+   interrupts and then turns it off.
+   ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF.
+
+
+How to Build
+------------
+
+Enter rtc directory and issue a 'make' .
+
+How to Run
+----------
+
+	The tests assume the rtc device node to be "/dev/rtc". If you have a
+different node run the test with the name of the node as a parameter.
+
+Eg. If your node is /dev/rtc0, then run the test as
+
+	$ ./rtc-test /dev/rtc0
diff -purN ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/test_rtc.c ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/test_rtc.c
--- ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/test_rtc.c	1970-01-01 05:30:00.000000000 +0530
+++ ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/test_rtc.c	2010-02-24 15:17:59.000000000 +0530
@@ -0,0 +1,175 @@
+/*   test_rtc.c
+ *
+ *   Copyright (c) Larsen & Toubro Infotech Ltd., 2010
+ *   
+ *   Contact : Silesh C V <Silesh.Vellattu@lntinfotech.com>
+ *
+ *   This program is free software;  you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+ *   the GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program;  if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <linux/rtc.h>
+#include <errno.h>
+
+int rtc_fd = -1;
+
+void read_alarm_test(void)
+{
+	struct rtc_time rtc_tm;
+	int ret;
+	unsigned long data;
+
+	printf("\nRTC READ TEST:\n");
+
+	 /*Read RTC Time*/
+        ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm);
+        if (ret == -1) {
+                perror("RTC_RD_TIME ioctl");
+                printf("RTC READ TEST Failed\n");
+                return;
+        }
+
+        printf("RTC READ TEST Passed");
+        printf("\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
+                rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
+                rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
+
+        printf("\nRTC ALARM TEST :\n");
+
+        /*set Alarm to 5 Seconds*/
+        rtc_tm.tm_sec += 5;
+        if (rtc_tm.tm_sec >= 60) {
+                rtc_tm.tm_sec %= 60;
+                rtc_tm.tm_min++;
+        }
+
+        if (rtc_tm.tm_min == 60) {
+                rtc_tm.tm_min = 0;
+                rtc_tm.tm_hour++;
+        }
+
+        if (rtc_tm.tm_hour == 24)
+                rtc_tm.tm_hour = 0;
+
+	ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm);
+        if (ret == -1) {
+                perror("RTC_ALM_SET ioctl");
+                printf("RTC ALARM TEST Failed\n");
+                return;
+        }
+
+        /*Read current alarm time*/
+        ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm);
+        if (ret == -1) {
+                perror("RTC_ALM_READ ioctl");
+                printf("RTC ALARM TEST Failed\n");
+                return;
+        }
+
+        printf("Alarm time set to %02d:%02d:%02d.\n",
+                rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
+        /* Enable alarm interrupts */
+        ret = ioctl(rtc_fd, RTC_AIE_ON, 0);
+        if (ret == -1) {
+                perror("RTC_AIE_ON ioctl");
+                printf("RTC ALARM TEST Failed\n");
+                return;
+        }
+
+        printf("Waiting 5 seconds for the alarm...\n");
+        ret = read(rtc_fd, &data, sizeof(unsigned long));
+        if (ret == -1) {
+                perror("read");
+                printf("RTC ALARM TEST Failed\n");
+                return;
+        }
+
+	printf("Alarm rang.\n");
+        /* Disable alarm interrupts */
+        ret = ioctl(rtc_fd, RTC_AIE_OFF, 0);
+        if (ret == -1) {
+                perror("RTC_AIE_OFF ioctl");
+                printf("RTC ALARM TEST Failed\n");
+                return;
+        }
+
+        printf("RTC ALARM TEST Passed\n");
+}
+
+void update_interrupts_test(void)
+{
+	int ret, i;
+	unsigned long data;
+
+	printf("\nRTC UPDATE INTERRUPTS TEST :\n");
+        /*Turn on update interrupts*/
+        ret = ioctl(rtc_fd, RTC_UIE_ON, 0);
+        if (ret == -1) {
+                perror("RTC_UIE_ON ioctl");
+                printf("RTC UPDATE INTERRUPTS TEST Failed\n");
+		return;
+        }
+
+        printf("Waiting for  5 update interrupts...\n");
+        for (i = 1; i < 6; i++) {
+                ret = read(rtc_fd, &data, sizeof(unsigned long));
+                if (ret == -1) {
+                        perror("read");
+                        printf("RTC UPDATE INTERRUPTS TEST Failed\n");
+                        return;
+                }
+                printf("Update interrupt %d\n", i);
+        }
+
+         /* Turn off update interrupts */
+        ret = ioctl(rtc_fd, RTC_UIE_OFF, 0);
+        if (ret == -1) {
+                perror("RTC_UIE_OFF ioctl");
+                printf("RTC UPDATE INTERRUPTS TEST Failed\n");
+                return;
+        }
+        printf("RTC UPDATE INTERRUPTS TEST Passed\n");
+
+}
+
+int main(int argc, char **argv)
+{
+	char *rtc_dev = "/dev/rtc";
+
+	if (argc == 2)
+		rtc_dev = argv[1];
+
+	rtc_fd = open(rtc_dev, O_RDONLY);
+	if (rtc_fd < 0) {
+		perror(rtc_dev);
+		exit(errno);
+	}
+
+	/*Read and alarm tests*/
+	read_alarm_test();
+
+	/*Update interrupts test*/
+	update_interrupts_test();
+	
+	close(rtc_fd);
+
+	printf("\nRTC Tests Done!\n");
+	return 0;
+}
