/** @file
Si Config Block
Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _SI_CONFIG_H_
#define _SI_CONFIG_H_
#define SI_CONFIG_REVISION 3
extern EFI_GUID gSiConfigGuid;
#pragma pack (push,1)
/**
The Silicon Policy allows the platform code to publish a set of configuration
information that the RC drivers will use to configure the silicon hardware.
Revision 1:
- Initial version.
Revision 2:
- Added TraceHubMemBase
Revision 3
- Deprecated SkipPostBootSai
**/
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Offset 0 - 27 Config Block Header
//
// Platform specific common policies that used by several silicon components.
//
UINT32 CsmFlag : 1; ///< Offset 44 BIT0: CSM status flag.
/**
@deprecated since revision 3
**/
UINT32 SkipPostBootSai : 1;
UINT32 RsvdBits : 30; ///< Reserved
UINT32 *SsidTablePtr; // Offset 48
UINT16 NumberOfSsidTableEntry; // Offset 52
UINT16 Reserved; // Offset 54
/**
If Trace Hub is enabled and trace to memory is desired, Platform code or BootLoader needs to allocate trace hub memory
as reserved, and save allocated memory base to TraceHubMemBase to ensure Trace Hub memory is configured properly.
To get total trace hub memory size please refer to TraceHubCalculateTotalBufferSize ()
Noted: If EDKII memory service is used to allocate memory, it will require double memory size to support size-aligned memory allocation,
so Platform code or FSP Wrapper code should ensure enough memory available for size-aligned TraceHub memory allocation.
**/
UINT32 TraceHubMemBase; // Offset 58
} SI_CONFIG;
#pragma pack (pop)
#define DEFAULT_SSVID 0x8086
#define DEFAULT_SSDID 0x7270
#define MAX_DEVICE_COUNT 70
///
/// Subsystem Vendor ID / Subsystem ID
///
typedef struct {
UINT16 SubSystemVendorId;
UINT16 SubSystemId;
} SVID_SID_VALUE;
//
// Below is to match PCI_SEGMENT_LIB_ADDRESS () which can directly send to PciSegmentRead/Write functions.
//
typedef struct {
union {
struct {
UINT64 Register:12;
UINT64 Function:3;
UINT64 Device:5;
UINT64 Bus:8;
UINT64 Reserved1:4;
UINT64 Segment:16;
UINT64 Reserved2:16;
} Bits;
UINT64 SegBusDevFuncRegister;
} Address;
SVID_SID_VALUE SvidSidValue;
UINT32 Reserved;
} SVID_SID_INIT_ENTRY;
#endif // _SI_CONFIG_H_