/** @file Intel PCI security data structure definition from PCIe* Device Security Enhancements Specification. https://www.intel.com/content/www/us/en/io/pci-express/pcie-device-security-enhancements-spec.html NOTE: The data structure is not fully match the current specification, because it is aligned with the real hardware implementation with minor adjustment on INTEL_PCI_DIGEST_CAPABILITY_STRUCTURE, INTEL_PCI_DIGEST_DATA_MODIFIED and INTEL_PCI_DIGEST_DATA_VALID. Copyright (c) 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __INTEL_PCI_SECURITY_H__ #define __INTEL_PCI_SECURITY_H__ #pragma pack(1) /// /// The PCIE capability structure header for Intel PCI DVSEC extension. /// typedef struct { UINT16 CapId; // 0x23: DVSEC UINT16 CapVersion:4; // 1 UINT16 NextOffset:12; UINT16 DvSecVendorId; // 0x8086 UINT16 DvSecRevision:4; // 1 UINT16 DvSecLength:12; UINT16 DvSecId; // 0x3E: Measure } INTEL_PCI_DIGEST_CAPABILITY_HEADER; #define INTEL_PCI_CAPID_DVSEC 0x23 #define INTEL_PCI_DVSEC_VENDORID_INTEL 0x8086 #define INTEL_PCI_DVSEC_DVSECID_MEASUREMENT 0x3E /// /// The Intel PCI digest modified macro. /// #define INTEL_PCI_DIGEST_MODIFIED BIT0 /// /// The Intel PCI DVSEC digest data modified structure. /// typedef union { struct { UINT8 DigestModified:1; // RW1C UINT8 Reserved0:7; } Bits; UINT8 Data; } INTEL_PCI_DIGEST_DATA_MODIFIED; /// /// The Intel PCI digest valid macro. /// #define INTEL_PCI_DIGEST_0_VALID BIT0 #define INTEL_PCI_DIGEST_0_LOCKED BIT1 #define INTEL_PCI_DIGEST_1_VALID BIT2 #define INTEL_PCI_DIGEST_1_LOCKED BIT3 /// /// The Intel PCI DVSEC digest data valid structure. /// typedef union { struct { UINT8 Digest0Valid:1; // RO UINT8 Digest0Locked:1; // RO UINT8 Digest1Valid:1; // RO UINT8 Digest1Locked:1; // RO UINT8 Reserved1:4; } Bits; UINT8 Data; } INTEL_PCI_DIGEST_DATA_VALID; /// /// The PCIE capability structure for Intel PCI DVSEC extension with digest. /// typedef struct { INTEL_PCI_DIGEST_DATA_MODIFIED Modified; // RW1C INTEL_PCI_DIGEST_DATA_VALID Valid; // RO UINT16 TcgAlgId; // RO UINT8 FirmwareID; // RO UINT8 Reserved; //UINT8 Digest[]; } INTEL_PCI_DIGEST_CAPABILITY_STRUCTURE; #pragma pack() #endif