Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <[email protected]>
Cc: Yonghong Zhu <[email protected]>
---
2_fdf_design_discussion/21_processing_overview.md | 1 +
2_fdf_design_discussion/22_flash_description_file_format.md | 6 +++---
2_fdf_design_discussion/24_[fd]_sections.md | 5 +++--
3_edk_ii_fdf_file_format/32_fdf_definition.md | 2 ++
3_edk_ii_fdf_file_format/35_[fd]_sections.md | 8 ++++----
3_edk_ii_fdf_file_format/36_[fv]_sections.md | 2 +-
3_edk_ii_fdf_file_format/37_[capsule]_sections.md | 2 +-
7 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/2_fdf_design_discussion/21_processing_overview.md
b/2_fdf_design_discussion/21_processing_overview.md
index 7a045dd..68d70f0 100644
--- a/2_fdf_design_discussion/21_processing_overview.md
+++ b/2_fdf_design_discussion/21_processing_overview.md
@@ -108,6 +108,7 @@ FDF file.
The PCDs used in the FDF file must be specified as:
`PcdTokenSpaceGuidCName.PcdCName`
+or `PcdTokenSpaceGuidCName.PcdCName.PcdFieldName`
### 2.1.2 Precedence of PCD Values
diff --git a/2_fdf_design_discussion/22_flash_description_file_format.md
b/2_fdf_design_discussion/22_flash_description_file_format.md
index 368ce32..f266460 100644
--- a/2_fdf_design_discussion/22_flash_description_file_format.md
+++ b/2_fdf_design_discussion/22_flash_description_file_format.md
@@ -492,9 +492,9 @@ Unique PCDs are identified using the format to identify the
named PCD:
`PcdTokenSpaceGuidCName.PcdCName`
-The PCD's Name (`PcdName`) is defined as PCD Token Space Guid C name and the
-PCD C name - separated by a period "." character. PCD C names are used in C
-code and must follow the C variable name rules.
+The PCD's Name (`PcdName`) is defined as PCD Token Space Guid C name, the
+PCD C name and the optional field name - separated by a period "." character.
+PCD C names are used in C code and must follow the C variable name rules.
A PCD's values are positional with in the FDF file, and may be set by either
the automatic setting grammar defined in this specification, or through `SET`
diff --git a/2_fdf_design_discussion/24_[fd]_sections.md
b/2_fdf_design_discussion/24_[fd]_sections.md
index 04053a0..e532041 100644
--- a/2_fdf_design_discussion/24_[fd]_sections.md
+++ b/2_fdf_design_discussion/24_[fd]_sections.md
@@ -145,10 +145,11 @@ region, so the `SET` statement can occur anywhere within
an FD section.
`SET PcdName = VALUE`
-Additionally, a PCD Name is made up of two parts, separated by a period "."
-character. The format for a `PcdName` is:
+Additionally, a PCD Name is made up of two parts or three parts, separated
+by a period "." character. The format for a `PcdName` is:
`PcdTokenSpaceGuidCName.PcdCName`
+or `PcdTokenSpaceGuidCName.PcdCName.PcdFieldName`
The following is an example of the `SET` statement:
diff --git a/3_edk_ii_fdf_file_format/32_fdf_definition.md
b/3_edk_ii_fdf_file_format/32_fdf_definition.md
index 1379db4..6506a3d 100644
--- a/3_edk_ii_fdf_file_format/32_fdf_definition.md
+++ b/3_edk_ii_fdf_file_format/32_fdf_definition.md
@@ -174,9 +174,11 @@ The following are common definitions used by multiple
section types.
<BoolType> ::= {<TRUE>} {<FALSE>}
<MACRO> ::= (A-Z)(A-Z0-9_)*
<MACROVAL> ::= "$(" <MACRO> ")"
+<PcdFieldName> ::= <TokenSpaceGuidCName> "." <PcdCName> "." <Field>
<PcdName> ::= <TokenSpaceGuidCName> "." <PcdCName>
<PcdCName> ::= <CName>
<TokenSpaceGuidCName> ::= <CName>
+<Field> ::= <CName>
<PCDVAL> ::= "PCD(" <PcdName> ")"
<UINT8> ::= {"0x"} {"0X"} (\x0 - \xFF)
<UINT16> ::= "0x"} {"0X"} (\x0 - \xFFFF)
diff --git a/3_edk_ii_fdf_file_format/35_[fd]_sections.md
b/3_edk_ii_fdf_file_format/35_[fd]_sections.md
index 6c87ebd..f0003e7 100644
--- a/3_edk_ii_fdf_file_format/35_[fd]_sections.md
+++ b/3_edk_ii_fdf_file_format/35_[fd]_sections.md
@@ -62,11 +62,11 @@ Conditional statements may be used anywhere within this
section.
<TS> "Size" <Eq> <UINT64> [<SetPcd>] <EOL>
<TS> "ErasePolarity" <Eq> {"0"} {"1"} <EOL>
<BlockStatements>+
-<SetPcd> ::= <FS> <PcdName>
+<SetPcd> ::= <FS> {<PcdName>} {<PcdFieldName>}
<BlockStatements> ::= <TS> "BlockSize" <Eq> <UINT32> [<SetPcd>]
<EOL>
[<TS> "NumBlocks" <Eq> <UINT32> <EOL>]
-<SetStatements> ::= <TS> "SET" <PcdName> <Eq> <VALUE> <EOL>
+<SetStatements> ::= <TS> "SET" {<PcdName>} {<PcdFieldName>} <Eq> <VALUE>
<EOL>
<VALUE> ::= {<Number>} {<Boolean>} {<GUID>} {<CArray>}
{<CString>} {<UnicodeString>} {<Expression>}
<RegionLayout> ::= <TS> <Offset> <FS> <Size> <EOL>
@@ -86,8 +86,8 @@ Conditional statements may be used anywhere within this
section.
<InfFile> ::= <PATH> <Word> ".inf" [<FS> <RelocFlags>]
<RelocFlags> ::= {"RELOCS_STRIPPED"} {"RELOCS_RETAINED"}
<CapsuleRegion> ::= <TS> "CAPSULE" <Eq> UiCapsuleName <EOL>
-<PcdOffset> ::= <PcdName>
-<PcdSize> ::= <PcdName>
+<PcdOffset> ::= {<PcdName>} {<PcdFieldName>}
+<PcdSize> ::= {<PcdName>} {<PcdFieldName>}
<FvType> ::= <TS> "FV" <Eq> <FvNameOrFilename> <EOL>
<FileType> ::= <TS> "FILE" <Eq> <BinaryFile> <EOL>
<DataType> ::= <TS> "DATA" <Eq>
diff --git a/3_edk_ii_fdf_file_format/36_[fv]_sections.md
b/3_edk_ii_fdf_file_format/36_[fv]_sections.md
index b4f292a..633b4a7 100644
--- a/3_edk_ii_fdf_file_format/36_[fv]_sections.md
+++ b/3_edk_ii_fdf_file_format/36_[fv]_sections.md
@@ -86,7 +86,7 @@ Conditional statements may be used anywhere within this
section.
<BlockStatements> ::= <FixedBlocks>
<FixedBlocks> ::= [<TS> "BlockSize" <Eq> <UINT32> <EOL>]
[<TS> "NumBlocks" <Eq> <UINT32> <EOL>]
-<SetStatements> ::= <TS> "SET" <MTS> <PcdName> <Eq> <VALUE> <EOL>
+<SetStatements> ::= <TS> "SET" <MTS> {<PcdName>} {<PcdFieldName>} <Eq>
<VALUE> <EOL>
<VALUE> ::= {<Number>} {<Boolean>} {<GUID>} {<CArray>}
{<CString>} {<UnicodeString>} {<Expression>}
<FvAlignment> ::= [<TS> "FvBaseAddress" <Eq> <UINT64> <EOL>]
diff --git a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
index 6606d56..fe8721c 100644
--- a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
+++ b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
@@ -49,7 +49,7 @@ Conditional statements may be used anywhere within this
section.
<UefiTokens>
<CapsuleStmts>*
<UiCapsuleName> ::= "." <Word>
-<SetStatements> ::= <TS> "SET" <MTS> <PcdName> <Eq> <VALUE> <EOL>
+<SetStatements> ::= <TS> "SET" <MTS> {<PcdName>} {<PcdFieldName>} <Eq>
<VALUE> <EOL>
<VALUE> ::= {<Number>} {<Boolean>} {<GUID>} {<CArray>}
{<CString>} {<UnicodeString>} {<Expression>}
<UefiTokens> ::= <TS> "CAPSULE_GUID" <Eq> <GuidValue> <EOL>
--
2.8.0.windows.1
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel