Apollo Lake SoC SPI And Signed Master Image Profile (SMIP) Programming Guide APL_BXT & SMIP Programing Rev1p0 APL BXT

User Manual: APL_BXT SPI & SMIP Programing Guide Rev1p0

Open the PDF directly: View PDF PDF.
Page Count: 81

DownloadApollo Lake SoC SPI And Signed Master Image Profile (SMIP) Programming Guide APL_BXT & SMIP Programing Rev1p0 APL BXT
Open PDF In BrowserView PDF
Apollo Lake SoC SPI and Signed
Master Image Profile (SMIP)
Programming Guide
June 2016
Revision 1.0

Intel Confidential

Document Number: CDI/IBP# 559702

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.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
Intel technologies' features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance
varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn
more at intel.com.
Intel technologies may require enabled hardware, specific software, or services activation. Check with your system manufacturer or retailer.
The products described 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.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose,
and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.
All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product specifications and
roadmaps
Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or visit
www.intel.com/design/literature.htm.
Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different
processor families. Go to: http://www.intel.com/products/processor_number.
The original equipment manufacturer must provide TPM functionality, which requires a TPM-supported BIOS. TPM functionality must be initialized and
may not be available in all countries.
Intel, Core 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 © 2015-2016, Intel Corporation. All Rights Reserved.

2

Intel Confidential

CDI/IBP# 559702



Contents
1

Introduction ..............................................................................................................9
1.1
Overview ........................................................................................................... 9
1.2
Terminology ..................................................................................................... 10
1.3
Reference Documents ........................................................................................ 11

2

SPI Flash Architecture ............................................................................................ 13
2.1
Descriptor Mode ................................................................................................ 13
2.2
Serial Flash Discoverable Parameter (SFDP) .......................................................... 13
2.3
SPI Fast Read ................................................................................................... 13
2.4
Intel® Trusted Platform Module (Intel® TPM) on SPI Bus ........................................ 13
2.5
Boot Flow for APL SoC........................................................................................ 13
2.6
Flash Regions ................................................................................................... 14
2.6.1 Flash Region Layout................................................................................ 14
2.6.2 Flash Region Sizes.................................................................................. 15
2.7
Hardware Sequencing ........................................................................................ 15

3

SPI Flash Compatibility Requirement....................................................................... 17
3.1
Apollo Lake SoC SPI Flash Requirements .............................................................. 17
3.1.1 General Requirements............................................................................. 17
3.1.2 JEDEC ID (Opcode 9Fh) .......................................................................... 18
3.1.3 Multiple Page Write Usage Model .............................................................. 18
3.1.4 Hardware Sequencing Requirements ......................................................... 19
3.2
APL SoC SPI AC and DC Electrical Compatibility Guidelines...................................... 19

4

Flash Descriptor ...................................................................................................... 21
4.1
Flash Descriptor Content .................................................................................... 22
4.1.1 Descriptor Signature and Map .................................................................. 23
4.1.1.1 FLVALSIG - Flash Valid Signature
(Flash Descriptor Records) ......................................................... 23
4.1.1.2 FLMAP0 - Flash Map 0 Register
(Flash Descriptor Records) ......................................................... 23
4.1.1.3 FLMAP1 - Flash Map 1 Register 
(Flash Descriptor Records) ......................................................... 24
4.1.1.4 FLMAP2—Flash Map 2 Register
(Flash Descriptor Records) ......................................................... 24
4.1.2 Flash Descriptor Component Section ......................................................... 25
4.1.2.1 FLCOMP—Flash Components Register
(Flash Descriptor Records) ......................................................... 25
4.1.2.2 FLILL—Flash Invalid Instructions Register
(Flash Descriptor Records) ......................................................... 27
4.1.2.3 FLILL1—Flash Invalid Instructions Register
(Flash Descriptor Records) ......................................................... 27
4.1.3 Flash Descriptor Region Section ............................................................... 27
4.1.3.1 FLREG0—Flash Region 0 (Flash Descriptor) Register ..........................
(Flash Descriptor Records) ......................................................... 29
4.1.3.2 FLREG1—Flash Region 1 (IFWI) Register
(Flash Descriptor Records) ......................................................... 29
4.1.3.3 FLREG2—Flash Region 2 (Intel® TXE) Register 
(Flash Descriptor Records) ......................................................... 29
4.1.3.4 FLREG4—Flash Region 4 (Platform Data Region) Register 
(Flash Descriptor Records) ......................................................... 30
4.1.3.5 FLREG5—Flash Region 5 (Device Expansion) Register 
(Flash Descriptor Records) ......................................................... 30

CDI/IBP# 559702

Intel Confidential

3

4.1.4

4.2
4.3
4.4

Flash Descriptor Master Section ................................................................30
4.1.4.1 FLMSTR1—Flash Master 1 (Host CPU/ BIOS) .................................31
4.1.4.2 FLMSTR2—Flash Master 2 (Intel® TXE) ........................................31
4.1.5 SoC Softstraps .......................................................................................31
4.1.6 Descriptor Upper Map Section...................................................................32
4.1.6.1 FLUMAP1—Flash Upper Map 1
(Flash Descriptor Records)..........................................................32
4.1.7 Intel® TXE Vendor Specific Component Capabilities Table.............................32
4.1.7.1 JID0—JEDEC-ID 0 Register
(Flash Descriptor Records)..........................................................32
4.1.7.2 VSCC0—Vendor Specific Component Capabilities 0
(Flash Descriptor Records)..........................................................33
4.1.7.3 JIDn—JEDEC-ID Register n
(Flash Descriptor Records)..........................................................33
4.1.7.4 VSCCn—Vendor Specific Component Capabilities n
(Flash Descriptor Records)..........................................................33
OEM Section .....................................................................................................34
Region Access Control ........................................................................................34
4.3.1 Intel Recommended Permissions for Region Access .....................................34
4.3.2 Overriding Region Access.........................................................................34
Intel® TXE Vendor-Specific Component Capabilities (Intel® TXE VSCC) Table ............35
4.4.1 How to Set a VSCC Entry in Intel® TXE VSCC Table for Apollo Lake Platforms .35
4.4.2 Intel® TXE VSCC Table Settings for Apollo Lake Systems .............................37

5

Serial Flash Discoverable Parameter (SFDP) ............................................................39
5.1
Overview ..........................................................................................................39
5.2
Discoverable Parameter Opcode and Flash Cycle ....................................................39
5.3
Parameter Table Supported on SoC ......................................................................39
5.4
Detailed JEDEC Specification ...............................................................................40

6

BIOS
6.1
6.2
6.3
6.4

6.5
6.6

Configuration for SPI Flash Access ..................................................................41
Unlocking SPI Flash Device Protection for Apollo Lake Platform ................................41
Locking SPI Flash via Status Register ...................................................................42
SPI Protected Range Register Recommendations....................................................42
Recommendations for Flash Configuration Lockdown and Vendor Component Lock Bits ..
42
6.4.1 Flash Configuration Lockdown ..................................................................42
6.4.2 Vendor Component Lock ..........................................................................43
Host Vendor Specific Component Control Registers (VSCC)......................................43
Host VSCC Register Settings ...............................................................................47

7

Intel® TXE Disable for Debug/Flash Burning Purposes.............................................49
7.1
Intel® TXE Disable .............................................................................................49
7.1.1 Erasing/Programming Intel® TXE FW .........................................................49

8

Recommendations for SPI Flash Programming in Manufacturing Environments .......51

9

Flash
9.1
9.2
9.3
9.4
9.5
9.6
9.7
9.8
9.9
9.10

4

Descriptor SoC Configuration ..........................................................................53
SoC Descriptor Record 0 (Flash Descriptor Records) ...............................................53
SoC Descriptor Record 1 (Flash Descriptor Records) ...............................................53
SoC Descriptor Record 2 (Flash Descriptor Records) ...............................................54
SoC Descriptor Record 3 (Flash Descriptor Records) ...............................................56
SoC Descriptor Record 4 (Flash Descriptor Records) ...............................................57
SoC Descriptor Record 5 (Flash Descriptor Records) ...............................................58
SoC Descriptor Record 6 (Flash Descriptor Records) ...............................................59
SoC Descriptor Record 7 (Flash Descriptor Records) ...............................................59
SoC Descriptor Record 8 (Flash Descriptor Records) ...............................................61
SoC Descriptor Record 9 (Flash Descriptor Records) ...............................................61

Intel Confidential

CDI/IBP# 559702



9.11
9.12
9.13
9.14
9.15
9.16
9.17

SoC
SoC
SoC
SoC
SoC
SoC
SoC

Descriptor
Descriptor
Descriptor
Descriptor
Descriptor
Descriptor
Descriptor

Record
Record
Record
Record
Record
Record
Record

10 (Flash Descriptor Records) ............................................. 62
11 (Flash Descriptor Records) ............................................. 62
12a (Flash Descriptor Records) ........................................... 62
12b (Flash Descriptor Records) ........................................... 62
13 (Flash Descriptor Records) ............................................. 63
14 (Flash Descriptor Records) ............................................. 63
15 (Flash Descriptor Records) ............................................. 63

10

Signed Master Image Profile (SMIP)........................................................................ 65
10.1 Overview ......................................................................................................... 65
10.2 SMIP Tools ....................................................................................................... 66

11

Apollo Lake TXE SMIP Configurations ...................................................................... 67
11.1 OEM TXE SMIP (APL) ......................................................................................... 67
11.1.1 USB DnX (Descriptor) of TXE SMIP ........................................................... 67
11.1.2 Soft Strap Section of TXE SMIP ................................................................ 68
11.1.2.1 Soft Strap Section for Apollo Lake Platform (APL A and B-Step)....... 68
11.1.3 TPM Configuration and Boot Guard OEM Policy of TXE SMIP.......................... 80

12

SMIP Configurations ................................................................................................ 81
12.1 Apollo Lake Platform SMIP Configurations (APL A and B-Step) ................................. 81
12.1.1 Mod-Phy Lane Configuration Dependency with TXE SMIP ............................. 81
12.1.2 Mod-Phy Lane 2 ..................................................................................... 81
12.1.3 Mod-Phy Lane 3 ..................................................................................... 81
12.1.4 Mod-Phy Lane 4 ..................................................................................... 82
12.1.5 Mod-Phy Lane 8 ..................................................................................... 82
12.1.6 TCO_NO_REBOOT .................................................................................. 82
12.1.7 RESETBUTTON_DEBOUNCE_DIS............................................................... 82
12.1.8 LJ1PLL_SETTINGS_FORCE_COLD_RESET ................................................... 82
12.1.9 S0IX_VR_RAMP_TIMER ........................................................................... 83
12.1.10LJ1PLL_RW_CONTROL_1_DEFAULT........................................................... 83
12.1.11LJ1PLL_RW_CONTROL_2_DEFAULT........................................................... 83
12.1.12LJ1PLL_RW_CONTROL_3_DEFAULT........................................................... 84
12.1.13LJ1PLL_RW_CONTROL_5_DEFAULT........................................................... 84
12.1.14LCPLL_RW_CONTROL_1_DEFAULT ............................................................ 85
12.1.15LCPLL_RW_CONTROL_2_DEFAULT ............................................................ 85
12.1.16PMIC/VR Configuration............................................................................ 85
12.1.17IASecureRdWrInValidAddrRange[0] to [12]................................................ 86
12.1.18IAInsecureRdWrInValidAddrRange[0] to [14] ............................................. 87
12.1.19IAI2CVRRdWrInValidAddrRange[0] ........................................................... 88
12.1.20InsecureWrRegBitMskAddr[0] to [1] ......................................................... 88
12.1.21SecureWrRegBitMskAddr[0] ..................................................................... 89
12.1.22I2C_VR_COMMON_CONFIG...................................................................... 89

Figures
2-1 SPI Flash Regions Layout .......................................................................................... 14
4-1 Flash Descriptor (APL SoC)........................................................................................ 21
5-1 SFDP Read Instruction Sequence................................................................................ 39
10-1SMIP Image Creation................................................................................................ 66
10-2SMIP Image Verification During Platform Bring Up ........................................................ 66

Tables
4-1 Region Definition Template........................................................................................ 28
4-2 Region Entries in Descriptor....................................................................................... 28

CDI/IBP# 559702

Intel Confidential

5

4-3 Flash Master Template ..............................................................................................30
4-4 Region Access Control Table Options ...........................................................................34
4-5 Recommended Read/Write Settings for Platforms .........................................................34
4-6 Jidn - JEDEC ID Portion of Intel® TXE VSCC Table.........................................................35
4-7 Vsccn – Vendor-Specific Component Capabilities Portion of the Apollo Lake SoC Platforms..36
6-1 VSCC0 - Vendor-Specific Component Capabilities Register for SPI Component 0................43
6-2 VSCC1 - Vendor Specific Component Capabilities Register for SPI Component 1 ................45
6-3 Description of How WSR and WEWS is Used .................................................................46
10-1SMIP Descriptor Table ...............................................................................................65

6

Intel Confidential

CDI/IBP# 559702



Revision History
Document
Number

Revision
Number

N/A

0.5

Description
•

Initial release

June 2015

•

Updated “Number of GPIO Profiles” to be 4 bytes instead of 2 in
Section 11.1 and updated all offsets below this section
Noted in Section 11.1.2 the outlined “Soft Straps” are for Apollo Lake
platform (BXT not covered yet)
Removed “Secure Touch” Configurations from GPIO Feature and Pin
Configurations (set as reserved)
Corrected Section 9.13 and Section 9.14 to be 64 bit in size
Updated SMIP offset to be in hex indication in Section 11.1
Added note in Section 11.1.1 that USB time will not be used at EOM

July 2015

•
559702

0.55

•
•
•
•
•
•

•
•

559702

0.6

•

•
•

•
•
•
•
•
•
•
559702

0.7

•
•
•

•
559702

CDI/IBP# 559702

0.71

Revision Date

•

Added Section 11.1.2.2 for Broxton softstrap layout of TXE FW SMIP
Updated FLCOMP table in Section 4.1.2.1:
— Added “Default Value” column to set values according to Intel RVP
recommendations (default to hex: 125C02F5)
— Exposed “Read Clock Frequency” in bits 19:17
In Section 9.8, changed “IFP_PRE_BOOT_SOURCE” not to be visible in FIT
In Section 11.1.2.1.13, Record 12a, PCIe x4 straps:
— Exposed Root Port Configuration, bits 12:11. Updated default to 2’h1
— Exposed Lane Reversal, bit 10
In Section 11.1.2.1.14, Record 12b, PCIe x2 straps:
— Exposed Root Port Configuration, bits 12:11
— Exposed Lane Reversal, bit 10
Updated “Secure NFC Feature Configuration” to have 3 GPIO pins instead of
2
Updated in GPIO SMIP sections:
— In “GPIO Feature Configuration of TXE SMIP (Profile 0)” and “GPIO Pin
Configuration of TXE SMIP (Profile 0)”, added “BXT Default Value”
column to all the GPIO Feature and Pin configurations outlining all the
defaults for BXT per BXT RVP
— Updated “Feature State” to default “Enable” where applicable
Added clarify for Figure 2-1
Added recommendation for best performance on SPI frequency in
Section 3.1
Added clarification on SPI SFDP version requirement in Section 2.2
Added Data Clear Security Policy in CSE SMIP in Section
Added Platform SMIP Chapter 12, “SMIP Configurations”
Added Mod-Phy Lane Dependency table between Platform Config SMIP &
TXE SMIP in Chapter 12, “SMIP Configurations”
Set no usage bits to reserved:
— Section 9.3, bit 10
— Section 9.8, bits 20:16, 12:11
— Section 11.1.2.2.3, bit 10
— Section 11.1.2.2.3, bit 23
Updated PUnit SMIP bits 9:6 with correct VR configuration default and
configuration options in Section 11.1.2.1.1 & Section 11.1.2.2.1
Updated reserved bit default in Section 11.1.2.1.13, bit 14
Update Secure NFC GPIO default configuration:
— BXT RVP: Reset Pin Number
— BXT RVP: FW Update Pin Number
Removed RPMC configurations as it is not POR.
Set the follow straps to reserved (Section 9.8):
— Bits 10:8, 15:13, & 25:21

Intel Confidential

September
2015

October 2015

December 2015

7

Document
Number

Revision
Number

Description
•

•
•

559702

0.8

•

•
•
•
•

•
•

559702

1.0
•
•
•
•

8

Revision Date

Added new“TPM Configuration and Boot Guard OEM Policy of TXE SMIP” to
align with BXT B1 silicon, deltas from BXT A1:
— “TXE Straps (Record 7)”: Updated/exposed bits 7:1 usages
— Added new“USBx Straps (Record 8b)” and adjusted record numbering
— Added new “FIA Straps (Record 9b)” and adjusted recording numbering
— Added updated Mex section to reflect new offsets now in “PCIe Straps
(Record 10)”
— Updated “ISH Straps (Record 8a)” bits 15:8 default to 8'h50 instead of
8'h80
Added new “”
Updated “Apollo Lake Platform SMIP Configurations (APL A and B-Step)”:
— “LJ1PLL_RW_CONTROL_1_DEFAULT”: Set bits 31:2 to reserved
— “LCPLL_RW_CONTROL_1_DEFAULT”: Set bits 31:2 to reserved
— “IASecureRdWrInValidAddrRange[0] to [12]”: Removed ranges
IASecureRdWrInValidAddrRange[13] to [31]
— “IAInsecureRdWrInValidAddrRange[0] to [14]”: Removed ranges
IAInsecureRdWrInValidAddrRange[15] to [31]
— “IAI2CVRRdWrInValidAddrRange[0]”: Removed ranges
IAI2CVRRdWrInValidAddrRange[1] to [31]
— “InsecureWrRegBitMskAddr[0] to [1]”: Removed ranges
InsecureWrRegBitMskAddr[2] to [15]
— “SecureWrRegBitMskAddr[0]”: Removed ranges
SecureWrRegBitMskAddr[1] to [15]
Updates to “Soft Strap Section for Apollo Lake Platform (APL A and B-Step)”
— Section 11.1.2.1.10: Updated bits 3 & 2 defaults to be Non-XHC
— Section 11.1.2.1.12: Updated bit 11:10 & 9:8 config default to PCIE
— Section 11.1.2.1.13: Updated this section as record12a to be the x2
Controller not the x4 Controller configuration. Updated bits 12:11 to
reflect per x2 controller.
— Section 11.1.2.1.14: Updated this section as record 12b to be the x4
Controller not the x2 Controller configuration. Updated bits 12:11 to
reflect per the x4 controller. And added clarification for bit 10 (LNREV)
— Section 11.1.2.1.15: Updated to default for bits 1:0 and added usage
clarification.
“TPM Configuration and Boot Guard OEM Policy of TXE SMIP”: Updated to be
specific for dTPM only and set bit 1 to reserved.
“”: Updated bit 0 default to 0 (i.e. OEM Security)

January 2016

General Update: Removed references of Broxton Platform
Updated table in Section 4.1.2.1 FLCOMP:
— Bits [19:17] to be 3'h6 instead of 1'h0
— Bits [3:00] to be 4'h4 instead of 4'h5
Updated Section 11.1.1 USB DnX Bits 67:36 and 35:4 description should be
maximum 31 characters
Set the following to reserved:
— “EXI Straps (Record 10)”: Set bits 23:22 and 21:20 to reserved
— “FIA Straps (Record 11)”: Set bits 23:22, 21:22, 19:18 and 15:14 to
reserved
— “SATA Straps (Record 13)”: Set bit 23:18 and15:4 to reserved as SATA
Ports 7 to 2 are not applicable for APL
Corrected Section 11.1.2.1.15 bits 1:0 description to show correct default
per the default value
Added note under “EXI Straps (Record 10)” and “FIA Straps (Record 11)”
Added row a "TXE SMIP EXI (Record 10)" in table of “Mod-Phy Lane
Configuration Dependency with TXE SMIP”
Section 11.1 updates:
— Set offset 0xC8 to 0x167C to reserved and removed all sections in
reference to these offsets as GPIO configurations have moved to TXE
NVARs and no longer in TXE SMIP.
— Set 0x16C4 to reserved.

June 2016

Intel Confidential

CDI/IBP# 559702


Introduction

1

Introduction

1.1

Overview
This document is intended for OEMs and software vendors to clarify various aspects of
programming the SPI flash and eMMC as well as SMIP on mIA based platforms. The
current scope of this document is for Intel® microarchitecture code name Apollo Lake
only for SPI and eMMC based platforms.
SMIP (Signed Master Image Profile) is a 16KB OEM signed critical sub-partition in the
IFWI Image used for platform-specific data that firmware and software may find
necessary in generating specific platform behavior.
SMIP is functionally similar to SPI soft straps. SPI Soft straps were only writeprotected. SMIP is signature protected providing a common mechanism for all FW
storage media.

Note:

SPI storage media is still required to carry descriptor settings relevant to SPI access.
Currently, SMIP architecture supports configuration settings for TXE, PMC, and IAFW.
SMIP starts with SMIP Descriptor Table (SDT), which describes the size and offset of
each of these blocks. The SMIP referred to as OEM SMIP, as it is configurable by OEMs
using FIT Tool.
FIT tool will support SMIP input for various components through its GUI. OEMs can
customize the SMIP settings and generate updated IFWI as required. Refer Chapter 10,
“Signed Master Image Profile (SMIP)” and Chapter 12, “SMIP Configurations” for more
details on SMIP layout and FIT support.
There will be differences in configuration recommendations for SMIP per platform.
While SMIP layout will be the same for APL, configuration differences will apply. SPI
related configurations only apply to APL, but all SMIP configurations apply to both
platforms for SPI and eMMC. Separate sections and special notes will be in this
document for platform specific recommendations.
The OEM SMIP sub-partition (SMIP = Signed Master Image Profile) contains OEMsigned configuration parameters for the platform. The sub-partition contains the
following:
• A directory
• A partition manifest
• An SMIP structure, with a signed manifest
Here’s an outline of the chapters to follow:
Chapter 2, “SPI Flash Architecture”
• Overview of SPI flash, Descriptor, Flash Layout, compatible SPI flash.
Chapter 3, “SPI Flash Compatibility Requirement”
• Overview of compatibility requirements for

CDI/IBP#: 559702

Intel Confidential

Apollo Lake products.

9

Introduction

Chapter 4, “Flash Descriptor”
• Overview of the descriptor and Descriptor record definition
Chapter 5, “Serial Flash Discoverable Parameter (SFDP)”
• Overview of the SFDP definition.
Chapter 6, “BIOS Configuration for SPI Flash Access”
• Describes how to configure BIOS for SPI flash access.
Chapter 7, “Intel® TXE Disable for Debug/Flash Burning Purposes”
• Methods of disabling Intel Management Engine for debug purposes.
Chapter 8, “Recommendations for SPI Flash Programming in Manufacturing
Environments”
• Recommendations for manufacturing environments.
Chapter 9, “Flash Descriptor SoC Configuration”
• Flash Descriptor SoC Soft Strap Section.
Chapter 10, “Signed Master Image Profile (SMIP)”
• Overview of SMIP.
Chapter 11, “Apollo Lake TXE SMIP Configurations”
• Description and outline of TXE SMIP configurations
Chapter 12, “SMIP Configurations”
Description and outline of SMIP configurations

1.2

Terminology
Term
APL

Apollo Lake Platform

BIOS

Basic Input-Output System

BPDT

Boot Partition Descriptor Table

CRB

Customer Reference Board

Intel

®

FPT

FPT
Intel

Intel® Flash Programming Tool - programs the SPI flash
Flash Partition Table

®

FIT

FW
Intel®

10

Description

Intel® Flash Image Tool – creates a flash image from separate binaries
Firmware

TXE

Intel® Trusted Execution Engine (Intel® TXE FW)

IFWI

Integrated Firmware Image

NVM

Non-Volatile Memory

LPC

Low Pin Count Bus- bus on where legacy devices such a FWH reside

LVSCC

Lower Vendor Specific Component Capabilities

S-BPDT

Secondary Boot Partition Descriptor Table

SMIP

Signed Master Image Profile

Intel Confidential

CDI/IBP#: 559702


Introduction

Term

1.3

Description

SFDP

Serial Flash Discoverable Parameter

SoC

System-on-a-Chip

SPI

Serial Peripheral Interface – refers to serial flash memory in this document

UVSCC

Upper Vendor Specific Component Capabilities

VSCC

Vendor Specific Component Capabilities

Reference Documents
Document

Document # / Location

Apollo Lake External Design Specification
(EDS)

Contact your Intel field representative.

Intel Flash Image Tool (FIT)

\System Tools\Flash Image Tool of latest Intel® TXE kit from VIP.
The Kit MUST match the platform you intend to use the flash tools
for.

Intel Flash Programming Tool (FPT)

\System Tools\Flash Programming Tool of latest Intel® TXE from
VIP. The Kit MUST match the platform you intend to use the flash
tools for.

FW Bring Up Guide

Root directory of latest Intel® Trusted Execution Engine kit from
VIP. The Kit MUST match the platform you intend to use the flash
tools for.

§§

CDI/IBP#: 559702

Intel Confidential

11


SPI Flash Architecture

2
2.1

SPI Flash Architecture
Descriptor Mode
Apollo Lake platform supports up to two SPI flash devices. The SPI flash connected to
Chip Select 0 must contain a valid Descriptor as defined in Chapter 4, “Flash
Descriptor”. The contents of the Descriptor provide platform configuration and enable
the SoC to securely manage storage among multiple users/purposes.
SPI flash must be connected directly to the APL SoC SPI bus.

Note:

APL SoC SPI controller only supports Descriptor mode (does not support nondescriptor mode).
Refer SPI Supported Feature Overview of the latest APL External Design
Specification (EDS) of Apollo Lake platform for more detailed information.

2.2

Serial Flash Discoverable Parameter (SFDP)
Serial flash with SFDP have their supported capabilities and commands stored inside
the serial flash devices. The controller will discover the attributes needed to operate.
APL SoC requires SPI flash devices support JEDEC standard JESD216 SDFDP v1.0
(Serial Flash Discoverable Parameters). Revision A (JESD216A) or later is strongly
recommended but not mandatory. SFDP provides a consistent method of describing the
functional and feature capabilities of SPI devices in a standard set of internal parameter
tables. These parameter tables can be interrogated by the SoC to enable adjustment
needed to accommodate divergent feature from multiple vendors.
Refer Chapter 5, “Serial Flash Discoverable Parameter (SFDP)” for more information.

2.3

SPI Fast Read

Note:

Refer SPI for Flash section of the latest APL External Design Specification (EDS) of
Apollo Lake platform for more detailed information. 50-MHz support requires SPI
component that meet 66-MHz timing.

2.4

Intel® Trusted Platform Module (Intel® TPM) on
SPI Bus
APL SoC supports Intel TPM on the SPI bus.
Refer Serial Peripheral Interface (SPI) section of the latest APL SoC External
Design Specification (EDS) of Apollo Lake platform for more detailed information.

2.5

Boot Flow for APL SoC
Refer Boot BIOS strap in the Functional Straps of the latest External Design
Specification (EDS) of Apollo Lake platform for more detailed information.

CDI/IBP#: 559702

Intel Confidential

13

SPI Flash Architecture

2.6

Flash Regions
The controller can divide the SPI flash into separate regions below.
Region

Content

0

Descriptor

1

IFWI (Integrated Firmware Image)

2

TXE ROM Bypass - Intel® Trusted Execution Engine
Firmware (Intel® TXE FW) ROM Bypass

4

PDR (Platform Data Region)

5

Device Expansion

Note:

This is ROM Bypass region as shown in Figure 2-1, and not TXE FW region. This region is only used in
pre-production environment.

2.6.1

Flash Region Layout

Figure 2-1.

In the SPI controller, a 4K descriptor at the base of the SPI device splits the device into
regions and defines the access control to each region.
SPI Flash Regions Layout

As seen in Figure 2-1, the descriptor defines at least the following device regions:

14

Intel Confidential

CDI/IBP#: 559702


SPI Flash Architecture

1.
2.
3.

TXE ROM Bypass Region: Starting from offset 4K. This region is used for TXE
ROM Bypass. When TXE ROM Bypass does not exist, this region size is 0.
IFWI Region: This region starts after TXE ROM Bypass region spanning over the
rest of the SPI flash until the next region (i.e. Device Expansion or other regions
defined by OEM). Size is estimated to be at 7MB.
Device Expansion: The Size is defined at build time estimated to be 1MB.

Note:

FPT in the above diagram is Flash Partition Table for TXE FW usage.

2.6.2

Flash Region Sizes
SPI flash space requirements differ by platform and configuration. Refer to
documentation specific to your platform for BIOS and TXE ROM Bypass Region flash
size estimates.
Refer SPI Flash Regions section of the latest APL SoC External Design Specification
(EDS) of Apollo Lake platform for more detailed information.

2.7

Hardware Sequencing
Host/Bios and TXE may read/write /erase flash via Hardware Sequencing or Software
Sequencing registers.
APL SoC Hardware sequencing has been enhanced to include all operations the BIOS
needs to perform.

Note:

Host / Bios Software Sequencing is not supported in Apollo Lake.

Note:

OEM EC may also have access to IFWI region.
Hardware sequencing has a predefined list of opcodes, the SoC discovers the 4k and
64k erase opcodes via SFDP.
Refer Serial Peripheral Interface Memory Mapped Configuration Registers in
Apollo Lake External Design Specification (EDS) for more details.

§§

CDI/IBP#: 559702

Intel Confidential

15


SPI Flash Compatibility Requirement

3

SPI Flash Compatibility
Requirement

3.1

Apollo Lake SoC SPI Flash Requirements
• Apollo Lake SoC allows for up to two SPI flash devices to store BIOS, and Intel®
TXE FW.
— Intel® TXE FW is required for Apollo Lake based platforms.
— Each SPI component can support up to 64 MB (128 MB total addressable) using
26-bit addressing
• 1.8V SPI I/O buffer VCC
• SPI Fast Read instruction is supported and frequency of 14MHz, 25MHz, 40MHz and
50MHz
• SPI Dual Output and Dual I/O Fast read instruction is supported with frequency of
14MHz, 25MHz, 40MHz and 50MHz
• SPI Quad Output and Quad I/O Fast read instruction is supported with frequency of
14MHz, 25MHz, 40MHz and 50MHz

Note:

In order to meet best performance, frequencies above must use the highest SPI
configurations.
If there are two SPI components, both components have to support fast read in order
to enable Fast Read.
Flash devices that contain a QE bit must be configured with QE=1. No special
configuration is required for flash devices that support Quad mode but do not contain a
Quad Enable (QE) bit. Several manufacturers offer SKU’s with QE=1 by default.

3.1.1

General Requirements
• Erase size capability of: 4 KBytes erase must be supported uniformly across the
flash array. If 64k erase is also supported, then it must be supported uniformly
across the flash array.
• Serial flash device must ignore the upper address bits such that an address of
FFFFFFh aliases to the top of the flash memory.
• SPI Compatible Mode 0 support: Clock phase is 0 and data is latched on the rising
edge of the clock.
• If the device receives a command that is not supported or incomplete (less than 8
bits), the device must discard the cycle gracefully without any impact on the flash
content.
• An erase command (page, sector, block, chip and so on.) must set all bits inside the
designated area (page, sector, block, chip and so on.) to 1 (Fh).
• Status Register bit 0 must be set to 1 when a write, erase or write to status register
is in progress and cleared to 0 when a write or erase is NOT in progress.

CDI/IBP#: 559702

Intel Confidential

17

SPI Flash Compatibility Requirement

• Devices requiring the Write Enable command must automatically clear the Write
Enable Latch at the end of Data Program instructions.
• The flexibility to perform a write between 1 byte to 64 bytes is required.
• SFDP fields: dword 1, bit 4 “Write Enable Instruction”. Dword 1, bit 3 “Volatile
Status Register”, both bits must be 0.
Intel Trusted Execution Engine Firmware must meet the SPI flash based BIOS
Requirements plus:
• 2.2 Serial Flash Discoverable Parameter (SFDP)
• 3.1.2 JEDEC ID (Opcode 9Fh)
• 3.1.3 Multiple Page Write Usage Model
• 3.1.4 Hardware Sequencing Requirements
Write protection scheme must meet guidelines as defined in Section 3.1 Apollo Lake
SoC SPI Flash Requirements.

3.1.2

JEDEC ID (Opcode 9Fh)
Since each serial flash device may have unique capabilities and commands, the JEDEC
ID is the necessary mechanism for identifying the device so the uniqueness of the
device can be comprehended by the controller (master). The JEDEC ID uses the opcode
9Fh and a specified implementation and usage model. This JEDEC Standard
Manufacturer and Device ID read method is defined in Standard JESD21-C, PRN03-NV1
and is available on the JEDEC website: www.jedec.org.

3.1.3

Multiple Page Write Usage Model
Intel platforms have firmware usage models require that the serial flash device support
multiple writes to a page (minimum of 512 writes) without requiring a preceding erase
command. BIOS commonly uses capabilities such as counters that are used for error
logging and system boot progress logging. These counters are typically implemented
by using byte-writes to ‘increment’ the bits within a page that have been designated as
the counter. The Intel firmware usage models require the capability for multiple data
updates within any given page. These data updates occur via byte-writes without
executing a preceding erase to the given page. Both the BIOS and Intel Management
Engine firmware multiple page write usage models apply to sequential and nonsequential data writes.
Flash parts must also support the writing of a single byte 1024 times in a single 256byte page without erase. There will be 64 pages where this usage model will occur.
These 64 pages will be every 16 kilobytes.

18

Intel Confidential

CDI/IBP#: 559702


SPI Flash Compatibility Requirement

3.1.4

Hardware Sequencing Requirements
The following table contains a list of commands and the asSoCiated opcodes that a SPIbased serial flash device must support in order to be compatible with hardware
sequencing.
Commands

3.2

OPCODE

Notes

Write to Status
Register

01h

Writes a byte to SPI flash’s status register. Enable Write to
Status Register command must be run prior to this command

Program Data

02h

Single byte or 64 byte write as determined by flash part
capabilities and software

Read Data

03h

Write Disable

04h

Read Status

05h

Write Enable

06h

Fast Read

0Bh

Enable Write to Status
Register

06h

If write-status 01h requires a write-enable, then 06h must
enable write-status.

Erase

Programmable/
Discoverable

4 Kbyte erase. Uses the value from SFDP (if available) else
value from VSCCn Erase Opcode register value

Erase

Programmable/
Discoverable

64K erase.

Chip Erase

C7h and/or 60

Outputs contents of SPI flash’s status register

JEDEC ID

9Fh

Refer Section 3.1.2 for more information.

Dual Output Fast Read

3Bh/ Discoverable

Discoverable opcodes are obtained from each component’s
SFDP table

Read SFDP

5Ah

Uses fast read timing with 8 wait states

Enable 32-bit
addressing mode

B7h

Dual I/O Fast Read

Discoverable

Opcode is optained from each component’s SFDP table

Quad I/O Fast Read

Discoverable

Opcode is optained from each component’s SFDP table

APL SoC SPI AC and DC Electrical Compatibility
Guidelines
For all AC and DC electrical compatibility requirements, refer Apollo Lake Platform
External Design Specification (EDS).

§§

CDI/IBP#: 559702

Intel Confidential

19


Flash Descriptor

4

Flash Descriptor
The Flash Descriptor is a data structure that is programmed on the SPI flash part on
Apollo Lake based platforms. The Descriptor data structure describes the layout of the
flash as well as defining configuration parameters for the SoC. The descriptor is on the
SPI flash itself and is not in memory mapped space like SoC programming registers.
The maximum size of the Flash Descriptor is 4 KBytes. It requires its own discrete
erase block, so it may need greater than 4 KBytes of flash space depending on the flash
architecture that is on the target system.
The information stored in the Flash Descriptor can only be written during the
manufacturing process as its read/write permissions must be set to Read Only when
the computer leaves the manufacturing floor.
The Descriptor has 9 parts:

Figure 4-1.

Flash Descriptor (APL SoC)

4KB

OEM Section
Descriptor
Upper MAP
TXE VSCC
Table

Reserved

SoC Soft
Straps
Master

Region

Component
Descriptor
MAP
10h
0

CDI/IBP#: 559702

Signature
Reserved

Intel Confidential

21

Flash Descriptor

• The Flash signature at the bottom of the flash (offset 10h) must be 0FF0A55Ah in
order to be in Descriptor mode.
• The Reserved section at offset 0h is the first 16 bytes of the Flash Descriptor.
These bytes are simply reserved.
• The Flash Signature at the bottom of the flash (offset 10h) must be 0FF0A55Ah in
order to be in Descriptor mode.
• The Descriptor Map has pointers to the lower five descriptor sections as well as
the size of each.
• The Component section has information about the SPI flash part(s) the system. It
includes the number of components, density of each component, read, write and
erase frequencies and invalid instructions.
• The Region section defines the base and the limit of the IFWI, TXE ROM Bypass
region, Device Expansion regions as well as their size.
• The Master region contains the hardware security settings for the flash, granting
read/write permissions for each region and identifying each master.
• APL platform SoC Soft Strap sections contain Apollo Lake SoC configurable
parameters.
• The Reserved region between the top of the Soft Straps is for future SoC usage.
• The Descriptor Upper Map determines the length and base address of the Intel®
TXE VSCC Table.
• The Intel® TXE VSCC Table holds the JEDEC ID and the VSCC information for all
the SPI Flash part(s) supported by the NVM image. BIOS write and erase
capabilities depend on LVSCC and UVSCC register in SPIBAR memory space.
• OEM Section is 256 Byte section reserved at the top of the Flash Descriptor for
use by the OEM.
Refer SPI Supported Feature Overview and Flash Descriptor Records in the
Apollo Lake Platform External Design Specification (EDS).

4.1

Flash Descriptor Content
The following sections describe the data structure of the Flash Descriptor on the SPI
device. These are not registers or memory space within SoC. FDBAR - is address 0x0
on the SPI flash device on chip select 0.
Recommended flash descriptor map:

22

Region Name

Starting Address

Signature

0x10

Component FCBA

0x30

Regions FRBA

0x40

Masters FMBA

0x80

SoC Straps FPSBA

0x100

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

4.1.1

Descriptor Signature and Map

4.1.1.1

FLVALSIG - Flash Valid Signature
(Flash Descriptor Records)
Memory Address:FDBAR + 010h

Size: 32 bits

Recommended Value:0FF0A55Ah

4.1.1.2

Bits

Description

31:00

Flash Valid Signature. This field identifies the Flash Descriptor sector as valid. If the contents at
this location do not return the expected value, then the Flash Descriptor region is assumed to be unprogrammed or corrupted and is not usable.
Flash Valid Signature[31:00]: 0FF0A55Ah

FLMAP0 - Flash Map 0 Register
(Flash Descriptor Records)
Memory Address: FDBAR + 014h
Bits
31:27
26:24

23:16

Size: 32 bits
Description

Reserved
Reserved
Flash Region Base Address (FRBA). This identifies address bits [11:4] for the Region portion of
the Flash Descriptor. Bits [24:12] and bits [3:0] are 0.
Set this value to 04h. This will define FRBA as 40h.

15:13

12

Reserved
Fingerprint sensor on shared flash/TPM SPI bus
0 : no fingerprint sensor is connected to CS1
1 : a fingerprint sensor is connected to CS1 and acting as a flash device
Note: Hardware does not use this field.
This value must be read directly from flash. It's not available via Host FDOC/FDOD registers.

11

Touch on dedicated SPI bus
0 : no touch device is connected to the dedicated Touch SPI bus
1 : a touch device is connected to the dedicated Touch SPI bus
Note: Hardware does not use this field.
This value must be read directly from flash. It's not available via Host FDOC/FDOD registers.

10

9:08

7:00

Reserved
Number Of Components (NC). This field identifies the total number of Flash Components. Each
supported Flash Component requires a separate chip select.
00 = 1 Component
01 = 2 Components
All other settings = Reserved
Flash Component Base Address (FCBA). This identifies address bits [11:4] for the Component
portion of the Flash Descriptor. Bits [24:12] and bits [3:0] are 0.
set this field to 03h. This will define FCBA as 30h

CDI/IBP#: 559702

Intel Confidential

23

Flash Descriptor

4.1.1.3

FLMAP1 - Flash Map 1 Register 
(Flash Descriptor Records)
Memory Address: FDBAR + 018h

Size: 32 bits

Recommended Value:
Bits

31:24

Description
SoC Strap Length (PSL). Identifies the 1s based number of Dwords of SoC Straps to be read, up
to 255 DWs (1KB) max. A setting of all 0's indicates there are no SoC DW straps.
This field MUST be set to 13h

23:16

SoC Flash Strap Base Address (FPSBA). This identifies address bits [11:4] for the SoC Strap
portion of the Flash Descriptor. Bits [24:12] and bits [3:0] are 0.
Set this field to 10h. This will define FPSBA to 100h

15:11

Reserved
Number Of Masters (NM). This field identifies the total number of Flash Masters.

10:8

Set this field to 10b
Note:

7:0

This field is not used by the Flash Controller.

Flash Master Base Address (FMBA). This identifies address bits [11:4] for the Master portion of
the Flash Descriptor. Bits [24:12] and bits [3:0] are 0.
Set this field to 08h. This will define FMBA as 80h

4.1.1.4

FLMAP2—Flash Map 2 Register
(Flash Descriptor Records)
Memory Address: FDBAR + 01Ch
Bits
31:0

24

Size: 32 bits
Description

Reserved, set to 0

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

4.1.2

Flash Descriptor Component Section

4.1.2.1

FLCOMP—Flash Components Register
(Flash Descriptor Records)
The following section of the Flash Descriptor is used to identify the different SPI Flash
Components and their capabilities.
Memory Address: FCBA + 000h
Bits

Default
Value

31

1'h0

Size: 32 bits
Description

Reserved
Dual Output Fast Read Support
0 = Dual Output Fast Read is not supported
1 = Dual Output Fast Read is supported

30

29:27

26:24

23:21

CDI/IBP#: 559702

1'h0

Notes:
1.
If the Dual Output Fast Read Support bit is set to 1b, the Dual Output Fast
Read instruction is issued in all cases where the Fast Read would have been
issued
2.
The Frequencies supported for the Dual Output Fast Read are the same as
those supported by the Fast Read Instruction
3.
If more than one Flash component exists, this field can only be set to “1” if
both component support Dual Output Fast Read
4.
The Dual output Fast Read is only supported using the 3Bh opcode and dual
read only affect the read data, not the address phase.
5.
This field only has effect if the SFDP parameter table is not detected. If the
SDFDP parameter table is detected, this field is ignored and SFDP discovered
parameter is used instead
6.
This bit will be deprecated as all supported devices will contain SFDP

3'h2

Read ID and Read Status Clock Frequency.
001 = 50MHz
010 = 40MHz
100 = 25MHz
110 = 14MHz
All other Settings = Reserved
Note: If more than one Flash component exists, this field must be set to the
lowest common frequency of the different Flash components.

3'h2

Write and Erase Clock Frequency.
001 = 50MHz
010 = 40MHz
100 = 25MHz
110 = 14MHz
All other Settings = Reserved
Note: If more than one Flash component exists, this field must be set to the
lowest common frequency of the different Flash components.

3'h2

Fast Read Clock Frequency. This field identifies the frequency that can be used
with the Fast Read instruction. This field is undefined if the Fast Read Support field
is '0'.
001 = 50MHz
010 = 40MHz
100 = 25MHz
110 = 14MHz
All other Settings = Reserved
Note: If more than one Flash component exists, this field must be set to the
lowest common frequency of the different Flash components.

Intel Confidential

25

Flash Descriptor

Bits

Default
Value

Description
Fast Read Support.
0 = Fast Read is not Supported
1 = Fast Read is supported
If the Fast Read Support bit is a '1' and a device issues a Direct Read or issues a
read command from the Hardware Sequencer and the length is greater than 4
bytes, then the SPI Flash instruction should be “Fast Read”. If the Fast Read Support
is a '0' or the length is 1-4 bytes, then the SPI Flash instruction should be “Read”.

20

1'h1

If the Fast Read Support bit is a '1', SoC will issue a fast read command everywhere
a read command would have been issued, independent of the number of bytes
being read. This bit applies to flash accesses, not Touch or TPM.
Reads to the Flash Descriptor always use the Read command independent of the
setting of this bit.
Notes:
1.
If more than one Flash component exists, this field can only be set to '1' if both
components support Fast Read.
2.
It is strongly recommended to set this bit to 1b

26

19:17

3'h6

Read Clock Frequency.
110 = 17MHz
All other settings = Reserved

16

1'h0

Reserved

15

1'h0

Reserved

14

1'h0

Reserved

13

1'h0

Reserved

12

1'h0

Reserved

11:10

1'h0

Reserved

9

1'h1

Reserved, set to ‘1’

8

1'h0

Reserved

7:04

4'hF

Reserved

3:00

4'h4

Reserved

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

4.1.2.2

FLILL—Flash Invalid Instructions Register
(Flash Descriptor Records)
Memory Address: FCBA + 004h
Bits

Size: 32 bits
Description

Invalid Instruction 3. Refer definition of Invalid Instruction 0
31:24
Set to: 0xAD
Invalid Instruction 2. Refer definition of Invalid Instruction 0
23:16
Set to: 0x60
Invalid Instruction 1. Refer definition of Invalid Instruction 0
15:8
Set to: 0x42
Invalid Instruction 0.
Set to: 0x21
7:0

4.1.2.3

Opcode for an instruction that the Flash Controller should protect against, such as Chip Erase. This
byte should be set to 0 if there are no invalid instructions to protect against for this field. Opcodes
programmed in the Software Sequencing Opcode Menu Configuration and Prefix-Opcode
Configuration are not allowed to use any of the Invalid Instructions listed in this register.

FLILL1—Flash Invalid Instructions Register
(Flash Descriptor Records)
Memory Address: FCBA + 008h
Bits

Size: 32 bits
Description

Invalid Instruction 7. Refer definition of Invalid Instruction 0
31:24
Set to: 0xC7
Invalid Instruction 6. Refer definition of Invalid Instruction 0
23:16
Set to: 0xC4
Invalid Instruction 5. Refer definition of Invalid Instruction 0
15:8
Set to: 0xB9
Invalid Instruction 4. Refer definition of Invalid Instruction 0
7:0
Set to: 0xB7

4.1.3

Flash Descriptor Region Section
The following section of the Flash Descriptor is used to identify the different Regions of
the NVM image on the SPI flash.
Flash Regions:
• Bit 26 represents a linear address when 2 Flash components are used and the
linear address exceeds 64MB. Bit 26 is never driven during the SPI address phase.
The registers support up to 128MB of addressable Flash using 2 64MB flash
components.

CDI/IBP#: 559702

Intel Confidential

27

Flash Descriptor

• If a particular region is not using SPI Flash, the particular region should be disabled
by setting the Region Base to all 1's, and the Region Limit to all 0's (base is higher
than the limit)
• For each region except FLREG0, the Flash Controller must have a default Region
Base of 7FFFh and the Region Limit to 0000h within the Flash Controller in case the
Number of Regions specifies that a region is not used.
• Flash region limit field is inclusive, i.e. an address is valid if base[26:12] <=
address[26:12] <= limit[26:12]. Other checks prevent any single access from
crossing a 4k address boundary.
• Each Region entry follows the template in Table 4-1. Each row in the Table 4-2
represents a Region entry in the descriptor. Most masters are given permission to
access their region(s) independent of the descriptor FLMSTR setting, refer Section
4.1.4, “Flash Descriptor Master Section”.
Table 4-1.

Region Definition Template
Bits
31
30:16
15
14:0

Table 4-2.

Description
Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.

Region Entries in Descriptor
Offset from FRBA

Register Name

Region Name

0

FLREG0

Descriptor

4h

FLREG1

IFWI

8h

FLREG2

TXE1

10h

FLREG4

PDR

14h

FLREG5

Device Expansion #1

Notes:
1.

28

This is ROM Bypass region as shown in Figure 2-1, “SPI Flash Regions Layout”. This region is only used in
pre-production environment.

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

4.1.3.1

FLREG0—Flash Region 0 (Flash Descriptor) Register
(Flash Descriptor Records)
Memory Address: FRBA + 000h

Size: 32 bits

Recommended Value: 00000000h
Bits
31

Description
Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.

30:16

15
14:0

4.1.3.2

Notes:
1.
Set this field to 0b. This defines the ending address of descriptor as being FFFh.
2.
Region limit address Bits[11:0] are assumed to be FFFh
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.
Note:

Set this field to all 0s. This defines the descriptor address beginning at 0h.

FLREG1—Flash Region 1 (IFWI) Register
(Flash Descriptor Records)
Memory Address: FRBA + 004h
Bits
31

Size: 32 bits
Description

Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.

30:16

15
14:0

4.1.3.3

Notes:
1.
Must be set to 0000h if BIOS region is unused (on Firmware hub)
2.
Ensure BIOS region size is a correct reflection of actual BIOS image that will be used in the
platform
3.
Region limit address Bits[11:0] are assumed to be FFFh
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.
Note:

If the BIOS region is not used, the Region Base must be programmed to 7FFFh

FLREG2—Flash Region 2 (Intel® TXE) Register 
(Flash Descriptor Records)
Memory Address: FRBA + 008h
Bits
31

Size: 32 bits
Description

Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.

30:16

15
14:0

CDI/IBP#: 559702

Notes:
1.
This region hold ROM Bypass
2.
Region limit address Bits[11:0] are assumed to be FFFh
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.

Intel Confidential

29

Flash Descriptor

4.1.3.4

FLREG4—Flash Region 4 (Platform Data Region) Register 
(Flash Descriptor Records)
Memory Address: FRBA + 010h
Bits
31

Size: 32 bits
Description

Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.

30:16

15
14:0

4.1.3.5

Notes:
1.
If PDR Region is not used, the Region Limit must be programmed to 0000h
2.
Ensure PDR region size is a correct reflection of actual PDR image that will be used in the
platform
3.
Region limit address Bits[11:0] are assumed to be FFFh
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.
Note:

If the Platform Data region is not used, the Region Base must be programmed to 7FFFh

FLREG5—Flash Region 5 (Device Expansion) Register 
(Flash Descriptor Records)
Memory Address: FRBA + 014h
Bits
31

Size: 32 bits
Description

Reserved
Region Limit. This specifies bits 26:12 of the ending address for this Region.

30:16

15
14:0

4.1.4

Notes:
1.
If Device Expansion Region is not used, the Region Limit must be programmed to 0000h
2.
Region limit address Bits[11:0] are assumed to be FFFh
Reserved
Region Base. This specifies address bits 26:12 for the Region Base.
Note:

If the Device Expansion region is not used, the Region Base must be programmed to 7FFFh

Flash Descriptor Master Section
These DWORDs in flash define which regions each master may access using
programmed accesses. They do not apply to direct reads.
Each Master entry in the descriptor follows the template in Table 4-3. Each row in
Table 4.1.4.1 represents a Master entry in the descriptor.

Table 4-3.

Flash Master Template
Bits

31:20

19:8

30

Description
Master Region Write Access:
Each bit [31:20] corresponds to Regions [11:0]. If the bit is set, this master can erase and write
that particular region through register accesses.
Note: The flash controller may ignore some bits in each register because Masters are granted
default permission to their regions, e.g. BIOS has default R/W permission to BIOS regions.
Table 4.1.4.1.
Master Region Read Access:
Each bit [19:8] corresponds to Regions [11:0]. If the bit is set, this master can read that particular
region through register accesses.

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

Table 4-3.

Flash Master Template
Bits

Description
Extended Region Write Access:

7:4

3:0

4.1.4.1

Each bit [7:4] corresponds to Regions [15:12]. If the bit is set, this master can erase and write that
particular region through register accesses.
Extended Region Read Access:
Each bit [3:0] corresponds to Regions [15:12]. If the bit is set, this master can erase and write that
particular region through register accesses.

FLMSTR1—Flash Master 1 (Host CPU/ BIOS)
Memory Address: FMBA + 000h
Bits

Description

31:20

Master Region Write Access: Each bit [31:20] corresponds to Regions [11:0]. If the bit is set,
this master can erase and write that particular region through register accesses.
Note: Bit 21 and 26 are does not care as the primary master always has read/write permission to its
primary region

19:8

Master Region Read Access: Each bit [19:8] corresponds to Regions [11:0]. If the bit is set, this
master can read that particular region through register accesses.
Note: Bit 9 and 14 are don’t care as the primary master always read/write permission to its
primary region.

7:0

4.1.4.2

Size: 32 bits

Reserved

FLMSTR2—Flash Master 2 (Intel® TXE)
Memory Address: FMBA + 004h
Bits

31:20

19:8

7:0

4.1.5

Size:32 bits
Description

Master Region Write Access: Each bit [31:20] corresponds to Regions [11:0]. If the bit is set,
this master can erase and write that particular region through register accesses.
Note: Bit 22 is a does not care as the primary master always has read/write permission to its
primary region
Master Region Read Access: Each bit [19:8] corresponds to Regions [11:0]. If the bit is set, this
master can read that particular region through register accesses.
Note: Bit 10 is a does not care as the primary master always read/write permission to its primary
region.
Reserved

SoC Softstraps
Refer Chapter 9, “Flash Descriptor SoC Configuration” for details.

CDI/IBP#: 559702

Intel Confidential

31

Flash Descriptor

4.1.6

Descriptor Upper Map Section

4.1.6.1

FLUMAP1—Flash Upper Map 1
(Flash Descriptor Records)
Memory Address:FDBAR + EFCh

32 bits

Bits

Default

31:16

0

Reserved

15:8

1

Intel® TXE VSCC Table Length (VTL). Identifies the 1s based number of
DWORDS contained in the VSCC Table. Each SPI component entry in the table is 2
DWORDS long.

7:0

1

Intel® TXE VSCC Table Base Address (VTBA). This identifies address bits
[11:4] for the VSCC Table portion of the Flash Descriptor. Bits [26:12] and bits
[3:0] are 0.

Note:

4.1.7

Size:

Description

The Upper MAP is used by BIOS and TXE FW. HW does not read this section.

Intel® TXE Vendor Specific Component Capabilities Table
Entries in this table allow support for a SPI flash part for Intel Trusted Execution Engine
capabilities.
Since Flash Partition Boundary Address (FPBA) has been removed, UVSCC and LVSCC
has been replaced with VSCC0 and VSCC1 in Apollo Lake Platform. VSCC0 is for SPI
component 0 and VSCC1 is for SPI component 1.
Each VSCC table entry is composed of two 32 bit fields: JEDEC IDn and the
corresponding VSCCn value.
Refer 4.4 Intel® TXE Vendor-Specific Component Capabilities (Intel® TXE VSCC) Table
for information on how to program individual entries.

4.1.7.1

JID0—JEDEC-ID 0 Register
(Flash Descriptor Records)
Memory Address: VTBA + 000h
Bits

Description

31:24

Reserved

23:16

SPI Component Device ID 1. This field identifies the second byte of the Device ID of the SPI Flash
Component. This is the third byte returned by the Read JEDEC-ID command (opcode 9Fh).

15:08

SPI Component Device ID 0. This field identifies the first byte of the Device ID of the SPI Flash
Component. This is the second byte returned by the Read JEDEC-ID command (opcode 9Fh).

7:00

32

Size: 32 bits

SPI Component Vendor ID. This field identifies the one byte Vendor ID of the SPI Flash
Component. This is the first byte returned by the Read JEDEC-ID command (opcode 9Fh).

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

4.1.7.2

VSCC0—Vendor Specific Component Capabilities 0
(Flash Descriptor Records)
Memory Address: VTBA + 004h

Note:

Size: 32 bits

VSCC0 applies to SPI flash that connected to CS0.
Bits
31:16

Description
Reserved

15:8

Erase Opcode (EO). This field must be programmed with the Flash erase instruction opcode that
corresponds to the erase size that is in BES.

7:5

000 = Device does not have a QE bit. Device detects 1-1-4 and 1-4-4 reads based on instruction.
DQ3 / HOLD# functions as hold during instruction phase.
001 = QE is bit 1 of status register 2. It is set via Write Status with two data bytes where bit 1 of
the second byte is one. It is cleared via Write Status with two data bytes where bit 1 of the
second byte is zero. Writing only one byte to the status register has the side effect of clearing
status register 2, including the QE bit. The 100b code is used if writing one byte to the status
register does not modify status register 2.
010 = QE is bit 6 of status register 1. It is set via Write Status with one data byte where bit 6 is
one. It is cleared via Write Status with one data byte where bit 6 is zero.
011 = QE is bit 7 of status register 2. It is set via Write status register 2 instruction 3Eh with one
data byte where bit 7 is one. It is cleared via Write status register 2 instruction 3Eh with one
data byte where bit 7 is zero. The status register 2 is read using instruction 3Fh.
100 = QE is bit 1 of status register 2. It is set via Write Status with two data bytes where bit 1 of
the second byte is one. It is cleared via Write Status with two data bytes where bit 1 of the
second byte is zero. In contrast to the 001b code, writing one byte to the status register does
not modify status register 2.
101 = QE is bit 1 of the status register 2. Status register 1 is read using Read Status instruction
05h. Status register 2 is read using instruction 35h. QE is set via Write Status instruction 01h
with two data bytes where bit 1 of the second byte is one. It is cleared via Write Status with
two data bytes where bit 1 of the second byte is zero.
other = reserved

Quad Enable Requirements (QER)

Note:
4:0
Note:

4.1.7.3

Refer Table note#1 below for details.

Reserved set to 00101b
The manufacturers information included in the QER list are for guidance purpose. Some manufacturer
devices operate as shown in the table above. Check manufacturer’s data sheet for exact
requirements.

JIDn—JEDEC-ID Register n
(Flash Descriptor Records)
Memory Address: VTBA + (n*8)h

Size:32 bits

“n” is an integer denoting the index of the Intel® TXE VSCC table. Refer 4.1.7.1 JID0—
JEDEC-ID 0 Register (Flash Descriptor Records) for details.

4.1.7.4

VSCCn—Vendor Specific Component Capabilities n
(Flash Descriptor Records)
Memory Address: VTBA + 004h + (n*8)h

Size:

32 bits

“n” is an integer denoting the index of the Intel® TXE VSCC table. Refer 4.1.7.2
VSCC0—Vendor Specific Component Capabilities 0 (Flash Descriptor Records) for
details.

CDI/IBP#: 559702

Intel Confidential

33

Flash Descriptor

4.2

OEM Section
Memory Address: F00h

Size: 256 Bytes

256 Bytes are reserved at the top of the Flash Descriptor for use by the OEM (F00h FFFh). The information stored by the OEM can only be written during the manufacturing
process as the Flash Descriptor read/write permissions must be set to Read Only when
the computer leaves the manufacturing floor. The SoC Flash controller does not read
this information. FFh is suggested to reduce programming time.

4.3

Region Access Control
Regions of the flash can be defined from read or write access by setting a protection
parameter in the Master section of the Descriptor. There are only two masters that
have the ability to access other regions: CPU/BIOS, and Intel® TXE Firmware running
on SoC.

Table 4-4.

Region Access Control Table Options
Master Read/Write Access
Region (#)

CPU and BIOS

TXE

Descriptor (0)

Read Only

Read Only

IFWI (1)

Read / Write

Read only

TXE ROM Bypass (2)

Not Accessible

Read / Write

PDR (4)

Read / Write

Not Accessible

Device Expansion (5)

Not Accessible

Read / Write

Notes:
1.
Descriptor, Device Expansion and PDR region is not a master, so they will not have Master R/W access.
2. Descriptor should NOT have write access by any master in production systems.
3.
PDR region should only have read and/or write access by CPU/Host. TXE should NOT have access to PDR
region.

4.3.1

Intel Recommended Permissions for Region Access
The following Intel recommended read/write permissions are necessary to secure
Intel® TXE and Intel® TXE FW.
The table below shows the values to be inserted into the Flash Image Tool (FIT). The
values below will provide the access levels described in the table above.

Table 4-5.

Recommended Read/Write Settings for Platforms

Note:

4.3.2

BIOS

TXE

Read

000‡ 0011 = 0x‡3

0010 0111 = 0x27

Write

000‡ 0010 = 0x‡2

010 0100 = 0x24

‡ = Value dependent on if PDR is implemented and if Host access is desired per OEM.

Overriding Region Access
Once access Intel recommended Flash settings have been put into the flash descriptor,
it may be necessary to update the TXE FW with a Host program or write a new Flash
descriptor.

34

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

Assert GPIO_118 HIGH during the rising edge of RSM_RST_N to set the Flash
descriptor override strap.
This strap should only be visible and available in manufacturing or during product
development.
After this strap has been set you can use a host based flash programming tool like
FPT.exe to write/read any area of serial flash that is not protected by Protected Range
Registers. Any area of flash protected by Protected range Registers will still NOT be
writable/readable.
Refer 6.3 SPI Protected Range Register Recommendations for more details.

4.4

Intel® TXE Vendor-Specific Component
Capabilities (Intel® TXE VSCC) Table
The Intel® TXE VSCC Table defines how the Intel® TXE will communicate with the
installed SPI flash if there is no SFDP table found. This table is defined in the descriptor
and is the responsibility of who puts together the NVM image. VSCCn registers are
defined in memory space and must be set by BIOS. This table must define every flash
part that is intended to be used. The size (number of max entries) of the table is
defined in 4.1.6.1 FLUMAP1—Flash Upper Map 1 (Flash Descriptor Records). Each Table
entry is made of two parts: the JEDEC ID and VSCC setting.
7

Table 4-6.

Jidn - JEDEC ID Portion of Intel® TXE VSCC Table
Bits

Description

31:24

Reserved.

23:16

SPI Component Device ID 1: This identifies the second byte of the Device ID of the SPI Flash
Component. This is the third byte returned by the Read JEDEC-ID command (opcode 9Fh).

15:8
7:0

SPI Component Device ID 0: This identifies the first byte of the Device ID of the SPI Flash
Component. This is the second byte returned by the Read JEDEC-ID command (opcode 9Fh).
SPI Component Vendor ID: This identifies the one byte Vendor ID of the SPI Flash Component.
This is the first byte returned by the Read JEDEC-ID command (opcode 9Fh).

If using Flash Image Tool (FIT) refer System Tools user guide in the Intel® TXE FW kit
and the respective FW Bring up Guide on how to build the image. If not, refer 4.1.6.1
FLUMAP1—Flash Upper Map 1 (Flash Descriptor Records) through Section 4.2 OEM
Section.

4.4.1

How to Set a VSCC Entry in Intel® TXE VSCC Table for
Apollo Lake Platforms
VSCC0 needs to be programmed in instances where there is only SPI component in the
system. When using an asymmetric flash component (part with two different sets of
attributes based on address) VCSCC0 and VSCC1 will need to be used. This includes if
the system is intended to support both symmetric AND asymmetric SPI flash parts.
Refer Section 4.4.2 Intel® TXE VSCC Table Settings for Apollo Lake Systems.
37H

Refer text below the table for explanation on how to determine Intel Trusted Execution
Engine VSCC value.

CDI/IBP#: 559702

Intel Confidential

35

Flash Descriptor

Table 4-7.

Vsccn – Vendor-Specific Component Capabilities Portion of the Apollo Lake
SoC Platforms
Bits
31:16

Description
Reserved

15:8

Erase Opcode (EO). This field must be programmed with the Flash erase instruction opcode that
corresponds to the erase size that is in BES.

7:5

000 = Part does not require a Quad Enable bit to be set, either because Quad is not supported or
because the manufacturer permanently enables Quad capability (e.g. Micron, Numonyx).
001 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to status
register clears all bits in register 2, therefore status register writes MUST be two bytes. If
the status register is unlocked and SFDP bits WSR or VSCC WSR is 1 then SPI controller cannot use the quad output, quad IO features of this part because the hardware will automatically write one byte of zeros to status register with every write/erase. (e.g. Winbond, AMIC,
Spansion).
010 = Part requires bit 6 of status register 1 to be set to enable quad IO. If the status register is
unlocked and SFDP WSR bit or VSCC WSR is 1 then flash controller cannot use the quad output, quad IO features of this part because the hardware will automatically write one byte of
zeros to status register with every write/erase (e.g. Macronix).
011 = Part requires bit 7 of the configuration register to be set to enable Quad (e.g. Atmel).
100 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to the
status register does not clear the second byte (SST/Microchip, Winbond).

Quad Enable Requirements (QER)

Note:

Refer Table note#6 below for details.

4

Write Enable on Write Status (WEWS)
0 = 50h is the opcode used to unlock the status register on SPI flash if WSR (bit 3) is set to 1b.
1 = 06h is the opcode used to unlock the status register on SPI flash if WSR (bit 3) is set to 1b.
Note: Refer Table Note #4 below for a description how this bit is used.

3

Write Status Required (WSR)
0 = No automatic write of 00h will be made to the SPI flash’s status register)
1 = A write of 00h to the SPI flash’s status register will be sent on EVERY write and erase
performed by Intel® TXE to the SPI flash.
Note: Refer Table Note #5 below for a description how this bit is used.

2

Write Granularity (WG).
0 = 1 Byte
1 = 64 Bytes

1:0

Block/Sector Erase Size (BES). This field identifies the erasable sector size for all Flash
components.
00 = 256 Bytes
01 = 4 K Bytes
10 = 8 K Bytes
11 = 64K Bytes

Notes:
1.
Bit 3 (WEWS) and/or bit 4 (WSR) should not be set to ‘1’ if there are non volatile bits in the SPI flash’s
status register. This may lead to premature flash wear out.
2.
This is not an atomic (uninterrupted) sequence. The SoC will not wait for the status write to complete
before issuing the next command, potentially causing SPI flash instructions to be disregarded by the
SPI flash part. If the SPI flash component’s status register is non-volatile, then BIOS should issue an
atomic software sequence cycle to unlock the flash part.
3.
If both bits 3 (WSR) and 4 (WEWS) are set to 1b, then sequence of 06h 01h 00h is sent to unlock the
SPI flash on EVERY write and erase that Intel Trusted Execution Engine firmware performs.
4.
If bit 3 (WSR) is set to 1b and bit 4 (WEWS) is set to 0b then sequence of 50h 01h 00h is sent to unlock
the SPI flash on EVERY write and erase that Intel Trusted Execution Engine firmware performs.
5.
If bit 3 (WSR) is set to 0b and bit 4 (WEWS) is set to 0b or 1b then sequence of 60h is sent to unlock
the SPI flash on EVERY write and erase that Processor performs.
6.
The manufacturers information included in the QER list are for guidance purpose. Some manufacturer
devices operate as shown in the table above. Check manufacturer’s datasheet for exact
requirements.

Erase Opcode (EO) and Block/Sector Erase Size (BSES) should be set based on
the flash part and the firmware on the platform. For Intel® TXE enabled platforms this
should be 4 KB.

36

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor

Write Status Required (WSR) or Write Enable on Write Status (WEWS) should
be set on flash devices that require an opcode to enable a write to the status register.
Intel® TXE Firmware will write a 00h to status register to unlock the flash part for every
erase/write operation. If this bit is set on a flash part that has non-volatile bits in the
status register then it may lead to pre-mature wear out of the flash.
• Set the WSR bit to 1b and WEWS to 0b if the Enable Write Status Register opcode
(50h) is needed to unlock the status register. Opcodes sequence sent to SPI flash
will bit 50h 01h 00h.
• Set the WSR bit to 1b AND WEWS bit to 1b if write enable (06h) will unlock the
status register. Opcodes sequence sent to SPI flash will bit 06h 01h 00h.
• Set the WSR bit to 0b AND WEWS bit to 0b or 1b, if write enable (06h) will unlock
the status register. Opcodes sequence sent to SPI flash will bit 06h
• WSR or WEWS should be not be set on devices that use non volatile
memory for their status register. Setting this bit will cause operations to be
ignored, which may cause undesired operation. Ask target flash vendor if this is the
case for the target flash. Refer 6.1 Unlocking SPI Flash Device Protection for Apollo
Lake Platform and 6.2 Locking SPI Flash via Status Register for more information.
356H

358H

Erase Opcode (EO) and Block/Sector Erase Size (BES) should be set based on the
flash part and the firmware on the platform.
Write Granularity (WG) bit should be set based on the capabilities of the flash
device. If the flash part is capable of writing 1 to 64 bytes (or more) with the 02h
command you can set this bit 0 or 1. Setting this bit high will result in faster write
performance. If flash part only supports single byte write only, then set this bit to 0.
Bit ranges 31:16 are reserved and should set to all zeros.

4.4.2

Intel® TXE VSCC Table Settings for Apollo Lake Systems
To understand general guidelines for BIOS VSCC settings on different SPI flash devices,
refer VSCCommn.bin Content application note (VSCCommn_bin Content.pdf under
Flash Image Tool directory).

§§

CDI/IBP#: 559702

Intel Confidential

37


Serial Flash Discoverable Parameter (SFDP)

5

Serial Flash Discoverable
Parameter (SFDP)

5.1

Overview
As the feature set of serial flash progresses, there is an increasing amount of
divergence as individual vendors find different solution to adding new functionality such
as speed and addressing.
These guidelines are a standard that will allow for individual vendors to have their value
add features, but will allow for a controller to discover the attributes needed to operate.

5.2

Discoverable Parameter Opcode and Flash Cycle
The discoverable parameter read opcode behaves like a fast read command. The
opcode is 5Ah and the address cycle is 24 bit long. After the opcode 5Ah is clocked in,
there are 24 bit of address clocked in. There will then be eight clock (8 wait states)
before valid data is clocked out. There is flexibility in the number of wait states, but
they must be byte aligned (multiple of 8 wait states).
SFDP read must update at a frequency between 17 MHz and 48 MHz with a single byte
of wait state.

Figure 5-1.

SFDP Read Instruction Sequence

CS#
0

1

2

3

4

5

6

7

8

9

10

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

7

6

5

43

44

45

46

47

1

0

CLK
Dis cov ery
O pco de

SI

24 Bit
Addre ss
23

22

21

W ait Sta te s
3

2

1

0

7

6

5

4

3

2

1

0

SO

5.3

Da ta By te
Addr + 1h

D ata Byte

Hi gh Z

4

3

2

7

Parameter Table Supported on SoC
The flash controller first checks for a valid SFDP header. The value of the major and
minor revision fields in the SFDP header are don’t care. If a valid SFDP header is found,
the controller supports auto discovery of the Component Property Parameter Table
(CPPT).
The following capabilities are only supported on SoC if CPPT is successfully discovered
and parameter values indicate that they are supported. These capabilities are not
supported as default.
• Quad I/O Read
• Quad Output Read

CDI/IBP#: 559702

Intel Confidential

39

Serial Flash Discoverable Parameter (SFDP)

• Dual I/O read
• Block /Sector Erase size
Note:

If SFDP is valid and advertises 4 Kbyte erase capability, then BES is taken from the
SFDP table, otherwise it is taken from the BIOS VCSS table.

Note:

Apollo Lake platform supports on SFDP compliant SPI parts. When using SFDP 1.5 and
above, there is no need to apply a VSCC entry in FIT since QER bit will be read from the
SFDP table.
SoC will also read the following opcode from parameter table and store to SoC if SFDP
is valid and the following function is supported.
• Erase Opcode
• Dual Output Fast Read Opcode
• Dual I/O Fast Read Opcode
• Quad Output Fast Read Opcode
• Quad I/O Fast Read Opcode

5.4

Detailed JEDEC Specification
Refer www.jedec.com JESD216 for detailed SFDP specification on SPI.

§§

40

Intel Confidential

CDI/IBP#: 559702


BIOS Configuration for SPI Flash Access

6

BIOS Configuration for SPI
Flash Access

6.1

Unlocking SPI Flash Device Protection for Apollo
Lake Platform
BIOS must account for any built in protection from the flash device itself. BIOS must
ensure that any flash based protection will only apply to IFWI region only. It should not
affect the TXE ROM Bypass region.
All the SPI flash devices that meet the SPI flash requirements in the Apollo Lake
External Design Specification (EDS) will be unlocked by writing a 00h to the SPI flash’s
status register. This command must be done via an atomic software sequencing to
account for differences in flash architecture. Atomic cycles are uninterrupted in that it
does not allow other commands to execute until a read status command returns a ‘not
busy’ result from the flash.
Some flash vendors implement their status registers in NVM flash (non-volatile
memory). This takes much more time than a write to volatile memory. During this
write, the flash part will ignore all commands but a read to the status register (opcode
05h). The output of the read status register command will tell the SoC when the
transaction is done.
Recommended flash unlocking sequence:
• Write enable (06h) command will have to be in the prefix opcode configuration
register.
• The “write to status register” opcode (01h) will need to be an opcode menu
configuration option.
• Opcode type for write to status register will be ‘01’: a write cycle type with no
address needed.
• The FDATA0 register should to be programmed to 0000 0000h.
• Data Byte Count (DBC) in Software Sequencing Flash Control register should be
000000b. Errors may occur if any non zero value is here.
• Set the Cycle Opcode Pointer (COP) to the “write to status register” opcode.
• Set to Sequence Prefix Opcode Pointer (SPOP) to Write Enable.
• Set the Data Cycle (DS) to 1.
• Set the Atomic Cycle Sequence (ACS) bit to 1.
• To execute sequence, set the SPI Cycle Go bit to 1.
Refer Serial Peripheral Interface Memory Mapped Configuration Registers in
the Apollo Lake External Design Specification (EDS) for more detailed information.

CDI/IBP#: 559702

Intel Confidential

41

BIOS Configuration for SPI Flash Access

6.2

Locking SPI Flash via Status Register
Flash vendors that implement their status register with non-volatile memory can be
updated a limited number of times. This means that this register may wear out before
the desired endurance for the rest of the flash. It is highly recommended that BIOS
vendors and customers do NOT use the SPI flash’s status register to protect the flash in
multiple master systems.
BIOS should try to minimize the number of times that the system is locked and
unlocked.
Care should be taken when using status register based SPI flash protection in multiple
master systems such as Intel® TXE FW. BIOS must ensure that any flash based
protection will apply to IFWI region only. It should not affect the TXE ROM Bypass
region.
Contact your desired flash vendor to see if their status register protection bits volatile
or non-volatile. Flash parts implemented with volatile systems do not have this
concern.

6.3

SPI Protected Range Register Recommendations
The SoC has a mechanism to set up to 5 address ranges from HOST access. These are
defined in PR0, PR1, PR2, PR3 and PR4 in the SoC EDS. These address ranges are NOT
unlocked by assertion of Flash descriptor Override.
It is strongly recommended to use a protected range register to lock down the factory
default portion of Intel® TXE FW region. The runtime portion should be left unprotected
as to allow BIOS to update it.
It is strongly recommended that if Flash Descriptor Override strap (which can be
checked by reading FDOPSS (0b Flash Descriptor override is set, 1b not set) in
SoC memory space (SPIBAR+C4h bit 13)) is set, do not set a Protected range to
cover the Intel® TXE FW factory defaults. This would allow a flashing of a complete
image when the Flash descriptor Override strap is set.

6.4

Recommendations for Flash Configuration
Lockdown and Vendor Component Lock Bits

6.4.1

Flash Configuration Lockdown
It is strongly recommended that BIOS sets the Host Flash Configuration Lock-Down
(FLOCKDN) bits (located at SPIBAR + 04h) to ‘1’ on production platforms. If these bits
are not set, it is possible to make register changes that can cause undesired host,
Intel® TXE functionality as well as lead to unauthorized flash region access.
Refer HSFS— Hardware Sequencing Flash Status Register in the Serial Peripheral
Interface Memory Mapped Configuration Registers section and HSFS— Hardware
Sequencing Flash Status Register in the SPI Flash Programing Registers section in
the Apollo Lake External Design Specification (EDS).

42

Intel Confidential

CDI/IBP#: 559702


BIOS Configuration for SPI Flash Access

6.4.2

Vendor Component Lock
It is strongly recommended that BIOS sets the Vendor Component Lock (VCL) bits.
These bits are located in the BIOS VSCC0 registers. VCL applies the lock to both VSCC0
and VSCC1 even if VSCC1 is not used. Without the VCL bits set, it is possible to make
Host VSCC register(s) changes in that can cause undesired host SPI flash functionality.
Refer VSCC— Vendor Specific Component Capabilities Register in the Apollo Lake
External Design Specification (EDS) for more information.

6.5

Host Vendor Specific Component Control
Registers (VSCC)
VSCC are memory mapped registers are used by the SoC when BIOS reads, programs
or erases the SPI flash via Hardware sequencing.
Flash Partition Boundary Address (FBPBA) has been removed and UVSCC and LVSCC
has been replaced with VSCC0 and VSCC1 in Apollo Lake SoC platform. VSCC0 is for
SPI component 0 and VSCC1 is for SPI component 1. SPI controller will determine
which VSCC (VCSCC0 or VCSCC1) to be used by comparing Flash Linear Address (FLA)
with size of SPI component 0 (C0DEN). When FLA <= C0DEN then VSCC0 will be used;
whereas FLA > C0DEN then VSCC1 will be used. If one SPI flash component used in the
system, VSCC0 needs to be set.
Refer VSCC— Lower Vendor Specific Component Capabilities Register in the
Apollo Lake External Design Specification (EDS).
Refer text below the tables for explanation on how to determine VSCC register values.

Table 6-1.

VSCC0 - Vendor-Specific Component Capabilities Register for SPI Component
0 (Sheet 1 of 3)
Bit

Description

31

Component Property Parameter Table Valid (CPPTV) - RO:
This bit is set to a 1 if the Flash Controller detects a valid SFDP Component Property Parameter
Table in SPI Component 0
If CPPTV bit is ‘0’, software must configure the VSCC register appropriately. If CPPTV bit is ‘1’, the
corresponding parameter values discovered via SFDP will be used. In most cases, software is not
required to configure the VSCC register. However, if the SFDP table indicates an erase size other
than 4k byte, then the software is required to program the VSCC.EO register with the correct erase
opcode.

30:24

Reserved
Vendor Component Lock (VCL): — RW/L:
'0': The lock bit is not set
'1': The Vendor Component Lock bit is set.

23

This register locks itself when set.
This bit applies to both VSCC0 and VSCC1
All bits locked by (VCL) will remained locked until a global reset.

22:16

CDI/IBP#: 559702

Reserved

Intel Confidential

43

BIOS Configuration for SPI Flash Access

Table 6-1.

VSCC0 - Vendor-Specific Component Capabilities Register for SPI Component
0 (Sheet 2 of 3)
Bit

Description
Erase Opcode (EO)— RW:
This register is programmed with the Flash erase instruction opcode required by the vendor’s Flash
component. Software must program this register if the SFDP table for this component does not
show 4 kByte erase capability

15:8
This register is locked by the Vendor Component Lock (VCL) bit.
Note:

If CPPTV is 1 and the SPDP0 table shows 4k erase capability, the SFDP0 erase code is used
instead of this register

Quad Enable Requirements (QER)

7:5

000 = Part does not require a Quad Enable bit to be set, either because Quad is not supported or
because the manufacturer permanently enables Quad capability (e.g. Micron, Numonyx).
001 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to status
register clears all bits in register 2, therefore status register writes MUST be two bytes. If the
status register is unlocked and SFDP bits WSR or VSCC WSR is 1 then SPI controller cannot
use the quad output, quad IO features of this part because the hardware will automatically
write one byte of zeros to status register with every write/erase. (e.g. Winbond, AMIC,
Spansion).
010 = Part requires bit 6 of status register 1 to be set to enable quad IO. If the status register is
unlocked and SFDP WSR bit or VSCC WSR is 1 then flash controller cannot use the quad output, quad IO features of this part because the hardware will automatically write one byte of
zeros to status register with every write/erase (e.g. Macronix).
011 = Part requires bit 7 of the configuration register to be set to enable Quad (e.g. Atmel).
100 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to the
status register does not clear the second byte (SST/Microchip, Winbond).
Note:

4

This register is locked by the Vendor Component Lock (VCL) bit.

Write Enable on Write Status (WEWS) — RW:
‘0’ = 50h will be the opcode used to unlock the status register on the SPI flash if WSR (bit 3) is set
to 1b.
‘1’ = 06h will be the opcode used to unlock the status register on the SPI flash if WSR (bit 3) is set
to 1b.
This register is locked by the Vendor Component Lock (VCL) bit.
Note: Refer Table 6-3 for a description of how these bits is used.

3

Write Status Required (WSR) — RW:
‘0’ = No automatic write of 00h will be made to the SPI flash’s status register.
‘1’ = A write of 00h to the SPI flash’s status register will be sent on EVERY write and erase to the
SPI flash performed by Host and GbE.
This register is locked by the Vendor Component Lock (VCL) bit.
Note: Refer Table 6-3 for a description of how these bits is used.
Write Granularity (WG) — RW:
0: 1 Byte
1: 64 Byte
This register is locked by the Vendor Component Lock (VCL) bit.

2

44

Notes:
1.
If more than one Flash component exists, this field must be set to the lowest common write
granularity of the different Flash components
2.
If using 64 B write, BIOS must ensure that multiple byte writes do not occur over 256 B
boundaries. This will lead to corruption as the write will wrap around the page boundary on
the SPI flash part. This is a feature in page writable SPI flash.

Intel Confidential

CDI/IBP#: 559702


BIOS Configuration for SPI Flash Access

Table 6-1.

Table 6-2.

VSCC0 - Vendor-Specific Component Capabilities Register for SPI Component
0 (Sheet 3 of 3)
Bit

Description

1:0

Block/Sector Erase Size (BES)— RW:
This field identifies the erasable sector size for Flash components.
Valid Bit Settings:
00: 256 Byte
01: 4 KByte
10: 8 KByte
11: 64 K
This register is locked by the Vendor Component Lock (VCL) bit.
Hardware takes no action based on the value of this register. The contents of this register are to be
used only by software and can be read in the HSFSTS.BERASE register in both the BIOS and the
GbE program registers if FLA is less than FPBA.

VSCC1 - Vendor Specific Component Capabilities Register for SPI Component 1
(Sheet 1 of 2)
Bit

Description

31

Component Property Parameter Table Valid (CPPTV) - RO:
This bit is set to a 1 if the Flash Controller detects a valid SFDP Component Property Parameter
Table in SPI Component 1
If CPPTV bit is ‘0’, software must configure the VSCC register appropriately. If CPPTV bit is ‘1’, the
corresponding parameter values discovered via SFDP will be used. In most cases, software is not
required to configure the VSCC register. However, if the SFDP table indicates an erase size other
than 4k byte, then the software is required to program the VSCC.EO register with the correct erase
opcode.

30:16

Reserved

15:8

Erase Opcode (EO)— RW:
This register is programmed with the Flash erase instruction opcode required by the vendor’s Flash
component.
This register is locked by the Vendor Component Lock (VCL) bit.

7:5

000 = Part does not require a Quad Enable bit to be set, either because Quad is not supported or
because the manufacturer permanently enables Quad capability (e.g. Micron, Numonyx).
001 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to status
register clears all bits in register 2, therefore status register writes MUST be two bytes. If the
status register is unlocked and SFDP bits WSR or VSCC WSR is 1 then SPI controller cannot
use the quad output, quad IO features of this part because the hardware will automatically
write one byte of zeros to status register with every write/erase. (e.g. Winbond, AMIC,
Spansion).
010 = Part requires bit 6 of status register 1 to be set to enable quad IO. If the status register is
unlocked and SFDP WSR bit or VSCC WSR is 1 then flash controller cannot use the quad output, quad IO features of this part because the hardware will automatically write one byte of
zeros to status register with every write/erase (e.g. Macronix).
011 = Part requires bit 7 of the configuration register to be set to enable Quad (e.g. Atmel).
100 = Part requires bit 9 in status register 2 to be set to enable quad IO. Writing one byte to the
status register does not clear the second byte (SST/Microchip, Winbond).

Quad Enable Requirements (QER)

Note:

4

This register is locked by the Vendor Component Lock (VCL) bit.

Write Enable on Write to Status (WEWS) — RW:
‘0’ = 50h will be the opcode used to unlock the status register if WSR (bit 3) is set to 1b.
‘1’ = 06h will be the opcode used to unlock the status register if WSR (bit 3) is set to 1b.
This register is locked by the Vendor Component Lock (VCL) bit.
Refer Table 6-3 for a description of how these bits is used.

CDI/IBP#: 559702

Intel Confidential

45

BIOS Configuration for SPI Flash Access

Table 6-2.

VSCC1 - Vendor Specific Component Capabilities Register for SPI Component 1
(Sheet 2 of 2)
Bit

3

Description
Write Status Required (WSR) — RW:
‘0’ = No automatic write of 00h will be made to the SPI flash’s status register
‘1’ = A write of 00h to the SPI flash’s status register will be sent on EVERY write and erase to the
SPI flash performed by Host and GbE.
This register is locked by the Vendor Component Lock (VCL) bit.
Note: Refer Table 6-3 for a description of how these bits is used.
Write Granularity (WG) — RW:
0: 1 Byte
1: 64 Byte

2

This register is locked by the Vendor Component Lock (VCL) bit.
If more than one Flash component exists, this field must be set to the lowest common write
granularity of the different Flash components.
If using 64 B write, BIOS must ensure that multiple byte writes do not occur over 256 B
boundaries. This will lead to corruption as the write will wrap around the page boundary on the SPI
flash part. This is a feature in page writeable SPI flash.

1:0

Block/Sector Erase Size (BES)— RW: This field identifies the erasable sector size for all Flash
components.
Valid Bit Settings:
00: 256 Byte
01: 4 KByte
10: 8 KByte
11: 64 K
This register is locked by the Vendor Component Lock (VCL) bit.
Hardware takes no action based on the value of this register. The contents of this register are to be
used only by software and can be read in the HSFSTS.BERASE register in both the BIOS and the
GbE program registers if FLA is less than FPBA.

Erase Opcode (EO) and Block/Sector Erase Size (BSES) should be set based on
the flash part and the firmware on the platform.
• Either Write Status Required (WSR) or Write Enable on Write Status
(WEWS) should be set on flash devices that require an opcode to enable a write to
the status register. BIOS will write a 00h to the SPI flash’s status register to unlock
the flash part for every erase/write operation. If this bit is set on a flash part that
has non-volatile bits in the status register then it may lead to pre-mature wear out
of the flash and may result in undesired flash operation. Refer Table 6-3 for a
description of how these bits are set and what is the expected operation from the
controller during erase/write operation.
Table 6-3.

46

Description of How WSR and WEWS is Used
WSR

WEWS

Flash Operation

1b

0b

If the Enable Write Status Register opcode (50h) is needed to unlock the status
register. Opcodes sequence sent to SPI flash will bit 50h 01h 00h.

1b

1b

If write enable (06h) will unlock the status register. Opcodes sequence sent to
SPI flash will bit 06h 01h 00h.

0b

0 or 1b

Sequence of 60h is sent to unlock the SPI flash on EVERY write and erase that
Processor or Intel GbE FW performs.

Intel Confidential

CDI/IBP#: 559702


BIOS Configuration for SPI Flash Access

Note:

WSR or WEWS should be not be set on devices that use non volatile memory
for their status register. Setting this bit will cause operations to be ignored, which
may cause undesired operation. Ask target flash vendor if this is the case for the target
flash. Refer 6.1 Unlocking SPI Flash Device Protection for Apollo Lake Platform and 6.2
Locking SPI Flash via Status Register for more information.
356H

358H

Write Granularity (WG) bit should be set based on the capabilities of the flash
device. If the flash part is capable of writing 1 to 64 bytes (or more) with the 02h
command you can set this bit 0 or 1. Setting this bit high will result in faster write
performance. If flash part only supports single byte write only, then set this bit to 0.
Setting this bit high requires that BIOS ensure that no multiple byte write operation
does not cross a 256 Byte page boundary, as it will have unintended results. This is a
feature of page programming capable flash parts.
Vendor Component Lock (VCL) should remain unlocked during development, but
locked in shipping platforms. When VCL and FLOCKDN are set, it is possible that you
may not be able to use in system programming methodologies including Intel Flash
Programming Tool if programmed improperly. It will require a system reset to unlock
this register and BIOS not to set this bits. Refer 6.4 Recommendations for Flash
Configuration Lockdown and Vendor Component Lock Bits for more details.
354H

All reserved bits should set to zeros.

6.6

Host VSCC Register Settings
To understand general guidelines for VSCC settings with different SPI flash devices,
refer VSCCommn.bin content application note (VSCCommn_bin Content.pdf under
Flash Image Tool directory). VSCCommn.bin contains SPI devices vendor ID, device ID
and recommended VSCC values.

§§

CDI/IBP#: 559702

Intel Confidential

47


Intel® TXE Disable for Debug/Flash Burning Purposes

7

Intel® TXE Disable for Debug/
Flash Burning Purposes
This chapter is purely for debug purposes. Intel® TXE FW is the only supported
configuration for Apollo Lake SoC SPI-based system.

7.1

Intel® TXE Disable
For purposes of in system programming the flash, Intel® TXE can be temporarily
disabled using GPIO_118 (Manufacturing mode jumper or Flash descriptor override
jumper) asserted HIGH on the rising edge of RSM_RST_N.

Note:

7.1.1

This is only valid as long as you do not specifically set the variable Flash Descriptor
Override Pin-Strap Ignore in the Flash Image Tool to false.

Erasing/Programming Intel® TXE FW
If CPU/Host has access to TXE FW, then one could either erase/program the TXE FW to
all FFh. If there is no access, then one must assert GPIO_118 (Flash descriptor override
strap) HIGH during the rising edge of RSM_RST_N. If there are Protected Range
registers set, then you will not be able to program this w/o a BIOS option to turn off
this protected range. (Refer 6.3 SPI Protected Range Register Recommendations) for
more detail.
This depends on the board booting HW defaults for clock configuration. If any clock
configuration is required for booting the platform that is not in the HW defaults, then
this option may not work for you.

§§

CDI/IBP#: 559702

Intel Confidential

49


Recommendations for SPI Flash Programming in Manufacturing Environments

8

Recommendations for SPI Flash
Programming in Manufacturing
Environments
It is recommended that the Intel® TXE be disabled when you are programming the
IFWI region. Intel® TXE FW performs regular reads the TXE FW within the IFWI region.
Therefore some bits may be changed after programming. Note that not all of these
options will be optimal for your manufacturing process.
Any method of programming SPI flash where the system is not powered will
not result in any interference from Intel® TXE FW. The following methods are
for Intel® TXE FW:
• Program via In Circuit Test – System is not fully powered here.
• Program via external flash burn-in solution.
• Assert GPIO_118 HIGH (Flash Descriptor Override Jumper) on the rising edge of
RSM_RST_N.

§§

CDI/IBP#: 559702

Intel Confidential

51


Flash Descriptor SoC Configuration

9

Flash Descriptor SoC
Configuration
The following section describes functionality and how to set soft strapping for a target
platform. Improper setting of soft straps can lead to undesired operation and may lead
to returns/recalls.

9.1

SoC Descriptor Record 0 (Flash Descriptor
Records)
Flash Address:FPSBA + 000h

Size: 32 bit

Default Flash Address: 100h

9.2

Offset
from 0

Bits

Default
Value

0x100h

31:0

Refer
Section

Description

Usage

This configuration is replicated from Section
11.1.2.1, “Soft Strap Section for Apollo Lake
Platform (APL A and B-Step)”

FIT
Visible
Yes

SoC Descriptor Record 1 (Flash Descriptor
Records)
Flash Address: FPSBA + 004h

Size: 32 bit

Default value: ff0000h

Default Flash Address: 104h
Offset
from 0

0x104h

CDI/IBP#: 559702

Bits

Default
Value

31:24

8'h00

Reserved

No

23:16

8'hff

Reserved

No

15:0

16'h0

Reserved

No

Description

Intel Confidential

Usage

FIT
Visible

53

Flash Descriptor SoC Configuration

9.3

SoC Descriptor Record 2 (Flash Descriptor
Records)
Flash Address:FISBA + 008h

Size: 8 bit

Default value: c8000000h

Default Flash Address: 108h
Offset from
0

Bits

Default
Value

Description

31:30

2'h3

Reserved

No

29

1'h0

Reserved

No

28

1'h0

Reserved

No

27:25

3'h4

Reserved

No

24

1'h0

Reserved

No

23

1'h0

Reserved

No

22:20

3'h0

Reserved

No

19:17

3'h0

Reserved

No

16

1'h0

Reserved

No

15

1'h0

Reserved

No

SPI Stop Prefetch on Flush Pending
(SPI_SPFP):
14

1'h0

0: Pre-fetching is allowed to complete prior to
the flushing (default)
1: Pre-fetching is prematurely ended if flushing
event is detected.
SPI Host Software Sequencing Enable
Default (spi_host_ss_enable_default):

0x108h
13

1'h0

12

1'h0

This soft-strap determines
the reset t value of the BIOS
Flash Program Register
AFC.SPFP bit.

Yes

This strap sets the default
value of the CSME
ICE.HSSEN register.

Yes

0: host software sequencing defaults to disabled
(default)
1: host software sequencing defaults to enabled
SPI enable device 1 deep powerdown
(SPI_EN_D1_DEEP_PWRDN):

Yes

0: flash controller does not implement enter/exit
deep powerdown for this device (default)
1: flash controller implements enter/exit deep
powerdown to this device if it discovers
capability via SFDP
SPI enable device 0 deep powerdown
(SPI_EN_D0_DEEP_PWRDN):

54

FIT
Visible

Usage

11

1'h0

0: flash controller does not implement enter/exit
deep powerdown for this device (default)
1: flash controller implements enter/exit deep
powerdown to this device if it discovers
capability via SFDP

10

1'h0

Reserved

Yes

No

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor SoC Configuration

Offset from
0

Bits

Default
Value

Description

Usage

SPI Enable Delay before erase busy poll
(SPI_DLY_ER_BUSY_POLL):
9

1'h0

Yes

'0': SPI controller must start polling immediately
after issuing the erase command (default)
'1': SPI controller may delay the start of issuing
read_status to poll for flash device busy after an
erase operation
SPI Enable Delay before write busy poll
(SPI_DLY_WR_BUSY_POLL):

8

1'h0

7

1'h0

3'h0

0x108h
(Cont’d)

Reserved

No

This strap was previously known as Top Swap
Block Size.
000: 64KB: Invert A16 if Top Swap is enabled
(default)
001: 128KB: Invert A17 if Top Swap is enabled
010: 256KB: Invert A18 if Top Swap is enabled
011: 512KB: Invert A19 if Top Swap is enabled
100: 1MB: Invert A20 if Top Swap is enabled
101-111 : Reserved
Quad I/O Read Enable (QIORE):

3

1'h0

'0': Quad I/O Read is disabled (default)
'1': Quad I/O Read is enabled
Quad Output Read Enable (QORE):

2

1'h0

'0': Quad Output Read is disabled (default)
'1': Quad Output Read is enabled
Dual I/O Read Enable (DIORE):

1

1'h0

'0': Dual I/O Read is disabled (default)
'1': Dual I/O Read is enabled
Dual Output Read Enable (DORE):
'0': Dual Output Read is disabled (default)
'1': Dual Output Read is enabled

0

CDI/IBP#: 559702

Yes

'0': SPI controller must start polling immediately
after issuing the write command (default)
'1': SPI controller may delay the start of issuing
read_status to poll for flash device busy after a
write operation

Boot Block Size (BOOT_BLOCK_SIZE):

6:4

FIT
Visible

1'h0

Intel Confidential

This soft strap only applies
when booting from SPI. Boot
from LPC (FWH) only
supports a 64KB boot block
size (Invert A16) and this
soft strap value is a don't
care.
Note: No bits are inverted
if a Reserved
encoding is
programmed.

Yes

This soft-strap only has
effect if Quad I/O Read is
discovered as supported via
the SFDP.

Yes

This soft-strap only has
effect if Quad Output Read is
discovered as supported via
the SFDP.

Yes

This soft-strap only has
effect if Dual I/O Read is
discovered as supported via
the SFDP.

Yes

This soft-strap only has
effect if Dual Output Read is
discovered as supported via
the SFDP.
If parameter table is not
detected via the SFDP, this
bit has no effect and Dual
Output Read is controlled via
the Flash Descriptor.
Component Section.Dual
Output Fast Read Support
bit.

Yes

55

Flash Descriptor SoC Configuration

9.4

SoC Descriptor Record 3 (Flash Descriptor
Records)
Flash Address:FISBA + 00ch

Size: 32 bit

Default value: 665h

Default Flash Address: 10ch
Offset from
0

Bits

Default
Value

31:24

8'h0

Reserved

No

23:16

8'h0

Reserved

No

15

1'h0

Touch Spread Spectrum Clock Enable
(spi_touch_spread_spectrum_clock_ena
ble):
0: disable spread-spectrum clock source, use
ring oscillator
1: enable spread-spectrum clock source

14

1'h0

Reserved

13:11

3'h0

Reserved

Description

10:8

0x10ch

7

3'h6

1'h0

120MHz
60MHz
48MHz
40 MHz (not supported)
30 MHz
24 MHz (not supported)
17 MHz (default)
Reserved

3:0

3'h6

4'h5

This field identifies the serial
clock frequency for TPM on SPI.
This field is undefined if the TPM
on SPI is disabled either by softstrap or fuse.

Yes

This field is defined with a broad
range to support SoC
implementations. The listed
frequencies are approximate.

Reserved

000:
001:
010:
011:
100:
101:
110:
111:

Yes

No

No

Touch Maximum Frequency
(TOUCH_MAX_FREQ):

6:4

Enable the use of the spreadspectrum clock source when
generating the SPI_CLK for
Touch

No

SPI TPM Clock Frequency (STCF):
000:
001:
010:
011:
100:
101:
110:
111:

FIT
Visible

Usage

120MHz
60MHz
48MHz
40 MHz (not supported)
30 MHz
24 MHz (not supported)
17 MHz (default)
Reserved

SPI Idle to Deep Power Down Timeout
Default
(SPI_IDLE_DEEP_PWRDN_DEFAULT_TIM
E):
Specifies the time in microseconds that the
Flash Controller waits after all activity is idle
before commanding the flash devices to Deep
Powerdown.

This field allows the OEM to set
an upper limit on the frequency
for Touch transactions. CSxE
firmware will used the value in
this field along with data from
the Touch device's capability
register to program the Touch
Controller Configuration
Register.

Yes

Yes

Time = 2^N microseconds
5 = Default

56

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor SoC Configuration

9.5

SoC Descriptor Record 4 (Flash Descriptor
Records)
Flash Address:FISBA + 010h

Size: 32 bit

Default value: 00h

Default Flash Address: 110h
Offset from
0

Bits

Default
Value

Description

Usage

Write Protection Enable:
31

32'h0

Base/limit are inclusive

Yes

Yes

Address

This field corresponds to FLA
(Flash Linear Address) address
bits 26:12 and specifies the
upper limit of the protected
range. Address bits 11:0 are
assumed to be FFFh for the limit
comparison. Any address
greater than the value
programmed in this field is
unaffected by this protected
range.

Address

Note:

0 = Ignore Base and Limit Fields in GPR0
1 = Base and Limit fields are valid in GPR0
and write/erases must be blocked by HW
(directed to addresses between base and
limit)
Protected Range Limit:

30:16

15’h000

0000h = Protected Range Limit
0001h = Protected Range Limit
0002h = Protected Range Limit
...
5FFFh = Protected Range Limit
5FFFFFFh
6FFFh = Protected Range Limit
6FFFFFFh
7FFFh = Protected Range Limit
7FFFFFFh

Address 0FFFh
Address 1FFFh
Address 2FFFh
Address

0x110h
Read Protection Enable:
15

1’h0

Note:

CDI/IBP#: 559702

15’h0

If either Write or Read
protection is enabled,
then Limit must be
configured greater than
or equal to Base.

Base/limit are inclusive

Yes

This field corresponds to FLA
(Flash Linear Address) address
bits 26:12 and specifies the
lower base of the protected
range. Address bits 11:0 are
assumed to be 000h for the
base comparison. Any address
less than the value programmed
in this field is unaffected by this
protected range.

Yes

0 = Ignore Base and Limit Fields in GPR0
1 = Base and Limit fields are valid in GPR0
and reads must be blocked by HW (directed to
addresses between base and limit)
Protected Range Base:

14:0

FIT
Visible

0000h = Protected Range Base Address
0000h
0001h = Protected Range Base Address
1000h
0002h = Protected Range Base Address
2000h
...
5FFFh = Protected Range Base Address
5FFF000h
6FFFh = Protected Range Base Address
6FFF000h
7FFFh = Protected Range Base Address
7FFF000h

Note:

Note: If either Write or
Read protection is
enabled, then Limit
must be configured
greater than or equal
to Base

The SoC provides a method for blocking writes and reads to specific ranges in the SPI flash when the
Protected Ranges are enabled. This is achieved by checking the read or write cycle type and the address
of the requested command against the base and limit fields of a Read or Write Protected range.
Protected range (Host PRn, TXE PRn, IE PRn), Host GPR0, and TXE WPR0 register protections apply to
all flash accesses except direct reads (BIOS, TXE). The register protections also do not apply to SPI
controller hardware-initiated descriptor reads. The BIOS PRn protected range registers only apply to
BIOS accesses, the TXE PRn protected range registers only apply to TXE accesses, etc. In contrast, the
TXE's WPR0 and the host GPR0 apply to all masters. The range specified in the Flash Range registers
are allowed to span any addresses, independent of whether that master has read or write access to the
region(s) in, or partially in, the protected address range.

Intel Confidential

57

Flash Descriptor SoC Configuration

9.6

SoC Descriptor Record 5 (Flash Descriptor
Records)
Flash Address:FPSBA + 014h

Size: 32 bit

Default value: 600304h

Default Flash Address: 114h
Offset from
0

0x114h

58

Bits

Default
Value

Description

Usage

FIT
Visible

31:29

3'h0

Reserved

No

28:26

3'h0

Reserved

No

25

1'h0

Reserved

No

24

1'h0

Reserved

No

23

1'h0

Reserved

No

22

1'h1

Reserved

No

21

1'h1

Reserved

No

20:19

2'h0

Reserved

No

18:16

3'h0

Reserved

No

15:13

3'h0

Reserved

No

12

1'h0

Reserved

No

11:10

2'h0

Reserved

No

9

1'h1

Reserved

No

8

1'h1

Reserved

No

7:6

2'h0

Reserved

No

5:3

3'h0

Reserved

No

2

1'h1

Reserved

No

1

1'h0

Reserved

No

0

1'h0

Reserved

No

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor SoC Configuration

9.7

SoC Descriptor Record 6 (Flash Descriptor
Records)
Flash Address:FPSBA + 018h

Size: 32 bit

Default value: 10 0000h

Default Flash Address: 118h
Offset from
0

0x118h

9.8

Bits

Default
Value

Description

Usage

FIT
Visible

31:27

5'h0

Reserved

No

26:24

3'h0

Reserved

No

23

1'h0

Reserved

No

22

1'h0

Reserved

No

21:20

2'h1

Reserved

No

19

1'h0

Reserved

No

18:16

3'h0

Reserved

No

15

1'h0

Reserved

No

14:12

3'h0

Reserved

No

11:9

3'h0

Reserved

No

8

1'h0

Reserved

No

7:5

3'h0

Reserved

No

4:2

3'h0

Reserved

No

1

1'h0

Reserved

No

0

1'h0

Reserved

No

SoC Descriptor Record 7 (Flash Descriptor
Records)
Flash Address:FPSBA + 01ch

Size: 32 bit

Default value: 00h

Default Flash Address: 11ch
Offset from
0

0x11ch

Bits

Default
Value

31

1'h0

Reserved

No

30

1'h0

Reserved

No

29

1'h0

Reserved

No

28

1'h0

Reserved

No

27

1'h0

Reserved

No

26

1'h0

Reserved

No

25

1'h0

Reserved

No

24

1'h0

Reserved

No

23

1'h0

Reserved

No

22

1'h0

Reserved

No

21

1'h0

Reserved

No

20

1'h0

Reserved

No

CDI/IBP#: 559702

Description

Intel Confidential

Usage

FIT
Visible

59

Flash Descriptor SoC Configuration

Offset from
0

Bits

Default
Value

19

1'h0

Reserved

No

18

1'h0

Reserved

No

17

1'h0

Reserved

No

16

1'h0

Reserved

No

15

1'h0

Reserved

No

14

1'h0

Reserved

No

13

1'h0

Reserved

No

12

1'h0

Reserved

No

11

1'h0

Reserved

No

10

1'h0

Reserved

No

Description

FIT
Visible

Usage

9

1'h0

Reserved

Yes

8

1'h0

Reserved

Yes
Yes

1'h0

SPI Soft Strap Emulation of IFP DnX Boot
Disabled
(SSS_EMUL_IFP_DNX_BOOT_SOURCE_DI
SABLED):

7

0 = DnX Enabled (default)
1 = DnX Disabled

0x11ch
(Cont’d)

6

1'h0

SPI Soft Strap Emulation of IFP SPI Boot
Source Disabled
(SSS_EMUL_IFP_SPI_BOOT_SOURCE_DIS
ABLED):

Yes

0 = SPI Boot Source Enabled (default)
1 = SPI Boot Source Disabled

5

4

1'h0

1'h0

SPI Soft Strap Emulation of IFP UFS Boot
Source Disabled
(SSS_EMUL_IFP_UFS_BOOT_SOURCE_DI
SABLED)
0 = UFS Boot Source Enabled (default)
1 = UFS Boot Source Disabled

Yes

SPI Soft Strap Emulation of IFP eMMC
Boot Source Disabled
(SSS_EMUL_IFP_EMMC_BOOT_SOURCE_
DISABLED)

Yes

0 = eMMC Boot Source Enabled (default)
1 = eMMC Boot Source Disabled
SPI Soft Strap Emulation IFP Pre Boot
Source Enable
(SSS_EMUL_EN_IFP_PRE_BOOT_SOURCE
):

3

1'h0

0 = Use real IFP fuses (default)
1 = Use SPI soft strap emulation bits

This must be enabled first
before using the straps noted
below as dependent. If not
enabled, the dependent straps
will be ignored.

No

Dependent straps [bits 7:4]:
SSS_EMUL_IFP_*_BOOT_SOU
RCE_DISABLED
This strap will be set by FIT
automatically if any of the
boot source emulation IFPs
are enabled.

60

Intel Confidential

CDI/IBP#: 559702


Flash Descriptor SoC Configuration

Offset from
0

Bits

2

Default
Value

Usage

SPI Soft Strap Emulation Override SoC
Device Reuse HVM fuse value
(SSS_EMUL_HVM_OVR_SoC_DEV_REUSE_
PROHIBITED):

This allows engineering /
validation to dynamically
change behavior of systems
for testing flows in which SoCs
do not get re-used, without
pre-ordering them.

Yes

Enables the capability to
emulate IFPs. This strap must
be enable first to enable the
emulation of any IFP fuse.

Yes

ROM Bypass can be achieved
through this IFP emulation
strap or through the HW strap
on pre-production silicon only.

Yes

1'h0
0 = Use real value of SoC Dev Reuse prohibited
HVM fuse (default)
1 = Override SoC Dev Reuse HVM fuse value
with 1 (i.e disallow it)
SPI Soft Strap Emulation Enable
(SSS_EMUL_EN):

0x11ch
(Cont’d)
1

1'h0

0 = SPI Soft Strap Emulation Disabled
(default)
1 = SPI Soft Strap Emulation Enabled
TXE ROM Bypss Enable Softstrap
(CSE_ROM_Bypass_Enable_Softstrap):

0

1'h0
0 = TXE ROM Bypass disabled (default)
1 = TXE ROM Bypass enabled

9.9

FIT
Visible

Description

SoC Descriptor Record 8 (Flash Descriptor
Records)
Flash Address:FPSBA + 020h

Size: 32 bit

Default Flash Address: 120h
Offset from
0

Bits

Default
Value

Description

0x120h

31:0

Refer
Section

This configuration is replicated from Section
11.1.2.1.9, “ISH Straps (Record 8)”

9.10

Usage

FIT
Visible
No

SoC Descriptor Record 9 (Flash Descriptor
Records)
Flash Address:FPSBA + 024h

Size: 32 bit

Default Flash Address: 124h
Offset from
0

Bits

Default
Value

Description

0x124h

31:0

Refer
Section

This configuration is replicated from Section
11.1.2.1.10, “USBx Straps (Record 9)”

CDI/IBP#: 559702

Intel Confidential

Usage

FIT
Visible
Yes

61

Flash Descriptor SoC Configuration

9.11

SoC Descriptor Record 10 (Flash Descriptor
Records)
Flash Address:FPSBA + 028h

Size: 32 bit

Default Flash Address: 128h
Offset from
0

Bits

Default
Value

0x128h

31:0

Refer
Section

9.12

Description

FIT
Visible

Usage

This configuration is replicated from Section
11.1.2.1.11, “EXI Straps (Record 10)”

Yes

SoC Descriptor Record 11 (Flash Descriptor
Records)
Flash Address:FPSBA + 02ch

Size: 32 bit

Default Flash Address: 12ch
Offset from
0

Bits

Default
Value

0x12ch

31:0

Refer
Section

9.13

Description

FIT
Visible

Usage

This configuration is replicated from Section
11.1.2.1.12, “FIA Straps (Record 11)”

Yes

SoC Descriptor Record 12a (Flash Descriptor
Records)
Flash Address:FPSBA + 030h

Size: 64 bit

Default Flash Address: 130h
Offset from
0

Bits

Default
Value

0x130h

63:0

Refer
Section

9.14

Description

FIT
Visible

Usage

This configuration is replicated from Section
11.1.2.1.13, “PCIe (x2 Controller) Straps
(Record 12a)”

Yes

SoC Descriptor Record 12b (Flash Descriptor
Records)
Flash Address:FPSBA + 038h

Size: 64 bit

Default Flash Address: 138h
Offset from
0

Bits

Default
Value

0x138h

63:0

Refer
Section

62

Description
This configuration is replicated from Section
11.1.2.1.14, “PCIe (x4 Controller) Straps
(Record 12b)”

Intel Confidential

Usage

FIT
Visible
Yes

CDI/IBP#: 559702


Flash Descriptor SoC Configuration

9.15

SoC Descriptor Record 13 (Flash Descriptor
Records)
Flash Address:FPSBA + 040h

Size: 32 bit

Default Flash Address: 140h
Offset from
0

Bits

Default
Value

Description

0x140h

31:0

Refer
Section

This configuration is replicated from Section
11.1.2.1.15, “SATA Straps (Record 13)”

9.16

Usage

FIT
Visible
Yes

SoC Descriptor Record 14 (Flash Descriptor
Records)
Flash Address:FPSBA + 044h

Size: 32 bit

Default Flash Address: 144h
Offset from
0

Bits

Default
Value

Description

0x144h

31:0

Refer
Section

This configuration is replicated from Section
11.1.2.1.16, “SMBus Straps (Record 14)”

9.17

Usage

FIT
Visible
Yes

SoC Descriptor Record 15 (Flash Descriptor
Records)
Flash Address:FPSBA + 048h

Size: 32 bit

Default Flash Address: 148h
Offset from
0

Bits

Default
Value

0x148h

31:0

Refer
Section

Description

Usage

This configuration is replicated from Section
11.1.2.1.17, “IPC SPI Straps (Record 15)”

FIT
Visible
Yes

§§

CDI/IBP#: 559702

Intel Confidential

63


Signed Master Image Profile (SMIP)

10

Signed Master Image Profile
(SMIP)

10.1

Overview
Signed Master Image Profile (SMIP) contains platform-specific data that firmware
and software may find necessary in generating specific platform behavior. Currently,
only an OEM-signed SMIP is in use.
The SMIP is required to begin with a SMIP Descriptor Table (SDT) that helps locate the
remaining blocks within the SMIP. Required blocks in SMIP are those dedicated for TXE,
PMC, IAFW respectively in that order. SDT structure is defined below.

Table 10-1. SMIP Descriptor Table
Name

Offset

Size
(Bytes)

Number of
Descriptors

0

2

Number of SMIP blocks (‘n’) inside this SMIP structure

Size of SMIP

2

2

Size, in bytes, of this SMIP structure (including the SDT
structure)

Block 0 Type

4

2

Type of block 0. Can be one of the following:
0 = TXE
1 = PMC
2 = IAFW

Block 0 Offset

6

2

Offset of block 0

Description

Block 0 Length

8

2

Length of block 0 in bytes

Block 0 Reserved

10

2

Must be 0

Block 1 Type

12

2

Block 1 Offset

14

2

Block 1 Length

16

2

Length of block 1 in bytes

Block 1 Reserved

18

2

Must be 0

...
Block ‘n-1’ Type
Block ‘n-1’ Offset
Block ‘n-1’
Reserved
Block ‘n-1’
Reserved

CDI/IBP#: 559702

Intel Confidential

65

Signed Master Image Profile (SMIP)

10.2

SMIP Tools
As you can see below, this is a high level of how SMIP is created using FIT:

Figure 10-1. SMIP Image Creation

As shown in the figure above, FIT will generate the SMIP binary given the XML
configuration of each strap. Internally, FIT will call MEU (Manifest Extension Utility) and
OpenSSL to create the SMIP manifest and sign it given the SMIP key. During Boot,
SMIP is verified by TXE engine then given to each component as trusted configuration.
Figure 10-2. SMIP Image Verification During Platform Bring Up

§§

66

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

11

Apollo Lake TXE SMIP
Configurations

11.1

OEM TXE SMIP (APL)

SMIP
Offset

Size in
Bytes

0x0

72

0x48

128

0xC8

5624

0x16C0

4

TPM Configuration and Boot Guard OEM Policy

0x16C4

2

Reserved

11.1.1

Description

Comments

USB Descriptor

Refer Section 11.1.1, “USB DnX (Descriptor) of TXE
SMIP”below for details on the straps

Soft Straps

Refer Section 11.1.2, “Soft Strap Section of TXE
SMIP”below for details on the straps

Reserved
Refer Section 11.1.3, “TPM Configuration and Boot
Guard OEM Policy of TXE SMIP”

USB DnX (Descriptor) of TXE SMIP1
Offset: Starting at offset 0x000 of TXE SMIP

Offset
from 0x0

Bytes

Default
Value

Description

71:70

16’h0

Reserved

69

8'h1E1

USB Ping Time-out:

8'h1E2

FIT
Visible
No

0x1E = 30 seconds time-out

68

Usage

USB Enumeration Time-out
0x1E = 30 seconds time-out

0x000h

Time-out in SECONDS
Used by ROM DnX logic to wait for
ping from host before timing out
If this field is set to 0 then cable
detection is DISABLED

Yes

Time-out in SECONDS
Used by ROM DnX logic to wait for
enumeration from host before
timing out.
If this field is set to 0 then cable
detection is DISABLED

Yes

67:36

32'h00

USB String Descriptor 2:
Null terminated Ascii string used by ROM to
communicate product string (31 characters)
to recovery host

If this descriptor is not defined by
OEM, identified by all 0’s, ROM will
use default descriptors

Yes

35:4

32'h00

USB String Descriptor 1:
Null terminated Ascii string used by ROM to
communicate manufacturer string (31
characters) to recovery host.

If this descriptor is not defined by
OEM, identified by all 0’s, ROM will
use default descriptors.

Yes

3:0

16'h0

Reserved

No

Notes:
1. This field will not be used at EOM
2. This field will not be used at EOM

1. This section only applies to platforms booting with eMMC / UFS. On APL SPI platforms, this is not
POR.

CDI/IBP#: 559702

Intel Confidential

67

Apollo Lake TXE SMIP Configurations

11.1.2

Soft Strap Section of TXE SMIP

11.1.2.1

Soft Strap Section for Apollo Lake Platform (APL A and B-Step)
Offset: Starting at offset 0x48 of TXE SMIP

11.1.2.1.1
Offset
from
0x48

PUnit Straps (Record 0)

Bits

Default
Value

31:23

8’h0

Description
Reserved, set to ‘0’

Thermal Throttle Unlock
(THERMAL_THROTTLE_UNLOCK):
22

1’h0
0 = Locked (default)
1 = Unlocked

Extended Reliability Enable
(EXTENDED_RELIABILITY_ENABLE):
21

1’h0
0 = Disable (default)
1 = Enable

0x00h
Soft SVID Disable
(SOFTSTRAP_SVID_DISABLE):
20

FIT
Visible

Usage

1’h0
0 = Enable (default)
1 = Disable

No
Soft strap configured by the OEM to
'allow' disabled thermal throttling.
Typical manufacturing recipes for our
silicon force thermal throttling to be
enabled. However, for some select
products, customers wish to disable
thermal throttling. For those products,
the SoC must be fused to allow for
thermal throttling disable
(THERMAL_THROTTLE_UNLOCK=1)
*and* this strap must be set by the
customer. Both conditions being true will
allow customers to successfully disable
thermal throttling by writing the
IA32_MISC_ENABLES MSR.

Yes

Soft strap configured by the OEM to
define whether or not the extended
reliability mode is enabled for this part.
When the extended reliability mode is
enabled, the IA/GT/IUNIT max ratio
offset fuses are used to clip the
respective maximum clock frequency to
acceptable levels for the extended
reliability. Typically, this feature is used
in conjunctions with in-vehicle or other
applications that are subject to a
greater range of thermal stress and/or
longer lifetime reliability requirements

Yes

Software configurable strap disable for
SVID. Used for debug purposes only

Yes

This contains the PMIC Rail ID for SVID
Rail 3. PCODE uses this to program the
SVID_RAIL3_CONFIG_AND_STATUS
register during reset.

Yes

This bit defines whether the STATUS1
register for Rail 3 must be polled on
Alert# assertions or not.

Yes

This contains the PMIC Rail ID for SVID
Rail 2. PCODE uses this to program the
SVID_RAIL2_CONFIG_AND_STATUS
register during reset.

Yes

Rail 3 SVID ID (SVID_RAIL3_ID):
19:16

4'h6

0 = I2C VR Type
1 = SVID VR Type
6 = Whiskey Cove PMIC VR Type
(default)
Rail 3 Alert Polling Enable
(SVID_RAIL3_VALID):

15

1’h1

0 = SVID OR I2C VR Type
1 = Whiskey Cove PMIC VR Type
(default)
Rail 2 SVID ID (SVID_RAIL2_ID):

14:11

68

4'h2

0 = SVID OR I2C VR Type
2 = Whiskey Cove PMIC VR Type
(default)

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

Offset
from
0x48

Bits

Default
Value

Description
Rail 2 Alert Polling Enable
(SVID_RAIL2_VALID):

10

1'h1

0 = SVID OR I2C VR Type
1 = Whiskey Cove PMIC VR Type
(default)
Rail 1 SVID ID (SVID_RAIL1_ID):

9:6

4'h2

0 = I2C VR Type
1 = Whiskey Cove PMIC VR Type
2 = SVID VR Type (default)
Rail 1 Alert Polling Enable
(SVID_RAIL1_VALID):

0x00h
(Cont’d)

5

1'h1

0 = I2C VR Type
1 = SVID OR Whiskey Cove PMIC VR
Type (default)
Rail 0 SVID ID (SVID_RAIL0_ID):

4:1

4'h5

0 = SVID OR I2C VR Type
5 = Whiskey Cove PMIC VR Type
(default)
Rail 0 Alert Polling Enable
(SVID_RAIL0_VALID):

0

11.1.2.1.2

1'h1

Bits

Default
Value

0x004h

31:0

Refer
Section

This bit defines whether the STATUS1
register for Rail 2 must be polled on
Alert# assertions or not.

Yes

This contains the PMIC Rail ID for SVID
Rail 1, aka Vnn. PCODE uses this to
program the
SVID_RAIL1_CONFIG_AND_STATUS
register during reset.

Yes

This bit defines whether the STATUS1
register for Rail 1 must be polled on
Alert# assertions or not.

Yes

This contains the PMIC Rail ID for SVID
Rail 0, i.e. Vccgi. PCODE uses this to
program the
SVID_RAIL0_CONFIG_AND_STATUS
register during reset.

Yes

This bit defines whether the STATUS1
register for Rail 0 must be polled on
Alert# assertions or not.

Yes

Description

Usage

This configuration is replicated from Section
9.2, “SoC Descriptor Record 1 (Flash
Descriptor Records)”

FIT
Visible
Yes

SPI Straps (Record 2)

Offset
from
0x48

Bits

Default
Value

0x008h

31:0

Refer
Section

11.1.2.1.4

FIT
Visible

SPI Straps (Record 1)

Offset
from
0x48

11.1.2.1.3

0 = I2C VR Type
1 = SVID OR Whiskey Cove PMIC VR
Type (default)

Usage

Description

Usage

This configuration is replicated from Section
9.3, “SoC Descriptor Record 2 (Flash
Descriptor Records)”

FIT
Visible
Yes

SPI Straps (Record 3)

Offset
from
0x48

Bits

Default
Value

0x00ch

31:0

Refer
Section

CDI/IBP#: 559702

Description
This configuration is replicated from Section
9.4, “SoC Descriptor Record 3 (Flash
Descriptor Records)”

Intel Confidential

Usage

FIT
Visible
Yes

69

Apollo Lake TXE SMIP Configurations

11.1.2.1.5

SPI Straps (Record 4)

Offset
from
0x48

Bits

Default
Value

0x010h

31:0

Refer
Section

11.1.2.1.6

Bits

Default
Value

0x014h

31:0

Refer
Section

Bits

Default
Value

0x018h

31:0

Refer
Section

Bits

Default
Value

0x01ch

31:0

Refer
Section

Offset
from
0x48

0x020h

70

Yes

Description

Usage

This configuration is replicated from Section
9.6, “SoC Descriptor Record 5 (Flash
Descriptor Records)”

FIT
Visible
Yes

Description

Usage

This configuration is replicated from Section
9.7, “SoC Descriptor Record 6 (Flash
Descriptor Records)”

FIT
Visible
Yes

TXE Straps (Record 7)

Offset
from
0x48

11.1.2.1.9

This configuration is replicated from Section
9.5, “SoC Descriptor Record 4 (Flash
Descriptor Records)”

FIT
Visible

SPI Straps (Record 6)

Offset
from
0x48

11.1.2.1.8

Usage

SPI Straps (Record 5)

Offset
from
0x48

11.1.2.1.7

Description

Description

Usage

This configuration is replicated from does
notdoes not

FIT
Visible
Yes

ISH Straps (Record 8)
Bits

Default
Value

31:27

5'h0

Reserved

No

26:25

2'h0

Reserved

No

24

1'h0

Reserved

No

23:16

8'h0

Reserved

No

15:8

8'h50

Reserved

No

7:0

8'h07

Reserved

No

Description

Intel Confidential

Usage

FIT
Visible

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

11.1.2.1.10 USBx Straps (Record 9)
Offset
from
0x48

Bits

Default
Value

31:15

17’h0

Description
Reserved

1'h0

1'h0

0 = USB3 (default)
1 = SSIC

1'h0

0 = USB3 (default)
1 = SSIC

1'h0

0x024h

0 = USB3 (default)
1 = SSIC

1'h0

0 = USB3 (default)
1 = SSIC

8

7

1'h0

1'h0

1'h0

0 = USB3 (default)
1 = SSIC

CDI/IBP#: 559702

1'h0

Yes

Straps to decide Port 4 Ownership
between USB3/SSIC when owned by
XHC.

Yes

Straps to decide Port 3 Ownership
between USB3/SSIC when owned by
XHC.

Yes

Straps to decide Port 2 Ownership
between USB3/SSIC when owned by
XHC.

Yes

This strap should be programmed to
0 since port2 is not SSIC capable.

USB3/SSIC Port 1 Ownership
(USB3_SSIC_PORT1_STRAP):

Straps to decide Port 1 Ownership
between USB3/SSIC.

0 = USB3 (default)
1 = SSIC

This strap should be programmed to
0 since Port1 is not SSIC capable.

Reserved

Yes

No

XHC Port 7 Ownership
(XHC_PORT7_OWNERSHIP_STRAP):
6

Straps to decide Port 5 Ownership
between USB3/SSIC when owned by
XHC.

This strap should be programmed to
0 since port3 is not SSIC capable.

USB3/SSIC Port 2 Ownership
(USB3_SSIC_PORT2_STRAP):
9

Yes

This strap should be programmed to
0 since port4 is not SSIC capable.

USB3/SSIC Port 3 Ownership
(USB3_SSIC_PORT3_STRAP):
10

Straps to decide Port 6 Ownership
between USB3/SSIC when owned by
XHC.

This strap should be programmed to
0 since port5 is not SSIC capable.

USB3/SSIC Port 4 Ownership
(USB3_SSIC_PORT4_STRAP):
11

Yes

This strap should be programmed to
0 since port6 is not SSIC capable.

USB3/SSIC Port 5 Ownership
(USB3_SSIC_PORT5_STRAP):
12

Straps to decide Port 7 Ownership
between USB3/SSIC when owned by
XHC.

0 = USB3 (default)
1 = SSIC
USB3/SSIC Port 6 Ownership
(USB3_SSIC_PORT6_STRAP):

13

FIT
Visible
No

USB3/SSIC Port 7 Ownership
(USB3_SSIC_PORT7_STRAP):
14

Usage

0 = XHC (default)
1 = Non-XHC

Straps to decide XHCI Port 7
Ownership between XHCI and nonXHCI.

Yes

Since XHC_PORT7_OWNERSHIP
fuse is set to 2'b10, this strap is
don't care.

Intel Confidential

71

Apollo Lake TXE SMIP Configurations

Offset
from
0x48

Bits

Default
Value

Description
XHC Port 6 Ownership
(XHC_PORT6_OWNERSHIP_STRAP):

5

1'h0

0 = XHC (default)
1 = Non-XHC

1'h0

0 = XHC (default)
1 = Non-XHC

1'h0

0 = XHC
1 = Non-XHC (default)

0x024h
(Cont’d)
XHC Port 3 Ownership
(XHC_PORT3_OWNERSHIP_STRAP):
2

1'h0

0 = XHC
1 = Non-XHC (default)

XHC Port 2 Ownership
(XHC_PORT2_OWNERSHIP_STRAP):
1

1'h0

0 = XHC (default)
1 = Non-XHC

72

1'h0

Straps to decide XHCI Port 5
Ownership between XHCI and nonXHCI.

Yes

Straps to decide XHCI Port 4
Ownership between XHCI and nonXHCI.

Yes

Set it to “0” to assign that port to
XHCI. Setting it to “1” will disable
that port for XHCI and FIA can
assign that port to PCIe/SATA.
Straps to decide XHCI Port 3
Ownership between XHCI and nonXHCI.

Yes

Set it to “0” to assign that port to
XHCI. Setting it to “1” will disable
that port for XHCI and FIA can
assign that port to PCIe/SATA.
Straps to decide XHCI Port 2
Ownership between XHCI and nonXHCI.

Yes

This strap should be programmed to
0 since Port2 is always owned by
XHCI.

XHC Port 1 Ownership
(XHC_PORT1_OWNERSHIP_STRAP):
0

Yes

Set it to “0” to assign that port to
XHCI. Setting it to “1” will disable
that port for XHCI and FIA can
assign that port to PCIe/SATA.

XHC Port 4Ownership
(XHC_PORT4_OWNERSHIP_STRAP):
3

Straps to decide XHCI Port 6
Ownership between XHCI and nonXHCI.
Set it to “0” to assign that port to
XHCI. Setting it to “1” will disable
that port for XHCI and FIA can
assign that port to PCIe/SATA.

XHC Port 5 Ownership
(XHC_PORT5_OWNERSHIP_STRAP):
4

FIT
Visible

Usage

0 = XHC (default)
1 = Non-XHC

Straps to decide XHCI Port 1
Ownership between XHCI and nonXHCI.

Yes

This strap should be programmed to
0 since Port1 is always owned by
XHCI.

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

11.1.2.1.11 EXI Straps (Record 10)
Offset
from
0x48

Bits

Default
Value

31:24

8’h0

Reserved

No

23:22

2'h0

Reserved

No

21:20

2'h0

Reserved

No

PCIe/USB3 Combo Port 1 Strap
(PCIE_USB3_P1_STRP):

Yes

19:18

2'h0

Description

00
01
10
11

=
=
=
=

FIT
Visible

Statically assigned to USB3 (default)
Statically assigned to PCI Express
Reserved
Reserved

PCIe/USB3 Combo Port 0 Strap
(PCIE_USB3_P0_STRP):

Yes

17:16

2'h0

00
01
10
11

15:13

3'h0

Reserved

Yes

UFS Combo Port 0 Strap
(UFSCP0_STRP):

Yes

0x028h
12

1'h0

=
=
=
=

Usage

Statically assigned to USB3 (default)
Statically assigned to PCI Express
Reserved
Reserved

0 = Statically assigned to non-UFS Ports
(default)
1 = Statically assigned to UFS Port 0

11:8

4'h0

Reserved

No

7:6

2'h0

Reserved

No

USB3/SSIC Combo Port 2 Strap
(USB3P2_SSICP2_STRP)

Yes

5

1'h0
0 = Statically assigned to USB3 (default)
1 = Statically assigned to SSIC
USB3/SSIC Combo Port 1 Strap
(USB3P1_SSICP1_STRP)

4

Yes

1'h0
0 = Statically assigned to USB3 (default)
1 = Statically assigned to SSIC

3:0
Note:

CDI/IBP#: 559702

4'h0

Reserved

No

Refer Section 12, “SMIP Configurations” for details regarding mapping Combo Port to ModPHY Lane
number. Refer APL PDG and EDS for port and ModPHY Lane mappings.

Intel Confidential

73

Apollo Lake TXE SMIP Configurations

11.1.2.1.12 FIA Straps (Record 11)
Offset
from
0x48

0x02ch

Bits

Default
Value

31:24

8’h0

Reserved

No

23:22

2'h0

Reserved

No

21:20

2'h0

Reserved

No

19:18

2'h0

Reserved

No

USB3/SATA Combo Port 0 Strap
(USB3_SATA_P0_STRP):

Yes

Description

2'h0

00 = USB3 (default)
01 = SATA
10: Reserved
11 = Reserved

15:14

2'h0

Reserved

No

PCIe/USB3 Combo Port 2 Strap
(PCIE_USB3_P2_STRP):

Yes

2'h0

00 = USB3 (default)
01 = PCIE
10: Reserved
11 = Reserved
PCIe/USB3 Combo Port 1 Strap
(PCIE_USB3_P1_STRP):

11:10

2'h0

9:8

2'h0

7:3

8’h0

2

1'h1

1:0

8’h0

Note:

Yes

00 = USB3
01 = PCIE (default)
10: Reserved
11 = Reserved
PCIe/USB3 Combo Port 0 Strap
(PCIE_USB3_P0_STRP):

74

FIT
Visible

17:16

13:12

0x02ch
(Cont’d)

Usage

Yes

00 = USB3
01 = PCIE (default)
10: Reserved
11 = Reserved
Reserved

No

Staggering Enable (SE):

Yes

0 = Disable
1 = Enable (default)
Reserved

No

Refer Section 12, “SMIP Configurations” for details regarding mapping Combo Port to ModPHY Lane
number. You may also Refer APL PDG and EDS for port and ModPHY Lane mappings.

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

11.1.2.1.13 PCIe (x2 Controller) Straps (Record 12a)
Offset
from
0x48

0x030h

Bits

Default
Value

63:56

8'h0

Reserved

No

55:48

8'h0

Reserved

No

47

1'h0

Reserved

No

46

1'h0

Reserved

No

45

1'h0

Reserved

No

44

1'h0

Reserved

No

43

1'h0

Reserved

No

42

1'h0

Reserved

No

41

1'h0

Reserved

No

40

1'h0

Reserved

No

39:32

8'h0

Reserved

No

PCIe Port 3 Non-Common Clock With SSC
Mode Enable Strap (P3PNCCWSSCMES):

Yes

31

Description

Usage

FIT
Visible

1'h0
0 = Disabled (default)
1 = Enabled
PCIe Port 2 Non-Common Clock With SSC
Mode Enable Strap (P2PNCCWSSCMES):

30

Yes

1'h0
0 = Disabled (default)
1 = Enabled
PCIe Port 1 Non-Common Clock With SSC
Mode Enable Strap (P1PNCCWSSCMES):

29

Yes

1'h0
0 = Disabled (default)
1 = Enabled
Yes

PCIe Port 0 Non-Common Clock With SSC
Mode Enable Strap (P0PNCCWSSCMES):
28

1'h0
0 = Disabled (default)
1 = Enabled

0x030h
(cont)

27:24

4'h0

Reserved

No

23:16

8'h0

Reserved

No

15

1'h0

Reserved

No

14

1'h1

Reserved

No

13

1'h0

Reserved

No

Root Port Configuration (RPCFG):

No

12:11

2'h0

01 = 1x2 Port 1 (x2), Port 2 (disabled)
00 = 2x1 Ports 1-2 (x1) (default)
When “0”, PCIe Lanes 0-3 are not
reversed.
When “1”, PCIe Lanes 0-3 are
reversed.

No

10

1'h0

Lane Reversal (LNREV):
0 = No Lane Reversal (default)
1 = Lane Reversal

9:8

2'h0

Reserved

No

7:0

8'h0

Reserved

No

CDI/IBP#: 559702

Intel Confidential

75

Apollo Lake TXE SMIP Configurations

11.1.2.1.14 PCIe (x4 Controller) Straps (Record 12b)
Offset
from
0x48

0x038h

Bits

Default
Value

63:56

8'h0

Reserved

No

55:48

8'h0

Reserved

No

47

1'h0

Reserved

No

46

1'h0

Reserved

No

45

1'h0

Reserved

No

44

1'h0

Reserved

No

43

1'h0

Reserved

No

42

1'h0

Reserved

No

41

1'h0

Reserved

No

40

1'h0

Reserved

No

39:32

8'h0

Reserved

No

Description

PCIe Port 3 Non-Common Clock With SSC
Mode Enable Strap (P3PNCCWSSCMES):
31

Usage

FIT
Visible

Not used

No

Not used

No

Corresponds to port 5

Yes

1'h0
0 = Disabled (default)
1 = Enabled
PCIe Port 2 Non-Common Clock With SSC
Mode Enable Strap (P2PNCCWSSCMES):

30

1'h0
0 = Disabled (default)
1 = Enabled
PCIe Port 1 Non-Common Clock With SSC
Mode Enable Strap (P1PNCCWSSCMES):

29

1'h0
0 = Disabled (default)
1 = Enabled

76

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

Offset
from
0x48

Bits

Default
Value

Description
PCIe Port 0 Non-Common Clock With SSC
Mode Enable Strap (P0PNCCWSSCMES):

28

Usage
Corresponds to port 4

FIT
Visible
Yes

1'h0
0 = Disabled (default)
1 = Enabled

27:24

4'h0

Reserved

No

23:16

8'h0

Reserved

No

15

1'h0

Reserved

No

14

1'h0

Reserved

No

13

1'h0

Reserved

No
No

12:11

2'h1

Root Port Configuration (RPCFG):
11: 1x4 Port 1 (x4), Ports 2-4 (disabled)
10: 2x2 Port 1 (x2), Port 3 (x2), Ports 2, 4
(disabled)
01: 1x2, 2x1 Port 1 (x2), Port 2 (disabled),
Ports 3, 4 (x1) (default)
00: 4x1 Ports 1-4 (x1)

10

1'h0

9:8

2'h0

Reserved

No

7:0

8'h0

Reserved

No

0x038h

Lane Reversal (LNREV):
0 = No Lane Reversal (default)
1 = Lane Reversal

When “0”, PCIe Lanes 0-3 are not
reversed.
When “1”, PCIe Lanes 0-3 are
reversed.

No

11.1.2.1.15 SATA Straps (Record 13)
Offset
from
0x48

Bits

Default
Value

31:24

8’h0

Reserved

No

23

1'h0

Reserved

No

22

1'h0

Reserved

No

21

1'h0

Reserved

No

20

1'h0

Reserved

No

19

1'h0

Reserved

No

18

1'h0

Reserved

No

SATA/PCIe Select GPIO polarity for SATA
Port 1
(SATA_PCIE_Select_GPIO_polarity_for_Port
_1):

Yes

0x040h

17

CDI/IBP#: 559702

1'h0

Description

Usage

FIT
Visible

0 = PCIe will be set as MOD-PHY lane owner if
SATAXPCIE_SATAGP1 is detected with “0” and
SATA lane as owner if SATAXPCIE_SATAGP1 is
detected with “1” (default)
1 = SATA will be set as MOD-PHY lane owner if
SATAXPCIE_SATAGP1 is detected with “0” and
PCIe lane as owner if SATAXPCIE_SATAGP1 is
detected with “1”

Intel Confidential

77

Apollo Lake TXE SMIP Configurations

Offset
from
0x48

Bits

Default
Value

Description
SATA/PCIe Select GPIO polarity for SATA
Port 0
(SATA_PCIE_Select_GPIO_polarity_for_Port
_0):

0x040h
(Cont’d)

78

16

1'h0

15:14

2'h0

Usage

FIT
Visible
Yes

0 = PCIe will be set as MOD-PHY lane owner if
SATAXPCIE_SATAGP0 is detected with “0” and
SATA lane as owner if SATAXPCIE_SATAGP0 is
detected with “1” (default)
1 = SATA will be set as MOD-PHY lane owner if
SATAXPCIE_SATAGP0 is detected with “0” and
PCIe lane as owner if SATAXPCIE_SATAGP0 is
detected with “1”
Reserved

No

Intel Confidential

CDI/IBP#: 559702


Apollo Lake TXE SMIP Configurations

Offset
from
0x48

Bits

Default
Value

Description

Usage

Mod-PHY lane SATA Port 6
(SATA_PCIE_Select_for_Port_6):
13:12

2'h0

Yes

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Mod-PHY lane SATA Port 5
(SATA_PCIE_Select_for_Port_5):

11:10

2'h0

Yes

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Mod-PHY lane SATA Port 4:
(SATA_PCIE_Select_for_Port_4):

9:8

2'h0

0x040h
(Cont’d)

Yes

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Mod-PHY lane SATA Port 3
(SATA_PCIE_Select_for_Port_3):

7:6

2'h0

Yes

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Mod-PHY lane SATA Port 2
(SATA_PCIE_Select_for_Port_2):

5:4

2'h0

Yes

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Yes

Mod-PHY lane SATA Port 1
(SATA_PCIE_Select_for_Port_1):
3:2

2'h0

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap
Mod-PHY lane SATA Port 0
(SATA_PCIE_Select_for_Port_0):

1:0

CDI/IBP#: 559702

2'h0

FIT
Visible

00 = Statically assigned to SATA Port 0 (default)
01 = Statically assigned to PCIe
10 = Reserved
11 = Assigned based on SATA Port 7 GPIO pin and
polarity soft strap

Intel Confidential

This strap should default to
"PCIE" as this port is assigned
to XHC. "PCIE" means "nonSATA" in this case.

Yes

79

Apollo Lake TXE SMIP Configurations

11.1.2.1.16 SMBus Straps (Record 14)
Offset
from
0x48

0x044h

Bits

Default
Value

31:8

24’h0

7:4

4'h0

Reserved

No

3

1'h0

Reserved

No

Description

Usage

Reserved

FIT
Visible
No

2

1'h0

Reserved

No

1

1'h0

Reserved

No

0

1'h0

Reserved

No

11.1.2.1.17 IPC SPI Straps (Record 15)
Offset
from
0x48

0x048h

Bits

Default
Value

31:2

30’h0

1

1'h0

0

1'h0

11.1.3
Offset

0x16C0

Description

Usage

FIT
Visible

Reserved

No

Protected Range and Top Swap Override
(spi_strap_prr_ts_ovr):

Yes

0 = Set PRR_TS_OVR register to RO
(default)
1 = Set PRR_TS_OVR register to RW
Reserved

No

TPM Configuration and Boot Guard OEM Policy of TXE SMIP
Bits

Default
Value

Description

Usage

FIT
Visible

31:8

1'h0

Reserved

No

7:4

1'h0

Reserved

No

3

1'h0

Reserved

No
Yes

2

1'h0

Discrete TPM location:
0 = LPC
1 = SPI

1

1'h0

Reserved

No

0

1'h0

dTPM Presence:
0 = dTPM not present
1 = dTPM present

Yes

§§

80

Intel Confidential

CDI/IBP#: 559702


SMIP Configurations

12

SMIP Configurations

12.1

Apollo Lake Platform SMIP Configurations (APL A
and B-Step)

12.1.1

Mod-Phy Lane Configuration Dependency with TXE SMIP

APL
Config

Mod-Phy Lane
0

Mod-Phy Lane
1

Mod-Phy
Lane

USB3 Only

USB3 Only

TXE SMIP:
FIA
(Record
11)

XHC_PORT1_OWNE
RSHIP_STRAP =
XHC

XHC_PORT2_OWNE
RSHIP_STRAP =
XHC

PCIE_USB3_P0_ST
RP = USB3 OR PCIE

TXE SMIP:
USBx
(Record 9)

N/A

N/A

TXE SMIP:
SATA
(Record
13)

N/A

TXE SMIP
EXI
(Record
10)

N/A

12.1.2
SMIP
Offset

Mod-Phy Lane
2
USB3 OR PCIe

Mod-Phy Lane
3

12.1.3
SMIP
Offset

USB3 OR PCIe

USB3 OR SATA

PCIE_USB3_P1_ST
RP = USB3 OR PCIE

PCIE_USB3_P2_ST
RP = USB3 OR PCIe

USB3_SATA_P0_ST
RP = USB3 OR
SATA

XHC_PORT3_OWNE
RSHIP_STRAP =
XHC OR Non-XHC

XHC_PORT4_OWNE
RSHIP_STRAP =
XHC OR Non-XHC

XHC_PORT5_OWNE
RSHIP_STRAP =
XHC OR Non-XHC

XHC_PORT6_OWNE
RSHIP_STRAP =
XHC OR Non-XHC

N/A

N/A

N/A

N/A

SATA_PCIE_Select_
for_Port_1 =
PCIE OR SATA

N/A

PCIE_USB3_P0_ST
RP = USB3 OR PCIE

PCIE_USB3_P1_ST
RP = USB3 OR PCIE

Mod-Phy Lane 2
Bits

Default
Value

Description

7:0

0x1

2'b00: USB3
2'b01: PCIe (default)
Others: Reserved

Usage/Comments
Muxed lane for APL, make sure
MODPHY soft straps match desired
lane configuration

FIT
Visible
Yes

Mod-Phy Lane 3
Bits

Default
Value

Description
MODPHYLANE3

0x0008

Mod-Phy Lane
8

USB3 OR PCIe

MODPHYLANE2
0x0007

Mod-Phy Lane
4

7:0

CDI/IBP#: 559702

0x1

2'b00: USB3
2'b01: PCIe (default)
Others: Reserved

Intel Confidential

Usage/Comments
Muxed lane for APL, make sure
MODPHY soft straps match desired
lane configuration

FIT
Visible
Yes

81

SMIP Configurations

12.1.4
SMIP
Offset

Mod-Phy Lane 4
Bits

Default
Value

Description
MODPHYLANE4

0x0009

12.1.5
SMIP
Offset

7:0

0x0

2'b00: USB3 (default)
2'b01: PCIe
Others: Reserved

12.1.6
SMIP
Offset

Bits

Default
Value

Description

7:0

0x0

2'b00: USB3 (default)
2'b10: SATA
Others: Reserved

12.1.7
SMIP
Offset

Bits

Default
Value

Description

7:0

0x0

1'b0 = reboot (default)
1'b1 = no_reboot

12.1.8
SMIP
Offset

0x0012

82

FIT
Visible

Usage/Comments
Muxed lane for APL, make sure
MODPHY soft straps match desired
lane configuration

Yes

FIT
Visible

Usage/Comments
TCO is a software-controlled
platform-level watchdog timer.
Disabling of TCO_NO_REBOOT is
required for resetbreak to occur
when handling reset from TCO
source.

Yes

RESETBUTTON_DEBOUNCE_DIS
Bits

Default
Value

Description
RESETBUTTON_DEBOUNCE_DIS

0x0011

Yes

TCO_NO_REBOOT

TCO_NO_REBOOT
0x000f

Muxed lane for APL make sure
MODPHY soft straps match desired
lane configuration

Mod-Phy Lane 8

MODPHYLANE8
0x000d

FIT
Visible

Usage/Comments

7:0

0x0

1'b0 = ENABLE_DEBOUNCE (default)
1'b1 = DISABLE_DEBOUNCE

FIT
Visible

Usage/Comments
Value to be programmed for the HW
bit to disable the reset button
debounce circuit. Debounce the
circuit may be required depending
on reset button hardware

Yes

LJ1PLL_SETTINGS_FORCE_COLD_RESET
Bits

7:0

Default
Value

0x0

FIT
Visible

Description

Usage/Comments

LJ1PLL_SETTINGS_FORCE_COLD_RESET

LJ1PLL settings will force a cold
reset when this is non-zero. Normal
usage is to force a cold reset (assert
this bit) if changes to LJ1PLL are
desired, otherwise BIOS is expected
to cause a cold reset for LJ1PLL
changes to take effect.

0: Disable (default)
1: Enable

Intel Confidential

Yes

CDI/IBP#: 559702


SMIP Configurations

12.1.9

S0IX_VR_RAMP_TIMER

SMIP
Offset

Bits

Default
Value

Description
S0IX_VR_RAMP_TIMER

0x0013

7:0

12.1.10
SMIP
Offset

0x0018

0xA0

0x01: 32 us
0x02: 64 us
...
0xA0: 5.12 ms

Usage/Comments
RTC clock timer value for Vnn/
Vccram rail ramp during S0ix exit.
The default value of 0hA0
corresponds to 5.12 ms. Precision is
32e-6.

FIT
Visible
Yes

LJ1PLL_RW_CONTROL_1_DEFAULT
Bits

Default
Value

31:2

0x0

1:1

0x0

0:0

0x0

Description

Usage/Comments

FIT
Visible

Reserved

No

Spread Spectrum Clocking, spread
enable (SSC_EN):

Yes

0x0=no frequency spreading;
0x1=enable frequency spreading on PLL
output clock
SSC_EN_OVR

Yes

SSC enable override

12.1.11
SMIP
Offset

LJ1PLL_RW_CONTROL_2_DEFAULT
Bits

Default
Value

Description
Spread Spectrum Clocking: fractional
step configuration (SSC_FRAC_STEP):

31:12

0x7D9C

11:11

0x0

10:9

0x0

0x001c

Fraction of PLL ratio at which to take
frequency modulation steps. eg 0x200000 =
(2097152/2^20) * refclk freq = 0.125*19.2
= 2.4MHz steps.

CDI/IBP#: 559702

0x12B

Spread magnitude is determined by
the step size multiplied by the
number of steps in the modulation
period (see ssc_cyc_to_peak_m1
for steps per modulation period).

FIT
Visible
Yes

Reserved

No

Spread Spectrum Clocking: spread
direction select (SSC_MODE):

Yes

0x0
0x1
0x2
0x3

=
=
=
=

down-spread only (default)
up-spread only
center spread, start with down-spread
center spread, start with up-spread

Spread Spectrum Clocking: spread
period configuration
(SSC_CYC_TO_PEAK_M1):

8:0

Usage/Comments

Yes

Half the number of steps in the modulation
period minus 1. Period of modulation is
2*(value+1) multiplied by the step duration
(PLL refclk period). eg 0x12B = 2*(299+1) *
(1/19.2MHz) = 600 * 52.083ns = 31.25us.
Spread magnitude is determined by the step
size (integer + fractional) multiplied by the
number of steps in the modulation period
(Refer ssc_frac_step and ssc_ratio_step for
step size).

Intel Confidential

83

SMIP Configurations

12.1.12

LJ1PLL_RW_CONTROL_3_DEFAULT
Bits

Default
Value

31:25

0x0

SMIP
Offset

24:18

Description

FIT
Visible

Usage/Comments

Reserved

No

LJPLL_OUT_RATIO

Yes

0x0
PLL Post-Divide Ratio: not used by ICLK PLLs
PLL PVD Ratio (LJPLL_PVD_RATIO):

17:16

0x0

15:14

0x0

Multiplier between VCO and output
clock frequency

Yes

Not used by ICLK PLLs

Yes

0x0=1 (default)
0x1=2
0x2=4
0x3=8
PLL RefClk Divide Ratio
(LJPLL_REF_RATIO):
PLL Force On (LJPLL_FORCE_ON):

0x0020

13:13

0x0

Yes

0x0 = no force, PLL obeys power state
0x1 = force the PLL on regardless of power
state
PLL Force Off (LJPLL_FORCE_OFF):

Yes

12:12

0x0

11:10

0x0

SEL_MIPICLK_C

Not used by ICLK PLLs

Yes

9:8

0x0

SEL_MIPICLK_A

Not used by ICLK PLLs

Yes

Integer Feedback Ratio
(LJPLL_FB_RATIO):

Integer frequency multiplier;

Yes

7:0

0x0 = no force, PLL obeys power state
0x1 = force PLL off regardless of power state

0x7D
Refclk frequency * value = PLL output clock
frequency; eg 19.2MHz * 125 = 2400MHz

12.1.13
SMIP
Offset

LJ1PLL_RW_CONTROL_5_DEFAULT
Bits

Default
Value

Description
Clock Bending, Integer
(PLL_RATIO_INT):

31:24

FIT
Visible

Usage/Comments
integer frequency multiplier

Yes

fractional frequency multiplier;

Yes

0x7D
Refclk frequency * value = PLL output clock
frequency; eg 19.2MHz * 125 = 2400MHz

0x0024

Clock Bending, Fractional
(PLL_RATIO_FRAC):
23:0

84

0x0

shift PLL clock frequency by (value/
2^24)*refclk frequency. eg 0x200000 =
(2097152/2^24) * refclk freq = 0.125*19.2
= 2.4MHz

Intel Confidential

CDI/IBP#: 559702


SMIP Configurations

12.1.14
SMIP
Offset

0x0028

LCPLL_RW_CONTROL_1_DEFAULT
Bits

Default
Value

31:2

0x0

1:1

0x0

0:0

0x0

Description

Usage/Comments

FIT
Visible

Reserved

No

Spread Spectrum Clocking, spread
enable (SSC_EN):

Yes

0x0=no frequency spreading;
0x1=enable frequency spreading on PLL
output clock
SSC_EN_OVR

Yes

SSC enable override

12.1.15
SMIP
Offset

LCPLL_RW_CONTROL_2_DEFAULT
Bits

Default
Value

Description

Usage/Comments
Spread magnitude is determined by
the step size multiplied by the
number of steps in the modulation
period (refer ssc_cyc_to_peak_m1
for steps per modulation period).

Spread Spectrum Clocking: fractional
step configuration (SSC_FRAC_STEP):
31:12

0x7D9C

11:11

0x0

10:9

0x0

0x002c

Fraction of PLL ratio at which to take
frequency modulation steps. eg 0x200000 =
(2097152/2^20) * refclk freq = 0.125*19.2
= 2.4MHz steps.

12.1.16

0x12B

No

Spread Spectrum Clocking: spread
direction select (SSC_MODE):

Yes

0x0
0x1
0x2
0x3

=
=
=
=

down-spread only (default)
up-spread only
center spread, start with down-spread
center spread, start with up-spread
Yes

Half the number of steps in the modulation
period minus 1. Period of modulation is
2*(value+1) multiplied by the step duration
(PLL refclk period). eg 0x12B = 2*(299+1) *
(1/19.2MHz) = 600 * 52.083ns = 31.25us.
Spread magnitude is determined by the step
size (integer + fractional) multiplied by the
number of steps in the modulation period
(refer ssc_frac_step and ssc_ratio_step for
step size).

PMIC/VR Configuration
Description

PMIC/VR Configuration:
SVID VR
I2C VR I2C VR I2C VR -

Yes

Reserved

Spread Spectrum Clocking: spread
period configuration
(SSC_CYC_TO_PEAK_M1):

8:0

FIT
Visible

Usage/Comments
These are the supported VR types for APL SoC. Intel FW
only supports this BOM list.

FIT
Visible
Yes

- Discrete SVID (default)
TI TPS650941
RT DS5074A
Rohm BD2670MVW

CDI/IBP#: 559702

Intel Confidential

85

SMIP Configurations

12.1.17
SMIP
Offset

IASecureRdWrInValidAddrRange[0] to [12]
Bits

Default
Value

Description
IASecureRdWrInValidAddrRange[0]
Secure PMIC Black list Registers for HOST.
List of register ranges in PMIC which are
subject to write access control. Host does
NOT have access to these registers when
Secure.

0x0180

31:0

FIT
Visible

Usage/Comments
PMIC addressing utilizes 2 bytes:
MSB (byte 1) is base address; LSB
(byte 0) is the offset. The range is
from bits[15:0] to bits [31:16].

Yes

For example, a value of
"0x56781234" means:
0x1234 [15:0]: PMIC base address
0x12, offset 0x34
0x5678 [31:16]: PMIC base address
0x56, offset 0x78

0x4E924
E92

The PMIC address range from bits
[15:0] to bits [31:16] are
inaccessible for a secure HOST
Warning: Intel gives a
recommended default for this
configuration. Intel strongly
recommends not to change this
default. If OEM chooses to change
this default value, it will be at OEM
risk.
0x0184

31:0

0x4FCB
4FB5

IASecureRdWrInValidAddrRange[1]

0x0188

31:0

0x5E305
E30

IASecureRdWrInValidAddrRange[2]

0x018c

31:0

0x5E615
E3C

IASecureRdWrInValidAddrRange[3]

Yes

0x0190

31:0

0x5E6B
5E66

IASecureRdWrInValidAddrRange[4]

Yes

0x0194

31:0

0x5FAD
5FAC

IASecureRdWrInValidAddrRange[5]

Yes

0x0198

31:0

0x6F356
F00

IASecureRdWrInValidAddrRange[6]

Yes

0x019c

31:0

0x6FDB
6FD0

IASecureRdWrInValidAddrRange[7]

Yes

0x01a0

31:0

0x6FE36
FDD

IASecureRdWrInValidAddrRange[8]

Yes

0x01a4

31:0

0x1A0A
1A07

IASecureRdWrInValidAddrRange[9]

Yes

0x01a8

31:0

0x120A
1207

IASecureRdWrInValidAddrRange[10]

Yes

0x01ac

31:0

0x140A
1407

IASecureRdWrInValidAddrRange[11]

Yes

0x01b0

31:0

0x1C36
1C35

IASecureRdWrInValidAddrRange[12]

Yes

86

Intel Confidential

Refer Usage for:
“IASecureRdWrInValidAddrRange[0]
”

Yes
Yes

CDI/IBP#: 559702


SMIP Configurations

12.1.18
SMIP
Offset

IAInsecureRdWrInValidAddrRange[0] to [14]
Bits

Default
Value

Description
IAInsecureRdWrInValidAddrRange[0]
Insecure PMIC Black list Registers for HOST.
List of register ranges in PMIC which are
subject to write access control. Host does
NOT have access to these registers when
Secure.

0x0200

31:0

Usage/Comments
PMIC addressing utilizes 2 bytes:
MSB (byte 1) is base address; LSB
(byte 0) is the offset. The range is
from bits[15:0] to bits [31:16].

FIT
Visible
Yes

For example, a value of
"0x56781234" means:
0x1234 [15:0]: PMIC base address
0x12, offset 0x34
0x5678 [31:16]: PMIC base address
0x56, offset 0x78

0x4E924
E92

The PMIC address range from bits
[15:0] to bits [31:16] are
inaccessible for a secure HOST
Warning: Intel gives a
recommended default for this
configuration. Intel strongly
recommends not to change this
default. If OEM chooses to change
this default value, it will be at OEM
risk.
0x0204

31:0

0x4FCB
4FB5

IAInsecureRdWrInValidAddrRange[1]

0x0208

31:0

0x5E185
E16

IAInsecureRdWrInValidAddrRange[2]

0x020c

31:0

0x5E235
E22

IAInsecureRdWrInValidAddrRange[3]

Yes

0x0210

31:0

0x5E305
E30

IAInsecureRdWrInValidAddrRange[4]

Yes

0x0214

31:0

0x5E615
E3C

IAInsecureRdWrInValidAddrRange[5]

Yes

0x0218

31:0

0x5E6B
5E66

IAInsecureRdWrInValidAddrRange[6]

Yes

0x021c

31:0

0x5FAD
5FAC

IAInsecureRdWrInValidAddrRange[7]

Yes

0x0220

31:0

0x6F356
F00

IAInsecureRdWrInValidAddrRange[8]

Yes

0x0224

31:0

0x6FDB
6FD0

IAInsecureRdWrInValidAddrRange[9]

Yes

0x0228

31:0

0x6FE36
FDD

IAInsecureRdWrInValidAddrRange[10]

Yes

0x022c

31:0

0x1A0A
1A07

IAInsecureRdWrInValidAddrRange[11]

Yes

0x0230

31:0

0x120A
1207

IAInsecureRdWrInValidAddrRange[12]

Yes

0x0234

31:0

0x140A
1407

IAInsecureRdWrInValidAddrRange[13]

Yes

0x0238

31:0

0x1C36
1C35

IAInsecureRdWrInValidAddrRange[14]

Yes

CDI/IBP#: 559702

Intel Confidential

Refer Usage for:
“IAInsecureRdWrInValidAddrRange[
0]”

Yes
Yes

87

SMIP Configurations

12.1.19
SMIP
Offset

IAI2CVRRdWrInValidAddrRange[0]
Bits

Default
Value

Description
IAI2CVRRdWrInValidAddrRange[0]
List of register ranges in I2C voltage
regulator which are subject to write access
control.

FIT
Visible

Usage/Comments
I2CVR addressing utilizes 2 bytes:
MSB (byte 1) is base address; LSB
(byte 0) is the offset. The range is
from bits[15:0] to bits [31:16]. For
example, value 0x56781234 would
indicate I2CVR base address 0x12,
offset 0x34 to I2CVR base address
0x56, offset 0x78 are inaccessible.

Yes

For example, a value of
"0x56781234" means:

0x0280

31:0

0x1234 [15:0]: I2CVR base address
0x12, offset 0x34
0x5678 [31:16]: I2CVR base
address 0x56, offset 0x78

0x00

The I2CVR address range from bits
[15:0] to bits [31:16] are
inaccessible.
Warning: Intel gives a
recommended default for this
configuration. Intel strongly
recommends not to change this
default. If OEM chooses to change
this default value, it will be at OEM
risk.

12.1.20
SMIP
Offset

InsecureWrRegBitMskAddr[0] to [1]
Bits

Default
Value

Description
InsecureWrRegBitMskAddr[0]
Information for bitwise set or clear
permissions for the insecure blacklist
registers.

0x0300

0x0304

88

31:0

31:0

0x03034
FD3

0xFFFD5
E24

FIT
Visible

Usage/Comments
[7:0] = Register address offset
[15:8] = Register address device
[23:16] = Mask of bits which cannot
be SET on a write
[31:24] = Mask of bits which cannot
be CLEARED on a write

Yes

Warning: Intel gives a
recommended default for this
configuration. Intel strongly
recommends not to change this
default. If OEM chooses to change
this default value, it will be at OEM
risk.
InsecureWrRegBitMskAddr[1]

Intel Confidential

Refer Usage for:
“InsecureWrRegBitMskAddr[0]”

Yes

CDI/IBP#: 559702


SMIP Configurations

12.1.21
SMIP
Offset

SecureWrRegBitMskAddr[0]
Bits

Default
Value

Description

Usage/Comments

SecureWrRegBitMskAddr[0]
Information for bitwise set or clear
permissions for the secure blacklist registers.

0x0340

12.1.22
SMIP
Offset

31:0

0x03034
FD3

[7:0] = Register address offset
[15:8] = Register address device
[23:16] = Mask of bits which cannot
be SET on a write
[31:24] = Mask of bits which cannot
be CLEARED on a write

FIT
Visible
Yes

Warning: Intel gives a
recommended default for this
configuration. Intel strongly
recommends not to change this
default. If OEM chooses to change
this default value, it will be at OEM
risk.

I2C_VR_COMMON_CONFIG
Bits

Default
Value

31:3

0x0

Description

Usage/Comments

Reserved

No

I2C_SPEED_MODE
2:1

0x0

0x0380

Ignored if
I2C_VR_COMMON_CONFIG.I2C_PR
ESENT = 0.

0: STANDARD
1: FAST
2: FAST_PLUS
I2C_PRESENT

0:0

0x0

FIT
Visible

No

Yes

0: NOT_PRESENT
1: PRESENT

§§

CDI/IBP#: 559702

Intel Confidential

89



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : Yes
Author                          : CCG CCE Tech Pubs - Intel Corporation
Create Date                     : 2016:06:10 15:36:01Z
Modify Date                     : 2016:06:10 18:44:17+05:30
Has XFA                         : No
Language                        : en
Tagged PDF                      : Yes
XMP Toolkit                     : Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26
Producer                        : Acrobat Distiller 10.1.15 (Windows)
Creator Tool                    : FrameMaker 2015.0.3
Metadata Date                   : 2016:06:10 18:44:17+05:30
Format                          : application/pdf
Title                           : Apollo Lake SoC SPI and Signed Master Image Profile (SMIP) Programming Guide
Creator                         : CCG CCE Tech Pubs - Intel Corporation
Document ID                     : uuid:4a5440b1-94f1-462f-86fd-8070bef51698
Instance ID                     : uuid:0eb5d528-529c-45b5-9d6c-35ae08ad37cf
Page Layout                     : OneColumn
Page Mode                       : UseOutlines
Page Count                      : 81
Signing Date                    : 2016:06:10 18:44:17+05:30
Signing Authority               : ARE Acrobat Product v8.0 P23 0002337
Annotation Usage Rights         : Create, Delete, Modify, Copy, Import, Export
EXIF Metadata provided by EXIF.tools

Navigation menu