alder_lake_bios/Insyde/InsydeOemServicesPkg/Include/Library/DxeOemSvcKernelLib.h

575 lines
18 KiB
C

/** @file
Definition for Oem Services Default Lib.
;******************************************************************************
;* Copyright (c) 2012 - 2019, Insyde Software Corporation. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _DXE_OEM_SVC_KERNEL_LIB_H_
#define _DXE_OEM_SVC_KERNEL_LIB_H_
#include <Uefi.h>
#include <DmiStringInformation.h>
#include <IndustryStandard/Acpi.h>
#include <IndustryStandard/Oa3_0.h>
#include <IndustryStandard/SLP2_0.h>
#include <Protocol/DataHubRecordPolicy.h>
#include <Protocol/MsioIsaAcpi.h>
#include <IndustryStandard/LegacyBiosMpTable.h>
#include <Protocol/LegacyBios.h>
#include <Library/BadgingSupportLib.h>
#include <Protocol/Smbios.h>
#include <BeepStatusCode.h>
#include <Protocol/HddPasswordService.h>
#include <Guid/HddPasswordVariable.h>
#include <Guid/H2OCp.h>
//
// data type definitions
//
#define NULL_ENTRY 0xff
#define DEVICE_ID_DONT_CARE 0xFFFF
#define WPBT_INPUT_ARG_RESERVED_CHARS 100
#pragma pack (1)
typedef enum {
UiNoOperation,
UiDefault,
UiDiscard,
UiSelect,
UiUp,
UiDown,
UiLeft,
UiRight,
UiReset,
UiSave,
UiSaveCustom,
UiDefaultCustom,
UiSaveAndExit,
UiPrevious,
UiPageUp,
UiPageDown,
UiJumpMenu,
UiShowHelpScreen,
UiMaxOperation
} UI_SCREEN_OPERATION;
typedef struct {
UINT16 ScanCode;
CHAR16 UnicodeChar;
UI_SCREEN_OPERATION ScreenOperation;
} SCAN_CODE_TO_SCREEN_OPERATION;
typedef struct {
UINT16 VendorId;
UINT16 DeviceId;
} PCI_SKIP_TABLE;
typedef struct {
EFI_GUID DisplayEngineGuid;
UINT32 HorizontalResolution;
UINT32 VerticalResolution;
} H2O_DISPLAY_ENGINE_RESOLUTION;
typedef struct {
UINT32 LogoResolutionX;
UINT32 LogoResolutionY;
UINT32 ScuResolutionX;
UINT32 ScuResolutionY;
//H2O_DISPLAY_ENGINE_RESOLUTION DisplayEngineGuid[];
} OEM_LOGO_RESOLUTION_DEFINITION;
typedef struct {
UINT8 BridgeBus;
UINT8 BridgeDev;
UINT8 BridgeFunc;
EFI_LEGACY_MP_TABLE_ENTRY_IO_INT SlotIrqTable;
} MP_TABLE_ENTRY_IO_INT_SLOT;
typedef enum {
PCI_OPROM = 0x01,
SYSTEM_ROM,
SYSTEM_OEM_INT_ROM,
SERVICE_ROM,
BIS_LOADER,
TPM_ROM,
AMT_ROM,
USB_OPROM,
MAX_NUM = 0xFF
} OPROM_TYPE;
typedef struct {
EFI_GUID FileName;
UINT16 VendorId;
UINT16 DeviceId;
} PCI_OPTION_ROM_TABLE;
typedef struct {
EFI_GUID FileName;
BOOLEAN Valid;
BOOLEAN OptionRomSpace;
UINTN OpRomType;
} SERVICE_ROM_TABLE;
typedef struct {
EFI_GUID FileName;
UINTN Valid;
UINTN OpRomType;
} SYSTEM_ROM_TABLE;
typedef struct {
EFI_GUID FileName;
UINT16 VendorId;
UINT16 ProductId;
} USB_OPROM_TABLE;
typedef struct {
UINT16 PrepareLegacyTableBeforeUEFIBoot :1; // 0: Disable ; 1: Enable
UINT16 DisableKeyboardReset :1; // 0: Enable KeyboardReset ; 1: Disable KeyboardReset
UINT16 DisableKeyboardBeep :1; // 0: Enable KeyboardBeep ; 1: Disable KeyboardBeep
UINT16 LegacyAutoBootRetry :1; // 0: Disable AutoBootRetry ; 1: Enable AutoBootRetry
UINT16 ODDImageDetectAfterINT19 :1; // 0: Detect image before INT19 ; 1: Detect image after INT19
UINT16 SET_VGAMODE_BEFORE_INT19 :1; // 0: Disable ; 1: Set Vga mode before INT19
UINT16 ENABLE_A20_BEFORE_INT19 :1; // 0: Disable ; 1: Enable A20 before INT19
UINT16 A20_GATE_SUPPORT :1; // 0: supported on keyboard controller ; 1: supported with bit 1 of I/O port 92h
UINT16 MonitorKey_With_OPROM :1; // 0: Disable MonitorKey during dispatch OPROM ; 1: Enable MonitorKey during dispatch OPROM
UINT16 PauseKeySupport :1; // 0: Enable Pause Key ; 1: Disable Pause Key
UINT16 SMBIOS_DATA_LOCATE :1; // 0: Locate at E segment ; 1: Locate at F segment
UINT16 Pmm_High_Memory_Size :3; // if the value is 0: 4 MB (default)
// if the value is 1: 2 to the (4 + 1) = 32 MB
// if the value is 2: 2 to the (4 + 2) = 64 MB
// if the value is 3: 2 to the (4 + 3) = 128 MB
// if the value is 4: 2 to the (4 + 4) = 256 MB
// if the value is 5: 2 to the (4 + 5) = 512 MB
// if the value is 6: 2 to the (4 + 6) = 1024 MB
// if the value is 7: 2 to the (4 + 7) = 2048 MB
UINT16 Rsvd :2;
} CSM16_SWITCH;
typedef union _CSM16_REFER_SWITCH {
CSM16_SWITCH Config;
UINT16 CONFIG;
} CSM16_OEM_CONFIG;
#pragma pack ()
typedef struct {
UINT32 Attributes;
UINTN EdidSize;
UINT8 *EdidData;
EFI_DEVICE_PATH_PROTOCOL *DisplayDevPath;
} OEM_GET_EDID_OVERRIDE_DEFINITION;
EFI_STATUS
typedef
( EFIAPI *OEM_SSID_SVID_FUNCTION ) (
IN UINT8 Bus,
IN UINT8 Dev,
IN UINT8 Func,
IN OUT UINT32 *SsidSvid
);
typedef struct {
UINT16 VendorId;
UINT16 DeviceId;
OEM_SSID_SVID_FUNCTION SpecialSsidSvidFunction;
} OEM_SSID_SVID_TABLE;
//
// OemSvc function prototypes
//
EFI_STATUS
OemSvcBootDisplayDeviceReplace (
IN OUT BOOLEAN *SkipOriginalCode
);
EFI_STATUS
OemSvcCalculateWriteCmosChecksum (
VOID
);
EFI_STATUS
OemSvcCheckPasswordFailCallBack (
VOID
);
EFI_STATUS
OemSvcCsm16ReferSwitch (
IN OUT UINT16 *CSM16OemSwitchPtr
);
EFI_STATUS
OemSvcDisplayLogo (
IN OUT BOOLEAN *QuietBoot
);
EFI_STATUS
OemSvcGetHotplugBridgeInfo (
OUT HOT_PLUG_BRIDGE_INFO **HotPlugBridgeInfoTable
);
EFI_STATUS
OemSvcGetMaxCheckPasswordCount (
IN OUT UINTN *ReportPasswordCount
);
EFI_STATUS
OemSvcGetOa30MsdmData (
IN OUT EFI_ACPI_MSDM_DATA_STRUCTURE *MsdmData
);
EFI_STATUS
OemSvcGetSlp20PubkeyAndMarkerRom (
IN OUT EFI_ACPI_OEM_PUBLIC_KEY_STRUCTURE *PublicKey,
IN OUT BOOLEAN *UpdatedPublickey,
IN OUT EFI_ACPI_SLP_MARKER_STRUCTURE *SlpMarker,
IN OUT BOOLEAN *UpdatedMarker
);
EFI_STATUS
OemSvcUpdateSsidSvidInfo (
IN UINT8 Bus,
IN UINT8 Dev,
IN UINT8 Func,
IN UINT16 VendorId,
IN UINT16 DeviceId,
IN UINT16 ClassCode,
OUT UINT32 *SsidSvid
);
EFI_STATUS
OemSvcInstallBootMangerKeyTable (
OUT UINTN *ScanCodeToOperationCount,
OUT SCAN_CODE_TO_SCREEN_OPERATION **mScanCodeToOperation
);
EFI_STATUS
OemSvcInstallLegacyBiosOemSlp (
OUT UINTN *SlpLength,
OUT UINTN *SlpAddress
);
EFI_STATUS
OemSvcInstallOptionRomTable (
IN UINT8 RomType,
OUT VOID **mOptionRomTable
);
EFI_STATUS
OemSvcInstallPciRomSwitchTextMode (
IN OUT EFI_HANDLE DeviceHandle,
IN OUT BOOLEAN *ForceSwitchTextMode
);
EFI_STATUS
OemSvcInstallPciSkipTable (
OUT UINTN *PciSkipTableCount,
OUT PCI_SKIP_TABLE **PciSkipTable
);
EFI_STATUS
OemSvcDxeInstallPnpGpnvTable (
OUT UINTN *UpdateableGpnvCount,
OUT OEM_GPNV_MAP **GetOemGPNVMap
);
EFI_STATUS
OemSvcDxeInstallPnpStringTable (
OUT UINTN *UpdateableStringCount,
OUT DMI_UPDATABLE_STRING **mUpdatableStrings
);
EFI_STATUS
OemSvcInstallPostKeyTable (
IN UINTN KeyDetected,
IN UINT16 ScanCode,
OUT UINTN *PostOperation
);
EFI_STATUS
OemSvcSetPirqPriority (
IN OUT UINT8 **SetPIrqPriority
);
EFI_STATUS
OemSvcLoadDefaultSetupMenu (
OUT BOOLEAN *LoadDefaultPtr
);
EFI_STATUS
OemSvcLogoResolution (
IN OUT OEM_LOGO_RESOLUTION_DEFINITION **OemLogoResolutionTable
);
EFI_STATUS
OemSvcUpdateLogo (
IN OUT UINT8 *Id,
IN OUT INT16 *PosX,
IN OUT INT16 *PosY,
IN OUT UINT8 *OriginX,
IN OUT UINT8 *OriginY,
IN OUT UINT8 *ImageType,
IN OUT UINT8 **ImageData,
IN OUT UINT32 *ImageSize
);
EFI_STATUS
OemSvcGetLogo (
IN UINT8 Id,
IN UINT32 Index,
OUT INT16 *PosX,
OUT INT16 *PosY,
OUT UINT8 *OriginX,
OUT UINT8 *OriginY,
OUT UINT8 *ImageType,
OUT UINT8 **ImageData,
OUT UINT32 *ImageSize
);
EFI_STATUS
OemSvcUpdateDefaultBootList (
IN OUT LIST_ENTRY **BootList
);
EFI_STATUS
OemSvcUpdateFormLen (
IN UINT8 *Data,
IN UINT8 KeepCurRoot,
IN OUT CHAR8 *PromptBlockWidth,
IN OUT CHAR8 *OptionBlockWidth,
IN OUT CHAR8 *HelpBlockWidth
);
EFI_STATUS
OemSvcPasswordEntryCallBack (
VOID
);
EFI_STATUS
OemSvcPasswordInputFilter (
IN OUT EFI_KEY_DATA *EfiKeyData
);
EFI_STATUS
OemSvcPrepareInstallMpTable (
OUT UINTN *CharNumOfOemIdString,
OUT CHAR8 **pOemIdStringEntry,
OUT UINTN *CharNumOfProductIdString,
OUT CHAR8 **pProductIdStringEntry,
OUT UINTN *NumOfIoApic,
OUT EFI_LEGACY_MP_TABLE_ENTRY_IOAPIC **pIoApicEntry,
OUT UINTN *NumOfIoApicIntLegacy,
OUT EFI_LEGACY_MP_TABLE_ENTRY_IO_INT **pIoApicIntLegacyEntry,
OUT UINTN *NumOfIoApicInt,
OUT EFI_LEGACY_MP_TABLE_ENTRY_IO_INT **pIoApicIntEntry,
OUT UINTN *NumOfIoApicIntSlot,
OUT MP_TABLE_ENTRY_IO_INT_SLOT **pIoApicIntSlotEntry,
OUT UINTN *NumOfLocalApicInt,
OUT EFI_LEGACY_MP_TABLE_ENTRY_LOCAL_INT **pLocalApicIntEntry
);
EFI_STATUS
OemSvcSkipLoadPciOptionRom (
IN UINTN Segment,
IN UINTN Bus,
IN UINTN Device,
IN UINTN Function,
IN UINT16 VendorId,
IN UINT16 DeviceId,
OUT BOOLEAN *SkipGetPciRom
);
EFI_STATUS
OemSvcSkipLoadPciOptionRom2 (
IN UINTN Segment,
IN UINT8 Bus,
IN UINT8 Device,
IN UINT8 Function,
IN UINT16 VendorId,
IN UINT16 DeviceId,
IN VOID *RomImage,
IN UINT32 RomSize,
OUT BOOLEAN *SkipGetPciRom
);
EFI_STATUS
OemSvcUnSkipPciDevice (
IN UINT8 Bus,
IN UINT8 Device,
IN UINT8 Function,
IN UINT16 VendorId,
IN UINT16 DeviceId
);
EFI_STATUS
OemSvcUpdateBbsTable (
IN OUT EFI_TO_COMPATIBILITY16_BOOT_TABLE *EfiToLegacy16BootTable,
IN OUT BBS_TABLE *BbsTable
);
EFI_STATUS
OemSvcVariableForReclaimFailTable (
IN OUT PRESERVED_VARIABLE_TABLE **TablePtr,
IN OUT UINT32 *TableSize
);
EFI_STATUS
OemSvcCustomizeWpbtTable (
IN OUT EFI_GUID *FileGuid,
IN OUT CHAR16 *InputArg
);
EFI_STATUS
OemSvcUpdateAcpiFacsHardwareSignature (
IN OUT UINT32 *HardwareSignature
);
EFI_STATUS
OemSvcGetEdidOverride (
IN OUT OEM_GET_EDID_OVERRIDE_DEFINITION *GetEdidOverride
);
EFI_STATUS
OemSvcChangeDefaultLogoImage (
IN OUT EFI_OEM_BADGING_LOGO_DATA *Logo,
IN OUT UINT8 **ImageData,
IN OUT UINTN *ImageSize
);
EFI_STATUS
OemSvcChangeVbiosBootDisplay (
VOID
);
EFI_STATUS
OemSvcUpdateCRPolicy (
IN OUT VOID *CRPolicy
);
EFI_STATUS
OemSvcDxeGetSmbiosReplaceString (
IN EFI_SMBIOS_TYPE Type,
IN UINT8 FieldOffset,
OUT UINTN *StrLength,
OUT CHAR8 **String
);
EFI_STATUS
OemSvcDxeUpdateSmbiosRecord (
IN OUT EFI_SMBIOS_TABLE_HEADER *RecordBuffer
);
EFI_STATUS
OemSvcTpmUserConfirmDialog (
IN UINT8 TpmPpCommand,
IN UINT8 TpmVersion,
OUT BOOLEAN *Confirmed
);
EFI_STATUS
OemSvcAdjustNavigationMenu (
IN OUT EFI_HII_HANDLE *HiiHandle,
IN OUT UINTN *HiiHandleCount,
IN OUT EFI_GUID *FormSetGuid
);
EFI_STATUS
OemSvcUpdateLinkFormSetIds (
IN CONST EFI_GUID *FormsetGuid,
IN OUT UINT32 *FormsetCount,
IN OUT EFI_HII_HANDLE **HiiHandleList,
IN OUT EFI_GUID **FormsetGuidList,
IN OUT UINT32 **EntryFormIdList
);
EFI_STATUS
OemSvcUpdateStatusCodeBeep (
OUT STATUS_CODE_BEEP_ENTRY **StatusCodeBeepList,
OUT BEEP_TYPE **BeepTypeList
);
EFI_STATUS
OemSvcDxeHddPasswordUnlockAllHdd (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfoArray,
IN UINTN NumOfHdd,
IN VOID *HddPasswordTablePtr,
IN UINTN HddPasswordTableSize
);
EFI_STATUS
OemSvcDxeHddPasswordStringProcess (
IN UINT8 PasswordType,
IN VOID *RawPasswordPtr,
IN UINTN RawPasswordLength,
OUT UINT8 **PasswordPtr,
OUT UINTN *PasswordLength
);
EFI_STATUS
OemSvcDxeHddSetPassword (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfo,
IN BOOLEAN UserOrMaster,
IN UINT8 *PasswordPtr,
IN UINTN PasswordLength
);
EFI_STATUS
OemSvcDxeHddUnlockPassword (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfo,
IN BOOLEAN UserOrMaster,
IN UINT8 *PasswordPtr,
IN UINTN PasswordLength
);
EFI_STATUS
OemSvcDxeHddDisablePassword (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfo,
IN BOOLEAN UserOrMaster,
IN UINT8 *PasswordPtr,
IN UINTN PasswordLength
);
EFI_STATUS
OemSvcDxeHddUpdateSecurityStatus (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfo,
IN UINTN Index
);
EFI_STATUS
OemSvcDxeHddResetSecurityStatus (
IN EFI_HDD_PASSWORD_SERVICE_PROTOCOL *HddPasswordService,
IN HDD_PASSWORD_HDD_INFO *HddInfo,
IN VOID *HddPasswordTablePtr,
IN UINTN HddPasswordTableSize
);
EFI_STATUS
OemSvcDxeUpdateDescriptionOfBootOption (
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
IN CONST EFI_DEVICE_PATH_PROTOCOL *FilePath OPTIONAL,
IN CONST BBS_TABLE *BbsTable OPTIONAL,
IN OUT CHAR16 **Description
);
#endif