blob: be44e53a7061a82bd041a9beef236d4f4502d584 [file] [edit]
#pragma once
#include <sdbusplus/bus.hpp>
#include <cstdint>
#include <map>
#include <optional>
#include <string>
#include <vector>
namespace google::pcie_bifurcation
{
struct PCIeBifurcationData
{
std::string pcieBifurcationStr;
bool cxlDevice;
};
std::vector<uint8_t>
getBifurcationData(const PCIeBifurcationData& bifurcation_data);
std::optional<PCIeBifurcationData>
getPcieBifurcationData(std::map<std::string, std::string>& fru_map);
std::optional<PCIeBifurcationData> getBifurcationFromFRU(uint32_t bus,
uint32_t addr);
std::vector<std::string> physicalAssociations(sdbusplus::bus::bus& sysBus,
const std::string& path);
std::vector<uint8_t> parseBifurcationString(std::string_view bifurcationStr,
bool isUtilityCluster = false);
std::optional<uint64_t> pcieDeviceMaxLanes(sdbusplus::bus::bus& sysBus,
const std::string& path);
std::optional<uint64_t> pcieSlotLanes(sdbusplus::bus::bus& sysBus,
const std::string& path);
std::vector<uint8_t> parseDevices(sdbusplus::bus::bus& sysBus,
const std::string& path);
} // namespace google::pcie_bifurcation