Initialize ACPI Timer
This commit is contained in:
parent
7704e5d399
commit
7b29897efb
@ -59,6 +59,13 @@
|
|||||||
#define ACPI_WSMT_SIGNATURE 0x544D5357 /* Windows SMM Security Mitigation Table */
|
#define ACPI_WSMT_SIGNATURE 0x544D5357 /* Windows SMM Security Mitigation Table */
|
||||||
#define ACPI_XSDT_SIGNATURE 0x54445358 /* eXtended System Descriptor Table */
|
#define ACPI_XSDT_SIGNATURE 0x54445358 /* eXtended System Descriptor Table */
|
||||||
|
|
||||||
|
/* ACPI FADT flags masks */
|
||||||
|
#define ACPI_FADT_32BIT_TIMER (1<<8)
|
||||||
|
|
||||||
|
/* ACPI Timer bit masks */
|
||||||
|
#define ACPI_FADT_TIMER_32BIT 0x80000000
|
||||||
|
#define ACPI_FADT_TIMER_24BIT 0x00800000
|
||||||
|
|
||||||
/* Default serial port settings */
|
/* Default serial port settings */
|
||||||
#define COMPORT_CLOCK_RATE 0x1C200
|
#define COMPORT_CLOCK_RATE 0x1C200
|
||||||
#define COMPORT_WAIT_TIMEOUT 204800
|
#define COMPORT_WAIT_TIMEOUT 204800
|
||||||
@ -205,7 +212,7 @@ typedef struct _ACPI_DESCRIPTION_HEADER
|
|||||||
ULONG CreatorRev;
|
ULONG CreatorRev;
|
||||||
} ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
} ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
||||||
|
|
||||||
/* ACPI cache list */
|
/* ACPI cache list structure */
|
||||||
typedef struct _ACPI_CACHE_LIST
|
typedef struct _ACPI_CACHE_LIST
|
||||||
{
|
{
|
||||||
LIST_ENTRY ListEntry;
|
LIST_ENTRY ListEntry;
|
||||||
@ -300,6 +307,13 @@ typedef struct _ACPI_FADT
|
|||||||
GENERIC_ADDRESS SleepStatusReg;
|
GENERIC_ADDRESS SleepStatusReg;
|
||||||
} ACPI_FADT, *PACPI_FADT;
|
} ACPI_FADT, *PACPI_FADT;
|
||||||
|
|
||||||
|
/* ACPI Timer information structure */
|
||||||
|
typedef struct _ACPI_TIMER_INFO
|
||||||
|
{
|
||||||
|
ULONG TimerPort;
|
||||||
|
ULONG MsbMask;
|
||||||
|
} ACPI_TIMER_INFO, *PACPI_TIMER_INFO;
|
||||||
|
|
||||||
/* Serial (COM) port initial state */
|
/* Serial (COM) port initial state */
|
||||||
typedef struct _CPPORT
|
typedef struct _CPPORT
|
||||||
{
|
{
|
||||||
|
@ -121,6 +121,9 @@ HlpInitializeAcpi(VOID)
|
|||||||
return STATUS_NOT_FOUND;
|
return STATUS_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize ACPI timer */
|
||||||
|
HlpInitializeAcpiTimer();
|
||||||
|
|
||||||
/* Return success */
|
/* Return success */
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -251,6 +254,47 @@ HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable)
|
|||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the ACPI Timer.
|
||||||
|
*
|
||||||
|
* @return This routine returns a status code.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
XTSTATUS
|
||||||
|
HlpInitializeAcpiTimer(VOID)
|
||||||
|
{
|
||||||
|
PACPI_FADT Fadt;
|
||||||
|
XTSTATUS Status;
|
||||||
|
|
||||||
|
/* Get Fixed ACPI Description Table (FADT) */
|
||||||
|
Status = HlGetAcpiTable(ACPI_FADT_SIGNATURE, (PACPI_DESCRIPTION_HEADER*)&Fadt);
|
||||||
|
if(Status != STATUS_SUCCESS || !Fadt)
|
||||||
|
{
|
||||||
|
/* Failed to get FADT, return error */
|
||||||
|
return STATUS_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set ACPI timer port address */
|
||||||
|
HlpAcpiTimerInfo.TimerPort = Fadt->PmTmrBlkIoPort;
|
||||||
|
|
||||||
|
/* Determine whether 32-bit or 24-bit timer is used */
|
||||||
|
if(Fadt->Flags & ACPI_FADT_32BIT_TIMER)
|
||||||
|
{
|
||||||
|
/* 32-bit timer */
|
||||||
|
HlpAcpiTimerInfo.MsbMask = ACPI_FADT_TIMER_32BIT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* 24-bit timer */
|
||||||
|
HlpAcpiTimerInfo.MsbMask = ACPI_FADT_TIMER_24BIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return success */
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Queries kernel local ACPI cache in attempt to find a requested ACPI table.
|
* Queries kernel local ACPI cache in attempt to find a requested ACPI table.
|
||||||
*
|
*
|
||||||
|
@ -15,6 +15,9 @@ LIST_ENTRY HlpAcpiCacheList;
|
|||||||
/* ACPI Root System Description Pointer (RSDP) */
|
/* ACPI Root System Description Pointer (RSDP) */
|
||||||
PACPI_RSDP HlpAcpiRsdp;
|
PACPI_RSDP HlpAcpiRsdp;
|
||||||
|
|
||||||
|
/* ACPI timer information */
|
||||||
|
ACPI_TIMER_INFO HlpAcpiTimerInfo;
|
||||||
|
|
||||||
/* Active processors count */
|
/* Active processors count */
|
||||||
KAFFINITY HlpActiveProcessors;
|
KAFFINITY HlpActiveProcessors;
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ EXTERN LIST_ENTRY HlpAcpiCacheList;
|
|||||||
/* ACPI Root System Description Pointer (RSDP) */
|
/* ACPI Root System Description Pointer (RSDP) */
|
||||||
EXTERN PACPI_RSDP HlpAcpiRsdp;
|
EXTERN PACPI_RSDP HlpAcpiRsdp;
|
||||||
|
|
||||||
|
/* ACPI timer information */
|
||||||
|
EXTERN ACPI_TIMER_INFO HlpAcpiTimerInfo;
|
||||||
|
|
||||||
/* Active processors count */
|
/* Active processors count */
|
||||||
EXTERN KAFFINITY HlpActiveProcessors;
|
EXTERN KAFFINITY HlpActiveProcessors;
|
||||||
|
|
||||||
|
@ -95,6 +95,10 @@ XTAPI
|
|||||||
XTSTATUS
|
XTSTATUS
|
||||||
HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
|
||||||
|
|
||||||
|
XTAPI
|
||||||
|
XTSTATUS
|
||||||
|
HlpInitializeAcpiTimer(VOID);
|
||||||
|
|
||||||
XTAPI
|
XTAPI
|
||||||
XTSTATUS
|
XTSTATUS
|
||||||
HlpQueryAcpiCache(IN ULONG Signature,
|
HlpQueryAcpiCache(IN ULONG Signature,
|
||||||
|
Loading…
Reference in New Issue
Block a user