blob: 5863306076ab4ede3979cfdb9f202da031cb6505 [file] [log] [blame]
Prithvi Paibffaa112025-07-19 13:57:19 +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#include "oemcommands.hpp"
8
9#include <ipmid/api.hpp>
10#include <ipmid/types.hpp>
11
12#include <cstdint>
13
14void registerBootstrapCredentialsOemCommands() __attribute__((constructor));
15
16namespace ipmi
17{
18ipmi::RspType<uint8_t, uint8_t> ipmiGetUsbVendorIdProductId(uint8_t type)
19{
20 constexpr uint8_t descriptorVendorId = 1;
21 constexpr uint8_t descriptorProductId = 2;
22
23 // IPMI OEM USB Linux Gadget info
24 constexpr uint16_t usbVendorId = 0x0525;
25 constexpr uint16_t usbProductId = 0xA4A2;
26
27 if (type == descriptorVendorId)
28 {
29 return ipmi::responseSuccess(static_cast<uint8_t>(usbVendorId >> 8),
30 static_cast<uint8_t>(usbVendorId & 0xFF));
31 }
32 else if (type == descriptorProductId)
33 {
34 return ipmi::responseSuccess(static_cast<uint8_t>(usbProductId >> 8),
35 static_cast<uint8_t>(usbProductId & 0xFF));
36 }
37 return ipmi::responseInvalidFieldRequest();
38}
39
40} // namespace ipmi
41
42void registerBootstrapCredentialsOemCommands()
43{
44 ipmi::registerHandler(
45 ipmi::prioOemBase, ipmi::groupNvidia,
46 ipmi::bootstrap_credentials_oem::cmdGetUsbVendorIdProductId,
47 ipmi::Privilege::Admin, ipmi::ipmiGetUsbVendorIdProductId);
48}