From debd7657548ed7cdc67dcabe3f6e69b33093a43a Mon Sep 17 00:00:00 2001 From: Martin Roth Date: Fri, 4 Apr 2014 13:53:07 -0600 Subject: Add the ivybridge i89xx FSP include & srx directories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are the .h and .c files from Intel that support interaction with the FSP. These have been modified from the FSP distribution only to strip trailing whitespace. Intel® Firmware Support Package for Intel® Xeon® E3-1125C v2, E3-1105C v2, Intel® Pentium® Processor B925C, and Intel® Core™ i3-3115C Processors for Communications Infrastructure with Intel® Communications Chipset 89xx Series Platform Controller Hub (formerly Crystal Forest Refresh: Ivy Bridge Gladden and Cave Creek "Intel® Firmware Support Package (Intel® FSP) provides key programming information for initializing Intel® silicon and can be easily integrated into a boot loader of the developer’s choice. It is easy to adopt, scalable to design, reduces time-to-market, and is economical to build." http://www.intel.com/fsp Change-Id: Ib76e89b2d2f6407cf55a5a664da989c7a7e0eb23 Signed-off-by: Martin Roth Signed-off-by: Martin Roth Reviewed-on: http://review.coreboot.org/5455 Tested-by: build bot (Jenkins) Reviewed-by: David Hendricks --- .../intel/fsp/ivybridge_i89xx/include/mem_config.h | 132 +++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h (limited to 'src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h') diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h new file mode 100644 index 0000000000..8dd693e933 --- /dev/null +++ b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h @@ -0,0 +1,132 @@ +/** @file + +Copyright (C) 2013, Intel Corporation + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither the name of Intel Corporation nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +// +// mem_config.h +// + +#ifndef _MEM_CONFIG_H_ +#define _MEM_CONFIG_H_ + +typedef enum { + fi1067_IVB=0, + fi1333_IVB, + fi1400_IVB, + fi1600_IVB, + fi1800_IVB, + fi1867_IVB, + fi2000_IVB, + fi2133_IVB, + fi2200_IVB, + fi2400_IVB, + fi2600_IVB, + fi2667_IVB, + fi2800_IVB, + fiUnsupport_IVB, +}TFrequencyIndex_IVB; + +#define NUM_IVB_MEM_CLK_FREQUENCIES 13 + +// DDR3 memory SPD data +// +// NOTE: This only includes the SPD bytes that are relevant to the MRC +typedef struct { // BYTE + uint8_t SPDGeneral; // 0 Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage 1, 2 + uint8_t SPDRevision; // 1 SPD Revision + uint8_t DRAMDeviceType; // 2 DRAM Device Type + uint8_t ModuleType; // 3 Module Type + uint8_t SDRAMDensityAndBanks; // 4 SDRAM Density and Banks + uint8_t SDRAMAddressing; // 5 SDRAM Addressing + uint8_t VDD; // 6 Module Nominal Voltage + uint8_t ModuleOrganization; // 7 Module Organization + uint8_t ModuleMemoryBusWidth; // 8 Module Memory Bus Width + uint8_t FineTimebase; // 9 Fine Timebase (FTB) Dividend / Divisor + uint8_t TimebaseDividend; // 10 Medium Timebase (MTB) Dividend + uint8_t TimebaseDivisor; // 11 Medium Timebase (MTB) Divisor + uint8_t SDRAMMinimumCycleTime; // 12 SDRAM Minimum Cycle Time (tCKmin) + uint8_t Reserved0; // 13 Reserved0 + uint8_t CASLatenciesLSB; // 14 CAS Latencies Supported, Least Significant Byte + uint8_t CASLatenciesMSB; // 15 CAS Latencies Supported, Most Significant Byte + uint8_t MinimumCASLatencyTime; // 16 Minimum CAS Latency Time (tAAmin) + uint8_t MinimumWriteRecoveryTime; // 17 Minimum Write Recovery Time (tWRmin) + uint8_t MinimumRASToCASDelayTime; // 18 Minimum RAS# to CAS# Delay Time (tRCDmin) + uint8_t MinimumRowToRowDelayTime; // 19 Minimum Row Active to Row Active Delay Time (tRRDmin) + uint8_t MinimumRowPrechargeDelayTime; // 20 Minimum Row Precharge Delay Time (tRPmin) + uint8_t UpperNibblesFortRASAndtRC; // 21 Upper Nibbles for tRAS and tRC + uint8_t tRASmin; // 22 Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte + uint8_t tRCmin; // 23 Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte + uint8_t tRFCminLeastSignificantByte; // 24 Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte + uint8_t tRFCminMostSignificantByte; // 25 Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte + uint8_t tWTRmin; // 26 Minimum Internal Write to Read Command Delay Time (tWTRmin) + uint8_t tRTPmin; // 27 Minimum Internal Read to Precharge Command Delay Time (tRTPmin) + uint8_t UpperNibbleFortFAW; // 28 Upper Nibble for tFAW + uint8_t tFAWmin; // 29 Minimum Four Activate Window Delay Time (tFAWmin) + uint8_t SDRAMOptionalFeatures; // 30 SDRAM Optional Features + uint8_t SDRAMThermalAndRefreshOptions; // 31 SDRAMThermalAndRefreshOptions + uint8_t ModuleThermalSensor; // 32 ModuleThermalSensor + uint8_t SDRAMDeviceType; // 33 SDRAM Device Type + int8_t tCKminFine; // 34 Fine Offset for SDRAM Minimum Cycle Time (tCKmin) + int8_t tAAminFine; // 35 Fine Offset for Minimum CAS Latency Time (tAAmin) + int8_t tRCDminFine; // 36 Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin) + int8_t tRPminFine; // 37 Fine Offset for Minimum Row Precharge Delay Time (tRPmin) + int8_t tRCminFine; // 38 Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin) + uint8_t ReferenceRawCardUsed; // 62 Reference Raw Card Used + uint8_t AddressMappingEdgeConnector; // 63 Address Mapping from Edge Connector to DRAM + uint8_t ThermalHeatSpreaderSolution; // 64 ThermalHeatSpreaderSolution + uint8_t ModuleManufacturerIdCodeLsb; // 117 Module Manufacturer ID Code, Least Significant Byte + uint8_t ModuleManufacturerIdCodeMsb; // 118 Module Manufacturer ID Code, Most Significant Byte + uint8_t ModuleManufacturingLocation; // 119 Module Manufacturing Location + uint8_t ModuleManufacturingDateYear; // 120 Module Manufacturing Date Year + uint8_t ModuleManufacturingDateWW; // 121 Module Manufacturing Date creation work week + uint8_t ModuleSerialNumberA; // 122 Module Serial Number A + uint8_t ModuleSerialNumberB; // 123 Module Serial Number B + uint8_t ModuleSerialNumberC; // 124 Module Serial Number C + uint8_t ModuleSerialNumberD; // 125 Module Serial Number D + uint8_t CRCA; // 126 CRC A + uint8_t CRCB; // 127 CRC B +} DDR3_SPD; + +// Configuration for each memory channel/bank +typedef struct { + uint32_t Exists; + DDR3_SPD SpdData; + uint8_t InitClkPiValue[NUM_IVB_MEM_CLK_FREQUENCIES]; +} MEM_BANK_CONFIG; + +// Memory configuration +typedef struct { + MEM_BANK_CONFIG ChannelABank0; + MEM_BANK_CONFIG ChannelABank1; + MEM_BANK_CONFIG ChannelBBank0; + MEM_BANK_CONFIG ChannelBBank1; +} MEM_CONFIG; + +#endif + -- cgit v1.2.3