summaryrefslogtreecommitdiffstats
path: root/private/ntos/nthals/halalpha/pcrtc.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/nthals/halalpha/pcrtc.h')
-rw-r--r--private/ntos/nthals/halalpha/pcrtc.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/private/ntos/nthals/halalpha/pcrtc.h b/private/ntos/nthals/halalpha/pcrtc.h
new file mode 100644
index 000000000..bff457f05
--- /dev/null
+++ b/private/ntos/nthals/halalpha/pcrtc.h
@@ -0,0 +1,166 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+Copyright (c) 1992, 1993 Digital Equipment Corporation
+
+Module Name:
+
+ pcrtc.h
+
+Abstract:
+
+ This module is the header file that describes hardware structure
+ for the standard compatible PC Toy clock.
+
+Author:
+
+ David N. Cutler (davec) 3-May-1991
+ Jeff McLeman (mcleman) 4-Jun-1992
+
+Revision History:
+
+ 13-Jul-1992 Jeff McLeman
+ Add port offsets for use with VTI access routines.
+
+ 4-Jun-1992 Jeff McLeman
+ Adapt module to Jensen specific
+
+--*/
+
+#ifndef _PCRTC_
+#define _PCRTC_
+
+//
+// Define Realtime Clock register numbers.
+//
+
+#define RTC_SECOND 0 // second of minute [0..59]
+#define RTC_SECOND_ALARM 1 // seconds to alarm
+#define RTC_MINUTE 2 // minute of hour [0..59]
+#define RTC_MINUTE_ALARM 3 // minutes to alarm
+#define RTC_HOUR 4 // hour of day [0..23]
+#define RTC_HOUR_ALARM 5 // hours to alarm
+#define RTC_DAY_OF_WEEK 6 // day of week [1..7]
+#define RTC_DAY_OF_MONTH 7 // day of month [1..31]
+#define RTC_MONTH 8 // month of year [1..12]
+#define RTC_YEAR 9 // year [00..99]
+#define RTC_CONTROL_REGISTERA 10 // control register A
+#define RTC_CONTROL_REGISTERB 11 // control register B
+#define RTC_CONTROL_REGISTERC 12 // control register C
+#define RTC_CONTROL_REGISTERD 13 // control register D
+#define RTC_REGNUMBER_RTC_CR1 0x6A // control register 1
+
+#ifndef _LANGUAGE_ASSEMBLY
+
+//
+// Definitions for NT area of NVRAM
+//
+typedef struct _RTC_RAM_NT_FLAGS_0 {
+ UCHAR ConfigurationBit : 1; // Serial line console only
+ UCHAR Fill : 6;
+ UCHAR AutoRunECU : 1; // Go directly to ECU
+} RTC_RAM_NT_FLAGS_0, *PRTC_RAM_NT_FLAGS_0;
+
+#define RTC_RAM_NT_FLAGS_0_RUNARCAPP (0x80)
+#define RTC_RAM_NT_FLAGS_0_RESERVED (0x7E)
+#define RTC_RAM_NT_FLAGS_0_USECOM1FORIO (0x01)
+
+//
+// Values for RTC_RAM_CONSOLE_SELECTION
+//
+
+#define RTC_RAM_CONSOLE_SELECTION_NT 1
+#define RTC_RAM_CONSOLE_SELECTION_VMS 2
+#define RTC_RAM_CONSOLE_SELECTION_OSF 3
+
+//
+// Define Control Register A structure.
+//
+
+typedef struct _RTC_CONTROL_REGISTER_A {
+ UCHAR RateSelect : 4;
+ UCHAR TimebaseDivisor : 3;
+ UCHAR UpdateInProgress : 1;
+} RTC_CONTROL_REGISTER_A, *PRTC_CONTROL_REGISTER_A;
+
+//
+// Define Control Register B structure.
+//
+
+typedef struct _RTC_CONTROL_REGISTER_B {
+ UCHAR DayLightSavingsEnable : 1;
+ UCHAR HoursFormat : 1;
+ UCHAR DataMode : 1;
+ UCHAR SquareWaveEnable : 1;
+ UCHAR UpdateInterruptEnable : 1;
+ UCHAR AlarmInterruptEnable : 1;
+ UCHAR TimerInterruptEnable : 1;
+ UCHAR SetTime : 1;
+} RTC_CONTROL_REGISTER_B, *PRTC_CONTROL_REGISTER_B;
+
+//
+// Define Control Register C structure.
+//
+
+typedef struct _RTC_CONTROL_REGISTER_C {
+ UCHAR Fill : 4;
+ UCHAR UpdateInterruptFlag : 1;
+ UCHAR AlarmInterruptFlag : 1;
+ UCHAR TimeInterruptFlag : 1;
+ UCHAR InterruptRequest : 1;
+} RTC_CONTROL_REGISTER_C, *PRTC_CONTROL_REGISTER_C;
+
+//
+// Define Control Register D structure.
+//
+
+typedef struct _RTC_CONTROL_REGISTER_D {
+ UCHAR Fill : 7;
+ UCHAR ValidTime : 1;
+} RTC_CONTROL_REGISTER_D, *PRTC_CONTROL_REGISTER_D;
+
+//
+// Common routine for programming the interval timer
+//
+VOID
+HalpProgramIntervalTimer(
+ IN ULONG RateSelect
+ );
+
+#endif // _LANGUAGE_ASSEMBLY
+
+//
+// Define initialization values for Jensen interval timer
+// There are four different rates that are used under NT
+// (see page 9-8 of KN121 System Module Programmer's Reference)
+//
+// .976562 ms
+// 1.953125 ms
+// 3.90625 ms
+// 7.8125 ms
+//
+#define RTC_TIMEBASE_DIVISOR 0x02
+
+#define RTC_RATE_SELECT1 6
+#define RTC_RATE_SELECT2 7
+#define RTC_RATE_SELECT3 8
+#define RTC_RATE_SELECT4 9
+
+//
+// note that rates 1-3 have some rounding error,
+// since they are not expressible in even 100ns units
+//
+
+#define RTC_PERIOD_IN_CLUNKS1 9766
+#define RTC_PERIOD_IN_CLUNKS2 19531
+#define RTC_PERIOD_IN_CLUNKS3 39063
+#define RTC_PERIOD_IN_CLUNKS4 78125
+
+//
+// Defaults
+//
+#define MINIMUM_INCREMENT RTC_PERIOD_IN_CLUNKS1
+#define MAXIMUM_INCREMENT RTC_PERIOD_IN_CLUNKS4
+#define MAXIMUM_RATE_SELECT RTC_RATE_SELECT4
+
+#endif // _PCRTC_