diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-27 14:21:29 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-27 14:21:29 +0000 |
commit | 7e0bd6ee20504e836bb78f353f0099aecbfe2229 (patch) | |
tree | 322ae47b348b252680416ce56942798c5295ee7b | |
parent | PR fixed. (diff) | |
download | rtems-7e0bd6ee20504e836bb78f353f0099aecbfe2229.tar.bz2 |
2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
* tod.h, tod.c: Update for new RTC driver interface.
-rw-r--r-- | c/src/lib/libbsp/shared/ChangeLog | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/tod.c | 106 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/tod.h | 8 |
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 } |