diff options
-rw-r--r-- | src/soc/intel/apollolake/chip.c | 6 | ||||
-rw-r--r-- | src/soc/intel/apollolake/include/soc/fsp/FspmUpd.h | 47 | ||||
-rw-r--r-- | src/soc/intel/apollolake/include/soc/fsp/FspsUpd.h | 83 |
3 files changed, 85 insertions, 51 deletions
diff --git a/src/soc/intel/apollolake/chip.c b/src/soc/intel/apollolake/chip.c index 821570bfe8..044ef913b9 100644 --- a/src/soc/intel/apollolake/chip.c +++ b/src/soc/intel/apollolake/chip.c @@ -253,12 +253,6 @@ void platform_fsp_silicon_init_params_cb(struct FSPS_UPD *silupd) if (cfg->emmc_rx_cmd_data_cntl2 != 0) silconfig->EmmcRxCmdDataCntl2 = cfg->emmc_rx_cmd_data_cntl2; - /* Our defaults may not match FSP defaults, so set them explicitly */ - silconfig->AcpiBase = ACPI_PMIO_BASE; - /* First 4k in BAR0 is used for IPC, real registers start at 4k offset */ - silconfig->PmcBase = PMC_BAR0 + 0x1000; - silconfig->P2sbBase = P2SB_BAR; - silconfig->IshEnable = cfg->integrated_sensor_hub_enable; /* Disable setting of EISS bit in FSP. */ diff --git a/src/soc/intel/apollolake/include/soc/fsp/FspmUpd.h b/src/soc/intel/apollolake/include/soc/fsp/FspmUpd.h index 5f5f367b45..3712fd7d01 100644 --- a/src/soc/intel/apollolake/include/soc/fsp/FspmUpd.h +++ b/src/soc/intel/apollolake/include/soc/fsp/FspmUpd.h @@ -36,6 +36,42 @@ are permitted provided that the following conditions are met: #include "FspUpd.h" #include <fsp/upd.h> +#define MAX_CHANNELS_NUM 4 +#define MAX_DIMMS_NUM 1 + +struct DIMM_INFO { + uint8_t DimmId; + uint32_t SizeInMb; + uint16_t MfgId; + /** Module part number for DRR3 is 18 bytes + but DRR4 is 20 bytes as per JEDEC Spec, so + reserving 20 bytes **/ + uint8_t ModulePartNum[20]; +} __attribute__((packed)); + +struct CHANNEL_INFO { + uint8_t ChannelId; + uint8_t DimmCount; + struct DIMM_INFO DimmInfo[MAX_DIMMS_NUM]; +} __attribute__((packed)); + +struct FSP_SMBIOS_MEMORY_INFO { + uint8_t Revision; + uint8_t DataWidth; + /** As defined in SMBIOS 3.0 spec + Section 7.18.2 and Table 75 + **/ + uint16_t MemoryType; + uint16_t MemoryFrequencyInMHz; + /** As defined in SMBIOS 3.0 spec + Section 7.17.3 and Table 72 + **/ + uint8_t ErrorCorrectionType; + uint8_t ChannelCount; + struct CHANNEL_INFO ChannelInfo[MAX_CHANNELS_NUM]; +} __attribute__((packed)); + + /** Fsp M Configuration **/ struct FSP_M_CONFIG { @@ -528,9 +564,16 @@ struct FSP_M_CONFIG { **/ void* MrcBootDataPtr; -/** Offset 0x0135 +/** Offset 0x0135 - Skip CSE RBP to support zero sized IBB + Enable/Disable skip CSE RBP for bootloader which loads IBB without assistance of + CSE. 0x00:Disable(Default), 0x01:Enable. + $EN_DIS +**/ + uint8_t SkipCseRbp; + +/** Offset 0x0136 **/ - uint8_t ReservedFspmUpd[27]; + uint8_t ReservedFspmUpd[26]; } __attribute__((packed)); /** Fsp M Test Configuration diff --git a/src/soc/intel/apollolake/include/soc/fsp/FspsUpd.h b/src/soc/intel/apollolake/include/soc/fsp/FspsUpd.h index d4ecd369cb..8dd824bbe3 100644 --- a/src/soc/intel/apollolake/include/soc/fsp/FspsUpd.h +++ b/src/soc/intel/apollolake/include/soc/fsp/FspsUpd.h @@ -587,10 +587,9 @@ struct FSP_S_CONFIG { **/ uint8_t HpetFunctionNumber; -/** Offset 0x00AF - Hpet Base Address - Hpet Base Address. 0xFED00000(Default). +/** Offset 0x00AF **/ - uint32_t HpetBase; + uint32_t UnusedUpdSpace1; /** Offset 0x00B3 - IoApic Valid BDF Value Enable/Disable IoApic Valid BDF Value. 0:Disable(Default), 1:Enable. @@ -635,7 +634,7 @@ struct FSP_S_CONFIG { **/ uint8_t IshEnable; -/** Offset 0x00BB - ISH Controller +/** Offset 0x00BB - BIOS Interface Lock Down Enable/Disable BIOS Interface Lock Down bit to prevent writes to the Backup Control Register. 0:Disable, 1:Enable(Default). $EN_DIS @@ -663,7 +662,7 @@ struct FSP_S_CONFIG { Enable/Disable LPSS IOSF Bridge PMCTL Register S0ix Bits. 0:Disable(Default), 1:Enable. $EN_DIS **/ - uint8_t S0ixEnable; + uint8_t LPSS_S0ixEnable; /** Offset 0x00C0 - LPSS I2C Clock Gating Configuration Enable/Disable LPSS I2C Clock Gating. 0:Disable, 1:Enable(Default). @@ -770,8 +769,8 @@ struct FSP_S_CONFIG { **/ uint8_t Spi2Enable; -/** Offset 0x00DE - UART Debug Bass Address - UART Debug Bass Address. 0x00000000(Default). +/** Offset 0x00DE - UART Debug Base Address + UART Debug Base Address. 0x00000000(Default). **/ uint32_t Uart2KernelDebugBaseAddress; @@ -810,7 +809,7 @@ struct FSP_S_CONFIG { **/ uint8_t PcieRootPortPeerMemoryWriteEnable; -/** Offset 0x00E8 - PCIE SWSMI Nubmer +/** Offset 0x00E8 - PCIE SWSMI Number This member describes the SwSmi value for override PCIe ASPM table. 0xAA(Default). **/ uint8_t PcieAspmSwSmiNumber; @@ -932,7 +931,7 @@ struct FSP_S_CONFIG { uint8_t PcieRpCompletionTimeout[6]; /** Offset 0x0173 - PTM Support - Enable/Diable PTM Support. 0:Disable(Default), 1:Enable. + Enable/Disable PTM Support. 0:Disable(Default), 1:Enable. **/ uint8_t PtmEnable[6]; @@ -957,7 +956,7 @@ struct FSP_S_CONFIG { **/ uint8_t PcieRpLtrConfigLock[6]; -/** Offset 0x0191 - PME_B0_S5 Diable bit +/** Offset 0x0191 - PME_B0_S5 Disable bit PME_B0_S5_DIS bit in the General PM Configuration B (GEN_PMCON_B) register. 0:Disable(Default), 1:Enable. $EN_DIS **/ @@ -1029,8 +1028,8 @@ struct FSP_S_CONFIG { uint8_t SataPortsHotPlug[2]; /** Offset 0x01A0 - Mechanical Presence Switch - Controls reporting if this port has an Mechanical Presence Switch.\nNote:Requires - hardware support. 0:Disable, 1:Enable(Default). + Controls reporting if this port has an Mechanical Presence Switch.\n + Note:Requires hardware support. 0:Disable, 1:Enable(Default). **/ uint8_t SataPortsInterlockSw[2]; @@ -1075,20 +1074,9 @@ struct FSP_S_CONFIG { **/ uint16_t SubSystemId; -/** Offset 0x01B4 - PM Base Address - PM Base Address. 0x400(Default). +/** Offset 0x01B4 **/ - uint16_t AcpiBase; - -/** Offset 0x01B6 - PMC Base Address - PMC Base Address. 0xD10010000(Default). -**/ - uint32_t PmcBase; - -/** Offset 0x01BA - P2SB Base Address - P2SB Base Address. 0xD0000000(Default). -**/ - uint32_t P2sbBase; + uint8_t UnusedUpdSpace2[10]; /** Offset 0x01BE - CRIDSettings PMC CRID setting. 0:Disable(Default), 1:CRID_1, 2:CRID_2, 3:CRID_3. @@ -1150,7 +1138,7 @@ struct FSP_S_CONFIG { /** Offset 0x01C8 - Start Frame Pulse Width Start Frame Pulse Width Value. 0:ScSfpw4Clk(Default), 1: ScSfpw6Clk, 2:ScSfpw8Clk. - $EN_DIS + 0:ScSfpw4Clk, 1:ScSfpw6Clk, 2:ScSfpw8Clk **/ uint8_t StartFramePulse; @@ -1166,10 +1154,9 @@ struct FSP_S_CONFIG { **/ uint8_t ArpEnable; -/** Offset 0x01CB - SMBus Base Address (IO space) - SMBUS Base Address (IO space). 0xEFA0(Default). +/** Offset 0x01CB **/ - uint16_t SmbusIoBase; + uint16_t UnusedUpdSpace3; /** Offset 0x01CD - SMBus Table Elements The number of elements in the Reserved SMBus Address Table. 0x0080(Default). @@ -1189,14 +1176,14 @@ struct FSP_S_CONFIG { uint8_t DisableComplianceMode; /** Offset 0x0250 - USB Per-Port Control - Control each of the USB ports (0~3) enable/disable. 0:Disable(Default), 1:Enable. + Control each of the USB ports enable/disable. 0:Disable(Default), 1:Enable. $EN_DIS **/ uint8_t UsbPerPortCtl; /** Offset 0x0251 - xHCI Mode - Mode of operation of xHCI controller. 0:Disable, 1:Enable, 2:Auto(Default), 3:SmartAuto. - $EN_DIS + Mode of operation of xHCI controller. 0:Disable, 1:Enable, 2:Auto(Default) + 0:Disable, 1:Enable, 2:Auto **/ uint8_t Usb30Mode; @@ -1224,7 +1211,7 @@ struct FSP_S_CONFIG { /** Offset 0x026E - XDCI Support Enable/Disable XDCI. 0:Disable, 1:PCI_Mode(Default), 2:ACPI_mode. - $EN_DIS + 0:Disable, 1:PCI_Mode, 2:ACPI_mode **/ uint8_t UsbOtg; @@ -1293,8 +1280,10 @@ struct FSP_S_CONFIG { uint16_t PcieRpLtrMaxSnoopLatency[6]; /** Offset 0x028A - Snoop Latency Override - Snoop Latency Override for PCH PCIE. \nDisabled:Disable override.\nManual:Manually - enter override values.\nAuto:Maintain default BIOS flow. 0:Disable, 1:Enable, 2:Auto(Default). + Snoop Latency Override for PCH PCIE. \n + Disabled:Disable override.\n + Manual:Manually enter override values.\n + Auto:Maintain default BIOS flow. 0:Disable, 1:Enable, 2:Auto(Default). **/ uint8_t PcieRpSnoopLatencyOverrideMode[6]; @@ -1315,9 +1304,10 @@ struct FSP_S_CONFIG { uint16_t PcieRpLtrMaxNonSnoopLatency[6]; /** Offset 0x02AE - Non Snoop Latency Override - Non Snoop Latency Override for PCH PCIE. \nDisabled:Disable override.\nManual:Manually - enter override values.\nAuto: Maintain default BIOS flow. 0:Disable, 1:Enable, - 2:Auto(Default). + Non Snoop Latency Override for PCH PCIE. \n + Disabled:Disable override.\n + Manual:Manually enter override values.\n + Auto: Maintain default BIOS flow. 0:Disable, 1:Enable, 2:Auto(Default). **/ uint8_t PcieRpNonSnoopLatencyOverrideMode[6]; @@ -1361,7 +1351,7 @@ struct FSP_S_CONFIG { **/ uint8_t TcoTimerHaltLock; -/** Offset 0x02D5 - Power Button Override Peroid +/** Offset 0x02D5 - Power Button Override Period specifies how long will PMC wait before initiating a global reset. 000b-4s(default), 001b-6s, 010b-8s, 011b-10s, 100b-12s, 101b-14s.) 0x0:4s, 0x1:6s, 0x2:8s, 0x3:10s, 0x4:12s, 0x5:14s @@ -1369,7 +1359,7 @@ struct FSP_S_CONFIG { uint8_t PwrBtnOverridePeriod; /** Offset 0x02D6 - Power Button Native Mode Disable - Diable power button native mode, when 1, this will result in the PMC logic constantly + Disable power button native mode, when 1, this will result in the PMC logic constantly seeing the power button as de-asserted. 0 (default)) $EN_DIS **/ @@ -1479,13 +1469,20 @@ struct FSP_S_CONFIG { /** Offset 0x0326 - Os Selection Mode Select OS mode. 0:Windows(default), 1:Android, 2:Win7 - $EN_DIS + 0:Windows, 1:Android, 2:Win7 **/ uint8_t OsSelection; -/** Offset 0x0327 +/** Offset 0x0327 - Monitor Mwait Enable + Enable/Disable Monitor Mwait. For Windows* OS, this should be Enabled. For Linux + based OS, this should be Disabled. 0:Disable, 1:Enable(Default). + $EN_DIS +**/ + uint8_t MonitorMwaitEnable; + +/** Offset 0x0328 **/ - uint8_t ReservedFspsUpd[9]; + uint8_t ReservedFspsUpd[8]; } __attribute__((packed)); /** Fsp S Test Configuration |