diff options
Diffstat (limited to 'bsps/include/libchip/rtc.h')
-rw-r--r-- | bsps/include/libchip/rtc.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/bsps/include/libchip/rtc.h b/bsps/include/libchip/rtc.h new file mode 100644 index 0000000000..49dd51c2e2 --- /dev/null +++ b/bsps/include/libchip/rtc.h @@ -0,0 +1,80 @@ +/* + * This file contains the Real-Time Clock definitions. + * + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifndef __LIBCHIP_RTC_h +#define __LIBCHIP_RTC_h + +#include <stdbool.h> +#include <stdint.h> + +#include <rtems.h> + +/* + * Types for get and set register routines + */ + +typedef uint32_t (*getRegister_f)(uintptr_t port, uint8_t reg); +typedef void (*setRegister_f)(uintptr_t port, uint8_t reg, uint32_t value); + +typedef struct _rtc_fns { + void (*deviceInitialize)(int minor); + int (*deviceGetTime)(int minor, rtems_time_of_day *time); + int (*deviceSetTime)(int minor, const rtems_time_of_day *time); +} rtc_fns; + +typedef enum { + RTC_M48T08, /* SGS-Thomsom M48T08 or M48T18 */ + RTC_ICM7170, /* Harris ICM-7170 */ + RTC_CUSTOM, /* BSP specific driver */ + RTC_MC146818A /* Motorola MC146818A */ +} rtc_devs; + +/* + * Each field is interpreted thus: + * + * sDeviceName This is the name of the device. + * + * deviceType This indicates the chip type. + * + * pDeviceFns This is a pointer to the set of driver routines to use. + * + * pDeviceParams This contains either device specific data or a pointer to a + * device specific information table. + * + * ulCtrlPort1 This is the primary control port number for the device. + * + * ulDataPort This is the port number for the data port of the device + * + * getRegister This is the routine used to read register values. + * + * setRegister This is the routine used to write register values. + */ + +typedef struct _rtc_tbl { + const char *sDeviceName; + rtc_devs deviceType; + const rtc_fns *pDeviceFns; + bool (*deviceProbe)(int minor); + void *pDeviceParams; + uintptr_t ulCtrlPort1; + uintptr_t ulDataPort; + getRegister_f getRegister; + setRegister_f setRegister; +} rtc_tbl; + +extern rtc_tbl RTC_Table[]; +extern size_t RTC_Count; + + +extern bool rtc_probe( int minor ); + +#endif +/* end of include file */ |