blob: f56baec8c5b57bb58b5c1c945b5d4446f53e8db8 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "capabilities.h"
namespace pci {
// TODO(cja): Remove when lspci is supported.
const char* CapabilityIdToName(Capability::Id id) {
switch (id) {
case Capability::Id::kNull:
return "Null";
case Capability::Id::kPciPowerManagement:
return "PCI Power Management";
case Capability::Id::kAgp:
return "AGP";
case Capability::Id::kVitalProductData:
return "Vital Product Data";
case Capability::Id::kSlotIdentification:
return "Slot Identification";
case Capability::Id::kMsi:
return "MSI";
case Capability::Id::kCompactPciHotSwap:
return "CompactPCI Hotswap";
case Capability::Id::kPciX:
return "PCI-X";
case Capability::Id::kHyperTransport:
return "HyperTransport";
case Capability::Id::kVendor:
return "Vendor";
case Capability::Id::kDebugPort:
return "Debug Port";
case Capability::Id::kCompactPciCrc:
return "CompactPCI CRC";
case Capability::Id::kPciHotplug:
return "PCI Hotplug";
case Capability::Id::kPciBridgeSubsystemVendorId:
return "PCI Bridge Subsystem VID";
case Capability::Id::kAgp8x:
return "AGP 8x";
case Capability::Id::kSecureDevice:
return "Secure Device";
case Capability::Id::kPciExpress:
return "PCI Express";
case Capability::Id::kMsiX:
return "MSI-X";
case Capability::Id::kSataDataNdxCfg:
return "SATA Data Ndx Config";
case Capability::Id::kAdvancedFeatures:
return "Advanced Features";
case Capability::Id::kEnhancedAllocation:
return "Enhanced Allocations";
case Capability::Id::kFlatteningPortalBridge:
return "Flattening Portal Bridge";
}
// If we reached this point we're not sure what we found.
return "Unknown";
}
const char* ExtCapabilityIdToName(ExtCapability::Id id) {
switch (id) {
case ExtCapability::Id::kNull:
return "Null";
case ExtCapability::Id::kAdvancedErrorReporting:
return "Advanced Error Reporting";
case ExtCapability::Id::kVirtualChannelNoMFVC:
return "Virtual Channel No MFVC";
case ExtCapability::Id::kDeviceSerialNumber:
return "Device Serial Number";
case ExtCapability::Id::kPowerBudgeting:
return "Power Budgeting";
case ExtCapability::Id::kRootComplexLinkDeclaration:
return "RootComplexLinkDeclaration";
case ExtCapability::Id::kRootComplexInternalLinkControl:
return "RootComplexInternalLinkControl";
case ExtCapability::Id::kRootComplexEventCollectorEndpointAssociation:
return "RootComplexEventCollectorEndpointAssociation";
case ExtCapability::Id::kMultiFunctionVirtualChannel:
return "MultiFunctionVirtualChannel";
case ExtCapability::Id::kVirtualChannel:
return "Virtual Channel";
case ExtCapability::Id::kRCRB:
return "RCRB";
case ExtCapability::Id::kVendor:
return "Vendor";
case ExtCapability::Id::kCAC:
return "CAC";
case ExtCapability::Id::kACS:
return "ACS";
case ExtCapability::Id::kARI:
return "ARI";
case ExtCapability::Id::kATS:
return "ATS";
case ExtCapability::Id::kSR_IOV:
return "SR_IOV";
case ExtCapability::Id::kMR_IOV:
return "MR_IOV";
case ExtCapability::Id::kMulticast:
return "Multicast";
case ExtCapability::Id::kPRI:
return "PRI";
case ExtCapability::Id::kEnhancedAllocation:
return "Enhanced Allocation";
case ExtCapability::Id::kResizableBAR:
return "Resizable BAR";
case ExtCapability::Id::kDynamicPowerAllocation:
return "Dynamic Power Allocation";
case ExtCapability::Id::kTPHRequester:
return "TPH Requester";
case ExtCapability::Id::kLatencyToleranceReporting:
return "Latency Tolerance Reporting";
case ExtCapability::Id::kSecondaryPCIExpress:
return "Secondary PCI Express";
case ExtCapability::Id::kPMUX:
return "PMUX";
case ExtCapability::Id::kPASID:
return "PASID";
case ExtCapability::Id::kLNR:
return "LNR";
case ExtCapability::Id::kDPC:
return "DPC";
case ExtCapability::Id::kL1PMSubstates:
return "L1 PM Substates";
case ExtCapability::Id::kPrecisionTimeMeasurement:
return "Precision Time Measurement";
case ExtCapability::Id::kMPCIe:
return "MPCIe";
case ExtCapability::Id::kFRSQueueing:
return "FRS Queueing";
case ExtCapability::Id::kReadinessTimeReporting:
return "Readiness Time Reporting";
case ExtCapability::Id::kDesignatedVendor:
return "Vendor";
case ExtCapability::Id::kVFResizableBAR:
return "VF Resizable BAR";
case ExtCapability::Id::kDataLinkFeature:
return "DataLink Feature";
case ExtCapability::Id::kPhysicalLayer16:
return "Physical Layer 16";
case ExtCapability::Id::kLaneMarginingAtReceiver:
return "Lane Margining At Receiver";
case ExtCapability::Id::kHierarchyId:
return "Hierarchy Id";
case ExtCapability::Id::kNativePCIeEnclosure:
return "Native PCIe Enclosure";
case ExtCapability::Id::kPhysicalLayer32:
return "Physical Layer 32";
case ExtCapability::Id::kAlternateProtocol:
return "Alternate Protocol";
case ExtCapability::Id::kSystemFirmwareIntermediary:
return "System Firmware Intermediary";
}
// If we reached this point we're not sure what we found.
return "Unknown";
}
} // namespace pci