summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-12-05 19:22:33 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-12-11 09:05:07 +0100
commitbb99cd0d83ae32e1f222bf2c8235a8f95128815d (patch)
tree345350623f1913eb19e785bf671e02cc114cdfe0 /cpukit
parentclock: Remove Clock_exit() from API (diff)
downloadrtems-bb99cd0d83ae32e1f222bf2c8235a8f95128815d.tar.bz2
clock: Simplify driver initialization
Use a system initialization handler instead of a legacy IO driver. Update #3834.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/include/rtems/clockdrv.h39
-rw-r--r--cpukit/include/rtems/confdefs.h12
2 files changed, 33 insertions, 18 deletions
diff --git a/cpukit/include/rtems/clockdrv.h b/cpukit/include/rtems/clockdrv.h
index 543838b964..f3df912e74 100644
--- a/cpukit/include/rtems/clockdrv.h
+++ b/cpukit/include/rtems/clockdrv.h
@@ -1,9 +1,11 @@
/**
* @file
*
- * @brief Clock Driver for all Boards
+ * @ingroup RTEMSDriverClock
*
- * This file describes the Clock Driver for all boards.
+ * @brief Clock Driver API
+ *
+ * This file defines the Clock Driver API.
*/
/*
@@ -18,26 +20,35 @@
#ifndef _RTEMS_CLOCKDRV_H
#define _RTEMS_CLOCKDRV_H
-#include <rtems/io.h> /* rtems_device_driver */
+#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
-/* variables */
-
-extern volatile uint32_t Clock_driver_ticks;
+/**
+ * @defgroup RTEMSDriverClock Clock Driver
+ *
+ * @ingroup RTEMSDeviceDrivers
+ *
+ * @brief The Clock Driver API.
+ *
+ * @{
+ */
-/* default clock driver entry */
+/**
+ * @brief Count of clock driver ticks since system boot or last overflow.
+ *
+ * This counter may overflow.
+ */
+extern volatile uint32_t Clock_driver_ticks;
-#define CLOCK_DRIVER_TABLE_ENTRY \
- { Clock_initialize, NULL, NULL, NULL, NULL, NULL }
+/**
+ * @brief Initialize the clock driver.
+ */
+void _Clock_Initialize( void );
-rtems_device_driver Clock_initialize(
- rtems_device_major_number,
- rtems_device_minor_number,
- void *
-);
+/** @} */
#ifdef __cplusplus
}
diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h
index f04717006d..cbcd1f98c2 100644
--- a/cpukit/include/rtems/confdefs.h
+++ b/cpukit/include/rtems/confdefs.h
@@ -1558,6 +1558,14 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#include <rtems/clockdrv.h>
+
+ #ifdef CONFIGURE_INIT
+ RTEMS_SYSINIT_ITEM(
+ _Clock_Initialize,
+ RTEMS_SYSINIT_DEVICE_DRIVERS,
+ RTEMS_SYSINIT_ORDER_THIRD
+ );
+ #endif
#endif
#ifdef CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
@@ -1619,9 +1627,6 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
CONSOLE_DRIVER_TABLE_ENTRY,
#endif
- #ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
- CLOCK_DRIVER_TABLE_ENTRY,
- #endif
#ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
RTC_DRIVER_TABLE_ENTRY,
#endif
@@ -1649,7 +1654,6 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
#ifdef CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
NULL_DRIVER_TABLE_ENTRY
#elif !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) && \
!defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) && \