summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-27 14:21:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-27 14:21:29 +0000
commit7e0bd6ee20504e836bb78f353f0099aecbfe2229 (patch)
tree322ae47b348b252680416ce56942798c5295ee7b /c
parentPR fixed. (diff)
downloadrtems-7e0bd6ee20504e836bb78f353f0099aecbfe2229.tar.bz2
2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
* tod.h, tod.c: Update for new RTC driver interface.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/shared/ChangeLog4
-rw-r--r--c/src/lib/libbsp/shared/tod.c106
-rw-r--r--c/src/lib/libbsp/shared/tod.h8
3 files changed, 110 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog
index b81f7c747d..c96339c3e5 100644
--- a/c/src/lib/libbsp/shared/ChangeLog
+++ b/c/src/lib/libbsp/shared/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * tod.h, tod.c: Update for new RTC driver interface.
+
2009-05-18 Joel Sherrill <joel.sherrill@OARcorp.com>
* bsppost.c: Fix typo.
diff --git a/c/src/lib/libbsp/shared/tod.c b/c/src/lib/libbsp/shared/tod.c
index 619fbec24a..21534f91af 100644
--- a/c/src/lib/libbsp/shared/tod.c
+++ b/c/src/lib/libbsp/shared/tod.c
@@ -9,6 +9,9 @@
*/
#include <rtems.h>
+#include <rtems/rtc.h>
+#include <rtems/libio.h>
+
#include <libchip/rtc.h>
/*
@@ -34,8 +37,8 @@ rtems_device_driver rtc_initialize(
void *arg
)
{
- rtems_device_minor_number minor;
- rtems_status_code status;
+ rtems_device_minor_number minor;
+ rtems_status_code status;
for (minor=0; minor < RTC_Count ; minor++) {
/*
@@ -65,7 +68,7 @@ rtems_device_driver rtc_initialize(
* Register and initialize the primary RTC's
*/
- status = rtems_io_register_name( "/dev/rtc", major, RTC_Minor );
+ status = rtems_io_register_name( RTC_DEVICE_NAME, major, RTC_Minor );
if (status != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(status);
}
@@ -104,6 +107,101 @@ rtems_device_driver rtc_initialize(
return RTEMS_SUCCESSFUL;
}
+rtems_device_driver rtc_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ int rv = 0;
+ rtems_libio_rw_args_t *rw = arg;
+ rtems_time_of_day *tod = (rtems_time_of_day *) rw->buffer;
+
+ rw->offset = 0;
+ rw->bytes_moved = 0;
+
+ if (!RTC_Present) {
+ return RTEMS_NOT_CONFIGURED;
+ }
+
+ if (rw->count != sizeof( rtems_time_of_day)) {
+ return RTEMS_INVALID_SIZE;
+ }
+
+ rv = RTC_Table [RTC_Minor].pDeviceFns->deviceGetTime(
+ RTC_Minor,
+ tod
+ );
+ if (rv != 0) {
+ return RTEMS_IO_ERROR;
+ }
+
+ rw->bytes_moved = rw->count;
+
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver rtc_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ int rv = 0;
+ rtems_libio_rw_args_t *rw = arg;
+ const rtems_time_of_day *tod = (const rtems_time_of_day *) rw->buffer;
+
+ rw->offset = 0;
+ rw->bytes_moved = 0;
+
+ if (!RTC_Present) {
+ return RTEMS_NOT_CONFIGURED;
+ }
+
+ if (rw->count != sizeof( rtems_time_of_day)) {
+ return RTEMS_INVALID_SIZE;
+ }
+
+ rv = RTC_Table [RTC_Minor].pDeviceFns->deviceSetTime(
+ RTC_Minor,
+ tod
+ );
+ if (rv != 0) {
+ return RTEMS_IO_ERROR;
+ }
+
+ rw->bytes_moved = rw->count;
+
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver rtc_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver rtc_close(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver rtc_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ return RTEMS_NOT_IMPLEMENTED;
+}
+
/*PAGE
*
* This routine copies the time from the real time clock to RTEMS
@@ -186,7 +284,7 @@ void getRealTime(
* Return values: NONE
*/
int setRealTime(
- rtems_time_of_day *tod
+ const rtems_time_of_day *tod
)
{
if (!RTC_Present)
diff --git a/c/src/lib/libbsp/shared/tod.h b/c/src/lib/libbsp/shared/tod.h
index 3f5f9069da..25a5a39283 100644
--- a/c/src/lib/libbsp/shared/tod.h
+++ b/c/src/lib/libbsp/shared/tod.h
@@ -25,7 +25,7 @@ extern "C" {
*/
int setRealTime(
- rtems_time_of_day *tod
+ const rtems_time_of_day *tod
);
/*
@@ -40,20 +40,20 @@ void getRealTime(
* Read real time from RTC and set it to RTEMS' clock manager
*/
-void setRealTimeToRTEMS();
+void setRealTimeToRTEMS(void);
/*
* Read time from RTEMS' clock manager and set it to RTC
*/
-void setRealTimeFromRTEMS();
+void setRealTimeFromRTEMS(void);
/*
* Return the difference between RTC and RTEMS' clock manager time in minutes.
* If the difference is greater than 1 day, this returns 9999.
*/
-int checkRealTime();
+int checkRealTime(void);
#ifdef __cplusplus
}