alder_lake_bios/Lcfc/LfcPkg/Include/Library/LfcEcLib.h

1128 lines
55 KiB
C

//*****************************************************************************
//
//
// Copyright (c) 2012 - 2015, Hefei LCFC Information Technology Co.Ltd.
// And/or its affiliates. All rights reserved.
// Hefei LCFC Information Technology Co.Ltd. PROPRIETARY/CONFIDENTIAL.
// Use is subject to license terms.
//
//******************************************************************************
#ifndef _EC_LIBRARY_H_
#define _EC_LIBRARY_H_
#include <Uefi.h>
#include <Library/IoLib.h>
#include <Library/PcdLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/BaseMemoryLib.h>
#define ACPI_TIMER_ADDR (PcdGet16(PcdPerfPkgAcpiIoPortBaseAddress) + 0x08)
#define ACPI_TIMER_MAX_VALUE 0x1000000
#define KEY_CMD_STATE 0x64
#define KBC_TIME_OUT 0x10000
#define KEY_OBF 1
#define KEY_IBF 2
#define KBC_DATA 0x60
#define KBC_CMD_STATE 0x64
#define EC_DATA 0x62
#define EC_CMD_STATE 0x66
#define EC_DATA2 0x68
#define EC_CMD_STATE2 0x6C
#define EC_READ_ECRAM_CMD 0x80
#define EC_WRITE_ECRAM_CMD 0x81
#define IRQ_8259_MASK 0x21
#define KBC_READ_CMD_BYTE 0x20
#define KBC_WRITE_CMD_BYTE 0x60
#define EC_HOOK_CMD 0x45
#define EC_USB_CHARGE_EN_DATA 0x8E
#define EC_USB_CHARGE_DIS_DATA 0x8F
#define EC_DETECT_NOVO 0xAE
#define EC_MAINBOARDID 0xAB
#define BEEP_ENABLE_DATA 0xE9
#define BEEP_DISABLE_DATA 0xEA
#define ENABLE_POWER_BUTTON 0x20
#define DISABLE_POWER_BUTTON 0x21
#define GET_EC_REVISION_CMD 0x51
#define EC_TOOl_CMD 0xEF
#define EC_ENABLE_SHIPMODE_DATA 0x20
#define EC_ENTER_CONVERSATIONMODE_DATA 0x21
#define EC_EXIT_CONVERSATIONMODE_DATA 0x22
#define EC_CHECK_CONVERSATIONMODE_DATA 0x23
#define EC_CLEAR_FIRSTUSEDATA_DATA 0x24
#define EC_CHECK_FIRSTUSEDATA_DATA 0x25
#define EC_CHECK_ACDC_MODE 0x26
#define EC_DISABLE_AC 0x27
#define EC_ENABLE_AC 0x28
#define EC_CHARGE_CAP 0x29
#define EC_CHARGE_DISCHARGE_CAP 0x30
#define EC_OSCONTROL_POWERLEDON 0x40
#define EC_OSCONTROL_POWERLEDOFF 0x41
#define EC_OSCONTROL_CHARGELEDON 0x42
#define EC_OSCONTROL_CHARGELEDOFF 0x43
#define EC_OSCONTROL_DISCHARGELEDON 0x44
#define EC_OSCONTROL_DISCHARGELEDOFF 0x45
#define EC_OSCONTROL_NUMLOCKLEDON 0x46
#define EC_OSCONTROL_NUMLOCKLEDOFF 0x47
#define EC_OSCONTROL_CPSLOCKLEDON 0x48
#define EC_OSCONTROL_CPSLOCKLEDOFF 0x49
#define EC_OSCONTROL_KBBACKLIGHTLEDON 0x50
#define EC_OSCONTROL_KBBACKLIGHTLEDOFF 0x51
#define EC_OSCONTROL_FPLED1ON 0x52
#define EC_OSCONTROL_FPLED1OFF 0x53
#define EC_OSCONTROL_FPLED2ON 0x54
#define EC_OSCONTROL_FPLED2OFF 0x55
#define EC_OSCONTROL_FNLOCKLED1ON 0x56
#define EC_OSCONTROL_FNLOCKLED1OFF 0x57
#define EC_OSCONTROL_ALLLEDON 0x58
#define EC_OSCONTROL_ALLLEDOFF 0x59
#define EC_ALLLEDCONTROL_BACKTOEC 0x5A
#define EC_GETCPUGPU_TEMP 0x60
#define EC_GETCPU_TEMP_EXVALUE 0x01
#define EC_GETGPU_TEMP_EXVALUE 0x02
#define EC_NEARCPU_TEMP_EXVALUE 0x03
#define EC_NEARGPU_TEMP_EXVALUE 0x04
#define EC_CHARGE_TEMP_EXVALUE 0x05
#define EC_ENVIRONMENT_TEMP_EXVALUE 0x06
#define EC_GETSSD_TEMP_EXVALUE 0x07
#define EC_GETRAM_TEMP_EXVALUE 0x08
#define EC_SETFAN1_SPEED 0x61
#define EC_SETFAN2_SPEED 0x62
#define EC_GETFAN_SPEED 0x63
#define EC_GETFAN1_SPEED_EXVALUE 0x01
#define EC_GETFAN2_SPEED_EXVALUE 0x02
#define EC_FANCONTROL_TOEC 0x64
#define EC_GET_FANNUM 0x65
#define EC_AUTOPOWERON 0xA0
#define EC_LID_DISABLE 0xA1
#define EC_LID_ENABLE 0xA2
#define EC_LID_STATUS 0xA3
#define EC_BKL_DISABLE 0xA4
#define EC_BKL_ENABLE 0xA5
#define EC_EN_SCAN_PWRBUTTON_TEST 0xA6
#define EC_DIS_SCAN_PWRBUTTON_TEST 0xA7
#define EC_GET_PD_VERSION 0xA8
#define EC_WATCHDOG_DIS 0xA9
#define EC_WATCHDOG_EN 0xAA
#define EC_GETLIDOPEN_STATUS 0xAB
typedef enum {
KEY_NONE,
KEY_F2,
KEY_F12
}HOTKEY_TYPE;
//EC CMD 0x52
#define EC_PLATFORM_CMD 0x52
#define EC_PRJECT_NAME 0xA0
#define EC_PROJECT_ID 0xA2
#define EC_BOOT_CODE_SIZE 0xA3
#define EC_CRITICAL_STATUS 0xA4
#define EC_CRITICAL_STATUS_CRISIS_MODE 0x80
#define EC_CRITICAL_STATUS_NORMAL_MODE 0x80
#define EC_RELEASE_VER 0xA5
#define EC_DET_ADAPTER_STATUS 0xA6
//EC CMD 0x59
#define EC_SYSTEM_NOTIFI_CMD 0x59
//[-start-201125-WITAID0021-add]//
#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77014_SUPPORT) || defined(S77013_SUPPORT) || defined(S570_SUPPORT) || defined(S370_SUPPORT) || defined(S77014IAH_SUPPORT)
#define EC_SYSTEM_NOTIFI_DARFON_CMD 0x5A
#endif
//[-end-201125-WITAID0021-add]//
//#define EC_SYSTEM_NOTIFI_TP_ENABLED 0x7A // Enabled Touch Pad
//#define EC_SYSTEM_NOTIFI_TP_DISABLED 0x7B // Disabled Touch Pad
#define EC_SYSTEM_NOTIFI_CMD_SHUTDOWN 0xA2 // System Shutdown
#define EC_SYSTEM_NOTIFI_CMD_ALERT_BEEP 0xD2 // Beep Alerm 200ms
#define EC_SYSTEM_NOTIFI_MACHINE_SIZE_CMD 0x71
//[-start-210929-SHAONN0010-add]//
//#define EC_SYSTEM_NOTIFI_PROJECT_TYPE_CMD 0x73
//[-end-210929-SHAONN0010-add]//
//[-start-211109-BAIN000054-add]//
#if defined(C970_SUPPORT)||defined(C770_SUPPORT)||defined(S77013_SUPPORT)||defined(S77014_SUPPORT) || defined(S77014IAH_SUPPORT)
#define EC_SET_PD_MODE_CMD 0x1D
#define EC_GET_PD_MODE_CMD 0x1E
//[-start-211227-BAIN000077-add]//
#define EC_SET_COMPL_MODE_CMD 0x1F
//[-end-211227-BAIN000077-add]//
#endif
//[-end-211109-BAIN000054-add]//
//[-start-211220-BAIN000070-add]//
#ifdef LCFC_SUPPORT
#define EC_SET_WDG_REST_CMD 0x8E
#endif
//[-end-211220-BAIN000070-add]//
//[-start-211223-BAIN000072-add]//
#ifdef LCFC_SUPPORT
#define EC_SET_CLEAN_CMOS 0x48
#endif
//[-end-211223-BAIN000072-add]//
//[-start-220104-Dongxu0040-add]//
#define EC_CPU_TYPE_CMD 0x45
//[-end-220104-Dongxu0040-add]//
#define EC_ACPI_MODE_EN_DATA 0xE8
#define EC_ACPI_MODE_DIS_DATA 0xE9
#define EC_ENTER_IDLE_MODE 0xF1
//[-start-201125-WITAID0021-modify]//
#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77014_SUPPORT) || defined(S77013_SUPPORT) || defined(S570_SUPPORT) || defined(S370_SUPPORT) || defined(S77014IAH_SUPPORT)
#define EC_ENG_KEYBOARD_MATRIX 0x00
#define EC_GRE_KEYBOARD_MATRIX 0x01
#define EC_EUR_KEYBOARD_MATRIX 0x02
#define EC_KOP_KEYBOARD_MATRIX 0x03
#define EC_TCH_KEYBOARD_MATRIX 0x04
#define EC_RUS_KEYBOARD_MATRIX 0x05
#define EC_ARA_KEYBOARD_MATRIX 0x06
#define EC_HBW_KEYBOARD_MATRIX 0x07
#define EC_THA_KEYBOARD_MATRIX 0x08
#define EC_HIN_KEYBOARD_MATRIX 0x09
#define EC_UKE_KEYBOARD_MATRIX 0x10
#define EC_ITA_KEYBOARD_MATRIX 0x11
#define EC_SPA_KEYBOARD_MATRIX 0x12
#define EC_TUR_KEYBOARD_MATRIX 0x13
#define EC_POR_KEYBOARD_MATRIX 0x14
#define EC_LAS_KEYBOARD_MATRIX 0x15
#define EC_FRE_KEYBOARD_MATRIX 0x16
#define EC_NOR_KEYBOARD_MATRIX 0x17
#define EC_FRA_KEYBOARD_MATRIX 0x18
#define EC_GER_KEYBOARD_MATRIX 0x19
#define EC_BRL_KEYBOARD_MATRIX 0x20
#define EC_HUN_KEYBOARD_MATRIX 0x21
#define EC_BEL_KEYBOARD_MATRIX 0x22
#define EC_ILD_KEYBOARD_MATRIX 0x23
#define EC_SLV_KEYBOARD_MATRIX 0x24
#define EC_SWS_KEYBOARD_MATRIX 0x25
#define EC_BUL_KEYBOARD_MATRIX 0x26
#define EC_CZE_KEYBOARD_MATRIX 0x27
#define EC_ARF_KEYBOARD_MATRIX 0x28
#define EC_JPN_KEYBOARD_MATRIX 0x29
#define EC_UKR_KEYBOARD_MATRIX 0x30
#define EC_USA_KEYBOARD_MATRIX 0x31
//[-start-220824-Skywang0824-add]//
#define EC_BRL_Alexa_KEYBOARD_MATRIX 0xA0
//[-start-220824-Skywang0824-add]//
#else
#define EC_FR_KEYBOARD_MATRIX 0xE3
#define EC_EX_KEYBOARD_MATRIX 0xE4
#define EC_US_KEYBOARD_MATRIX 0xE5
#define EC_JP_KEYBOARD_MATRIX 0xE6
#define EC_UK_KEYBOARD_MATRIX 0xE7
#endif
//[-end-201125-WITAID0021-modify]//
#define GET_EC_DEBUGFLAG_CMD 0xB1
#define GET_EC_DEBUGFLAG_DATA 0xB1
#define EC_DEBUGFLAG_TRUE 0x01
#define EC_BATTERY_FIRST_USE_DATE_STATUS_CMD 0x7A
#define EC_BATTERY_FIRST_USE_GET_FLAG 0x11
#define EC_BATTERY_FIRST_USE_SET_READY 0x12
#define EC_BATTERY_FIRST_USE_GET_TIME 0x7B
#define EC_BATTERY_FIRST_USE_GET_YEAR 0x20
#define EC_BATTERY_FIRST_USE_GET_MONTH 0x21
#define EC_BATTERY_FIRST_USE_GET_DATE 0x22
#define GET_EC_POSTCODE_CMD 0xB2
#define GET_EC_POSTCODE_DATA 0xB2
#define EC_POSTCODE_MAX_LENGTH 0x08
//EC name space define
#define VPC_COMMAND 0x00 // 0x00 VPC command
#define VPC_DATA 0x01 // 0x01 VPC data
#define VPC_STATUS 0x02 // 0x02 VPC status
#ifdef SUPPORT_2ND_BATTERY
//0x03~0x07 Customer EC name space
//0x08~0x1F Project EC name space
#define BATTERY_STATUS_0x20 0x20 // 0x20 Battery status
// 0x20:0 Battery type(0:NiMh,1:LiIon)
// 0x20:1 Battery mode(For AP only);
// 0x20:2 Low battery
// 0x20:3 Reserved
// 0x20[6:4] Manufacture(001:SANYO,010:Sony,100:Panasonic,101:CPT)
// 0x20:7 Reserved
#define BATTERY_STATUS_0x21 0x21 // 0x21 Battery status
// 0x21:0 Discharging
// 0x21:1 Charging
// 0x21:2 Discharging and Now is critical low
// 0x21[7:3] Reserved
#define REMAINING2_CAPACITY_0 0x22 // 0x22 Remaining Capacity offset 0
#define REMAINING2_CAPACITY_1 0x23 // 0x23 Remaining Capacity offset 1
#define SERIAL2_NUMBER_0 0x24 // 0x24 Serial Number offset 0
#define SERIAL2_NUMBER_1 0x25 // 0x25 Serial Number offset 1
#define PRESENT2_VOLTAGE_0 0x26 // 0x26 Present Voltage offset 0
#define PRESENT2_VOLTAGE_1 0x27 // 0x27 Present Voltage offset 1
#define DESIGN2_VOLTAGE_0 0x28 // 0x28 Design Voltage offset 0
#define DESIGN2_VOLTAGE_1 0x29 // 0x29 Design Voltage offset 1
#define DESIGN2_CAPACITY_0 0x2A // 0x2A Design Capacity offset 0
#define DESIGN2_CAPACITY_1 0x2B // 0x2B Design Capacity offset 1
#define FULL2_CHARGE_CAPACITY_0 0x2C // 0x2C Full charge capacity offset 0
#define FULL2_CHARGE_CAPACITY_1 0x2D // 0x2D Full charge capacity offset 1
#define GAS2_GAUGE 0x2E // 0x2E Gas gauge
#define BATTERY2_CYCLE_COUNTER 0x2F // 0x2F Battery cycle counter
#define BATTERY2_CURRENT_0 0x30 // 0x30 Battery current offset 0
#define BATTERY2_CURRENT_1 0x31 // 0x31 Battery current offset 1
#define BATTERY2_AVERAGE_CURRENT_0 0x32 // 0x32 Battery average current offset 0
#define BATTERY2_AVERAGE_CURRENT_1 0x33 // 0x33 Battery average current offset 1
#define SYSTEM2_POWER_CONSUMPTION 0x34 // 0x34 System power consumption
#define BATTERY2_VOLT 0x35 // 0x35 Battery Volt
#define BATTERY2_TEMP 0x36 // 0x36 Battery Temp
#define BATTERY2_AVERAGE_TEMP 0x37 // 0x37 Battery Average Temp
#define BATTERY2_CHARGE_CURRENT_0 0x38 // 0x38 Battery charge current offset 0
#define BATTERY2_CHARGE_CURRENT_1 0x39 // 0x39 Battery charge current offset 1
#define BATTERY2_CURRENT_TSC 0x3A // 0x3A Battery current Temp sample counter
#define BATTERY2_COMMAND_INDEX 0x3B // 0x3B Battery Command index for read battery through SMBus
#define BATTERY2_COMMUNICATE_COUNTUP 0x3C // 0x3C Count up to communicate battery
#define BATTERY2_OVER_TEMP_COUNTUP 0x3D // 0x3D Count up if battery is arrived over Temp
#define BATTERY2_SMBUS_STATUS_0 0x3E // 0x3E Battery SMBus status offset 0
#define BATTERY2_SMBUS_STATUS_1 0x3F // 0x3F Battery SMBus status offset 1
#define BATTERY2_OVER_VOLTAGE_COUNTER 0x40 // 0x40 Battery over voltage counter
#define COMMUNICATION2_FAIL_COUNTER 0x41 // 0x41 Communication fail counter
#define BATTERY2_VOLTAGE_ADC 0x42 // 0x42 Battery voltage of ADC
#define CELL1_VOLTAGE2_0 0x43 // 0x43 Cell1 voltage offset 0
#define CELL1_VOLTAGE2_1 0x44 // 0x44 Cell1 voltage offset 1
#define CELL2_VOLTAGE2_0 0x45 // 0x45 Cell2 voltage offset 0
#define CELL2_VOLTAGE2_1 0x46 // 0x46 Cell2 voltage offset 1
#define CELL3_VOLTAGE2_0 0x47 // 0x47 Cell3 voltage offset 0
#define CELL3_VOLTAGE2_1 0x48 // 0x48 Cell3 voltage offset 1
#define CELL4_VOLTAGE2_0 0x49 // 0x49 Cell4 voltage offset 0
#define CELL4_VOLTAGE2_1 0x4A // 0x4A Cell4 voltage offset 1
//0x4B~0x4F Reserved
#define BATTERY2_STATUS1 0x50 // 0x50 Battery staus1
// 0x50:0 Battery exist
// 0x50:1 Battery full
// 0x50:2 Battery empty
// 0x50:3 Battery first in
// 0x50[5:4] Reserved
// 0x50:6 Battery read complete
// 0x50:7 Use LI_ION or NI_MH#
#define BATTERY2_STATUS2 0x51 // 0x51 Battery staus2
// 0x51:0 Low low battery
// 0x51:1 Check EDV1
// 0x51:2 Set EDV1
// 0x51:3 Battery shutdown 5%
// 0x51:4 Start to read battery
// 0x51:5 Start to count communication counter
#define BATTERY2_STOP_CHARGE_STATUS_L 0x52 // 0x52 Battery stop charge status(low byte)
// 0x52:0 Battery fast charging timeout
// 0x52:1 Battery bad cell
// 0x52:2 Battery communication fail
// 0x52:3 Use for detect battery charging suspend
// 0x52:4 Battery command stop charge
// 0x52:5 Battery stop charge for Customer use
// 0x52:6 Battery over voltage
// 0x52:7 Battery over temperature
#define BATTERY2_STOP_CHARGE_STATUS_H 0x53 // 0x53 Battery stop charge status(high byte)
// 0x53:0 Battery trickle charging timeout
// 0x53:1 Stop charge of Adapter throttling
// 0x53:2 Stop charge of Sony battery
// 0x53:4 Stop charge of flash
// 0x53:5 Wrong Battery name
#define MANUFACTURE2_DATE_0 0x54 // 0x54 Manufacture Date offset 0
#define MANUFACTURE2_DATE_1 0x55 // 0x55 Manufacture Date offset 1
//0x56~0x57 Reserved
#define BATTERY2_CELL_NUMBER 0x58 // 0x58 Battery Cell number
// 0x58:0 Set Battery is 3 cells
// 0x58:1 Set Battery is 4 cells
// 0x58:2 Set Battery is 6 cells
// 0x58:3 Set Battery is 8 cells
// 0x58:4 Set Battery is 9 cells
// 0x58:5 Set Battery is 12 cells
// 0x58:6 Set battery is 3 series
// 0x58:7 Set battery is 4 series
//0x5A Reserved for ISCT
//0x59~0x5C Reserved
#else
//0x00~0x05 Customer EC name space
#define FAN_SPEED 0x06 // 0x06 Fan speed. For Lenovo ATM
#define EC_SPACE_0x07 0x07 // 0x07:0 Battery usage (1: Battery has been running over 72hrs, EM should pop out a message)
// 0x07:1 Battery legal(1: Battery is legal; 0: Battery is illegal)
// 0x07:2 Battery performance(1: Battery performance is on the normal status
// 0x07:3 Notify storage mode (1: Indicates close the storage mode)
// 0x07:4 Battery Testing Mode (1:Start Battery Testing Mode: turn off all LED lights except the Power Button LED,
// Make the step1 fan on temperature increased by 10 degrees in thermal table.)
// 0x07:5 Bad battery(1: indicates the main battery is bad.)
// 0x07:6 Auto mode(1: Start Auto mode; 0: Stop Auto mode)
// 0x07:7 Fast charge mode(1: Fast Charge is running; 0: Fast Charge is stopping.)
#define AC_BRIGHTNESS_TABLE_LIMIT 0x08 // 0x08 AC Brightness Table Limit
#define DC_BRIGHTNESS_TABLE_LIMIT 0x09 // 0x09 DC Brightness Table Limit
#define EC_SPACE_0x0A 0x0A // 0x0A:0 End the calibration cycle
// 0x0A:1 1=Ambient light sensor on;0=off
// 0x0A:2 calibration cycle for the main battery
// 0x0A:3 calibration cycle for the second battery
// 0x0A:4 Battery storage mode
// 0x0A:5 Battery Cycle mode
// 0x0A:6 Battery longest mode
// 0x0A:7 Clear bit of advise user to select battery mode
#define EC_SPACE_0x0B 0x0B // 0x0B:0 Switchable status(1:Discrete,0:UMA)
// 0x0B:1 HDMI exist(1=HDMI plug in;0=No HDMI)
// 0x0B:2 Hybrid Graphics(1:Hybrid Graphics 0:External Graphic Only)
// 0x0B:3 Switch state(1:Switch started 0:Switch complete)
// 0x0B:4 EVENT_NOTIFY(1:Need to notify EM)
// 0x0B:5 DCR function(1:Enable 0:Disable)
// 0x0B:6 Color Engine(1:Enable 0:Disable)
// 0x0B:7 SG function control right(1:AP control;0:EC control)
#define EC_SPACE_0x0C 0x0C // 0x0C:0 ODD power off(1:Power off)
// 0x0C:1 ODD power on by button(1:Power on by button)
// 0x0C:2 ODD power on by key(1:Power on by key)
// 0x0C:3 1:The camera is exist;0:The camera isn't exist;
// 0x0C:4 1:The camera power is on;0: Off
// 0x0C:5 Reserved for BIOS: Save ODD state when into S3 for BIOS used
// 0x0C:6 ODD power on(1: ODD power on when system resume from S3/S4 or AC plug in.)
// 0x0C:7 ODD power status(1: ODD have Power 0:ODD no power)
#define RAM_TEMPERATUTE 0x0D // 0x0D Ram temperature
#define VRAM_TEMPERATUTE 0x0E // 0x0E V Ram temperature
#define ATM_FAN_CONTROL_COMMANDS 0x0F // 0x0F ATM Fan control commands
#define EC_SPACE_0x10 0x10 // 0x10[2:0] Platform information is writed by BIOS(000->SV+UMA 001->ULV+UMA 011->SV+NV 010->SV+ATI 101->ULV+NV 100->ULV+ATI)
// 0x10:3 1-Super performance running/0-Super performance stopped.
// 0x10:4 1-indicate the temperature of ATI graphic platform CPU or GPU is too high
// 0-indicate the temperature of ATI graphic platform CPU or GPU is too low
// 0x10:5 1-start quite mode; 0-stop quite mode.
// 0x10:6 1-Enable Lenovo S3.5;0-Disable Lenovo S3.5
// 0x10:7 Reserved
#define EC_SPACE_0x11 0x11 // 0x11:0 1-Disable reading information from primary battery for update battery firmware.
// 0x11:1 1-Disable reading information from second battery for update battery firmware.
// 0x11[3:2] VGA type-00:UMA,01:GL1,10:GE,11:GT
#define FIRMWARE_UPDATE_STATUS_L 0x12 // 0x12 Firmware update status low byte
#define FIRMWARE_UPDATE_STATUS_H 0x13 // 0x13 Firmware update status high byte
#define BATTERY_MARKER_ID_L 0x14 // 0x14 Battery marker ID low byte
#define BATTERY_MARKER_ID_H 0x15 // 0x15 Battery marker ID high byte
#define HARDWARE_ID_L 0x16 // 0x16 Hardware ID low byte
#define HARDWARE_ID_H 0x17 // 0x17 Hardware ID high byte
#define FIRMWARE_VERSION_L 0x18 // 0x18 Firmware version low byte
#define FIRMWARE_VERSION_H 0x19 // 0x19 Firmware version high byte
#define DATA_VERSION_L 0x1A // 0x1A Data version low byte
#define DATA_VERSION_H 0x1B // 0x1B Data version high byte
//0x1C~0x2F Project EC name space
//[-start-200327-CLYDE00001-add]//
#define BATTERY_TIMER_COUNT_L 0x24 // 0x24 Battery timer count low byte
#define BATTERY_TIMER_COUNT_H 0x25 // 0x25 Battery timer count high byte
//[-end-200327-CLYDE00001-add]//
//0x30~0x47 Panel Information is write by BIOS
//0x48~0x5C Project EC name space
#endif
//External name space definition
#define EXT_NAMESPACE_INDEX 0x5D // 0x5D EXT_NAMESPACE_INDEX
#define EXT_NAMESPACE_BANK 0x5E // 0x5E EXT_NAMESPACE_BANK
#define EXT_NAMESPACE_DATA 0x5F // 0x5F EXT_NAMESPACE_DATA
//SMBus EC interface ACPI RAM definition
#define SMBUS_PROTOCOL 0x60 // 0x60 SMBus protocol
#define EC_SPACE_0x61 0x61 // 0x61 bit:0~4 SMBus Status;5 Reserved;6 ALARM;7 DONE
#define SMBUS_ADDRESS 0x62 // 0x62 SMBus Address
#define SMBUS_COMMAND 0x63 // 0x63 SMBus Command
//0x64~0x83 SMBus Data
#define SMBUS_DATA_0 0x64 // 0x64 SMBus Data offset 0
#define SMBUS_DATA_0x1F 0x83 // 0x83 SMBus Data offset 0x1F
#define SMBUS_BCNT 0x84 // 0x84 SMBus BCNT
#define SMBUS_ALARM_ADDRESS 0x85 // 0x85 SMBus alarm address
#define SMBUS_ALARM_DATA_0 0x86 // 0x86 SMBus alarm data 0
#define SMBUS_ALARM_DATA_1 0x87 // 0x87 SMBus alarm data 1
//Battery information reading
//0x90~0x98 Battery Manufacture Name
#define BATTERY_MANUFACTURE_NAME_0 0x90 // 0x90 Battery Manufacture Name offset 0
#define BATTERY_MANUFACTURE_NAME_8 0x98 // 0x98 Battery Manufacture Name offset 8
//0x99~0x9F Battery Device Name
#define BATTERY_DEVICE_NAME_0 0x99 // 0x99 Battery Device Name offset 0
#define BATTERY_DEVICE_NAME_6 0x9F // 0x9F Battery Device Name offset 6
//EC interface OEM common RAM definition
#define EC_SPACE_0xA0 0xA0 // 0xA0:0 ISCT battery temperature limitation
// 0xA0:1 ISCT battery capacity limitation
// 0xA0:2 ISCT S0_ISCT status
// 0xA0:3 ISCT RTC wake status
// 0xA0:4 ISCT support enable
// 0xA0:5 ISCT EC wake up for ISCT2.0
// 0xA0:6 ISCT Wake Up Reason
// 0xA0:7 Reserved
#define EC_SPACE_0xA1 0xA1 // 0xA1 Key And Button Function
// 0xA1:0 Reserved
// 0xA1:1 Video Output Key(1: Video output key pressed);
// 0xA1:2 Touch pad button (1:enable)
// 0xA1:3 Hotkey function disable in setup(0 :enable 1:disable)
// 0xA1[7:4] Reserved
#define EC_SPACE_0xA2 0xA2 // 0xA2 OS Shutdown Temp. For system read setting (DTS)
#define EC_SPACE_0xA3 0xA3 // 0xA3 SYS_STATUS: System indicator
// 0xA3[2:0] OS type(000:Windows XP,001:Windows Vista,010:Linux,011:Windows 7)
// 0xA3[6:3] Reserved
// 0xA3:7 AC adaptor(0: Offline,1:Online)
#define WAKEUP_ENABLE 0xA4 // 0xA4 WAKEUP_ENABLE: Enable wake up function
// 0xA4:0 PMEWAKE(PME Wk Enable:0=Disable,1=Enable)
// 0xA4:1 MDMWAKE(Modem Wk Enable:0=Disable,1=Enable)
// 0xA4:2 LANWAKE(LAN wakeup enable:0=Disable,1=Enable)
// 0xA4:3 RTCWAKE(RTC wakeup Enable:0=DIsable,1=Enable)
// 0xA4:4 WLANWAKE(Wireless LAN wakeup Enable:0=Disable,1=Enable)
// 0xA4:5 USBWAKE(USB wakeup enable: 0=Disable,1=Enable)
// 0xA4:6 KEYWAKE(Keyboard wakeup enable:0=Disable,1=Enable)
// 0xA4:7 TPWAKE(Touchpad wakeup enable:0=Disable,1=Enable)
#define ACOFF_SOURCE 0xA5 // 0xA5 ACOFF_SOURCE: Enable AC_OFF signal
// 0xA5:0 CHARGECURRENT(1:AC_OFF for when stop charge but have charge current)
// 0xA5:1 ADPOVP(1: AC_OFF for adaptor improper)
// 0xA5:2 BATTLEARN(1:AC_OFF for battery at learning mode)
// 0xA5:3 CMD(1:AC_OFF for Command)
// 0xA5:4 BATTOVP(1:AC_OFF for battery OVP)
// 0xA5:5 LEAKCURRENT(1: AC_OFF for Leakage current)
// 0xA5:6 AIRADAPTOR(1:AC_OFF for air-adaptor)
// 0xA5:7 ACOFF(Control AC_OFF active,0:enable,1:disable)
#define ENTER_RESUME_STAT 0xA6 // 0xA6 ENTER_RESUME_STAT
// 0xA6:0 Entry S3 State flag
// 0xA6:1 Resume S3 State flag
// 0xA6:2 Entry S4 State flag
// 0xA6:3 Resume S4 State flag
// 0xA6:4 Entry S5 State flag
// 0xA6:5 Resume S5 State flag
// 0xA6[7:6] Reserved
#define OS_THROTTLING_TEMP 0xA7 // 0xA7 OS Throttling Temp. For system read setting
#define OS_SHUTDOWN_TEMP 0xA8 // 0xA8 OS Shutdown Temp. For system read setting
#define THROTTLING_TEMP 0xA9 // 0xA9 Throttling Temp put a temp in for system throttling
#define TCONTROL_TEMP 0xAA // 0xAA For Tcontrol temp, SysBIOS will put Tcontrol temp
#define THERMAL_STATUS1 0xAB // 0xAB THERMAL_STATUS1
// 0xAB:0 MODE(0:Local mode,1:Remote mode)
// 0xAB[2:1] Reserved
// 0xAB:3 INITOK(0:Control by OS,1:Control by EC)
// 0xAB:4 FAN1 Active
// 0xAB:5 FAN2 Active
// 0xAB:6 FAN speed timer init OK
// 0xAB:7 SKINMODE(0:skin address 90,1:skin address 92)
#define SHUTDOWNTEMP 0xAC // 0xAC SHUTDOWNTEMP: Shundown temperature
#define FAN_STATUS1 0xAD // 0xAD FAN_STATUS1: Just for utility
// 0xAD[3:0] FAN's speed step number
// 0xAD[7:4] FAN's number
#define THROTTLING_INDEX 0xAE // 0xAE THROTTLING_INDEX
// 0xAE[3:0] Throttling level Number of P-State level
// 0xAE:6 THRM_SW(1:SW Throttling active)
// 0xAE:7 THRM_PIN(Throttling status:1=HW Throttling Pin active)
#define THROTTLING_SOURCE 0xAF // 0xAF THROTTLING_SOURCE
// 0xAF:0 TS_THERMAL(1:Throttling for thermal)
// 0xAF:1 TS_BATTCAP(1:Throttling for capacity)
// 0xAF:2 Reserved for Cedar trail platform sync bit used
// 0xAF:3 Reserved
// 0xAF[7:4] Number of P-State level
#define CPU_TEMP 0xB0 // 0xB0 CPU_TEMP: CPU current temperature
#define CPU_TEMP_LOCAL 0xB1 // 0xB1 CPU_TEMP_LOCAL: CPU local temperature
//0xB2~0xB6 This is not common area , please define for project use
#define ACPI_FLAG2 0xB7 // 0xB7 ACPI_FLAG2
// 0xB7:0 Reserved
// 0xB7:1 Password button(1:enable)
// 0xB7:2 Digital mode selected,set 1
// 0xB7:3 CD Lock mode enable,set 1
// 0xB7[7:4] Reserved
#define SWI_EVENT_INDICATORS 0xB8 // 0xB8 SWI Event indicators
// 0xB8:0 Reserved
// 0xB0:1 Lid open event(0=off,1=on)
// 0xB8:2 PME event(0=off,1=on)
// 0xB8:3 Power button event(0=off,1=on)
// 0xB8:4 Ring in event(0=off,1=on)
// 0xB8:5 Blue tooth wake up event(0=off,1=on)
// 0xB8[7:6] Reserved
#define LCD_BRIGHTNESS_VALUE 0xB9 // 0xB9 LCD brightness value (0x00-0x07)
#define EC_SPACE_0xBA 0xBA // 0xBA:0 1: Enable AOAC function
// 0xBA:1 S3.5(fast boot) function-Status flag
// 0xBA:2 IFFS status
// 0xBA:3 1:When system in S0-ISCT mode
// 0xBA:4 1:Notify BIOS when battery low capacity in ISCT
// 0xBA:5 1:Notify BIOS when battery over temp in ISCT
// 0xBA:6 Reserved
// 0xBA:7 1:BIOS RTC wake and ready to S0-ISCT from S3
#define DEVICE_MOUDLE_STATUS 0xBB // 0xBB Device module status (TBD)
// 0xBB:0 1:Wirless LAN active,0:Wirless LAN no active
// 0xBB:1 1:BlueTooth active,0:BlueTooth no active
// 0xBB:2 1:Wirless LAN exist,0:Wirless LAN no exist
// 0xBB:3 1:BlueTooth exist,0:BlueTooth no exist
// 0xBB:4 1:Kill switch on,0:Kill switch off
// 0xBB:5 1:WireLess LAN initial OK
// 0xBB:6 1:3G active,0:3G no active
// 0xBB:7 1:3G exist,0:3G no exist
#define KBPROJECTID 0xBC // 0xBC KbProjectID: Project ID
#define EC_SPACE_0xBD 0xBD // 0xBD[2:0] CPU_TYPE: CPU type(00:Tj85,01:Tj90,02:Tj100,03:Tj105,04-07:Reverve)
// 0xBD[5:3] CPU Core Number(00:One Core,01:Dual Core,02:Quad Core,03-07:Reverve)
// 0xBD[7:6] VGA Type(00:UMA,01:NV VGA,02:AMD VGA,03:Reserved)
//Word registers to Emulate smart selector RAM definition
#define SEL_STATE0 0xBE // 0xBE SEL_STATE0
// 0xBE:0 PRESENT_A(Set if 1st battery present)
// 0xBE:1 PRESENT_B(Set if 2nd battery present)
// 0xBE[3:2] Reserved
// 0xBE:4 CHARGE_A(Set if 1st battery be charging)
// 0xBE:5 CHARGE_B(Set if 2nd battery be charging)
// 0xBE[7:6] Reserved
#define SEL_STATE1 0xBF // 0xBF SEL_STATE1
// 0xBF:0 PWR_BY_A(Set if system power up by 1st)
// 0xBF:1 PWR_BY_B(Set if system power up by 2nd)
// 0xBF[3:2] Reserved
// 0xBF:4 SMB_A(Set if 1st battery on SMBus)
// 0xBF:5 SMB_B(Set if 2nd battery on SMBus)
// 0xBF[7:6] Reserved
//Control method for 1st battery pack RAM definition
#define BATTERY_STATUS_0xC0 0xC0 // 0xC0 Battery status
// 0xC0:0 Battery type(0:NiMh,1:LiIon)
// 0xC0:1 Battery mode(For AP read only)
// 0xC0:2 Low battery
// 0xC0:3 Reserved
// 0xC0[6:4] Battery Manufacture(001:SANYO,010:Sony,100:Panasonic,101:Samsung,011:LG,110:Celxpert,111:Simplo)
// 0xC0:7 Reserved
#define BATTERY_STATUS_0xC1 0xC1 // 0xC1 Battery Status
// 0xC1:0 Discharging
// 0xC1:1 Charging
// 0xC1:2 Discharging and Now is critical low
// 0xC1[7:3] Reserved
#define REMAINING_CAPACITY_0 0xC2 // 0xC2 Remaining Capacity offset 0
#define REMAINING_CAPACITY_1 0xC3 // 0xC3 Remaining Capacity offset 1
#define SERIAL_NUMBER_0 0xC4 // 0xC4 Serial Number offset 0
#define SERIAL_NUMBER_1 0xC5 // 0xC5 Serial Number offset 1
#define PRESENT_VOLTAGE_0 0xC6 // 0xC6 Present Voltage offset 0
#define PRESENT_VOLTAGE_1 0xC7 // 0xC7 Present Voltage offset 1
#define DESIGN_VOLTAGE_0 0xC8 // 0xC8 Design Voltage offset 0
#define DESIGN_VOLTAGE_1 0xC9 // 0xC9 Design Voltage offset 1
#define DESIGN_CAPACITY_0 0xCA // 0xCA Design Capacity offset 0
#define DESIGN_CAPACITY_1 0xCB // 0xCB Design Capacity offset 1
#define FULL_CHARGE_CAPACITY_0 0xCC // 0xCC Full charge capacity offset 0
#define FULL_CHARGE_CAPACITY_1 0xCD // 0xCD Full charge capacity offset 1
#define GAS_GAUGE 0xCE // 0xCE Gas gauge
#define BATTERY_CYCLE_COUNTER 0xCF // 0xCF Battery cycle counter
#define BATTERY_CURRENT_0 0xD0 // 0xD0 Battery current offset 0
#define BATTERY_CURRENT_1 0xD1 // 0xD1 Battery current offset 1
#define BATTERY_AVERAGE_CURRENT_0 0xD2 // 0xD2 Battery average current offset 0
#define BATTERY_AVERAGE_CURRENT_1 0xD3 // 0xD3 Battery average current offset 1
#define BATTERY_POWER_CONSUMPTION 0xD4 // 0xD4 Battery power consumption
#define BATTERY_VOLT 0xD5 // 0xD5 Battery Volt
#define BATTERY_TEMP 0xD6 // 0xD6 Battery Temp
#define BATTERY_AVERAGE_TEMP 0xD7 // 0xD7 Battery Average Temp
#define BATTERY_CHARGE_CURRENT_0 0xD8 // 0xD8 Battery charge current offset 0
#define BATTERY_CHARGE_CURRENT_1 0xD9 // 0xD9 Battery charge current offset 1
#define BATTERY_CURRENT_TSC 0xDA // 0xDA Battery current Temp sample counter
#define BATTERY_COMMAND_INDEX 0xDB // 0xDB Battery Command index for read battery through SMBus
#define BATTERY_COMMUNICATE_COUNTUP 0xDC // 0xDC Count up to communicate battery
#define BATTERY_OVER_TEMP_COUNTUP 0xDD // 0xDD Count up if battery is arrived over Temp
#define BATTERY_SMBUS_STATUS_0 0xDE // 0xDE Battery SMBus status offset 0
#define BATTERY_SMBUS_STATUS_1 0xDF // 0xDF Battery SMBus status offset 1
#define BATTERY_OVER_VOLTAGE_COUNTER 0xE0 // 0xE0 Battery over voltage counter
#define COMMUNICATION_FAIL_COUNTER 0xE1 // 0xE1 Communication fail counter
#define BATTERY_VOLTAGE_ADC 0xE2 // 0xE2 Battery voltage of ADC
#define CELL1_VOLTAGE_0 0xE3 // 0xE3 Cell1 voltage offset 0
#define CELL1_VOLTAGE_1 0xE4 // 0xE4 Cell1 voltage offset 1
#define CELL2_VOLTAGE_0 0xE5 // 0xE5 Cell2 voltage offset 0
#define CELL2_VOLTAGE_1 0xE6 // 0xE6 Cell2 voltage offset 1
#define CELL3_VOLTAGE_0 0xE7 // 0xE7 Cell3 voltage offset 0
#define CELL3_VOLTAGE_1 0xE8 // 0xE8 Cell3 voltage offset 1
#define CELL4_VOLTAGE_0 0xE9 // 0xE9 Cell4 voltage offset 0
#define CELL4_VOLTAGE_1 0xEA // 0xEA Cell4 voltage offset 1
//0xEB~0xEF Reserved
#define BATTERY_STATUS1 0xF0 // 0xF0 Battery staus1
// 0xF0:0 Battery exist
// 0xF0:1 Battery full
// 0xF0:2 Battery empty
// 0xF0:3 Battery first in
// 0xF0[5:4] Reserved
// 0xF0:6 Battery read complete
// 0xF0:7 Reserved
#define BATTERY_STATUS2 0xF1 // 0xF1 Battery staus2
// 0xF1:0 Low low battery
// 0xF1:1 Check EDV1
// 0xF1:2 Set EDV1
// 0xF1:3 Battery shutdown 5%
// 0xF1:4 Start to read battery
// 0xF1:5 Start to count communication counter
// 0xF1[7:6] Reserved
#define BATTERY_STOP_CHARGE_STATUS_L 0xF2 // 0xF2 Battery stop charge status(low byte)
// 0xF2:0 Battery fast charging timeout
// 0xF2:1 Battery bad cell
// 0xF2:2 Battery communication fail
// 0xF2:3 Use for detect battery charging suspend;4 Battery command stop charge
// 0xF2:5 Battery stop charge for Customer use
// 0xF2:6 Battery over voltage
// 0xF2:7 Battery over temperature
#define BATTERY_STOP_CHARGE_STATUS_H 0xF3 // 0xF3 Battery stop charge status(high byte)
// 0xF3:0 Battery trickle charging timeout
// 0xF3:1 Stop charge of Adapter throttling
// 0xF3:2 Stop charge of Sony battery
// 0xF3:4 Stop charge of flash
// 0xF3:5 Wrong Battery name
// 0xF3[7:6] Reserved
#define MANUFACTURE_DATE_0 0xF4 // 0xF4 Manufacture Date offset 0
#define MANUFACTURE_DATE_1 0xF5 // 0xF5 Manufacture Date offset 1
//0xF6~0xF7 Reserved (For EC or AP to get 1st Batt Charging Voltage)
#define BATTERY_CELL_NUMBER 0xF8 // 0xF8 Battery Cell number
// 0xF8:0 Set Battery is 3 cells
// 0xF8:1 Set Battery is 4 cells
// 0xF8:2 Set Battery is 6 cells
// 0xF8:3 Set Battery is 8 cells
// 0xF8:4 Set Battery is 9 cells
// 0xF8:5 Set Battery is 12 cells
// 0xF8:6 Set battery is 3 series
// 0xF8:7 Set battery is 4 series
#define POST_HOTKEY 0xFC // 0xFC Post Hotkey status
// 0xFC:0 F2 status (0= unpressed,1=pressed)
// 0xFC:1 F12 status (0= unpressed,1=pressed)
//[-start-210731-BAIN000026-add]//
#define EC_SMI_DATA 0xFD // 0xFD EC SMI Data
// 0xFD:0 1: Hang check
// 0xFD:1 1: FnLock LED light, 0: FnLock LED not light
// 0xFD:2 1: Num Lock LED light, 0: Num Lock LED not light
// 0xFD:3 1: Caps Lock LED light, 0: Caps Lock LED not light
//[-end-210731-BAIN000026-add]//
#define BALANCE_MODE 0x01
#define QUIET_MODE 0x02
#define HIGH_PERFORMANCE_MODE 0x03
//Function prototype
EFI_STATUS
WaitIBE (
IN UINT16 CommandPort
);
EFI_STATUS
WaitOBF (
IN UINT16 CommandPort
);
EFI_STATUS
WaitOBE (
IN UINT16 CommandPort
);
EFI_STATUS
EcCommand (
IN UINT16 CommandPort,
IN UINT16 DataPort,
IN UINTN NumOfReturnData,
IN UINT8 *ReturnData,
IN UINT8 Command,
IN UINTN NumOfArgs,
...
);
EFI_STATUS
SendEcCMD (
IN UINT16 CommandPort,
IN UINT16 DataPort,
IN UINT8 Command,
IN BOOLEAN ReturnFlag,
IN UINT8 *ReturnData
);
EFI_STATUS
SendEcCMDData (
IN UINT16 CommandPort,
IN UINT16 DataPort,
IN UINT8 Command,
IN UINT8 Data,
IN BOOLEAN ReturnFlag,
IN UINT8 *ReturnData
);
EFI_STATUS
LfcEcLibEnableEcPower (
VOID
);
EFI_STATUS
LfcEcLibDisableEcPower (
VOID
);
EFI_STATUS
LfcEcLibPowerStateIsAc (
OUT BOOLEAN *PowerStateIsAc
);
EFI_STATUS
LfcEcLibEcRamRead(
IN UINT8 Index,
OUT UINT8 *Data
);
EFI_STATUS
LfcEcLibEcRamWrite(
IN UINT8 Index,
IN UINT8 Value
);
EFI_STATUS
LfcEcLibSaveRestoreKbc (
IN BOOLEAN SaveRestoreFlag
);
EFI_STATUS
LfcEcLibGetTouchpadID (
IN OUT UINT8 *TouchpadID
);
EFI_STATUS
LfcEcLibGetBatterySerial (
IN OUT UINT8 *DataLength,
IN OUT UINT8 *DataBuffer
);
EFI_STATUS
LfcEcLibGetBatteryPercentage (
IN OUT UINT8 *BatteryPercentage
);
EFI_STATUS
LfcEcLibNotifyEcKeyboardId (
IN UINT8 KeyboardID
);
EFI_STATUS
LfcEcLibNotifyEcMachineSize (
IN UINT8 MachineSize
);
EFI_STATUS
LfcEcLibEcReboot (
IN UINT16 CommandPort,
IN UINT16 DataPort
);
EFI_STATUS
LfcEcLibEcReset (
VOID
);
EFI_STATUS
LfcEcLibEcShutdown (
VOID
);
EFI_STATUS
LfcEcLibReadEcVersion (
IN OUT UINT8 *EcMajorVersion,
IN OUT UINT8 *EcMinorVersion,
IN OUT UINT8 *EcTestVersion
);
EFI_STATUS
LfcEcLibAcInOutBeepControl (
IN BOOLEAN EnableEcBeep
);
EFI_STATUS
LfcEcLibSetHotKeyMode (
IN UINT8 HotKeyMode
);
EFI_STATUS
LfcEcLibSetAlwaysOnUsbMode (
IN UINT8 AlwaysOnUsbMode
);
EFI_STATUS
LfcEcLibSetChargeInBatteryMode (
IN UINT8 ChargeInBatteryMode
);
EFI_STATUS
LfcEcLibSetOneKayBattery (
IN UINT8 OneKeyBattery
);
EFI_STATUS
LfcEcLibCheckEcDebugFlag(
IN UINT16 CommandPort,
IN UINT16 DataPort,
IN BOOLEAN *EcDebugFlag
);
EFI_STATUS
LfcEcLibDumpEcPostCode (
IN UINT16 CommandPort,
IN UINT16 DataPort,
IN UINT8 *OemPostCode
);
EFI_STATUS
LfcEcLibTellEcDisOrUma (
IN UINT8 Uma0Nv1Amd2
);
EFI_STATUS
LfcEcLibEcAcpiMode (
IN BOOLEAN EnableEcMode
);
EFI_STATUS
EcAcpiStall (
IN UINTN Microseconds
);
EFI_STATUS
LfcEcLibGetRecoverMode (
OUT BOOLEAN *RecoverMode
);
EFI_STATUS
LfcEcLibGetNovoStatus (
OUT BOOLEAN *NovoKeyStatus
);
EFI_STATUS
LfcEcLibGetBatteryFirstUsedDate (
VOID
);
EFI_STATUS
LfcEcLibEcInit (
VOID
);
EFI_STATUS
LfcEcLibEcWait (
IN BOOLEAN EnableWrites
);
EFI_STATUS
LfcEcLibEcIdle (
IN BOOLEAN EnableWrites
);
EFI_STATUS
LfcEcLibDisableKeyBoard (
VOID
);
EFI_STATUS
LfcEcLibPowerButtonControl (
IN BOOLEAN EnablePowerButton
);
EFI_STATUS
LfcEcLibStartLight(
);
EFI_STATUS
LfcEcLibStopLight(
);
EFI_STATUS
LfcCleanUpKbcAndEcBuffer (
);
EFI_STATUS
LfcEcLibGetHotkeyFromEc (
IN OUT HOTKEY_TYPE *Selection
);
EFI_STATUS
LfcEcLibSetPerformanceMode(
);
EFI_STATUS
LfcEcLibSetFlipToBootMode (
IN UINT8 L05FlipToBoot
);
EFI_STATUS
LfcEcLibSwapFnCtrlMode (
IN UINT8 SwapMode
);
//[-start-211222-JOYID00009-add]//
#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77013_SUPPORT) || defined(S77014_SUPPORT) || defined(S77014IAH_SUPPORT)
EFI_STATUS
LfcEcLibEnableWatchDogForMemoryTrainning (
VOID
);
EFI_STATUS
LfcEcLibDisableWatchDogForMemoryTrainning (
VOID
);
#endif
//[-end-211222-JOYID00009-add]//
//[-start-211231-JOYID00010-add]
//[-start-220117-QINGLIN0146-modify]//
//[-start-220119-OWENWU0036-modify]//
#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77013_SUPPORT) || defined(S77014_SUPPORT) || defined(S370_SUPPORT) || defined(S570_SUPPORT) || defined(S77014IAH_SUPPORT)
EFI_STATUS
LfcEcLibStopWDT (
);
EFI_STATUS
LfcEcLibStartWDT (
);
#endif
//[-end-220119-OWENWU0036-modify]//
//[-end-220117-QINGLIN0146-modify]//
//[-end-211231-JOYID00010-add]
//[-start-200327-CLYDE00001-add]//
EFI_STATUS
LfcEcLibGetBatteryTimerCount (
IN OUT UINT16 *BatteryTimerCount
);
//[-end-200327-CLYDE00001-add]//
//[-start-220210-Dongxu0040-Modify]//
EFI_STATUS
LfcCheckValidTool(
OUT UINT8 *Data
);
//[-end-220210-Dongxu0040-Modify]//
EFI_STATUS
LNVEcBatterySetting (
IN UINT8 Function,
IN UINT8 Action,
IN UINT8 ExValue
);
//[-start-200821-BAIN000035-add]//
//[-start-210903-YUNLEI0129-modify]//
//[-start-210906-SHAONN0005-modify]//
//[-start-211110-GEORGE0021-modify]//
//#if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S370_SUPPORT) || defined(S570_SUPPORT)
#ifdef LCFC_SUPPORT
//[-end-211110-GEORGE0021-modify]//
EFI_STATUS
LfcEcLibNotifyThermalMax();
EFI_STATUS
LfcEcLibNotifyThermalMaxStop();
#endif
//[-end-210906-SHAONN0005-modify]//
//[-end-210903-YUNLEI0129-modify]//
//[-end-200821-BAIN000035-add]//
//[-start-210929-SHAONN0010-add]//
#if defined(S370_SUPPORT)
EFI_STATUS
LfcEcLibNotifyEcProjectType (
IN UINT8 ProjectType
);
#endif
//[-start-211104-YUNLEI0152-modify]//
#if defined(C770_SUPPORT)
EFI_STATUS
OemSvcLfcGetCpuIdentifier(
OUT UINT8 *LfcCpuId
);
#endif
//[-end-211104-YUNLEI0152-modify]//
//[-end-210929-SHAONN0010-add]//
//[-start-211014-BAIN000051-add]//
//#ifdef LCFC_SUPPORT
//#if defined(C970_BSH_SUPPORT)
//[-start-21119-TAMT000032-modify]//
//[-start-211203-QINGLIN0125-modify]//
//[-start-211206-OWENWU0029-modify]//
//[-start-211214-Ching000017-modify]//
EFI_STATUS
LfcEcLibSetWDTFlagForSelfHealing (
);
EFI_STATUS
LfcEcLibDisableCurrentWDTForSelfHealing (
);
EFI_STATUS
LfcEcLibClearWDTFlagForSelfHealing (
);
EFI_STATUS
LfcEcLibDisableAndClearTopSwapForSelfHealing (
);
EFI_STATUS
LfcEcLibClearCmosForSelfHealing(
);
//[-end-211214-Ching000017-modify]//
//[-end-211206-OWENWU0029-modify]//
//[-end-211203-QINGLIN0125-modify]//
//[-end-21119-TAMT000032-modify]//
//[-end-211014-BAIN000051-add]//
//[-start-211109-BAIN000054-modify]//
#if defined(C970_SUPPORT)||defined(C770_SUPPORT)||defined(S77013_SUPPORT)||defined(S77014_SUPPORT)||defined(S77014IAH_SUPPORT)
EFI_STATUS
LfcEcLibSetPdControllerMode(
IN UINT8 PdControllerMode
);
EFI_STATUS
LfcEcLibGetPdControllerMode(
OUT UINT8 *PdControllerMode
);
//[-start-211227-BAIN000077-add]//
EFI_STATUS
LfcEcLibSetCOMPLMode(
);
//[-end-211227-BAIN000077-add]//
#endif
//[-end-211109-BAIN000054-modify]//
//[-start-211220-BAIN000070-add]//
#ifdef LCFC_SUPPORT
EFI_STATUS
LfcEcLibSetRestWDGCMD(
);
#endif
//[-end-211220-BAIN000070-add]//
//[-start-220104-Dongxu0040-add]//
EFI_STATUS
LfcEcLibi7i5(
IN UINT8 CpuType
);
//[-end-220104-Dongxu0040-add]//
//[-start-220120-QINGLIN0151-add]//
#if defined(S370_SUPPORT)
EFI_STATUS
LfcEcLibNotifyEcCpuType (
IN UINT8 CpuType
);
//[-start-220224-QINGLIN0163-add]//
EFI_STATUS
LfcEcLibSetUltraQuietMode (
IN UINT8 UltraQuietMode
);
EFI_STATUS
LfcEcLibSwitchFoolProofFnCtrl (
IN UINT8 FoolProofFnCtrl
);
//[-end-220224-QINGLIN0163-add]//
#endif
//[-end-220120-QINGLIN0151-add]//
#endif
//[-start-220407-JEPLIUT219-add]//
#if defined(S570_SUPPORT)
EFI_STATUS
LfcEcLibGetAdapter65WAcOnlyMode (
OUT UINT8 * Adapter65WAc
);
#endif
//[-end-220407-JEPLIUT219-add]//