132 lines
3.9 KiB
C
132 lines
3.9 KiB
C
/** @file
|
|
|
|
@copyright
|
|
INTEL CONFIDENTIAL
|
|
Copyright 1999 - 2016 Intel Corporation.
|
|
|
|
The source code contained or described herein and all documents related to the
|
|
source code ("Material") are owned by Intel Corporation or its suppliers or
|
|
licensors. Title to the Material remains with Intel Corporation or its suppliers
|
|
and licensors. The Material may contain trade secrets and proprietary and
|
|
confidential information of Intel Corporation and its suppliers and licensors,
|
|
and is protected by worldwide copyright and trade secret laws and treaty
|
|
provisions. No part of the Material may be used, copied, reproduced, modified,
|
|
published, uploaded, posted, transmitted, distributed, or disclosed in any way
|
|
without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual
|
|
property right is granted to or conferred upon you by disclosure or delivery
|
|
of the Materials, either expressly, by implication, inducement, estoppel or
|
|
otherwise. Any license under such intellectual property rights must be
|
|
express and approved by Intel in writing.
|
|
|
|
Unless otherwise agreed by Intel in writing, you may not remove or alter
|
|
this notice or any other notice embedded in Materials by Intel or
|
|
Intel's suppliers or licensors in any way.
|
|
|
|
This file contains a 'Sample Driver' and is licensed as such under the terms
|
|
of your license agreement with Intel or your vendor. This file may be modified
|
|
by the user, subject to the additional terms of the license agreement.
|
|
|
|
@par Specification Reference:
|
|
**/
|
|
|
|
#ifndef _SYSTEM_MONITOR_H_
|
|
#define _SYSTEM_MONITOR_H_
|
|
|
|
|
|
// Device Types
|
|
#define HECETA6x 0x01
|
|
|
|
// Company IDs
|
|
#define NATIONAL 0x01
|
|
#define SMSC 0x5C
|
|
#define ADI 0x41
|
|
|
|
//Number of Monitor Device Supported
|
|
#define MAX_MONITOR_DEVICE 0x03
|
|
|
|
#define EC_REG_TSR1_LSB 145
|
|
#define EC_REG_TSR2_LSB 147
|
|
#define EC_REG_TSR3_LSB 149
|
|
#define EC_REG_TSR4_LSB 151
|
|
#define EC_REG_TSR5_LSB 153
|
|
|
|
#define EC_REG_CPU_FAN_SPEED 115
|
|
#define EC_REG_PCH_DTS_TEMP 129
|
|
#define EC_REG_TS_ON_DIMM0_TEMP 133
|
|
#define EC_REG_TS_ON_DIMM1_TEMP 134
|
|
|
|
// Structure used to return system status
|
|
// NOTE:
|
|
// All voltages have been multiplied by 1000 so that integer data
|
|
// types can be used. To find the actual voltage divide the voltage
|
|
// data member by 1000.
|
|
typedef struct {
|
|
UINTN V1_5;
|
|
UINTN Vccp;
|
|
UINTN V3_3;
|
|
UINTN V5;
|
|
UINTN V12;
|
|
INT8 ProcessorTemp;
|
|
INT8 InternalTemp;
|
|
INT8 RemoteTemp;
|
|
UINT16 Tach1;
|
|
UINT16 Tach2;
|
|
UINT16 Tach3;
|
|
UINT16 Tach4;
|
|
UINT8 CurrentPwm1;
|
|
UINT8 CurrentPwm2;
|
|
UINT8 CurrentPwm3;
|
|
} EFI_SYSTEM_MONITOR_INFO;
|
|
|
|
typedef struct {
|
|
INT16 EC_TSR1;
|
|
INT16 EC_TSR2;
|
|
INT16 EC_TSR3;
|
|
INT16 EC_TSR4;
|
|
INT16 EC_TSR5;
|
|
INT16 EC_TSR6;
|
|
INT16 EC_TSR7;
|
|
INT16 EC_TSR8;
|
|
|
|
INT16 CPUFanSpeed;
|
|
INT8 PCHDTSTemp;
|
|
INT8 TSonDimm0Temp;
|
|
INT8 TSonDimm1Temp;
|
|
} MOBILE_SYSTEM_MONITOR_INFO;
|
|
|
|
typedef struct {
|
|
UINT8 MonitorDeviceType;
|
|
UINT8 CompanyId;
|
|
UINT8 DeviceVersion;
|
|
UINT8 DeviceRevision;
|
|
UINT8 DeviceSmbusAddress;
|
|
} EFI_MONITOR_DEVICE_INFO;
|
|
|
|
// Protocol function prototypes
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_SYSTEM_MONITOR_VALUES) (
|
|
IN UINT8 DeviceSmbusAddress,
|
|
IN UINT16 KeyValue,
|
|
OUT EFI_SYSTEM_MONITOR_INFO* MonitorValues
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_ACCURATE_TACH_SETTINGS) (
|
|
IN UINT8 DeviceSmbusAddress,
|
|
IN BOOLEAN EnablePws
|
|
);
|
|
|
|
// Protocol Definition
|
|
typedef struct {
|
|
UINT8 DeviceCount;
|
|
EFI_MONITOR_DEVICE_INFO DeviceInfoList[MAX_MONITOR_DEVICE];
|
|
EFI_GET_SYSTEM_MONITOR_VALUES GetMonitorValues;
|
|
EFI_ACCURATE_TACH_SETTINGS AccurateTachSettings;
|
|
} EFI_SYSTEM_MONITOR_PROTOCOL;
|
|
|
|
#endif
|