alder_lake_bios/Oem/L05/FeatureCommon/InsydeL05ModulePkg/Include/L05Config.h

736 lines
32 KiB
C

/** @file
;******************************************************************************
;* Copyright (c) 2012 - 2019, Insyde Software Corp. 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 _L05_CONFIG_H_
#define _L05_CONFIG_H_
#pragma pack(1)
//================================================================================
// L05 Feature Start
//================================================================================
//
// Current Spec version: Lenovo China Minimum BIOS Spec V1.39
// Please modify the LATEST_L05_SPEC_VERSION when update spec.
//
//[-start-211224-Ching000021-modify]//
#define LATEST_L05_SPEC_VERSION 140
//[-end-211224-Ching000021-modify]//
#define L05_INVALID_VALUE (-1)
//================================================================================
// L05 Feature End
//================================================================================
//================================================================================
// L05 Logo Start
//================================================================================
//_Start_L05_LOGO_
typedef enum {
L05BgrtLogo = 0,
L05MaxLogoType
} EFI_L05_LOGO_TYPE;
typedef struct _L05_LOGO_RESOLUTION_TABLE {
UINT32 X;// Location X
UINT32 Y;// Location Y
EFI_GUID Guid;// File Guid
} L05_LOGO_RESOLUTION_TABLE;
#define EFI_OEM_BADGING_FILENAME_CUSTOMER_LOGO_1 \
{ \
0x9415b75c, 0xe1b8, 0x4e2a, 0x98, 0x8d, 0xdd, 0x39, 0x9b, 0x9a, 0x98, 0x5e \
}
#define EFI_OEM_BADGING_FILENAME_CUSTOMER_LOGO_2 \
{ \
0xc3c89ea3, 0x58a6, 0x43ed, 0xb6, 0x85, 0xe, 0xd5, 0x35, 0xb2, 0xe3, 0x6f \
}
#define EFI_OEM_BADGING_FILENAME_CUSTOMER_LOGO_3 \
{ \
0x4cd76a24, 0xc25b, 0x4e60, 0x9b, 0x4f, 0x25, 0xe9, 0x6b, 0x9e, 0xbf, 0xf6 \
}
#define EFI_OEM_BADGING_FILENAME_ENGYSTAR \
{ \
0x846192c0, 0x9728, 0x4614, 0xbc, 0x38, 0x0b, 0x53, 0xb6, 0x09, 0x2f, 0xd2 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_768x1024 \
{ \
0x9DF7F118, 0xBA9F, 0x43a7, 0xAD, 0xE4, 0xB9, 0xA1, 0x1B, 0x6C, 0x3A, 0x02 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_800x1280 \
{ \
0xC9AC7314, 0xC250, 0x4AEC, 0x8E, 0x34, 0xB0, 0x49, 0x0A, 0x75, 0x66, 0x3C \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_2160x1440 \
{ \
0x0F85BFDB, 0xB54B, 0x4C5E, 0x85, 0xE6, 0x6A, 0x94, 0x19, 0xF8, 0x14, 0xF6 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1024x600 \
{ \
0x15b009cf, 0xa818, 0x4927, 0xa0, 0xed, 0x2b, 0x4f, 0x5, 0x7e, 0xa5, 0xa8 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1280x768 \
{ \
0XEC5A76B5, 0XEB48, 0X4321, 0XB8, 0XDF, 0XD2, 0X43, 0X7F, 0X4F, 0X46, 0X41 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1280x800 \
{ \
0x00F5ADCE, 0xFF3A, 0x498B, 0x91, 0xD8, 0x67, 0x92, 0x50, 0xB4, 0x08, 0x49 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1366x768 \
{ \
0xFCE82B05, 0x526C, 0x436F, 0xAE, 0x1A, 0x93, 0xAE, 0x75, 0x7F, 0x3E, 0x43 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1600x900 \
{ \
0xF333BD43, 0x5C62, 0x4F93, 0xBB, 0x9D, 0x0E, 0x3A, 0xC3, 0x83, 0x91, 0x7B \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1920x1080 \
{ \
0x156A8FFE, 0x62DB, 0x4FF3, 0x82, 0xAD, 0x2E, 0xBD, 0x8A, 0x3E, 0x3D, 0xF7 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_1920x1200 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE2 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_2880x1800 \
{ \
0x7ED15186, 0xB06C, 0x4CEF, 0x92, 0xDA, 0x6E, 0x02, 0x90, 0x43, 0x69, 0xF3 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_3072x1920 \
{ \
0xC57A67F9, 0xCD1F, 0x4234, 0xBB, 0xE9, 0x7F, 0x2D, 0x9F, 0xED, 0x8C, 0xA4 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_3200x1800 \
{ \
0x742EC58A, 0x17FD, 0x414E, 0x8E, 0xA3, 0x2A, 0x4F, 0x52, 0xC8, 0x3A, 0xF4 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_3480x2160 \
{ \
0x82331078, 0xD0A4, 0x4004, 0x92, 0x32, 0xD7, 0x36, 0x81, 0x9F, 0xF4, 0x7E \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_3840x2160 \
{ \
0x1F56B2F9, 0x6E6D, 0x4014, 0xBF, 0xD4, 0x37, 0xC9, 0xE5, 0xD3, 0x98, 0xF1 \
}
//[-start-210702-Dongxu0006-add]//
//[-start-211001-Ching000008-add]//
#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77014_SUPPORT) || defined(S77013_SUPPORT) || defined(S77014IAH_SUPPORT)
//[-end-211001-Ching000008-add]//
#define EFI_OEM_BADGING_FILENAME_JPEG_L05_1920x1200 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE3 \
}
#define EFI_OEM_BADGING_FILENAME_JPEG_L05_2880x1800 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE4 \
}
#define EFI_OEM_BADGING_FILENAME_JPEG_L05_3840x2400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE5 \
}
//[-start-210830-STORM1110-modify]//
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_2240x1400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE6 \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_2560x1600 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE7 \
}
#endif
//#[-start-211026-Dongxu0025-add]## yoga logo for C970
#if defined(C970_SUPPORT)
#define EFI_OEM_BADGING_YOGA_JPEG_L05_1920x1200 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE8 \
}
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2880x1800 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE9 \
}
#define EFI_OEM_BADGING_YOGA_JPEG_L05_3840x2400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xEA \
}
#endif
//#[-end-211026-Dongxu0025-add]## yoga logo for C970
//#[-start-211027-Dongxu0026-add]##
#if defined(C770_SUPPORT)
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2240x1400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE8 \
}
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2880x1800 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xE9 \
}
#endif
//#[-end-211027-Dongxu0026-add]##
//[-start-21111-TAMT000031-add]//
#if defined(S77014_SUPPORT) || defined(S77014IAH_SUPPORT)
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2240x1400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xEB \
}
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2880x1800 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xEC \
}
#endif
//[-start-220412-Ching000044-modify]//
//[-start-220422-Ching000046-modify]//
#if defined(S77014IAH_SUPPORT) || defined(S77014_SUPPORT)
#define EFI_OEM_BADGING_FILENAME_XIAOXIN_L05_2240x1400 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xEE \
}
#define EFI_OEM_BADGING_FILENAME_XIAOXIN_L05_2880x1800 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xEF \
}
#endif
//[-end-220422-Ching000046-modify]//
//[-end-220412-Ching000044-modify]//
#if defined(S77013_SUPPORT)
#define EFI_OEM_BADGING_YOGA_JPEG_L05_2560x1600 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xED \
}
#endif
//[-end-21111-TAMT000031-add]//
//[-end-210830-STORM1110-modify]//
//[-end-210702-Dongxu0006-add]//
//[-start-210906-QINGLIN0043-add]//
#if defined(S570_SUPPORT)
#define EFI_OEM_BADGING_FILENAME_XIAOXIN_L05_1920x1080 \
{ \
0x12050FC0, 0xF57F, 0x4CF4, 0xAB, 0xED, 0xEB, 0xDF, 0xED, 0x4C, 0x31, 0xF8 \
}
#endif
//[-end-210906-QINGLIN0043-add]//
#define EFI_OEM_BADGING_FILENAME_BGRT_L05_3840x2400 \
{ \
0x4E4F5299, 0x915C, 0x42CF, 0x8D, 0x12, 0xCB, 0xB0, 0xD9, 0x5C, 0x26, 0x2D \
}
#define EFI_OEM_BADGING_FILENAME_BGRT_IP_640x360 \
{ \
0x72C83F78, 0x0F54, 0x400B, 0xBD, 0x61, 0x24, 0x24, 0x7E, 0xD5, 0x9E, 0x54 \
}
//_End_L05_LOGO_
//================================================================================
// L05 Logo End
//================================================================================
//================================================================================
// Acpi Table Id Start
//================================================================================
#ifdef L05_ACPI_TABLE_ID_ENABLE
#define EFI_L05_ACPI_OEM_ID SIGNATURE_64 ('L','E','N','O','V','O',' ',' ') // OEMID 6 bytes long
#define EFI_L05_ACPI_OEM_ID_MASK 0x0000FFFFFFFFFFFF
#define EFI_L05_ACPI_OEM_TABLE_ID SIGNATURE_64 ('C','B','-','0','1',' ',' ',' ') // OEM table id 8 bytes long
#define EFI_L05_ACPI_OEM_TABLE_ID_MASK 0x000000FFFFFFFFFF
#endif // #ifdef L05_ACPI_TABLE_ID_ENABLE
//================================================================================
// Acpi Table Id End
//================================================================================
//================================================================================
// SLP1.0 Start
//================================================================================
//_Start_L05_SLP_STRING_
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
#define L05_SLP10_STRING { 'L', 'E', 'G', 'E', 'N', 'D', ' ', 'D', 'r', 'a', 'g', 'o', 'n', 0x00, 0x00, 0x00 }
#define L05_SLP10_STRING2 { 'L', 'E', 'N', 'O', 'V', 'O', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
//_End_L05_SLP_STRING_
//================================================================================
// SLP1.0 End
//================================================================================
//================================================================================
// HDD Password Start
//================================================================================
#define EFI_L05_SYSTEM_PASSWORD_MAX_RETRY 0x03
#define EFI_L05_HDD_PASSWORD_MAX_RETRY 0x02
//================================================================================
// HDD Password End
//================================================================================
//================================================================================
// SetupMenu Start
//================================================================================
typedef struct {
UINT8 Bus;
UINT8 Device;
UINT8 Function;
UINT8 PortNumber;
} EFI_L05_SATA_HDD_ODD_LOCATION;
#define EFI_L05_BOOT_DEVICE_NAME_MAX_SIZE 0x20
#define EFI_L05_BOOT_DEVICE_NAME_TABLE_MAX 0x20
typedef struct _EFI_L05_BOOT_DEVICE_NAME {
UINT16 DeviceType;
CHAR16 NameString[EFI_L05_BOOT_DEVICE_NAME_MAX_SIZE];
} EFI_L05_BOOT_DEVICE_NAME;
#define L05_BOOT_TYPE_BBS_FIRST_SATA_HDD ((0x01) * 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_BBS_SECOND_SATA_HDD ((0x02) * 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_BBS_USB_HDD ((BBS_HARDDISK) * 256 + BBS_USB)
#define L05_BOOT_TYPE_BBS_USB_CDROM ((BBS_CDROM) * 256 + BBS_USB)
#define L05_BOOT_TYPE_BBS_USB_FLOPPY ((BBS_FLOPPY) * 256 + BBS_USB)
#define L05_BOOT_TYPE_BBS_USB_MEMORY 0x07
#define L05_BOOT_TYPE_EFI_FIRST_SATA_HDD ((0xE0 + 0x01) * 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_EFI_SECOND_SATA_HDD ((0xE0 + 0x02) * 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_EFI_HARDDISK ((0xE0)* 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_EFI_USB_HDD ((0xE0 + BBS_HARDDISK) * 256 + BBS_USB)
#define L05_BOOT_TYPE_EFI_USB_CDROM ((0xE0 + BBS_CDROM) * 256 + BBS_USB)
#define L05_BOOT_TYPE_EFI_CDROM ((0xE0)* 256 + BBS_CDROM)
#define L05_BOOT_TYPE_EFI_FLOPPY ((0xE0)* 256 + BBS_FLOPPY)
#define L05_BOOT_TYPE_EFI_USB_FLOPPY ((0xE0 + BBS_FLOPPY) * 256 + BBS_USB)
#define L05_BOOT_TYPE_EFI_USB_MEMORY ((0xE0 + L05_BOOT_TYPE_BBS_USB_MEMORY) * 256 + BBS_USB)
#define L05_BOOT_TYPE_EFI_NETWORK ((0xE0)* 256 + BBS_EMBED_NETWORK)
#define L05_BOOT_TYPE_EFI_NETWORK_WIFI ((0xE0 + 0x0A) * 256 + BBS_EMBED_NETWORK)
#define L05_BOOT_TYPE_EFI_LENOVO_CLOUD ((0xE0 + 0x08) * 256 + BBS_EMBED_NETWORK)
#define L05_BOOT_TYPE_EFI_LENOVO_CLOUD_WIFI ((0xE0 + 0x09) * 256 + BBS_EMBED_NETWORK)
#define L05_BOOT_TYPE_NOVO_RECOVERY_SYSTEM ((0xE0 + 0x05) * 256 + BBS_HARDDISK)
#define L05_BOOT_TYPE_EFI_PORTABLE_DEVICE ((0xE0 + 0x08) * 256 + BBS_USB)
#define L05_BOOT_TYPE_EFI_UNKNOWN 0xE0FF
#define L05_BOOT_TYPE_NON_EFI 0xE0BB
#define L05_BOOT_TYPE_END_OF_LIST 0xFFFF
//
// For PXE Combine Feature
//
// Please make sure the PXE boot option description string at BuildNetworkBootOption function in BdsBoot.c.
// H2O Rev5.2 kernel PXE boot option description string is "EFI PXE %d for IPv%d (%02x-%02x-%02x-%02x-%02x-%02x)"
// L05_COMPARE_NETWORK_STRING should be follow kernel PXE boot option description to set to "EFI PXE"
//
#define L05_PXE_NETWROK_STRING L"EFI PXE Network"
#define L05_NETWORK_OPTION_STRING L"EFI PXE Network (%02x-%02x-%02x-%02x-%02x-%02x)"
#define L05_NETWORK_DUMMY_OPTION_STRING L"EFI PXE Network (88-88-88-88-87-88)"
#define L05_PXE_IPV4_BOOT_FAIL_STRING L"EFI PXE 0 for IPv4 (88-88-88-88-87-88)"
#define L05_PXE_IPV6_BOOT_FAIL_STRING L"EFI PXE 0 for IPv6 (88-88-88-88-87-88)"
#define L05_COMPARE_NETWORK_STRING L"EFI PXE"
#define L05_MAX_SUPPORT_PXE_DEVICE 3
//
// For HTTP Combine Feature
//
#define L05_CLOUD_SERVICES_STRING L"Lenovo Cloud Services"
#define L05_MAX_SUPPORT_HTTP_DEVICE 3
//
// For Display Dialog
//
#define L05_DIALOG_PAD_FRONT_SPACE_WIDTH 1
#define L05_DIALOG_PAD_LAST_SPACE_WIDTH 4
#define L05_PASSWORD_DIALOG_PAD_FRONT_SPACE_WIDTH 1
#define L05_PASSWORD_DIALOG_PAD_MIDDLE_SPACE_WIDTH 2
#define L05_PASSWORD_DIALOG_PAD_LAST_SPACE_WIDTH 4
//
// L05_SECURITY_ERASE
//
#define L05_SECURITY_ERASE_PERCENTAGE_FORMAT_STRING L"%3d%%"
#define L05_SECURITY_ERASE_DEFAULT_TIME_SECOND 30
#define L05_SECURITY_ERASE_PROGRESS_RING_MICROSECOND 250
#define L05_GET_NUMBER_LENGTH(Number, NumberSize) do { \
UINTN TempNumber; \
TempNumber = Number; \
NumberSize = 0; \
while (TempNumber != 0) { \
TempNumber /= 10; \
NumberSize++; \
} \
} while (0)
#define L05_GET_HEX_NUMBER_LENGTH(Number, NumberSize) do { \
UINTN TempNumber; \
TempNumber = Number; \
NumberSize = 0; \
while (TempNumber != 0) { \
TempNumber /= 0x10; \
NumberSize++; \
} \
} while (0)
#define L05_RFC_3066_ENGLISH_CODE "en-US"
#define L05_RFC_3066_SIMPLIFIED_CHINESE_CODE "zh-CN"
//================================================================================
// SetupMenu End
//================================================================================
//================================================================================
// SMBIOS Start
//================================================================================
//
// Please modify this according to actual status
// Follow L05 Spec V1.15 3.4.6 SMBIOS,
// System BIOS Major Version is always 0 prior to shiping the product.
// Always "1" after a products ships unless a major change occurs which then development can increment this number
//
#define L05_SMBIOS_TYPE00_BIOS_MAJOR_VERSION 0x00
//
// Follow L05 Spec V1.15 3.4.6 SMBIOS,
// These setting may reference to L05Config.h
//
#define L05_SMBIOS_TYPE00_ENCLOSURE_TYPE EFI_L05_SMBIOS_TYPE00_ENCLOSURE_TYPE_PORTABLE
#define L05_SMBIOS_TYPE00_BRAND_TYPE EFI_L05_SMBIOS_TYPE00_BRAND_TYPE_L05_CONSUMER_NOTEBOOK
#define L05_SMBIOS_TYPE11_COUNTRY_CODE_STRING "Country - XX"
#define L05_SMBIOS_TYPE11_REGION_CODE_STRING "Region - %a"
#define L05_SMBIOS_ISO_3166_ALPHA_2_CODE_STRING "XX"
#define L05_SMBIOS_TYPE11_MODERN_PRELOAD_STRING "Modern Preload"
//================================================================================
// SMBIOS End
//================================================================================
//================================================================================
// EEPROM Start
//================================================================================
//
// Definition of EEPROM Offset and Length.
// Based on LENOVO_CHINA_EEPROMContents_and_Tools_Spsc V1.19 for Lenovo China Minimum BIOS Spec V.135
//
#if (LATEST_L05_SPEC_VERSION == 135)
#define L05_EEPROM_PRODUCT_NAME_OFFSET 0x00
#define L05_EEPROM_PRODUCT_NAME_LENGTH 0x20
#define L05_EEPROM_RESERVED_1_OFFSET 0x20
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_2_OFFSET 0x30
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_3_OFFSET 0x70
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_4_OFFSET 0x80
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_5_OFFSET 0x90
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_6_OFFSET 0x70
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_SERIAL_NUMBER_OFFSET 0x80
#define L05_EEPROM_SERIAL_NUMBER_LENGTH 0x20
#define L05_EEPROM_RESERVED_7_OFFSET 0xA0
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_UUID_OFFSET 0xB0
#define L05_EEPROM_UUID_LENGTH 0x10
#define L05_EEPROM_RESERVED_8_OFFSET 0xC0
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_9_OFFSET 0xD0
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_PROJECT_NAME_OFFSET 0xE0
#define L05_EEPROM_PROJECT_NAME_LENGTH 0x20
#define L05_EEPROM_MISC_ATTRIBUTES_OFFSET 0x100
#define L05_EEPROM_MISC_ATTRIBUTES_LENGTH 0x10
#define L05_EEPROM_FAMILY_NAME_OFFSET 0x110
#define L05_EEPROM_FAMILY_NAME_LENGTH 0x10
#define L05_EEPROM_ASSET_TAG_OFFSET 0x120
#define L05_EEPROM_ASSET_TAG_LENGTH 0x10
#define L05_EEPROM_OS_PN_NUMBER_OFFSET 0x130
#define L05_EEPROM_OS_PN_NUMBER_LENGTH 0x10
#define L05_EEPROM_OS_DESCRIPTOR_OFFSET 0x140
#define L05_EEPROM_OS_DESCRIPTOR_LENGTH 0x20
#define L05_EEPROM_MACHINE_TYPE_MODEL_OFFSET 0x160
#define L05_EEPROM_MACHINE_TYPE_MODEL_LENGTH 0x20
#define L05_EEPROM_OA3_KEY_ID_OFFSET 0x180
#define L05_EEPROM_OA3_KEY_ID_LENGTH 0x20
#define L05_EEPROM_OA3_KEY_ID_SIZE_USED 15
#else
//
// Definition of EEPROM Offset and Length.
// Based on LENOVO_CHINA_EEPROMContents_and_Tools_Spsc V1.20 for Lenovo China Minimum BIOS Spec V.138
//
#define L05_EEPROM_PRODUCT_NAME_OFFSET 0x00
#define L05_EEPROM_PRODUCT_NAME_LENGTH 0x40
#define L05_EEPROM_RESERVED_1_OFFSET 0x40
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_2_OFFSET 0x50
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_3_OFFSET 0x60
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_4_OFFSET 0x70
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_5_OFFSET 0x80
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_RESERVED_6_OFFSET 0x90
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_SERIAL_NUMBER_OFFSET 0xA0
#define L05_EEPROM_SERIAL_NUMBER_LENGTH 0x20
#define L05_EEPROM_RESERVED_7_OFFSET 0xC0
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_UUID_OFFSET 0xD0
#define L05_EEPROM_UUID_LENGTH 0x10
#define L05_EEPROM_RESERVED_8_OFFSET 0xE0
#define L05_EEPROM_RESERVED_LENGTH 0x10
#define L05_EEPROM_TPM_LOCK_OFFSET 0xF0
#define L05_EEPROM_TPM_LOCK_LENGTH 0x01
#define L05_EEPROM_COMPUTRACE_ERASE_FLAG_OFFSET 0xF1
#define L05_EEPROM_COMPUTRACE_ERASE_FLAG_LENGTH 0x01
#define L05_EEPROM_BIOS_SELF_HEALING_FLAG_OFFSET 0xF2
#define L05_EEPROM_BIOS_SELF_HEALING_FLAG_LENGTH 0x01
#define L05_EEPROM_RESERVED_9_OFFSET 0xF3
#define L05_EEPROM_RESERVED_9_LENGTH 0x0D
#define L05_EEPROM_PROJECT_NAME_OFFSET 0x100
#define L05_EEPROM_PROJECT_NAME_LENGTH 0x40
#define L05_EEPROM_MISC_ATTRIBUTES_OFFSET 0x140
#define L05_EEPROM_MISC_ATTRIBUTES_LENGTH 0x10
#define L05_EEPROM_FAMILY_NAME_OFFSET 0x150
#define L05_EEPROM_FAMILY_NAME_LENGTH 0x40
#define L05_EEPROM_ASSET_TAG_OFFSET 0x190
#define L05_EEPROM_ASSET_TAG_LENGTH 0x10
#define L05_EEPROM_OS_PN_NUMBER_OFFSET 0x1A0
#define L05_EEPROM_OS_PN_NUMBER_LENGTH 0x10
#define L05_EEPROM_OS_DESCRIPTOR_OFFSET 0x1B0
#define L05_EEPROM_OS_DESCRIPTOR_LENGTH 0x20
#define L05_EEPROM_MACHINE_TYPE_MODEL_OFFSET 0x1D0
#define L05_EEPROM_MACHINE_TYPE_MODEL_LENGTH 0x40
#define L05_EEPROM_OA3_KEY_ID_OFFSET 0x210
#define L05_EEPROM_OA3_KEY_ID_LENGTH 0x20
#define L05_EEPROM_OA3_KEY_ID_SIZE_USED 15
#endif
//
// Definition of EEPROM Spsc V1.20 Map for L05 BIOS Spec V1.38. This is only for reference.
//
typedef struct _EFI_L05_MISC_ATTRIBUTES_EEPROM_MAP {
UINT8 KeyboardId;
UINT8 BrandTypeId;
UINT8 EPAFlag;
UINT8 FunctionFlag;
UINT8 Customer;
UINT8 Reserved[11];
} EFI_L05_MISC_ATTRIBUTES_EEPROM_MAP;
//
// Definition of EEPROM Spsc V1.20 Map for L05 BIOS Spec V1.38. This is only for reference.
//
//------+--------------------------------------+
//|0x0 | Product Name |
//+-----+--------------------------------------+
//|0x40 | Reserved 1 |
//+-----+--------------------------------------+
//|0x50 | Reserved 2 |
//+-----+--------------------------------------+
//|0x60 | Reserved 3 |
//+-----+--------------------------------------+
//|0x70 | Reserved 4 |
//+-----+--------------------------------------+
//|0x80 | Reserved 5 |
//+-----+--------------------------------------+
//|0x90 | Reserved 6 |
//+-----+--------------------------------------+
//|0xA0 | Lenovo Serial Number (SMBIOS Type02) |
//+-----+--------------------------------------+
//|0xC0 | Reserved 7 |
//+-----+--------------------------------------+
//|0xD0 | UUID (DMI TYPE01) |
//+-----+--------------------------------------+
//|0xE0 | Reserved 8 |
//+-----+--------------------------------------+
//|0xF0 | Reserved 9 |
//+-----+--------------------------------------+
//|0x100| Project Name |
//+-----+--------------------------------------+
//|0x140| Misc Attributes |
//+-----+--------------------------------------+
//|0x150| Family Name |
//+-----+--------------------------------------+
//|0x190| No Asset Tag |
//+-----+--------------------------------------+
//|0x1A0| OS PN Number |
//+-----+--------------------------------------+
//| | |
//|0x1B0| OS Descriptor |
//| | |
//+-----+--------------------------------------+
//| | |
//|0x1D0| MTM (SMBIOS TYPE01 Product Name) |
//| | |
//+-----+--------------------------------------+
//| | |
//|0x210| OA3 Key ID | (NOT the same as OA 3.0 Key in ACPI MSDM Table!!!)
//| | |
//+-----+--------------------------------------+
typedef struct _EFI_L05_EEPROM_MAP_119 {
UINT8 ProductName[L05_EEPROM_PRODUCT_NAME_LENGTH];
UINT8 Reserved1[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved2[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved3[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved4[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved5[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved6[L05_EEPROM_RESERVED_LENGTH];
UINT8 L05SerialNumber[L05_EEPROM_SERIAL_NUMBER_LENGTH];
UINT8 Reserved7[L05_EEPROM_RESERVED_LENGTH];
UINT8 Uuid[L05_EEPROM_UUID_LENGTH];
UINT8 Reserved8[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved9[L05_EEPROM_RESERVED_LENGTH];
UINT8 ProjectName[L05_EEPROM_PROJECT_NAME_LENGTH];
EFI_L05_MISC_ATTRIBUTES_EEPROM_MAP L05MiscAttributes;
UINT8 FamilyName[L05_EEPROM_FAMILY_NAME_LENGTH];
UINT8 AssetTag[L05_EEPROM_ASSET_TAG_LENGTH];
UINT8 OSPNNumber[L05_EEPROM_OS_PN_NUMBER_LENGTH];
UINT8 OSDescriptor[L05_EEPROM_OS_DESCRIPTOR_LENGTH];
UINT8 MachineTypeModel[L05_EEPROM_MACHINE_TYPE_MODEL_LENGTH];
UINT8 Oa3KeyId[L05_EEPROM_OA3_KEY_ID_LENGTH];
} EFI_L05_EEPROM_MAP_119;
typedef struct _EFI_L05_EEPROM_MAP_120 {
UINT8 ProductName[L05_EEPROM_PRODUCT_NAME_LENGTH];
UINT8 Reserved1[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved2[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved3[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved4[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved5[L05_EEPROM_RESERVED_LENGTH];
UINT8 Reserved6[L05_EEPROM_RESERVED_LENGTH];
UINT8 L05SerialNumber[L05_EEPROM_SERIAL_NUMBER_LENGTH];
UINT8 Reserved7[L05_EEPROM_RESERVED_LENGTH];
UINT8 Uuid[L05_EEPROM_UUID_LENGTH];
UINT8 Reserved8[L05_EEPROM_RESERVED_LENGTH];
UINT8 TpmLock[L05_EEPROM_TPM_LOCK_LENGTH];
UINT8 ComputraceEraseFlag[L05_EEPROM_COMPUTRACE_ERASE_FLAG_LENGTH];
UINT8 BiosSelfHealingFlag[L05_EEPROM_BIOS_SELF_HEALING_FLAG_LENGTH];
UINT8 Reserved9[L05_EEPROM_RESERVED_9_LENGTH];
UINT8 ProjectName[L05_EEPROM_PROJECT_NAME_LENGTH];
EFI_L05_MISC_ATTRIBUTES_EEPROM_MAP L05MiscAttributes;
UINT8 FamilyName[L05_EEPROM_FAMILY_NAME_LENGTH];
UINT8 AssetTag[L05_EEPROM_ASSET_TAG_LENGTH];
UINT8 OSPNNumber[L05_EEPROM_OS_PN_NUMBER_LENGTH];
UINT8 OSDescriptor[L05_EEPROM_OS_DESCRIPTOR_LENGTH];
UINT8 MachineTypeModel[L05_EEPROM_MACHINE_TYPE_MODEL_LENGTH];
UINT8 Oa3KeyId[L05_EEPROM_OA3_KEY_ID_LENGTH];
} EFI_L05_EEPROM_MAP_120;
//================================================================================
// EEPROM End
//================================================================================
//================================================================================
// L05 System Beep Start
//================================================================================
typedef enum {
PASSWORD_INVALID_KEY_BEEP = 0
} L05_SYSTEM_BEEP_TYPE;
//================================================================================
// L05 System Beep End
//================================================================================
//================================================================================
// L05 Graphic UI Start
//================================================================================
typedef enum {
Yoga = 0,
Ideapad,
Legion,
XiaoXin,
//[-start-220410-Ching000042-modify]//
//[-start-220412-Ching000044-modify]//
//[-start-220422-Ching000046-modify]//
#if defined(S77013_SUPPORT) || defined(S77014_SUPPORT)
LenovoNA,
#endif
#if defined(S77014IAH_SUPPORT) || defined(S77014_SUPPORT)
XiaoXinIAH,
#endif
//[-end-220422-Ching000046-modify]//
//[-end-220412-Ching000044-modify]//
//[-end-220410-Ching000042-modify]//
#ifdef L05_SMB_BIOS_ENABLE
ThinkBook,
#endif
MaxBrandingLogoType
} L05_BRANDING_LOGO_TYPE;
typedef enum {
Its30PerformanceMode = 0,
Its30BalanceMode,
Its30QuietMode,
Its40ExtremeMode,
Its40IntelligentMode,
Its40SavingMode,
MaxPerformanceMode
} L05_PERFORMANCE_MODE;
//================================================================================
// L05 Graphic UI End
//================================================================================
//================================================================================
// L05 OEM Switch Trigger Point Start
//================================================================================
typedef enum {
DuringPost = 0,
RouteConfig,
} L05_OEM_SWITCH_TRIGGER_POINT_TYPE;
//================================================================================
// L05 OEM Switch Trigger Point End
//================================================================================
//================================================================================
// L05 Crisis Recovery Start
//================================================================================
#define L05_CRISIS_BIOS_NAME L"xxCN.bin"
//================================================================================
// L05 Crisis Recovery End
//================================================================================
#pragma pack()
#endif // _L05_CONFIG_H_