summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/bfin
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-27 14:22:10 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-27 14:22:10 +0000
commit72fe60735bac55151b630538ccf0e7696e4f101c (patch)
treefe28c6b9e216c5201fa5ad7fc56d5368e0558530 /c/src/lib/libcpu/bfin
parent2009-05-27 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-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/ChangeLog4
-rw-r--r--c/src/lib/libcpu/bfin/clock/rtc.c128
-rw-r--r--c/src/lib/libcpu/bfin/clock/tod.h2
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
);
/*