mirror of https://github.com/acidanthera/audk.git
106 lines
2.6 KiB
C
106 lines
2.6 KiB
C
|
/** @file
|
||
|
HPET register definitions from the IA-PC HPET (High Precision Event Timers)
|
||
|
Specification, Revision 1.0a, October 2004.
|
||
|
|
||
|
PRM Module Note:
|
||
|
This specific header was copied from PcAtChipsetPkg to avoid a module dependency on the package
|
||
|
just for this header. This is done for temporary testing purposes of the PRM module.
|
||
|
|
||
|
Copyright (c) Microsoft Corporation
|
||
|
Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
|
||
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||
|
|
||
|
**/
|
||
|
|
||
|
#ifndef HPET_REGISTER_H_
|
||
|
#define HPET_REGISTER_H_
|
||
|
|
||
|
///
|
||
|
/// HPET General Register Offsets
|
||
|
///
|
||
|
#define HPET_GENERAL_CAPABILITIES_ID_OFFSET 0x000
|
||
|
#define HPET_GENERAL_CONFIGURATION_OFFSET 0x010
|
||
|
#define HPET_GENERAL_INTERRUPT_STATUS_OFFSET 0x020
|
||
|
|
||
|
///
|
||
|
/// HPET Timer Register Offsets
|
||
|
///
|
||
|
#define HPET_MAIN_COUNTER_OFFSET 0x0F0
|
||
|
#define HPET_TIMER_CONFIGURATION_OFFSET 0x100
|
||
|
#define HPET_TIMER_COMPARATOR_OFFSET 0x108
|
||
|
#define HPET_TIMER_MSI_ROUTE_OFFSET 0x110
|
||
|
|
||
|
///
|
||
|
/// Stride between sets of HPET Timer Registers
|
||
|
///
|
||
|
#define HPET_TIMER_STRIDE 0x20
|
||
|
|
||
|
#pragma pack(1)
|
||
|
|
||
|
///
|
||
|
/// HPET General Capabilities and ID Register
|
||
|
///
|
||
|
typedef union {
|
||
|
struct {
|
||
|
UINT32 Revision:8;
|
||
|
UINT32 NumberOfTimers:5;
|
||
|
UINT32 CounterSize:1;
|
||
|
UINT32 Reserved0:1;
|
||
|
UINT32 LegacyRoute:1;
|
||
|
UINT32 VendorId:16;
|
||
|
UINT32 CounterClockPeriod:32;
|
||
|
} Bits;
|
||
|
UINT64 Uint64;
|
||
|
} HPET_GENERAL_CAPABILITIES_ID_REGISTER;
|
||
|
|
||
|
///
|
||
|
/// HPET General Configuration Register
|
||
|
///
|
||
|
typedef union {
|
||
|
struct {
|
||
|
UINT32 MainCounterEnable:1;
|
||
|
UINT32 LegacyRouteEnable:1;
|
||
|
UINT32 Reserved0:30;
|
||
|
UINT32 Reserved1:32;
|
||
|
} Bits;
|
||
|
UINT64 Uint64;
|
||
|
} HPET_GENERAL_CONFIGURATION_REGISTER;
|
||
|
|
||
|
///
|
||
|
/// HPET Timer Configuration Register
|
||
|
///
|
||
|
typedef union {
|
||
|
struct {
|
||
|
UINT32 Reserved0:1;
|
||
|
UINT32 LevelTriggeredInterrupt:1;
|
||
|
UINT32 InterruptEnable:1;
|
||
|
UINT32 PeriodicInterruptEnable:1;
|
||
|
UINT32 PeriodicInterruptCapability:1;
|
||
|
UINT32 CounterSizeCapability:1;
|
||
|
UINT32 ValueSetEnable:1;
|
||
|
UINT32 Reserved1:1;
|
||
|
UINT32 CounterSizeEnable:1;
|
||
|
UINT32 InterruptRoute:5;
|
||
|
UINT32 MsiInterruptEnable:1;
|
||
|
UINT32 MsiInterruptCapability:1;
|
||
|
UINT32 Reserved2:16;
|
||
|
UINT32 InterruptRouteCapability;
|
||
|
} Bits;
|
||
|
UINT64 Uint64;
|
||
|
} HPET_TIMER_CONFIGURATION_REGISTER;
|
||
|
|
||
|
///
|
||
|
/// HPET Timer MSI Route Register
|
||
|
///
|
||
|
typedef union {
|
||
|
struct {
|
||
|
UINT32 Value:32;
|
||
|
UINT32 Address:32;
|
||
|
} Bits;
|
||
|
UINT64 Uint64;
|
||
|
} HPET_TIMER_MSI_ROUTE_REGISTER;
|
||
|
|
||
|
#pragma pack()
|
||
|
|
||
|
#endif
|