Initialize ACPI Timer

This commit is contained in:
2024-06-04 21:04:09 +02:00
parent 7704e5d399
commit 7b29897efb
5 changed files with 69 additions and 1 deletions

View File

@@ -121,6 +121,9 @@ HlpInitializeAcpi(VOID)
return STATUS_NOT_FOUND;
}
/* Initialize ACPI timer */
HlpInitializeAcpiTimer();
/* Return success */
return STATUS_SUCCESS;
}
@@ -251,6 +254,47 @@ HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable)
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.
*

View File

@@ -15,6 +15,9 @@ LIST_ENTRY HlpAcpiCacheList;
/* ACPI Root System Description Pointer (RSDP) */
PACPI_RSDP HlpAcpiRsdp;
/* ACPI timer information */
ACPI_TIMER_INFO HlpAcpiTimerInfo;
/* Active processors count */
KAFFINITY HlpActiveProcessors;