mirror of https://github.com/acidanthera/audk.git
133 lines
3.3 KiB
C
133 lines
3.3 KiB
C
/*++
|
|
|
|
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
|
|
|
|
|
This program and the accompanying materials are licensed and made available under
|
|
|
|
the terms and conditions of the BSD License that accompanies this distribution.
|
|
|
|
The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php.
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
|
|
Module Name:
|
|
|
|
AcpiPlatformHooks.h
|
|
|
|
Abstract:
|
|
|
|
This is an implementation of the ACPI platform driver. Requirements for
|
|
this driver are defined in the Tiano ACPI External Product Specification,
|
|
revision 0.3.6.
|
|
|
|
--*/
|
|
|
|
#ifndef _ACPI_PLATFORM_HOOKS_H_
|
|
#define _ACPI_PLATFORM_HOOKS_H_
|
|
|
|
//
|
|
// Statements that include other header files
|
|
//
|
|
|
|
#include <IndustryStandard/Acpi.h>
|
|
#include "Platform.h"
|
|
#include <Protocol/EnhancedSpeedstep.h>
|
|
|
|
#define AML_NAME_OP 0x08
|
|
#define AML_METHOD_OP 0x14
|
|
#define AML_OPREGION_OP 0x80
|
|
#define AML_PACKAGE_OP 0x12 // Package operator.
|
|
#define AML_NAME_PREFIX_SIZE 0x06
|
|
#define AML_NAME_DWORD_SIZE 0x0C
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct {
|
|
UINT8 AcpiProcessorId;
|
|
UINT8 ApicId;
|
|
UINT16 Flags;
|
|
} EFI_CPU_ID_MAP;
|
|
|
|
typedef struct {
|
|
UINT8 StartByte;
|
|
UINT32 NameStr;
|
|
UINT8 Size;
|
|
UINT32 Value;
|
|
} EFI_ACPI_NAMEPACK_DWORD;
|
|
|
|
typedef struct {
|
|
UINT8 StartByte;
|
|
UINT32 NameStr;
|
|
UINT8 OpCode;
|
|
UINT16 Size; // Hardcode to 16bit width because the table we use is fixed size
|
|
UINT8 NumEntries;
|
|
} EFI_ACPI_NAME_COMMAND;
|
|
|
|
typedef struct {
|
|
UINT8 PackageOp;
|
|
UINT8 PkgLeadByte;
|
|
UINT8 NumEntries;
|
|
UINT8 DwordPrefix0;
|
|
UINT32 CoreFreq;
|
|
UINT8 DwordPrefix1;
|
|
UINT32 Power;
|
|
UINT8 DwordPrefix2;
|
|
UINT32 TransLatency;
|
|
UINT8 DwordPrefix3;
|
|
UINT32 BMLatency;
|
|
UINT8 DwordPrefix4;
|
|
UINT32 Control;
|
|
UINT8 DwordPrefix5;
|
|
UINT32 Status;
|
|
} EFI_PSS_PACKAGE;
|
|
|
|
typedef struct {
|
|
UINT8 PackageOp;
|
|
UINT8 PkgLeadByte;
|
|
UINT8 NumEntries;
|
|
UINT8 BytePrefix0;
|
|
UINT8 Entries;
|
|
UINT8 BytePrefix1;
|
|
UINT8 Revision;
|
|
UINT8 BytePrefix2;
|
|
UINT8 Domain;
|
|
UINT8 BytePrefix3;
|
|
UINT8 Coordinate;
|
|
UINT8 BytePrefix4;
|
|
UINT8 ProcNumber;
|
|
} EFI_PSD_PACKAGE;
|
|
|
|
#pragma pack()
|
|
|
|
#define ACPI_NAME_COMMAND_FROM_NAME_STR(a) BASE_CR (a, EFI_ACPI_NAME_COMMAND, NameStr)
|
|
#define ACPI_NAME_COMMAND_FROM_NAMEPACK_STR(a) BASE_CR (a, EFI_ACPI_NAMEPACK_DWORD, NameStr)
|
|
|
|
EFI_STATUS
|
|
PlatformHookInit (
|
|
VOID
|
|
);
|
|
|
|
|
|
EFI_STATUS
|
|
PatchDsdtTable (
|
|
IN OUT EFI_ACPI_DESCRIPTION_HEADER *TableHeader
|
|
);
|
|
|
|
EFI_STATUS
|
|
PatchGv3SsdtTable (
|
|
IN OUT EFI_ACPI_DESCRIPTION_HEADER *Table
|
|
);
|
|
|
|
EFI_STATUS
|
|
PatchErstTable (
|
|
IN OUT EFI_ACPI_DESCRIPTION_HEADER *Table
|
|
);
|
|
|
|
EFI_STATUS
|
|
AppendCpuMapTableEntry (
|
|
IN EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE *AcpiLocalApic
|
|
);
|
|
|
|
#endif
|