diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-27 14:22:10 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-27 14:22:10 +0000 |
commit | 72fe60735bac55151b630538ccf0e7696e4f101c (patch) | |
tree | fe28c6b9e216c5201fa5ad7fc56d5368e0558530 /c/src/lib/libcpu/bfin | |
parent | 2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-72fe60735bac55151b630538ccf0e7696e4f101c.tar.bz2 |
2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
* clock/rtc.c, clock/tod.h: Update for new RTC driver interface.
Diffstat (limited to 'c/src/lib/libcpu/bfin')
-rw-r--r-- | c/src/lib/libcpu/bfin/ChangeLog | 4 | ||||
-rw-r--r-- | c/src/lib/libcpu/bfin/clock/rtc.c | 128 | ||||
-rw-r--r-- | c/src/lib/libcpu/bfin/clock/tod.h | 2 |
3 files changed, 107 insertions, 27 deletions
diff --git a/c/src/lib/libcpu/bfin/ChangeLog b/c/src/lib/libcpu/bfin/ChangeLog index 010ee44dc7..a18ab0d8a8 100644 --- a/c/src/lib/libcpu/bfin/ChangeLog +++ b/c/src/lib/libcpu/bfin/ChangeLog @@ -1,3 +1,7 @@ +2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * clock/rtc.c, clock/tod.h: Update for new RTC driver interface. + 2009-05-25 Allan Hessenflow <allanh@kallisti.com> * mmu/mmu.c: enable mmu after initializing it. diff --git a/c/src/lib/libcpu/bfin/clock/rtc.c b/c/src/lib/libcpu/bfin/clock/rtc.c index dace52eae2..19b42d25c9 100644 --- a/c/src/lib/libcpu/bfin/clock/rtc.c +++ b/c/src/lib/libcpu/bfin/clock/rtc.c @@ -14,9 +14,8 @@ #include <rtems.h> #include "tod.h" +#include <rtems/rtc.h> #include <rtems/libio.h> -#include <rtems/score/tod.h> -#include <rtems/rtems/types.h> #include <bsp.h> #include <libcpu/rtcRegs.h> @@ -35,29 +34,6 @@ void Init_RTC(void) *((uint16_t*)RTC_PREN) = RTC_PREN_PREN; /* Enable Prescaler */ } -rtems_device_driver rtc_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor_arg, - void *arg -) -{ - rtems_status_code status; - - /* - * Register and initialize the primary RTC's - */ - - status = rtems_io_register_name( "/dev/rtc", major, 0 ); - if (status != RTEMS_SUCCESSFUL) { - rtems_fatal_error_occurred(status); - } - - Init_RTC(); - - setRealTimeToRTEMS(); - return RTEMS_SUCCESSFUL; -} - /* * Read time from RTEMS' clock manager and set it to RTC */ @@ -89,7 +65,7 @@ void setRealTimeToRTEMS (void) * Set the RTC time */ int setRealTime( - rtems_time_of_day *tod + const rtems_time_of_day *tod ) { uint32_t days; @@ -182,3 +158,103 @@ int Leap_years_until_now (int year) ((TOD_BASE_YEAR - 1)/4 - (TOD_BASE_YEAR - 1)/100 + (TOD_BASE_YEAR - 1)/400)); } + +rtems_device_driver rtc_initialize( + rtems_device_major_number major, + rtems_device_minor_number minor_arg, + void *arg +) +{ + rtems_status_code status; + + /* + * Register and initialize the primary RTC's + */ + + status = rtems_io_register_name( RTC_DEVICE_NAME, major, 0 ); + if (status != RTEMS_SUCCESSFUL) { + rtems_fatal_error_occurred(status); + } + + Init_RTC(); + + setRealTimeToRTEMS(); + return RTEMS_SUCCESSFUL; +} + +rtems_device_driver rtc_read( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + 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 (rw->count != sizeof( rtems_time_of_day)) { + return RTEMS_INVALID_SIZE; + } + + getRealTime( tod); + + 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 (rw->count != sizeof( rtems_time_of_day)) { + return RTEMS_INVALID_SIZE; + } + + rv = setRealTime( 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; +} diff --git a/c/src/lib/libcpu/bfin/clock/tod.h b/c/src/lib/libcpu/bfin/clock/tod.h index 18f257bebe..84e0d15383 100644 --- a/c/src/lib/libcpu/bfin/clock/tod.h +++ b/c/src/lib/libcpu/bfin/clock/tod.h @@ -26,7 +26,7 @@ extern "C" { */ int setRealTime( - rtems_time_of_day *tod + const rtems_time_of_day *tod ); /* |