| #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 |