12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_POWER_METRICS_SMC_INTERNAL_TYPES_MAC_H_
- #define COMPONENTS_POWER_METRICS_SMC_INTERNAL_TYPES_MAC_H_
- #import <Foundation/Foundation.h>
- #include <stdint.h>
- // List of known SMC key identifiers.
- //
- // This is a good reference: https://logi.wiki/index.php/SMC_Sensor_Codes
- // Additional keys can be discovered with
- // https://github.com/theopolis/smc-fuzzer
- enum class SMCKeyIdentifier : uint32_t {
- TotalPower = 'PSTR', // Power: System Total Rail (watts)
- CPUPower = 'PCPC', // Power: CPU Package CPU (watts)
- iGPUPower = 'PCPG', // Power: CPU Package GPU (watts)
- GPU0Power = 'PG0R', // Power: GPU 0 Rail (watts)
- GPU1Power = 'PG1R', // Power: GPU 1 Rail (watts)
- CPUTemperature = 'TC0F', // Temperature: CPU Die PECI (Celsius)
- };
- // Types from PowerManagement/pmconfigd/PrivateLib.c
- // (https://opensource.apple.com/source/PowerManagement/PowerManagement-494.1.2/pmconfigd/PrivateLib.c.auto.html)
- struct SMCVersion {
- unsigned char major;
- unsigned char minor;
- unsigned char build;
- unsigned char reserved;
- unsigned short release;
- };
- struct SMCPLimitData {
- uint16_t version;
- uint16_t length;
- uint32_t cpuPLimit;
- uint32_t gpuPLimit;
- uint32_t memPLimit;
- };
- enum class SMCDataType : uint32_t {
- flt = 'flt ', // Floating point
- sp78 = 'sp78', // Fixed point: SIIIIIIIFFFFFFFF
- sp87 = 'sp87', // Fixed point: SIIIIIIIIFFFFFFF
- spa5 = 'spa5', // Fixed point: SIIIIIIIIIIFFFFF
- };
- struct SMCKeyInfoData {
- IOByteCount dataSize;
- SMCDataType dataType;
- uint8_t dataAttributes;
- };
- struct SMCParamStruct {
- SMCKeyIdentifier key;
- SMCVersion vers;
- SMCPLimitData pLimitData;
- SMCKeyInfoData keyInfo;
- uint8_t result;
- uint8_t status;
- uint8_t data8;
- uint32_t data32;
- uint8_t bytes[32];
- };
- enum {
- kSMCUserClientOpen = 0,
- kSMCUserClientClose = 1,
- kSMCHandleYPCEvent = 2,
- kSMCReadKey = 5,
- kSMCWriteKey = 6,
- kSMCGetKeyCount = 7,
- kSMCGetKeyFromIndex = 8,
- kSMCGetKeyInfo = 9
- };
- #endif // COMPONENTS_POWER_METRICS_SMC_INTERNAL_TYPES_MAC_H_
|