/** @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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include // // 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