Intel® Atom™ C3XXX Product Family Firmware Support Package (Intel® FSP) Integration Guide Denverton NSFsp
User Manual:
Open the PDF directly: View PDF
.
Page Count: 32
| Download | |
| Open PDF In Browser | View PDF |
Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide November 2018 Production Validated 003 Document ID: 335702-003US By using this document, in addition to any agreements you have with Intel, you accept the terms set forth below. Legal Lines and Disclaimers You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or “undefined.” Do not finalize a design with this information. The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-5484725, or go to: http://www.intel.com/design/literature.htm Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. Copyright © 2018, Intel Corporation. All rights reserved. Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 2 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Revision History Revision History Date Revision Description Production Validated 003 Added PCIe Lane Reversal UPD November 2018 003 October 2017 002 Production Validated 001 March 2017 001 Initial Release - Production Candidate 001 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 3 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Contents Contents 1 Introduction ............................................................................................................. 1.1 Purpose............................................................................................................. 1.2 Intended Audience .............................................................................................. 1.3 Related Documents ............................................................................................. 1.4 Acronyms and Terminology .................................................................................. 5 5 5 5 6 2 Intel® FSP Overview ................................................................................................. 2.1 Technical Overview ............................................................................................. 2.2 Intel® FSP Distribution Package ........................................................................... 2.2.1 Package Layout ....................................................................................... 7 7 8 8 3 Intel® FSP Integration .............................................................................................. 9 3.1 Assumptions Used in this Document ...................................................................... 9 3.2 Boot Flow .......................................................................................................... 9 3.3 FSP Component Extraction ................................................................................... 9 3.4 Intel® FSP Information Header ............................................................................11 3.5 FSP Image ID and Revision .................................................................................11 3.6 Intel® FSP APIs .................................................................................................11 3.6.1 TempRamInit API ...................................................................................11 3.6.2 FspMemoryInit API..................................................................................12 3.6.3 TempRamExit API ...................................................................................12 3.6.4 FspSiliconInit API....................................................................................13 3.6.5 NotifyPhase API ......................................................................................13 3.6.5.1 PostPciBusEnumeration Notification .............................................13 3.6.5.2 ReadyToBoot Notification............................................................13 3.6.5.3 EndOfFirmware Notification.........................................................13 4 Intel® FSP Output ....................................................................................................14 4.1 SMRAM Resource Descriptor HOB.........................................................................14 4.2 FIA MUX HOB ....................................................................................................14 4.3 SMBIOS INFO HOB ............................................................................................15 4.4 MarginCheckerTestReport HOB ............................................................................15 5 Intel® FSP Configuration Firmware File....................................................................16 5.1 UPD Data Structure............................................................................................16 5.1.1 FSP Configuration Data............................................................................16 5.1.1.1 FSP-T UPD Structure..................................................................16 5.1.1.2 Detailed Description...................................................................16 5.1.2 FSP-T UPD Data Region ...........................................................................17 5.1.2.1 FSP-M UPD Data Region .............................................................17 5.1.2.2 FSP-S UPD Data Region .............................................................22 Figures 3-1 FSP Component Layout View ........................................................................................10 Tables 1-1 1-2 3-1 Platform and Intel® FSP Documentation ......................................................................... 5 Acronyms and Terminology ........................................................................................... 6 Memory Range and Cache Attributes .............................................................................12 §§ Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 4 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Introduction 1 Introduction 1.1 Purpose The purpose of this document is to describe the steps required to integrate the Intel® Firmware Support Package (Intel® FSP) for Intel Atom® C3XXX Product Family (formerly Denverton-NS) System-on-a-Chip (SoC) into a bootloader solution. This document is a supplement to the Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0). 1.2 Intended Audience This document is targeted at all platform and system developers who need to consume Intel® FSP binaries in their bootloader solutions. This includes, but is not limited to, system Basic Input/Output System (BIOS) developers, bootloader developers, system integrators, and end users. 1.3 Related Documents Table 1-1. Platform and Intel® FSP Documentation Documentation Name Document Number / Location Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) https://www.intel.com/ content/dam/www/public/ us/en/documents/ technical-specifications/ fsp-architecture-specv2.pdf Binary Configuration Tool (BCT) for Intel® FSP https://github.com/ IntelFsp/BCT Linux* FSP for Intel® Atom™ C3XXX Product Family https://github.com/ IntelFsp/FSP Intel® Atom™ C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Release Notes 335701 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 5 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Introduction 1.4 Acronyms and Terminology Table 1-2. Acronyms and Terminology Acronym Definition ACPI Advanced Configuration and Power Interface BCT Binary Configuration Tool BIOS Basic Input/Output System BSP Boot Strap Processor BSF Boot Setting File BWG BIOS Writer’s Guide CAR Cache-as-RAM CPGC Converged Pattern Generator and Checking eMMC* Embedded Multi-media Controller* FIA Flexible I/O Adapter HSUART High Speed Universal Asynchronous Receiver/Transmitter Intel® FSP Intel® Firmware Support Package FSP API Firmware Support Package Interface GUID Globally Unique Identifier HOB Hand-off Blocks HSIO High Speed IO LPC Low Pin Count MTRR Memory Type and Range Register MRC Memory Reference Code ODM Original Design Manufacture PCD Platform Configuration Database PCIe* Peripheral Component Interconnect Express PIC Position Independent Code RMT Rank Margin Tool SMM System Management Mode SoC System-on-a-Chip SPD Serial Presence Detect SMBIOS System Management BIOS SMBUS System Management Bus TSEG Memory Reserved at the Top of Memory to be used as SMRAM UPD Updatable Product Data VPD Vital Product Data xHCI Extensible Host Controller Interface § Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 6 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Overview 2 Intel® FSP Overview 2.1 Technical Overview The Intel® Firmware Support Package (Intel® FSP) provides chipset and processor initialization in a format that can easily be incorporated into many existing bootloaders. The Intel® FSP performs the necessary initialization steps as documented in the BIOS Writer’s Guide (BWG) including initialization of the CPU, memory controller, chipset, and certain bus interfaces, if necessary. The Intel® FSP is NOT a stand-alone bootloader; therefore, it needs to be integrated into a host bootloader to carry out other bootloader functions, such as initializing nonIntel components, conducting bus enumeration, and discovering devices in the system and all industry standard initialization. The Intel® FSP binary can be integrated easily into many different bootloaders, such as coreboot*, etc., and also into the embedded OS directly. This Intel® FSP is compliant to the Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0). Below are some required steps for the integration: • Customizing The static FSP configuration parameters are part of the FSP binary and can be customized by the Binary Configuration Tool (BCT) for Intel® FSP (Refer to Table 1-1). • Rebasing The FSP is not Position Independent Code (PIC) and the whole FSP has to be rebased if it is placed at a location that is different from the preferred address during build process. • Placing Once the FSP binary is ready for integration, the bootloader build process needs to be modified to place this FSP binary at the specific rebasing location identified above. • Interfacing The bootloader needs to add code to set up the operating environment for the FSP, call the FSP with the correct parameters, and parse the FSP output to retrieve the necessary information returned by the FSP. November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 7 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Overview 2.2 Intel® FSP Distribution Package The Intel® FSP distribution package contains the following: • FSP Binary - DenvertonNSFsp.fd • Updatable Product Data (UPD) structure definitions - FspUpd.h, FspmUpd.h, FspsUpd.h, FsptUpd.h • Boot Setting File (BSF) File - DenvertonNSFsp.bsf Refer to Table 1-1, Binary Configuration Tool (BCT) for Intel® FSP for the download link. 2.2.1 Package Layout • DENVERTON-NS_FSP_KIT: • DenvertonNSFspBinPkg — Docs • license.txt • FSP Release Notes • FSP Integration Guide — FspBin • DenvertonNSFsp.bsf (BSF file for configuring the data using BCT tool) • DenvertonNSFsp.fd (FSP Binary) — Include • FspUpd.h, FsptUpd.h, FspmUpd.h and FspsUpd.h (FSP UPD structure and related definitions) — Microcode • DenvertonNSFspKitProductionRULACLicense.pdf § Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 8 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Integration 3 Intel® FSP Integration 3.1 Assumptions Used in this Document The Intel® FSP for the Intel Atom® C3XXX Product Family SoC is built with a preferred base address of 0xFFF30000; the Intel® FSP binary is assumed to be placed at the same address as part of the bootloader build. Users may rebase the FSP binary at a different location with the Binary Configuration Tool (BCT) before integrating to the bootloader. For other assumptions and conventions, refer to the Intel® FSP Interface (Intel® FSP API) section of the Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) 3.2 Boot Flow Refer to Table 1-1, Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) for the Boot flow chart. Note: Intel Atom® C3XXX Product Family Intel® FSP does not return the reset-required status. 3.3 FSP Component Extraction Intel Atom® C3XXX Product Family Intel® FSP image can be split into three different components (FSP-T, FSP-M and FSP-S) and each component can be located at different base addresses according to its execution location. In Intel Atom® C3XXX Product Family boot flow there are three different execution stages: • Execution in ROM • Execution in temporary RAM (Cache-as-RAM) • Execution in system memory The three extracted FSP components can be exactly mapped into different execution stages on Intel Atom® C3XXX Product Family Intel® FSP boot flow. • FSP-T executes in ROM. • FSP-M executes in temporary memory. After the memory is initialized, the generic code like PEI dispatcher and other FSP data is migrated into permanent memory. • FSP-S executes in memory. The FSP layout is shown in Figure 3-1. The following base addresses are used by default: • FSP-T component is set to 0xFFF30000 • FSP-M component is set to 0xFFF32000 • FSP-S component is set to 0xFFFC3000 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 9 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Integration If the FSP component needs to be loaded at different address, use the BCT tool to rebase it before the integration. FSP Binary is released as a single image (.FD extension). Use the python* script, SplitFspBin.py, to split the FD in to the different FSP components. SplitFspBin.py is available at: https://github.com/IntelFsp/FSP/tree/master/Tools The sample command shown below creates three binaries named after the input FSP binary and appended with “_M”, “_S”, and “_T” respectively. • python SplitFspBin.py split -fFigure 3-1. FSP Component Layout View Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 10 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Integration 3.4 Intel® FSP Information Header The Intel® FSP has an FSP_INFO_HEADER structure embedded in each FSP component. It provides critical information required by the bootloader to successfully interface with the Intel® FSP. Refer to Table 1-1. Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) for information on the structure of the Intel® FSP Information Header listed in Figure 3-1. 3.5 FSP Image ID and Revision The FSP_INFO_HEADER structure inside each FSP component also contains an Image Identifier field and an Image Revision field that provide the identification and revision information for the FSP binary. It is important to verify these fields while integrating the FSP as the FSP configuration data could change over different FSP Image identifiers and revisions. The Intel® FSP API parameters documented in this integration guide are applicable for the Image ID and Revision specified as below. The current FSP ImageId string in the FSP information header is DNV-FSP0 and the ImageRevision field is 0x00000111(1.11). 3.6 Intel® FSP APIs This release of the Intel® Atom™ C3XXX Product Family Intel® FSP supports all APIs required by the FSP EAS v2.0. The FSP information header contains the address offset for these APIs. Refer to Table 1-1, Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) for Register usage and calling conventions. Any usage not described by the specification is described in the individual sections below. The sections below highlights any changes that are specific to this FSP EAS v2.0 release. 3.6.1 TempRamInit API Refer to the TempRamInit Section in the FSP EAS v2.0 for complete details including the prototype, parameters and return value details for this API. If the bootloader initializes the Temporary RAM (CAR) and chipset BARs, calling this API should be skipped. TempRamInit does basic early initialization; primarily, setting up temporary RAM using cache. The API returns a temporary memory data region that can be used by the bootloader with ECX pointing to beginning of temporary memory and EDX pointing to end of temporary memory. The temporary memory data region returned by this FSP release is from 0xFEF0_0000 (ECX) to 0xFEFF_FF00 (EDX). Both FSPT_UPD.MicrocodeRegionBase and FSPT_UPD.MicrocodeRegionLength can be set to 0. However, if a valid region is passed and a newer microcode update revision is in this region, it will be loaded by the Intel® FSP. November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 11 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Integration 3.6.2 FspMemoryInit API Refer to the FspMemoryInit Section in the FSP EAS v2.0 for the prototype, parameters and return value details for this API. The FSP stack size reserved for this revision of the FSP is 320KB, stack base is 0xFEFFB000 by default. The FspmUpdPtr is pointer to FSPM_UPD structure which is described in header file FspmUpd.h. Boot Loader must pass valid Cache-as-RAM (CAR) region for FSP stack use through these UPDs: • FSPM_UPD.FspmArchUpd.StackBase • FSPM_UPD.FspmArchUpd.StackSize. Note: Certain platforms might need some GPIOs to be initialized prior to the memory initialization. In this case, the bootloader needs to configure the required GPIO pins properly before calling into FspMemoryInit. For example, to read SPD data, the System Management Bus (SMBUS) pins have to be configured properly. 3.6.3 TempRamExit API Refer to the TempRamExit Section in the FSP EAS v2.0 for the prototype, parameters and return value details for this API. If the bootloader initialized the Temporary RAM (CAR) as well as the chipset BARs and skipped calling TempRamInit API, then the bootloader is required to skip calling this API, to tear down the temporary memory area setup in the cache, and to bring the cache back to normal mode of operation. This revision of Intel® FSP does not have any fields/structure to pass as parameter for this API. Pass Null for TempRamExitParamPtr. At the end of TempRamExit execution, the original code and data caching are disabled. The Intel® FSP reconfigures the following Memory Type and Range Registers (MTRRs) for performance optimization. Table 3-1. Memory Range and Cache Attributes Memory Range 0x00000000 – 0x0009FFFF Cache Attribute Write back 0x000A0000 – 0x000BFFFF Uncacheable 0x000C0000 – Top of Low Memory Write back 0xFF800000 – 0xFFFFFFFF (Flash region) Write protect 0x1000000000 – Top of High Memory Write back The bootloader can reconfigure the MTRRs immediately after this API call. Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 12 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Integration 3.6.4 FspSiliconInit API Refer to the FspSiliconInit Section in the FSP EAS v2.0 for the prototype, parameters and return value details for this API. The FspsUpdPtr is pointer to FSPS_UPD structure which is described in header file FspsUpd.h. The bootloader is responsible for programming the MTRRs for Boot Strap Processor (BSP) as needed after TempRamExit but before entering FspSiliconInit. If MTRRs are not programmed properly, boot performance might be impacted. 3.6.5 NotifyPhase API Refer to the NotifyPhase Section in the FSP EAS v2.0 for the prototype, parameters and return value details for this API. Note: It is REQUIRED that all the supported NotifyPhase APIs are called and in the recommended order. 3.6.5.1 PostPciBusEnumeration Notification The bootloader calls this phase, EnumInitPhaseAfterPciEnumeration, after PCI bus enumeration but before execution of third party code such as option ROMs. Currently, no special operation is done in this phase, but in the future updates, programming may be added in this phase. 3.6.5.2 ReadyToBoot Notification The bootloader calls this phase, EnumInitPhaseReadyToBoot, before giving control to OS Loader. It includes some final initialization steps recommended by the BWG, including power management settings, locking down security-related registers, and switching devices into ACPI mode if required, etc. 3.6.5.3 EndOfFirmware Notification Intel® Atom™ C3XXX Product Family does not support this API. § November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 13 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Output 4 Intel® FSP Output The Intel® FSP builds a series of data structures called the Hand-Off-Blocks (HOBs) as it progresses through initializing the silicon. Refer to Table 1-1, Platform Initialization (PI) Specification - Volume 3: Shared Architectural Elements specification for PI Architectural HOBs. Refer to the Intel® FSP Output chapter of the Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) for details about Intel® FSP Architectural HOBs. The section below describes the HOBs implemented in Intel® Atom™ C3XXX Product Family Intel® FSP that are not covered in the previous two specifications. 4.1 SMRAM Resource Descriptor HOB The Intel® FSP reports the system SMRAM T-SEG range through a generic resource HOB if T-SEG is enabled. The owner field of the HOB identifies the owner as T-SEG. #define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \ { 0xd038747c, 0xd00c, 0x4980, { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } } 4.2 FIA MUX HOB The Intel® FSP reports the Flexible I/O Adapter (FIA) Mux Settings thru the FIA Mux HOB. #define FSP_FIAMUX_HOB_GUID \ { 0x26ad492e, 0xf951, 0x4e43, { 0xbc, 0x72, 0x22, 0x76, 0x58, 0xb1, 0xf6, 0x23 }} Refer to the FspmUpd.h for the details of HOB structure. Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 14 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Output 4.3 SMBIOS INFO HOB The Intel® FSP will report the System Management BIOS (SMBIOS) through a HOB with below Globally Unique Identifier (GUID). This information can be consumed by the bootloader to produce the SMBIOS tables. #define FSP_SMBIOS_MEMORY_INFO_HOB_GUID \ { 0x1a1108c, 0x9dee, 0x4984, { 0x88, 0xc3, 0xee, 0xe8, 0xc4, 0x9e, 0xfb, 0x89 } }; #define MAX_CHANNELS_NUM 2 #define MAX_DIMMS_NUM 2 typedef struct { UINT8 DimmId; UINT32 SizeInMb; UINT16 MfgId; /* Module part number for DRR3 is 18 bytes but DRR4 is 20 bytes as per JEDEC Spec, so reserving 20 bytes */ UINT8 ModulePartNum[20]; } DIMM_INFO; typedef struct { UINT8 ChannelId; UINT8 DimmCount; DIMM_INFO DimmInfo [MAX_DIMMS_NUM]; } CHANNEL_INFO; typedef struct { UINT8 Revision; UINT8 DataWidth; /** As defined in SMBIOS 3.0 spec Section 7.18.2 and Table 75 **/ UINT8 MemoryType; UINT16 MemoryFrequencyInMHz; /** As defined in SMBIOS 3.0 spec Section 7.17.3 and Table 72 **/ UINT8 ErrorCorrectionType; UINT8 ChannelCount; CHANNEL_INFO ChannelInfo[MAX_CHANNELS_NUM]; } FSP_SMBIOS_MEMORY_INFO; 4.4 MarginCheckerTestReport HOB The Intel® FSP uses this HOB to pass information (for Margin Check) from MRC to the boot loader. #define gFspFastBootCheckerHobGuid = { 0x7897f07b, 0xcda, 0x40e3, { 0xb4, 0xe4, 0x51, 0x5f, 0x47, 0x3b, 0x4, 0xb6 }} ; § November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 15 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File 5 Intel® FSP Configuration Firmware File The Intel® FSP binary contains a configurable data region that is used by the FSP during the initialization. Refer to the Intel® FSP Configuration Firmware File chapter of the Intel® FSP External Architecture Specification v2.0 (FSP EAS v2.0) for details. Note: A stack in temporary memory is used to store the Updatable Product Data (UPD) data structure. This UPD data structure is copied, updated, and then passed to the FSP API. When permanent memory is initialized, the Intel® FSP sets up a new stack in the permanent memory and tears down the temporary memory. However, the Intel® FSP saves the whole bootloader temporary memory region in a GUID HOB. The bootloader can access the data in the temporary memory by parsing this HOB. The migrated temporary memory contains an identical copy of the original data. Pointers to data stored in the temporary memory needs to be updated to the location of the same data in the permanent memory. 5.1 UPD Data Structure The UPD data structure and related structure definitions are provided in the FspUpd.h, FsptUpd.h, FspmUpd.h and FspsUpd.h file in the release package. The basic information for each option is provided in the BCT configuration file. Use the BCT tool to load this BSF file and get the detailed configuration option information. 5.1.1 FSP Configuration Data 5.1.1.1 FSP-T UPD Structure FSP-T Core UPD Configuration is described in the FSP-T UPD Structure section of the FSP EAS v2.0. #include < FsptUpd.h> typedef struct { UINT32 MicrocodeRegionBase; UINT32 MicrocodeRegionLength; UINT32 CodeRegionBase; UINT32 CodeRegionLength; UINT8 Reserved1[16]; } FSPT_CORE_UPD; 5.1.1.2 Detailed Description FSP-T Core UPD Configuration. The documentation for this structure was generated from the following file: FsptUpd.h MicrocodeRegionBase: Base address of the microcode region. This address must be 16 byte aligned. MicrocodeRegionLength: Length of the microcode region. The length must be total size of all patches or 0xFFFFFFFF if auto size detection is desired. CodeRegionBase: Base address of the cacheable flash region. CodeRegionLength: Length of the cacheable flash region. A size of 0 indicates that no code caching is desired. Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 16 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File 5.1.2 FSP-T UPD Data Region This UPD data region can be configured statically by the BCT tool in the same way as Vital Product Data (VPD) data region, but can also be overridden by the bootloader at runtime. This provides more flexibility for the bootloader to customize these options dynamically as needed. PcdPort80RouteDisable Used to enable/disable diversion of Low Pin Count (LPC) Port80 writes. When selecting item “0x0/VPD-Style”, this Platform Configuration Database (PCD) cannot be overridden and act as a VPD PCD. Valid inputs are: 0x0 - VPD-Style 0x1 - “Enabled Port80 Output” (Default) 0x2 - “Disabled Port80 Output” PcdRegionTerminator This field has a value of 0x55AA indicating the end of UPD data. DO NOT MODIFY. 5.1.2.1 FSP-M UPD Data Region The UPD parameters that are part of the MemoryInitUpd and consumed by the FspMemoryInit API are described below. PcdCustomerRevision The customer can add a label/version ID, maximum 32 characters. PcdSmmTsegSize Used to specify the Size of SMRAM (TSEG) memory reserved. Valid inputs are: 0x02 - “2 MB” (Default) 0x04 - “4 MB” 0x08 - “8 MB” 0x16 - “16 MB” PcdFspDebugPrintErrorLevel Controls the Intel® FSP debug message level. To allow the Intel® FSP debug message print out, this option should be configured to any level other than 0. Valid inputs are: 0x00 – 0x00 0x01 – 0x01 0x02 - 0x02 (Default) 0x03 – 0x03 PcdSpdSmbusAddress_0_0 Used to configure SMBus address of Channel 0 DIMM 0 on the platform. Valid inputs are: From 0x00 to 0xFF Default: 0xA0 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 17 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File PcdSpdSmbusAddress_0_1 Used to configure SMBus address of Channel 0 DIMM 1 on the platform. Valid inputs are: From 0x00 to 0xFF Default: 0xA2 PcdSpdSmbusAddress_1_0 Used to configure SMBus address of Channel 1 DIMM 0 on the platform. Valid inputs are: From 0x00 to 0xFF Default: 0xA4 PcdSpdSmbusAddress_1_1 Used to configure SMBus address of Channel 1 DIMM 1 on the platform. Valid inputs are: From 0x00 to 0xFF Default: 0xA6 PcdMrcRmtSupport Used to enable/disable Memory Reference Code (MRC) Rank Margin Tool (RMT). If enabled, the MRC prints out the rank margining information so that it can be used as the input for the RMT to analyze the platform memory sub-system margining. PcdFastBoot option should be disabled because MRC fast boot path skips normal memory training steps. The RMT log is printed to the serial console. Valid inputs are: 0 - “Disabled” (Default) 1 - “Enabled” PcdMrcRmtCpgcExpLoopCntValue Used to configure Rank Margin Tool (RMT). Set the Converged Pattern Generator and Checking (CPGC) exp_loop_cnt field for RMT execution 2^ (exp_loop_cnt -1). Valid inputs are: From 1 to 15 Default: 12 PcdMrcRmtCpgcNumBursts Used to configure Rank Margin Tool (RMT). Set the CPGC num_bursts field for RMT execution 2^ (num_bursts -1). Valid inputs are: From 1 to 15 Default: 6 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 18 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File PcdMemoryPreservation Used to enable/disable the memory preservation through warm resets. Valid inputs are: 0 - “Disabled” (Default) 1 - “Enabled” PcdFastBoot Used to enable/disable the Fast Boot function. Once enabled, all following boots use the presaved MRC data to improve the boot performance. Valid inputs are: 0 - “Disabled” 1 - “Enabled” (Default) PcdEccSupport Used to enable/disable the error correcting code memory support. Valid inputs are: 0 - “Disabled” 1 - “Enabled” (Default) PcdHsuartDevice Select the Peripheral Connect Interface (PCI) High Speed Device for Serial Port. It is expected that the bootloader will configure the PCI High Speed UART (HSUART) Device for Serial Port prior to calling the FspInitEntry API. The bootloader should update this Updatable Product Data (UPD) with the function number of the HSUART device so that the Intel® FSP can output to the serial port. The supported device functions are 0, 1, and 2. The Intel® FSP defaults to function 0 if this UPD is not configured with one of the supported function numbers. 0 - HSUART0 (Default) 1 - HSUART1 2 - HSUART2 PcdMemoryDown Used to enable/disable the Memory Down function. For designs that implement memory soldered down to the board and that do not include SPD EEPROMs on the board, enable this PCD. It is also required that the bootloader configures the SPD data; refer to Appendix A. However, if the design implements memory soldered down to the board and includes SPD EEPROMs on the board, then it is not required to enable this PCD. In this situation, the Intel® FSP needs to be configured with the SPD SMBus addresses for the SPD EEPROMs for each memory bank. 0 - “Disabled” (Default) 1 - “Enabled” November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 19 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File PcdMemoryDownConfigPtr It is required that the bootloader configures this UPD prior to calling the FspMemoryInit API if the board design includes soldered down memory. Refer to Appendix A for details on Memory Down support. This PCD cannot be configured by the BCT Tool. 0 - (Default) PcdEnableSATA0 Used to enable/disable SATA Controller 0, including Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdEnableSATA1 Used to enable/disable SATA Controller 1, including Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdEnableIQAT Used to enable/disable Intel Quick Assist Technology devices, including Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdSmbusSpdWriteDisable Used to enable/disable SPD Write Protect. Set this PCD to Force Disable to allow writes to slaves 0xA0 – 0xAE. After completing SPD flow, it is highly recommended that the bootloader set SPD_WD. This will prevent any future writes (accidental or malicious) to the DIMM EEPROMs; a malicious write could corrupt an EEPROM and cause a Permanent Denial of Service (platform will not boot) until the DIMM is replaced. A platform may be designed such that SMBus0 segment includes EEPROMs, other than DIMM EEPROM (not Intel recommended). In this case, if the Original Design Manufacture (ODM) expects write access by a regular SW driver or by BIOS/System Management Mode (SMM) at a later time, it is possible to leave SPD_WD cleared. However, the ODM should know that this exposes the DIMM EEPROMs to the security vulnerability noted above. 1 – “Force Enable” (Default) 2 – “Force Disable” PcdEnableMeShutdown Enable/disable sending the ME_SHUTDOWN message to ME. Valid inputs are: 0x0 - “Disabled” (Default) 0x1 - “Enabled” Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 20 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File PcdEnableXhci Enable/disable Extensible Host Controller Interface (xHCI) controller, including Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdDdrFreq Set DDR Memory Frequency to a specific value. Valid inputs are: 15 - “Auto” 3 - “1600 MHz” 4 - “1866 MHz” 5 - “2133 MHz” (Default) 6 - “2400 MHz” For DDR3 memory, items “Auto”, “1600” and “1866” MHz can be selected. For DDR4 memory, items “Auto”, “1866”, “2133”, and “2400” MHz can be selected. PcdMmioSize Used to set memory mapped IO space size. Valid inputs are: 0 - 2048M (Default) 1 - 1024M 2 - 3072M PcdHalfWidthEnable Used to enable/disable 32-bit Memory Bus Mode. Valid inputs are: 0x0 - “Disabled” (Default) 0x1 - “Enabled” PcdTclIdle Used to modify Tcl timing for performance improvement. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdInterleaveMode Used to select memory interleave mode. Valid inputs are: 0 - disabled 1 – mode0 2 – mode1 3 – mode2 (Default) PcdMemoryThermalThrottling Used to enable/disable memory thermal throttling management mode. 0x0 - “Disabled” (Default) 0x1 - “Enabled” November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 21 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File 5.1.2.2 FSP-S UPD Data Region The UPD parameters that are part of the SiliconInitUpd and are consumed by the FspSiliconInit API are described below. PcdBifurcationPcie0 Configure Peripheral Component Interconnect Express * (PCIe*) controller 0 bifurcation. 0 - X2X2X2X2 1 - X2X2X4 2 - X4X2X2 3 - X4X4 4 - X8 (Default) PcdBifurcationPcie1 Configure PCIe* controller 1 bifurcation. 0 - X2X2X2X2 1 - X2X2X4 2 - X4X2X2 3 - X4X4 (Default) 4 - X8 PcdActiveCoreCount Used to select the number of Active Cores. 0 - ALL (Default) 1..15 - 1..15 Cores PcdCpuMicrocodePatchBase It is required that the bootloader configures this UPD prior to calling the FspSiliconInit API. This UPD cannot be modified using the BCT. 0 - (Default) PcdCpuMicrocodePatchSize It is required that the bootloader configures this UPD prior to calling the FspSiliconInit API. This UPD cannot be modified using the BCT. 0 - (Default) Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 22 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Intel® FSP Configuration Firmware File PcdEnablePcie0 Used to enable/disable PCIe* Controller 0 by controlling Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdEnablePcie1 Used to enable/disable PCIe Controller 1 by controlling Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdPcieRootPort[0:7] DeEmphasis Used to configure PCIe root ports (1-8) De-Emphasis settings. Valid inputs are: 0x0 - “6 dB” (Default) 0x1 - “3.5 dB” PcdRootPort[0:7]LaneReversal Enable/Disable Lane Reversal on PCIe* Root Port 1-8. 0x0 - Disabled (Default) 0x1 _ Enabled PcdEnableGbE Used to enable/disable LAN Controller by controlling the Static Power Gating. Valid inputs are: 0x0 - “Disable LAN 0 & LAN 1" 0x1 - “Enable LAN 0 & LAN 1” (Default) 0x2 - “Disable LAN 1 only” PcdFiaMuxConfigRequestPtr It is required that the bootloader configures this UPD prior to calling the FspSiliconInit API to set the request FIA MUX configuration to allow Intel® FSP overriding High Speed IO (HSIO) lanes for PCIe*/SATA/USB3 controllers. Refer to Appendix B for details how to configure this pointer. This PCD cannot be configured by the BCT Tool. 0 - (Default) PcdEnableEmmc Used to enable/disable Embedded Multi-Media Controller* (eMMC*) by controlling the Static Power Gating. Valid inputs are: 0x0 - “Disabled” 0x1 - “Enabled” (Default) PcdEMMCDLLConfigPtr It is required that the bootloader configures this UPD prior to calling the FspSiliconInit API to set eMMC DLL configuration for eMMC controller. Refer to Appendix C for more details. This PCD cannot be configured by the BCT Tool. 0 - (Default) November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 23 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Memory Down A Memory Down The details of Memory Down structure are shown below. These can be found in the FspmUpd.h header file included in the Intel® FSP package. #define MAX_CH 2 #define MAX_DIMM 2 Channel */ #define MAX_SPD_BYTES 512 /* Maximum Number of Memory Channels */ /* Maximum Number of DIMMs PER Memory /* Maximum Number of SPD bytes */ typedef enum { STATE_MEMORY_SLOT = 0, physical memory slot. */ STATE_MEMORY_DOWN = 1, physical memory slot. */ } MemorySlotState; /* No memory down and a /* Memory down and not a typedef struct { MemorySlotState SlotState[MAX_CH][MAX_DIMM]; /* Memory Down state of each DIMM in each Channel */ UINT16 SpdDataLen; /* Length in Bytes of a single DIMM's SPD Data */ UINT8 *SpdDataPtr[MAX_CH][MAX_DIMM]; /* Pointer to SPD Data for each DIMM in each Channel */ } MEMORY_DOWN_CONFIG; It is the responsibility of the bootloader to provide the SPD Data for the DIMMs used in the platform. § Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 24 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure B FIA MUX Configuration Structure The details of the FIA MUX Configure structure are shown below. These can be found in the FspmUpd.h header file included in the Intel® FSP package. /* * FIA MUX configuration structures. */ #define #define #define #define #define BL_ME_FIA_MUX_LANE_NUM_MAX 20 BL_ME_FIA_MUX_LANE_NUM_MIN 1 BL_ME_FIA_MUX_LANE_MUX_SEL_WIDTH 2 BL_ME_FIA_MUX_LANE_MUX_SEL_MASK 0x3 BL_ME_FIA_MUX_LANE_XHCI_ONLY 0xFF00000000 typedef enum { BL_FIA_LANE00 = 0, BL_FIA_LANE01, BL_FIA_LANE02, BL_FIA_LANE03, BL_FIA_LANE04, BL_FIA_LANE05, BL_FIA_LANE06, BL_FIA_LANE07, BL_FIA_LANE08, BL_FIA_LANE09, BL_FIA_LANE10, BL_FIA_LANE11, BL_FIA_LANE12, BL_FIA_LANE13, BL_FIA_LANE14, BL_FIA_LANE15, BL_FIA_LANE16, BL_FIA_LANE17, BL_FIA_LANE18, BL_FIA_LANE19, } BL_ME_FIA_MUX_LANE_ORDER; #define BL_ME_FIA_MUX_LANE_SATA0_BEGING BL_FIA_LANE04 #define BL_ME_FIA_MUX_LANE_SATA1_BEGING BL_FIA_LANE12 #define BL_FIA_LANE_CONFIG(Config, Lane) ( (UINT64) ( (UINT64)(Config) << ( (UINT64)(Lane) * (BL_ME_FIA_MUX_LANE_MUX_SEL_WIDTH)))) November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 25 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure typedef union _BL_ME_FIA_MUX_CONFIG { UINT64 MeFiaMuxLaneConfig; struct { UINT64 Lane00MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane01MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane02MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane03MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane04MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane05MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane06MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane07MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane08MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane09MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane10MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane11MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane12MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane13MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane14MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane15MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane16MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane17MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane18MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Lane19MuxSel : 2; // ME_FIA_MUX_LANE_DISABLED UINT64 Reserved : 24; } BL_MeFiaMuxLaneMuxSel; } BL_ME_FIA_MUX_CONFIG; or or or or or or or or or or or or or or or or or or or or PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE PCIE XHCI XHCI XHCI XHCI or or or or or or or or or or or or or or or or SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA SATA typedef enum { BL_ME_FIA_MUX_LANE_DISCONNECTED, BL_ME_FIA_MUX_LANE_PCIE, BL_ME_FIA_MUX_LANE_SATA, BL_ME_FIA_MUX_LANE_XHCI, } BL_ME_FIA_MUX_LANE_CONFIG; #define BL_ME_FIA_SATA_LANE_SEL_WIDTH 2 #define BL_ME_FIA_SATA_LANE_XHCI_ONLY 0x55000000 typedef enum { BL_FIA_SATA_LANE04 = 0, BL_FIA_SATA_LANE05, BL_FIA_SATA_LANE06, BL_FIA_SATA_LANE07, BL_FIA_SATA_LANE08, BL_FIA_SATA_LANE09, BL_FIA_SATA_LANE10, BL_FIA_SATA_LANE11, BL_FIA_SATA_LANE12, BL_FIA_SATA_LANE13, BL_FIA_SATA_LANE14, BL_FIA_SATA_LANE15, BL_FIA_SATA_LANE16, BL_FIA_SATA_LANE17, BL_FIA_SATA_LANE18, BL_FIA_SATA_LANE19 } BL_ME_FIA_SATA_LANE_ORDER; Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 26 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure #define BL_FIA_SATA_LANE_CONFIG(Config, Lane) ( (UINT32) ( (UINT32)(Config) << ( (UINT32)(Lane) * (BL_ME_FIA_SATA_LANE_SEL_WIDTH)))) typedef union _BL_ME_FIA_SATA_CONFIG { UINT64 MeFiaSataLaneConfig; struct { UINT64 Lane04SataSel : 2; UINT64 Lane05SataSel : 2; UINT64 Lane06SataSel : 2; UINT64 Lane07SataSel : 2; UINT64 Lane08SataSel : 2; UINT64 Lane09SataSel : 2; UINT64 Lane10SataSel : 2; UINT64 Lane11SataSel : 2; UINT64 Lane12SataSel : 2; UINT64 Lane13SataSel : 2; UINT64 Lane14SataSel : 2; UINT64 Lane15SataSel : 2; UINT64 Lane16SataSel : 2; UINT64 Lane17SataSel : 2; UINT64 Lane18SataSel : 2; UINT64 Lane19SataSel : 2; UINT64 Reserved : 32; } BL_MeFiaSataLaneSataSel; } BL_ME_FIA_SATA_CONFIG; typedef enum { BL_ME_FIA_SATA_CONTROLLER_LANE_ASSIGNED = 0, BL_ME_FIA_SATA_CONTROLLER_LANE_NOT_ASSIGNED = 1, BL_ME_FIA_SATA_CONTROLLER_LANE_SS_AND_GPIO_ASSIGNED = 3 } BL_ME_FIA_SATA_LANE_CONFIG; #define BL_ME_FIA_PCIE_ROOT_PORT_LINK_WIDTH_SEL_WIDTH #define BL_ME_FIA_PCIE_ROOT_PORTS_STATE_WIDTH #define BL_ME_FIA_PCIE_ROOT_CONFIG_XHCI_ONLY 4 8 0x0 typedef enum { BL_FIA_PCIE_ROOT_PORT_0 = 0, BL_FIA_PCIE_ROOT_PORT_1, BL_FIA_PCIE_ROOT_PORT_2, BL_FIA_PCIE_ROOT_PORT_3, BL_FIA_PCIE_ROOT_PORT_4, BL_FIA_PCIE_ROOT_PORT_5, BL_FIA_PCIE_ROOT_PORT_6, BL_FIA_PCIE_ROOT_PORT_7 } BL_ME_FIA_PCIE_ROOT_PORT_ORDER; #define BL_FIA_PCIE_ROOT_PORT_CONFIG(Type, Config, PcieRootPort) \ (((Type) == BL_ME_FIA_PCIE_ROOT_PORT_STATE) ? \ ((UINT64)((UINT64)(Config) << (UINT64)(PcieRootPort))) : \ ((UINT64)((UINT64)(Config) << (UINT64)(((UINT64)(PcieRootPort) * (BL_ME_FIA_PCIE_ROOT_PORT_LINK_WIDTH_SEL_WIDTH)) + \ BL_ME_FIA_PCIE_ROOT_PORTS_STATE_WIDTH)))) November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 27 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure typedef union _BL_ME_FIA_PCIE_ROOT_PORTS_CONFIG { UINT64 MeFiaPcieRootPortsConfig; struct { UINT64 PcieRp0En : 1; UINT64 PcieRp1En : 1; UINT64 PcieRp2En : 1; UINT64 PcieRp3En : 1; UINT64 PcieRp4En : 1; UINT64 PcieRp5En : 1; UINT64 PcieRp6En : 1; UINT64 PcieRp7En : 1; UINT64 PcieRp0LinkWidth : 4; UINT64 PcieRp1LinkWidth : 4; UINT64 PcieRp2LinkWidth : 4; UINT64 PcieRp3LinkWidth : 4; UINT64 PcieRp4LinkWidth : 4; UINT64 PcieRp5LinkWidth : 4; UINT64 PcieRp6LinkWidth : 4; UINT64 PcieRp7LinkWidth : 4; UINT64 Reserved : 24; } BL_MeFiaPcieRpConfig; } BL_ME_FIA_PCIE_ROOT_PORTS_CONFIG; typedef enum { BL_ME_FIA_PCIE_ROOT_PORT_STATE, BL_ME_FIA_PCIE_ROOT_PORT_LINK_WIDTH } BL_ME_FIA_PCIE_ROOT_PORT_CONFIG_TYPE; typedef enum { BL_ME_FIA_PCIE_ROOT_PORT_DISABLED, BL_ME_FIA_PCIE_ROOT_PORT_ENABLED } BL_ME_FIA_PCIE_ROOT_PORT_STATE_CONFIG; typedef enum { BL_ME_FIA_PCIE_ROOT_PORT_LINK_WIDTH_BICTRL = 0, BL_ME_FIA_PCIE_ROOT_PORT_LINK_X1 = 0xF } BL_ME_FIA_PCIE_ROOT_PORT_LINK_CONFIG; typedef struct _BL_ME_FIA_CONFIG { BL_ME_FIA_MUX_CONFIG MuxConfiguration; BL_ME_FIA_SATA_CONFIG SataLaneConfiguration; BL_ME_FIA_PCIE_ROOT_PORTS_CONFIG PcieRootPortsConfiguration; } BL_ME_FIA_CONFIG; /* * The FIA_MUX_CONFIG block describes the expected configuration of * FIA MUX configuration. */ typedef struct { UINT32 SkuNumLanesAllowed; // Platform view of Num Lanes allowed BL_ME_FIA_CONFIG FiaMuxConfig; // Current Platform FIA MUX Configuration BL_ME_FIA_CONFIG FiaMuxConfigRequest; // FIA MUX Configuration Requested } BL_FIA_MUX_CONFIG; /* * The FIA_MUX_CONFIG_STATUS describes the status of configuring * FIA MUX configuration. */ Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 28 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure typedef struct { UINT64 FiaMuxConfigGetStatus; // Status returned from EFI_SUCCESS, then error occurred and user can decide on UINT64 FiaMuxConfigSetStatus; // Status returned from EFI_SUCCESS, then error occurred and user can decide on BOOLEAN FiaMuxConfigSetRequired; // Boolean: true - a required, false otherwise } BL_FIA_MUX_CONFIG_STATUS; FiaMuxConfigGet, if not next steps FiaMuxConfigSet, if not next steps FiaMuxConfigSet was /* * FIA MUX Config HOB structure */ typedef struct { BL_FIA_MUX_CONFIG BL_FIA_MUX_CONFIG_STATUS } BL_FIA_MUX_CONFIG_HOB; /* PCIe #define #define #define #define #define FiaMuxConfig; FiaMuxConfigStatus; port bifurcation codes - matches setup option values */ PCIE_BIF_CTRL_x2x2x2x2 0 PCIE_BIF_CTRL_x2x2x4 1 PCIE_BIF_CTRL_x4x2x2 2 PCIE_BIF_CTRL_x4x4 3 PCIE_BIF_CTRL_x8 4 #define BL_MAX_PCIE_CTRL 2 /* * HSIO INFORMATION structure */ typedef enum { BL_SKU_HSIO_06 = 6, BL_SKU_HSIO_08 = 8, BL_SKU_HSIO_10 = 10, BL_SKU_HSIO_12 = 12, BL_SKU_HSIO_20 = 20, } BL_SKU_HSIO_LANE_NUMBER; typedef struct { UINT16 NumLanesSupported; UINT8 PcieBifCtr[BL_MAX_PCIE_CTRL]; BL_ME_FIA_CONFIG FiaConfig; } BL_HSIO_INFORMATION; PcdFiaMuxConfigRequestPtr is a pointer for request FIA MUX configuration to be configured by the Intel® FSP. It pointed to a structure BL_ME_FIA_CONFIG. November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 29 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure Table B-1. Structure BL_ME_FIA_MUX_CONFIG Definition Bit Range Options Descriptions 63:40 0 39:38 00b 01b 10b 11b – – – – Lane disabled Reserved Lane owned by SATA Lane owned by xHCI Reserved (RSVD): Reserved FIA MUX configuration of Lane 19 37:36 00b 01b 10b 11b – – – – Lane disabled Reserved Lane owned by SATA Lane owned by xHCI FIA MUX configuration of Lane 18 35:34 00b 01b 10b 11b – – – – Lane disabled Reserved Lane owned by SATA Lane owned by xHCI FIA MUX configuration of Lane 17 33:32 00b 01b 10b 11b – – – – Lane disabled Reserved Lane owned by SATA Lane owned by xHCI FIA MUX configuration of Lane 16 31:30 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 15 29:28 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 14 27:26 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 13 25:24 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 12 23:22 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 11 21:20 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 10 19:18 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 9 17:16 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 8 15:14 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 7 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 30 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) FIA MUX Configuration Structure Table B-1. Structure BL_ME_FIA_MUX_CONFIG Definition Bit Range Options Descriptions 13:12 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 6 11:10 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 5 09:08 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Lane owned by SATA Reserved FIA MUX configuration of Lane 4 07:06 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Reserved Reserved FIA MUX configuration of Lane 3 05:04 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Reserved Reserved FIA MUX configuration of Lane 2 03:02 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Reserved Reserved FIA MUX configuration of Lane 1 01:00 00b 01b 10b 11b – – – – Lane disabled Lane owned by PCIe* Reserved Reserved FIA MUX configuration of Lane 0 November 2018 Document ID: 335702-003US Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 31 Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) EMMC* DLL Configuration Structure C EMMC* DLL Configuration Structure The details of the eMMC DLL Configure structure are shown below. These can be found in the FspmUpd.h header file included in the Intel® FSP package. /* * eMMC DLL structure for EMMC DLL registers settings */ typedef struct { UINT32 TxCmdCntl; UINT32 TxDataCntl1; UINT32 TxDataCntl2; UINT32 RxCmdDataCntl1; UINT32 RxStrobeCntl; UINT32 RxCmdDataCntl2; UINT32 MasterSwCntl; } BL_EMMC_DLL_CONFIG; typedef struct { UINT16 Signature; BL_EMMC_DLL_CONFIG eMMCDLLConfig; } BL_EMMC_INFORMATION; §§ Intel® Atom® C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide 32 November 2018 Document ID: 335702-003US
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : No Author : Intel® Corporation Create Date : 2018:11:09 14:03:10Z Modify Date : 2018:11:09 14:12:16-07:00 Has XFA : No Language : en Tagged PDF : Yes XMP Toolkit : Adobe XMP Core 5.4-c006 80.159825, 2016/09/16-03:31:08 Producer : Acrobat Distiller 11.0 (Windows) Creator Tool : FrameMaker 2015.0.5 Metadata Date : 2018:11:09 14:12:16-07:00 Format : application/pdf Title : Intel® Atom™ C3XXX Product Family Intel® Firmware Support Package (Intel® FSP) Integration Guide Creator : Intel® Corporation Document ID : uuid:a0f70f2e-47b6-45e8-88ce-1822ce54be00 Instance ID : uuid:775edc00-406d-48c7-82ab-395f888991d4 Page Layout : TwoPageRight Page Mode : UseOutlines Page Count : 32EXIF Metadata provided by EXIF.tools