blob: f7c78b83b36f49482123cf44d9696e30839cfbc1 [file] [log] [blame]
Harshit Aghera560e6af2025-04-21 20:04:56 +05301/*
2 * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION &
3 * AFFILIATES. All rights reserved.
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#pragma once
8
9#include <OcpMctpVdm.hpp>
10
11#include <cstdint>
12#include <span>
13
14namespace gpu
15{
16
17constexpr uint16_t nvidiaPciVendorId = 0x10de;
18
19enum class MessageType : uint8_t
20{
21 DEVICE_CAPABILITY_DISCOVERY = 0,
22 PLATFORM_ENVIRONMENTAL = 3
23};
24
25enum class DeviceCapabilityDiscoveryCommands : uint8_t
26{
27 QUERY_DEVICE_IDENTIFICATION = 0x09,
28};
29
30enum class PlatformEnvironmentalCommands : uint8_t
31{
32 GET_TEMPERATURE_READING = 0x00,
Harshit Aghera5e7decc2025-05-07 16:20:16 +053033 READ_THERMAL_PARAMETERS = 0x02,
Harshit Aghera560e6af2025-04-21 20:04:56 +053034};
35
36enum class DeviceIdentification : uint8_t
37{
38 DEVICE_GPU = 0
39};
40
41struct QueryDeviceIdentificationRequest
42{
43 ocp::accelerator_management::CommonRequest hdr;
44} __attribute__((packed));
45
46struct QueryDeviceIdentificationResponse
47{
48 ocp::accelerator_management::CommonResponse hdr;
49 uint8_t device_identification;
50 uint8_t instance_id;
51} __attribute__((packed));
52
53struct GetNumericSensorReadingRequest
54{
55 ocp::accelerator_management::CommonRequest hdr;
56 uint8_t sensor_id;
57} __attribute__((packed));
58
59using GetTemperatureReadingRequest = GetNumericSensorReadingRequest;
60
Harshit Aghera5e7decc2025-05-07 16:20:16 +053061using ReadThermalParametersRequest = GetNumericSensorReadingRequest;
62
Harshit Aghera560e6af2025-04-21 20:04:56 +053063struct GetTemperatureReadingResponse
64{
65 ocp::accelerator_management::CommonResponse hdr;
66 int32_t reading;
67} __attribute__((packed));
68
Harshit Aghera5e7decc2025-05-07 16:20:16 +053069struct ReadThermalParametersResponse
70{
71 ocp::accelerator_management::CommonResponse hdr;
72 int32_t threshold;
73} __attribute__((packed));
74
Harshit Aghera560e6af2025-04-21 20:04:56 +053075int packHeader(const ocp::accelerator_management::BindingPciVidInfo& hdr,
76 ocp::accelerator_management::BindingPciVid& msg);
77
78int encodeQueryDeviceIdentificationRequest(uint8_t instanceId,
79 std::span<uint8_t> buf);
80
81int decodeQueryDeviceIdentificationResponse(
82 std::span<const uint8_t> buf,
83 ocp::accelerator_management::CompletionCode& cc, uint16_t& reasonCode,
84 uint8_t& deviceIdentification, uint8_t& deviceInstance);
85
86int encodeGetTemperatureReadingRequest(uint8_t instanceId, uint8_t sensorId,
87 std::span<uint8_t> buf);
88
89int decodeGetTemperatureReadingResponse(
90 std::span<const uint8_t> buf,
91 ocp::accelerator_management::CompletionCode& cc, uint16_t& reasonCode,
92 double& temperatureReading);
93
Harshit Aghera5e7decc2025-05-07 16:20:16 +053094int encodeReadThermalParametersRequest(uint8_t instanceId, uint8_t sensorId,
95 std::span<uint8_t> buf);
96
97int decodeReadThermalParametersResponse(
98 std::span<const uint8_t> buf,
99 ocp::accelerator_management::CompletionCode& cc, uint16_t& reasonCode,
100 int32_t& threshold);
101
Harshit Aghera560e6af2025-04-21 20:04:56 +0530102} // namespace gpu