Windows2000/private/ntos/inc/jnsnrtc.h

169 lines
4.0 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1991 Microsoft Corporation
Copyright (c) 1992 Digital Equipment Corporation
Module Name:
jnsnrtc.h
Abstract:
This module is the header file that describes hardware structure
for the Toy clock in the 82C106 combo chip on Jensen
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 _JNSNRTC_
#define _JNSNRTC_
// 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
// The RTC NVRAM byte addresses are 0x0e -- 0x4f.
// Addresses 0x0E -- 0x3F are reserved for use by VMS/OSF.
#define RTC_RAM_NT_FLAGS0 0x40 // NT firmware flag set #0
#define RTC_RAM_CONSOLE_SELECTION 0x4f // VMS/OSF/NT boot selection
// Define port registers for access with the VTI access
// routines
#define RTC_APORT 0x170
#define RTC_DPORT 0x171
#ifndef _LANGUAGE_ASSEMBLY
// 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;
// Definitions for NT area of NVRAM
typedef struct _RTC_RAM_NT_FLAGS_0 {
UCHAR Fill : 7;
UCHAR AutoRunECU : 1;
} RTC_RAM_NT_FLAGS_0, *PRTC_RAM_NT_FLAGS_0;
#endif //_LANGUAGE_ASSEMBLY
// 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 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_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 // _JNSNRTC_