From: Ming Huang <ming.huang@linaro.org>
To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org,
edk2-devel@lists.01.org, graeme.gregory@linaro.org
Cc: ard.biesheuvel@linaro.org, guoheyi@huawei.com,
wanghuiqiang@huawei.com, huangming23@huawei.com,
zhangjinsong2@huawei.com, huangdaode@hisilicon.com,
john.garry@huawei.com, xinliang.liu@linaro.org,
Yang XinYi <yangxingyi@huawei.com>,
Ming Huang <ming.huang@linaro.org>,
Heyi Guo <heyi.guo@linaro.org>
Subject: [PATCH edk2-platforms v1 11/38] Hisilicon/D06: Add Hi1620OemConfigUiLib
Date: Tue, 24 Jul 2018 15:08:55 +0800 [thread overview]
Message-ID: <20180724070922.63362-12-ming.huang@linaro.org> (raw)
In-Reply-To: <20180724070922.63362-1-ming.huang@linaro.org>
From: Yang XinYi <yangxingyi@huawei.com>
This library is added for oem setup menu item.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yang XinYi <yangxingyi@huawei.com>
Signed-off-by: Ming Huang <ming.huang@linaro.org>
Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
---
Platform/Hisilicon/D06/D06.dsc | 5 +-
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr | 154 ++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni | 172 +++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr | 41 +++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni | 36 ++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c | 380 ++++++++++++++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h | 141 ++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h | 64 ++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf | 67 ++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni | 24 ++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni | 64 ++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.Vfr | 89 +++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr | 219 +++++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni | 185 ++++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr | 167 +++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr | 171 +++++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni | 135 +++++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr | 80 +++++
Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni | 49 +++
Silicon/Hisilicon/HisiPkg.dec | 1 +
Silicon/Hisilicon/Include/Library/OemConfigData.h | 84 +++++
21 files changed, 2327 insertions(+), 1 deletion(-)
diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc
index 392225250f..6f3786f0eb 100644
--- a/Platform/Hisilicon/D06/D06.dsc
+++ b/Platform/Hisilicon/D06/D06.dsc
@@ -334,7 +334,10 @@
#ACPI
#
MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf
+ Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf {
+ <LibraryClasses>
+ NULL|Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf
+ }
Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf
Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr
new file mode 100644
index 0000000000..c709975c38
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr
@@ -0,0 +1,154 @@
+/** @file
+*
+* Memory Config form at Oem Config fromset.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+form formid = MEMORY_CONFIG_FORM_ID,
+ title = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.DdrDebugLevel,
+ prompt = STRING_TOKEN (STR_MEM_PRINT_LEVEL_PROMPT),
+ help = STRING_TOKEN (STR_MEM_PRINT_LEVEL_HELP),
+ option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MINIMUM), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MINMAX), value = 2, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MAXIMUM), value = 3, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.DdrFreqLimit,
+ prompt = STRING_TOKEN(STR_XMP_DDR_FREQ_LIMIT_PROMPT),
+ help = STRING_TOKEN(STR_XMP_DDR_FREQ_LIMIT_HELP),
+ option text = STRING_TOKEN(STR_AUTO), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DDR_FREQ_1333_STRING), value = 5, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DDR_FREQ_1600_STRING), value = 7, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DDR_FREQ_1866_STRING), value = 9, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DDR_FREQ_2133_STRING), value = 11, flags = RESET_REQUIRED ;
+ option text = STRING_TOKEN(STR_DDR_FREQ_2400_STRING), value = 13, flags = RESET_REQUIRED ;
+ option text = STRING_TOKEN(STR_DDR_FREQ_2667_STRING), value = 15, flags = RESET_REQUIRED ;
+ option text = STRING_TOKEN(STR_DDR_FREQ_2933_STRING), value = 17, flags = RESET_REQUIRED ;
+ option text = STRING_TOKEN(STR_DDR_FREQ_3200_STRING), value = 19, flags = RESET_REQUIRED ;
+ endoneof;
+
+ suppressif TRUE;
+ oneof varid = OEM_CONFIG_DATA.DdrRefreshSupport,
+ prompt = STRING_TOKEN(STR_DDR_REFRESH_SUPPORT_PROMPT),
+ help = STRING_TOKEN(STR_DDR_REFRESH_SUPPORT_HELP),
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ endoneof;
+
+ suppressif ideqval OEM_CONFIG_DATA.DdrRefreshSupport == 0;
+ oneof varid = OEM_CONFIG_DATA.DdrRefreshRate,
+ prompt = STRING_TOKEN(STR_DDR_REFRESH_PROMPT),
+ help = STRING_TOKEN(STR_DDR_REFRESH_HELP),
+ option text = STRING_TOKEN(STR_32MS), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_64MS), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+
+ oneof varid = OEM_CONFIG_DATA.RankMargin,
+ prompt = STRING_TOKEN (STR_RMT_PROMPT),
+ help = STRING_TOKEN (STR_RMT_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ suppressif ideqval OEM_CONFIG_DATA.RankMargin == 0;
+ oneof varid = OEM_CONFIG_DATA.RankMarginMode,
+ prompt = STRING_TOKEN (STR_RMTM_PROMPT),
+ help = STRING_TOKEN (STR_RMTM_HELP),
+ option text = STRING_TOKEN (STR_RMTM_SFC), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_RMTM_EXMBIST), value = 2, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
+ endoneof;
+
+ numeric varid = OEM_CONFIG_DATA.rmtPatternLength,
+ prompt = STRING_TOKEN (STR_RMT_PATTERN_PROMPT),
+ help = STRING_TOKEN (STR_RMT_PATTERN_HELP),
+ flags = RESET_REQUIRED,
+ minimum = 1,
+ maximum = 32767,
+ step = 1,
+ default = RMT_PATTERN_LENGTH,
+ endnumeric;
+
+ oneof varid = OEM_CONFIG_DATA.perbitmargin,
+ prompt = STRING_TOKEN (STR_PER_BIT_MARGIN_PROMPT),
+ help = STRING_TOKEN (STR_PER_BIT_MARGIN_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.CaMargin,
+ prompt = STRING_TOKEN (STR_CA_MARGINS_PROMPT),
+ help = STRING_TOKEN (STR_CA_MARGINS_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.CaVrefMarginOption,
+ prompt = STRING_TOKEN (STR_CAVREF_MARGINS_PROMPT),
+ help = STRING_TOKEN (STR_CAVREF_MARGINS_HELP),
+ option text = STRING_TOKEN (STR_CAVREF_MARGINS_OPTION0), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_CAVREF_MARGINS_OPTION2), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+
+ oneof varid = OEM_CONFIG_DATA.DieInterleaving,
+ prompt = STRING_TOKEN(STR_DIE_INTERLEAVING_PROMPT),
+ help = STRING_TOKEN(STR_DIE_INTERLEAVING_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.ChannelInterleaving,
+ prompt = STRING_TOKEN(STR_CHANNEL_INTERLEAVING_PROMPT),
+ help = STRING_TOKEN(STR_CHANNEL_INTERLEAVING_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.RankInterleaving,
+ prompt = STRING_TOKEN(STR_RANK_INTERLEAVING_PROMPT),
+ help = STRING_TOKEN(STR_RANK_INTERLEAVING_HELP),
+ option text = STRING_TOKEN(STR_1WAY_STRING), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_2WAY_STRING), value = 2, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_4WAY_STRING), value = 4, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.NumaEn,
+ prompt = STRING_TOKEN(STR_NUMA_PROMPT),
+ help = STRING_TOKEN(STR_NUMA_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.HwMemTest,
+ prompt = STRING_TOKEN (STR_MEM_TEST_PROMPT),
+ help = STRING_TOKEN (STR_MEM_TEST_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.EccSupport,
+ prompt = STRING_TOKEN (STR_ECC_SUPPORT_PROMPT),
+ help = STRING_TOKEN (STR_ECC_SUPPORT_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ECC_EN), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_SDEC_EN), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+
+endform;
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni
new file mode 100644
index 0000000000..5caf42c18f
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni
@@ -0,0 +1,172 @@
+/** @file
+*
+* String definitions for the Memory Config.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+/=#
+
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_MEMORY_CONFIG_FORM_TITLE #language en-US "Memory Configuration"
+ #language fr-FR "Configuration de la mémoire"
+#string STR_MEMORY_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Memory Settings"
+ #language fr-FR "Affiche et fournit l'option pour modifier les paramètres de la mémoire"
+#string STR_MEMORY_RAS_CONFIG_FORM_TITLE #language en-US "Memory RAS Configuration"
+ #language fr-FR "Configuration de la mémoire RAS"
+#string STR_MEMORY_RAS_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Ras Configuration"
+ #language fr-FR "Affiche et fournit l'option de modification de la configuration RAS"
+#string STR_MEM_PRINT_LEVEL_PROMPT #language en-US "Memory Print Level"
+ #language fr-FR "Niveau d'impression mémoire"
+#string STR_MEM_PRINT_LEVEL_HELP #language en-US "Memory Print Level Set. Disable: Do not print any MRC statement/ Minimum: Print the most important(High level) MRC statement/ Minmax: Print the Mid-important(Mid level) and most important MRC statement/ Maximum: Print all of the MRC statement"
+ #language fr-FR "Niveau d'impression mémoire réglé. Désactiver: n'imprimez aucune instruction MRC/minimum: imprimez le plus important (haut niveau) MRC Statement/MinMax: imprimez le Mid-important (moyen niveau) et la plus importante déclaration MRC/maximum: imprimer tous les énoncés du MRC"
+#string STR_ENABLE #language en-US "Enabled"
+ #language fr-FR "Activé"
+#string STR_DISABLE #language en-US "Disabled"
+ #language fr-FR "Handicapés"
+
+#string STR_MEM_PRINT_LEVEL_MINIMUM #language en-US "Minimum"
+ #language fr-FR "Minimum"
+#string STR_MEM_PRINT_LEVEL_MINMAX #language en-US "Minmax"
+ #language fr-FR "MinMax"
+#string STR_MEM_PRINT_LEVEL_MAXIMUM #language en-US "Maximum"
+ #language fr-FR "Maximum"
+#string STR_MEM_PRINT_LEVEL_DISABLE #language en-US "Disable"
+ #language fr-FR "Désactiver"
+
+#string STR_XMP_DDR_FREQ_LIMIT_PROMPT #language en-US "Memory Frequency"
+ #language fr-FR "Fréquence de mémoire"
+#string STR_XMP_DDR_FREQ_LIMIT_HELP #language en-US "Maximum Memory Frequency Selections in Mhz. Do not select Reserved"
+ #language fr-FR "Sélections maximales de fréquence de mémoire en MHz. Ne sélectionnez pas réservé"
+#string STR_AUTO #language en-US "Auto"
+ #language fr-FR "Voiture"
+#string STR_DDR_FREQ_1333_STRING #language en-US "1333"
+ #language fr-FR "1333"
+#string STR_DDR_FREQ_1600_STRING #language en-US "1600"
+ #language fr-FR "1600"
+#string STR_DDR_FREQ_1866_STRING #language en-US "1866"
+ #language fr-FR "1866"
+#string STR_DDR_FREQ_2133_STRING #language en-US "2133"
+ #language fr-FR "2133"
+#string STR_DDR_FREQ_2400_STRING #language en-US "2400"
+ #language fr-FR "2400"
+#string STR_DDR_FREQ_2600_STRING #language en-US "2600"
+ #language fr-FR "2600"
+#string STR_DDR_FREQ_2667_STRING #language en-US "2667"
+ #language fr-FR "2667"
+#string STR_DDR_FREQ_2800_STRING #language en-US "2800"
+ #language fr-FR "2800"
+#string STR_DDR_FREQ_2933_STRING #language en-US "2993"
+ #language fr-FR "2993"
+#string STR_DDR_FREQ_3000_STRING #language en-US "3000"
+ #language fr-FR "3000"
+#string STR_DDR_FREQ_3200_STRING #language en-US "3200"
+ #language fr-FR "3200"
+
+#string STR_DDR_REFRESH_SUPPORT_PROMPT #language en-US "Custom Refresh Enable"
+ #language fr-FR "Activer l'actualisation personnalisée"
+#string STR_DDR_REFRESH_SUPPORT_HELP #language en-US "Memory Custom Refresh Enable "
+ #language fr-FR "Mémoire personnalisée actualiser activer"
+#string STR_DDR_REFRESH_PROMPT #language en-US "Custom Refresh Rate"
+ #language fr-FR "Taux de rafra?chissement personnalisé"
+#string STR_DDR_REFRESH_HELP #language en-US "Memory Custom Refresh Rate "
+ #language fr-FR "Taux de rafra?chissement personnalisé de la mémoire"
+#string STR_32MS #language en-US "32ms"
+ #language fr-FR "32ms"
+#string STR_64MS #language en-US "64ms"
+ #language fr-FR "64ms"
+
+#string STR_RMT_PROMPT #language en-US "Rank Margin Tool"
+ #language fr-FR "Outil marge de classement"
+#string STR_RMT_HELP #language en-US "Enable the rank margin tool to run after DDR memory training"
+ #language fr-FR "Activer l'outil marge de rang pour exécuter après la formation mémoire DDR"
+#string STR_RMTM_PROMPT #language en-US "Rank Margin Mode"
+ #language fr-FR "Mode de marge de classement"
+#string STR_RMTM_HELP #language en-US "Select test mode for rank margin test"
+ #language fr-FR "Sélectionner le mode test pour le test de marge de rang"
+#string STR_RMTM_SFC #language en-US "SFC"
+ #language fr-FR "SFC"
+#string STR_RMTM_EXMBIST #language en-US "EXMBIST"
+ #language fr-FR "EXMBIST"
+#string STR_RMT_PATTERN_PROMPT #language en-US "RMT Pattern Length"
+ #language fr-FR "Longueur de modèle de RMT"
+#string STR_RMT_PATTERN_HELP #language en-US "Set the pattern length(1-32767) for the Rank Margin Tool"
+ #language fr-FR "Définir la longueur du modèle (1-32 767) pour l'outil marge de classement"
+#string STR_PER_BIT_MARGIN_PROMPT #language en-US "Per Bit Margin"
+ #language fr-FR "Marge par bit"
+#string STR_PER_BIT_MARGIN_HELP #language en-US "Enables the logging from the serial port of DDR Per Bit Margin Data"
+ #language fr-FR "Active la journalisation à partir du port série de données de marge DDR par bit"
+#string STR_CA_MARGINS_PROMPT #language en-US "CA Margin"
+ #language fr-FR "Marge de ca"
+#string STR_CA_MARGINS_HELP #language en-US "Enables CA margin"
+ #language fr-FR "Active la marge de ca"
+#string STR_CAVREF_MARGINS_PROMPT #language en-US "CAVref Margin"
+ #language fr-FR "Marge CAVref"
+#string STR_CAVREF_MARGINS_HELP #language en-US "CAVref margin Options"
+ #language fr-FR "Options de marge CAVref"
+#string STR_CAVREF_MARGINS_OPTION0 #language en-US "VDD/2^2 connected to QVrefVA and BVrefCA"
+ #language fr-FR "DMV/2 ^ 2 connecté à QVrefVA et BVrefCA"
+#string STR_CAVREF_MARGINS_OPTION2 #language en-US "Internally generated Vref connected to QVrefCA^3 VDD/2^2 connected to BVrefCA"
+ #language fr-FR "Vref interne connecté à QVrefCA ^ 3 DMV/2 ^ 2 connecté à BVrefCA"
+
+#string STR_DIE_INTERLEAVING_PROMPT #language en-US "Die Interleaving"
+ #language fr-FR "L'entrelacement"
+#string STR_DIE_INTERLEAVING_HELP #language en-US "Select Die Interleaving setting"
+ #language fr-FR "Sélectionner le paramètre d'entrelacement de matrice"
+#string STR_CHANNEL_INTERLEAVING_PROMPT #language en-US "Channel Interleaving"
+ #language fr-FR "Entrelacement de canaux"
+#string STR_CHANNEL_INTERLEAVING_HELP #language en-US "Select Channel Interleaving setting"
+ #language fr-FR "Sélectionner le paramètre d'entrelacement de canal"
+#string STR_RANK_INTERLEAVING_PROMPT #language en-US "Rank Interleaving"
+ #language fr-FR "Entrelacement de rang"
+#string STR_RANK_INTERLEAVING_HELP #language en-US "Select Rank Interleaving setting"
+ #language fr-FR "Sélectionner le paramètre d'entrelacement de rang"
+
+#string STR_1WAY_STRING #language en-US "1-way Interleave"
+ #language fr-FR "1-Way Interleave"
+#string STR_2WAY_STRING #language en-US "2-way Interleave"
+ #language fr-FR "2-way Interleave"
+#string STR_3WAY_STRING #language en-US "3-way Interleave"
+ #language fr-FR "3-way Interleave"
+#string STR_4WAY_STRING #language en-US "4-way Interleave"
+ #language fr-FR "4-way Interleave"
+#string STR_6WAY_STRING #language en-US "6-way Interleave"
+ #language fr-FR "6-way Interleave"
+#string STR_8WAY_STRING #language en-US "8-way Interleave"
+ #language fr-FR "8-way Interleave"
+
+#string STR_NUMA_PROMPT #language en-US "NUMA"
+ #language fr-FR "NUMA"
+#string STR_NUMA_HELP #language en-US "Enable or Disable Non uniform Memory Access (NUMA)."
+ #language fr-FR "Activer ou désactiver l'accès mémoire non uniforme (NUMA)."
+
+#string STR_MEM_TEST_PROMPT #language en-US "Memory Test"
+ #language fr-FR "Test de mémoire"
+#string STR_MEM_TEST_HELP #language en-US "Enable/disable memory test during normal boot"
+ #language fr-FR "Activer/désactiver le test de mémoire pendant le démarrage normal"
+
+#string STR_ECC_SUPPORT_PROMPT #language en-US "ECC/SDEC Support"
+ #language fr-FR "ECC/SDEC Support"
+#string STR_ECC_SUPPORT_HELP #language en-US "Enable/disable DDR Ecc/SDEC Support"
+ #language fr-FR "Enable/disable DDR Ecc/SDEC Support"
+#string STR_ECC_EN #language en-US "Ecc Enable"
+ #language fr-FR "Ecc Enable"
+#string STR_SDEC_EN #language en-US "SDEC Enable"
+ #language fr-FR "SDEC Enable"
+
+
+
+
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr
new file mode 100644
index 0000000000..9e3ac73116
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr
@@ -0,0 +1,41 @@
+/** @file
+*
+* Misc Config form at Oem Config fromset.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+form formid = MISC_CONFIG_FORM_ID,
+ title = STRING_TOKEN(STR_MISC_CONFIG_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.EnableSmmu,
+ prompt = STRING_TOKEN(STR_OEM_TABLE),
+ help = STRING_TOKEN(STR_OEM_CONFIG_HELP),
+ option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = 0;
+ option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = DEFAULT;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.EnableFdtTable,
+ prompt = STRING_TOKEN(STR_FDT_TABLE),
+ help = STRING_TOKEN(STR_FDT_CONFIG_HELP),
+ option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = 0;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.EnableSpcr,
+ prompt = STRING_TOKEN(STR_ENABLE_SPCR_TABLE),
+ help = STRING_TOKEN(STR_ENABLE_SPCR_HELP),
+ option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = 0;
+ endoneof;
+
+endform;
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni
new file mode 100644
index 0000000000..5ad1d1df30
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni
@@ -0,0 +1,36 @@
+/** @file
+*
+* String definitions for the Misc Config form.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_OEM_TABLE #language en-US "Support Smmu"
+ #language fr-FR "Support Smmu"
+#string STR_OEM_CONFIG_HELP #language en-US "Enable or Disable Smmu."
+ #language fr-FR "Activer ou désactiver Smmu."
+#string STR_FDT_TABLE #language en-US "Install DTB Table"
+ #language fr-FR "Installer la table DTB"
+#string STR_FDT_CONFIG_HELP #language en-US "Enable or Disable Fdt Table."
+ #language fr-FR "Activer ou désactiver la table FDT."
+#string STR_ENABLE_SPCR_TABLE #language en-US "Support SPCR"
+ #language fr-FR "Support SPCR"
+#string STR_ENABLE_SPCR_HELP #language en-US "Enable or Disable SPCR Table."
+ #language fr-FR "Activer ou désactiver la table SPCR."
+#string STR_ENABLE_GOP_FRAME_BUFFER #language en-US "Support GOP FB"
+ #language fr-FR "Support GOP FB"
+#string STR_ENABLE_GOP_FRAME_BUFFER_HELP #language en-US "Enable or Disable GOP frame buffer."
+ #language fr-FR "Activer ou désactiver Buffer de frame GOP."
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c
new file mode 100644
index 0000000000..586094dfbf
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c
@@ -0,0 +1,380 @@
+/** @file
+The OEM config reference implementation
+
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#include "OemConfig.h"
+
+struct MonthDescription {
+ CONST CHAR8* MonthStr;
+ UINT32 MonthInt;
+} gMonthDescription[] = {
+ { "Jan", 1 },
+ { "Feb", 2 },
+ { "Mar", 3 },
+ { "Apr", 4 },
+ { "May", 5 },
+ { "Jun", 6 },
+ { "Jul", 7 },
+ { "Aug", 8 },
+ { "Sep", 9 },
+ { "Oct", 10 },
+ { "Nov", 11 },
+ { "Dec", 12 },
+ { "???", 1 }, // Use 1 as default month
+};
+
+OEM_CONFIG_CALLBACK_DATA mOemConfigPrivate = {
+ OEM_CONFIG_CALLBACK_DATA_SIGNATURE,
+ NULL,
+ NULL,
+ {
+ OemExtractConfig,
+ OemRouteConfig,
+ OemCallback
+ }
+};
+
+HII_VENDOR_DEVICE_PATH mOemHiiVendorDevicePath = {
+ {
+ {
+ HARDWARE_DEVICE_PATH,
+ HW_VENDOR_DP,
+ {
+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
+ }
+ },
+ { 0x874c4dcb, 0x08ec, 0x4fe6, { 0xb5, 0x8e, 0x3a, 0x9e, 0x1c, 0x26, 0x70, 0xb9 } }
+ },
+ {
+ END_DEVICE_PATH_TYPE,
+ END_ENTIRE_DEVICE_PATH_SUBTYPE,
+ {
+ (UINT8) (END_DEVICE_PATH_LENGTH),
+ (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
+ }
+ }
+};
+
+
+
+
+
+
+/**
+ This function allows a caller to extract the current configuration for one
+ or more named elements from the target driver.
+
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Request A null-terminated Unicode string in <ConfigRequest> format.
+ @param Progress On return, points to a character in the Request string.
+ Points to the string's null terminator if request was successful.
+ Points to the most recent '&' before the first failing name/value
+ pair (or the beginning of the string if the failure is in the
+ first name/value pair) if the request was not successful.
+ @param Results A null-terminated Unicode string in <ConfigAltResp> format which
+ has all values filled in for the names in the Request string.
+ String to be allocated by the called function.
+
+ @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name.
+ @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
+
+**/
+EFI_STATUS
+EFIAPI
+OemExtractConfig (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN CONST EFI_STRING Request,
+ OUT EFI_STRING *Progress,
+ OUT EFI_STRING *Results
+ )
+{
+ if (Progress == NULL || Results == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+ *Progress = Request;
+ return EFI_NOT_FOUND;
+}
+
+/**
+ This function processes the results of changes in configuration.
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Configuration A null-terminated Unicode string in <ConfigResp> format.
+ @param Progress A pointer to a string filled in with the offset of the most
+ recent '&' before the first failing name/value pair (or the
+ beginning of the string if the failure is in the first
+ name/value pair) or the terminating NULL if all was successful.
+
+ @retval EFI_INVALID_PARAMETER Configuration is NULL.
+ @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
+
+**/
+EFI_STATUS
+EFIAPI
+OemRouteConfig (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN CONST EFI_STRING Configuration,
+ OUT EFI_STRING *Progress
+ )
+{
+ if (Configuration == NULL || Progress == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ *Progress = Configuration;
+
+ return EFI_NOT_FOUND;
+}
+
+/**
+ This function is invoked if user selected a interactive opcode from Device Manager's
+ Formset. If user set VBIOS, the new value is saved to EFI variable.
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Action Specifies the type of action taken by the browser.
+ @param QuestionId A unique value which is sent to the original exporting driver
+ so that it can identify the type of data to expect.
+ @param Type The type of value for the question.
+ @param Value A pointer to the data being sent to the original exporting driver.
+ @param ActionRequest On return, points to the action requested by the callback function.
+
+ @retval EFI_SUCCESS The callback successfully handled the action.
+ @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
+
+**/
+EFI_STATUS
+EFIAPI
+OemCallback (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN EFI_BROWSER_ACTION Action,
+ IN EFI_QUESTION_ID QuestionId,
+ IN UINT8 Type,
+ IN EFI_IFR_TYPE_VALUE *Value,
+ OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
+ )
+{
+ if (Action != EFI_BROWSER_ACTION_CHANGING) {
+ //
+ // Do nothing for other UEFI Action. Only do call back when data is changed.
+ //
+ return EFI_UNSUPPORTED;
+ }
+ if ((Value == NULL) || (ActionRequest == NULL)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Install Boot Manager Menu driver.
+
+ @param ImageHandle The image handle.
+ @param SystemTable The system table.
+
+ @retval EFI_SUCEESS Install Boot manager menu success.
+ @retval Other Return error status.
+
+**/
+EFI_STATUS
+EFIAPI
+OemConfigUiLibConstructor (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status;
+ OEM_CONFIG_DATA Configuration;
+ VOID *Hob;
+ VERSION_INFO *VersionInfo;
+ UINTN BufSize;
+ BOOLEAN Action;
+ EFI_STRING ConfigRequestHdr;
+ EFI_TIME Time = {0};
+ CHAR16 TmpString[0x100] = {0};
+ UINT8 Port;
+
+ mOemConfigPrivate.DriverHandle = NULL;
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mOemConfigPrivate.DriverHandle,
+ &gEfiDevicePathProtocolGuid,
+ &mOemHiiVendorDevicePath,
+ &gEfiHiiConfigAccessProtocolGuid,
+ &mOemConfigPrivate.ConfigAccess,
+ NULL
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ //
+ // Publish our HII data.
+ //
+ mOemConfigPrivate.HiiHandle = HiiAddPackages (
+ &gOemConfigGuid,
+ mOemConfigPrivate.DriverHandle,
+ OemConfigVfrBin,
+ OemConfigUiLibStrings,
+ NULL
+ );
+ if (mOemConfigPrivate.HiiHandle == NULL) {
+ DEBUG ((DEBUG_ERROR, "OemConfigUiLibConstructor(), Fail to Add Oem Hii Package.\n"));
+ return EFI_INVALID_PARAMETER;
+ }
+ //
+ //BIOS Build Time Init
+ //
+ Hob = GetFirstGuidHob (&gVersionInfoHobGuid);
+ if (Hob == NULL) {
+ DEBUG ((DEBUG_ERROR, "[%a]:[%d] Version information HOB not found!\n", __FILE__, __LINE__));
+ return EFI_NOT_FOUND;
+ }
+ VersionInfo = GET_GUID_HOB_DATA (Hob);
+ Time = VersionInfo->BuildTime;
+ UnicodeSPrint (TmpString, 50, L"%02d/%02d/%04d %02d:%02d", Time.Month, Time.Day, Time.Year, Time.Hour, Time.Minute);
+ HiiSetString (mOemConfigPrivate.HiiHandle, STRING_TOKEN (STR_MISC_BIOS_BUILDTIME), TmpString, "en-US");
+ //
+ // Check Oem Config Variable.
+ //
+ ConfigRequestHdr = HiiConstructConfigHdr (&gOemConfigGuid, OEM_CONFIG_NAME, mOemConfigPrivate.DriverHandle);
+ ZeroMem (&Configuration, sizeof (OEM_CONFIG_DATA));
+ BufSize = sizeof (OEM_CONFIG_DATA);
+ Status = gRT->GetVariable (OEM_CONFIG_NAME, &gOemConfigGuid, NULL, &BufSize, &Configuration);
+ if (EFI_ERROR (Status)) {
+ Action = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD);
+ if (!Action) {
+ //
+ //Set the default value of the DDR option
+ //
+ Configuration.DdrDebugLevel = 0;
+ Configuration.DdrFreqLimit = 0;
+ Configuration.DdrRefreshSupport = 0;
+ Configuration.DdrRefreshRate = 0;
+ Configuration.RankMargin = 0;
+ Configuration.RankMarginMode = 2;
+ Configuration.rmtPatternLength = 256;
+ Configuration.perbitmargin = 0x0;
+ Configuration.CaMargin = 0x0;
+ Configuration.CaVrefMarginOption = 0x0;
+ Configuration.NumaEn = 1;
+ Configuration.HwMemTest = 0;
+ Configuration.DieInterleaving = 0;
+ Configuration.ChannelInterleaving = 1;
+ Configuration.RankInterleaving = 2;
+ Configuration.EccSupport = 0;
+ //
+ //Set the default value of the BMC option
+ //
+ Configuration.BmcWdtEnable = 0;
+ Configuration.BmcWdtTimeout = 15;
+ Configuration.BmcWdtAction = 1;
+ Configuration.OSWdtEnable = 0;
+ Configuration.OSWdtTimeout = 5;
+ Configuration.OSWdtAction = 1;
+ //
+ //Set the default value of the PCIe option
+ //
+ for (Port = 0; Port < PCIE_MAX_TOTAL_PORTS; Port++) {
+ if (Port == 0 || Port == 1 || Port == 3 ||
+ Port == 8 || Port == 9 || Port == 11 || Port == 14 || Port == 15) {
+ Configuration.PciePort[Port] = 0;
+ } else {
+ Configuration.PciePort[Port] = 1;
+ }
+ Configuration.PcieSRIOVSupport = 0;
+ Configuration.PcieLinkSpeedPort[Port] = 3;
+ Configuration.PcieLinkDeEmphasisPort[Port] = 0;
+ if (Port == 2 || Port == 5 || Port == 10 || Port == 12 || Port == 13) {
+ Configuration.PcieLinkDeEmphasisPort[Port] = 1;
+ }
+ Configuration.PcieLinkStatusPort[Port] = 0;
+ Configuration.PcieMaxPayloadSizePort[Port] = 0;
+ Configuration.PcieLinkSpeedRateStatusPort[Port] = 0;
+ Configuration.PcieLinkMaxPort[Port] = 8;
+ Configuration.PcieAspmPort[Port] = 0;
+ }
+ //
+ //Set the default value of the Misc option
+ //
+ Configuration.EnableSmmu = 1;
+ Configuration.EnableFdtTable = 0;
+ Configuration.EnableSpcr = 0;
+ //Configuration.EnableGOP=0;
+ //
+ //Set the default value of the Ras option
+ //
+ Configuration.EnRasSupport = 1;
+ Configuration.EnPoison = 1;
+ Configuration.CheckAlgorithm = 0;
+ Configuration.PatrolScrub = 1;
+ Configuration.PatrolScrubDuration = 24;
+ Configuration.DemandScrubMode = 0;
+ Configuration.CorrectErrorThreshold = 0;
+ Configuration.AdvanceDeviceCorrection = 0;
+ Configuration.RankSparing = 0;
+ Configuration.FunnelPeriod = 0;
+ Configuration.DpcFeature = 0;
+ Configuration.EcrcFeature = 0;
+ Configuration.CompletionTimeout = 1;
+ Configuration.CompletionTimeoutValue = 0;
+ Configuration.HotPlug = 1;
+ Status = gRT->SetVariable (
+ OEM_CONFIG_NAME,
+ &gOemConfigGuid,
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+ sizeof (OEM_CONFIG_DATA),
+ &Configuration
+ );
+ }
+ } else {
+ Action = HiiValidateSettings (ConfigRequestHdr);
+ if (!Action) {
+ return EFI_INVALID_PARAMETER;
+ }
+ }
+ return EFI_SUCCESS;
+}
+
+/**
+ Unloads the application and its installed protocol.
+
+ @param ImageHandle Handle that identifies the image to be unloaded.
+ @param SystemTable The system table.
+
+ @retval EFI_SUCCESS The image has been unloaded.
+**/
+EFI_STATUS
+EFIAPI
+OemConfigUiLibDestructor (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status;
+
+ Status = gBS->UninstallMultipleProtocolInterfaces (
+ mOemConfigPrivate.DriverHandle,
+ &gEfiDevicePathProtocolGuid,
+ &mOemHiiVendorDevicePath,
+ &gEfiHiiConfigAccessProtocolGuid,
+ &mOemConfigPrivate.ConfigAccess,
+ NULL
+ );
+
+ HiiRemovePackages (mOemConfigPrivate.HiiHandle);
+
+ return Status;
+}
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h
new file mode 100644
index 0000000000..a03d0c2cda
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h
@@ -0,0 +1,141 @@
+/** @file
+The Oem config reference implement
+
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _OEM_CONFIG_H_
+#define _OEM_CONFIG_H_
+
+#include <Guid/HiiPlatformSetupFormset.h>
+#include <Guid/MdeModuleHii.h>
+#include <Guid/VersionInfoHobGuid.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/DevicePathLib.h>
+#include <Library/HiiLib.h>
+#include <Library/HobLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include "Library/OemConfigData.h"
+#include <Library/PcdLib.h>
+#include <Library/PrintLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/UefiHiiServicesLib.h>
+#include <Library/UefiRuntimeServicesTableLib.h>
+#include <Pi/PiFirmwareVolume.h>
+#include <Protocol/HiiConfigAccess.h>
+
+//
+// These are the VFR compiler generated data representing our VFR data.
+//
+extern UINT8 OemConfigVfrBin[];
+
+//
+// HII specific Vendor Device Path definition.
+//
+typedef struct {
+ VENDOR_DEVICE_PATH VendorDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} HII_VENDOR_DEVICE_PATH;
+
+#define OEM_CONFIG_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('O', 'E', 'M', 'C')
+typedef struct {
+ UINTN Signature;
+ EFI_HII_HANDLE HiiHandle;
+ EFI_HANDLE DriverHandle;
+ EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
+} OEM_CONFIG_CALLBACK_DATA;
+
+/**
+ This function allows a caller to extract the current configuration for one
+ or more named elements from the target driver.
+
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Request A null-terminated Unicode string in <ConfigRequest> format.
+ @param Progress On return, points to a character in the Request string.
+ Points to the string's null terminator if request was successful.
+ Points to the most recent '&' before the first failing name/value
+ pair (or the beginning of the string if the failure is in the
+ first name/value pair) if the request was not successful.
+ @param Results A null-terminated Unicode string in <ConfigAltResp> format which
+ has all values filled in for the names in the Request string.
+ String to be allocated by the called function.
+
+ @retval EFI_SUCCESS The Results is filled with the requested values.
+ @retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.
+ @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name.
+ @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
+
+**/
+EFI_STATUS
+EFIAPI
+OemExtractConfig (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN CONST EFI_STRING Request,
+ OUT EFI_STRING *Progress,
+ OUT EFI_STRING *Results
+ );
+
+/**
+ This function processes the results of changes in configuration.
+
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Configuration A null-terminated Unicode string in <ConfigResp> format.
+ @param Progress A pointer to a string filled in with the offset of the most
+ recent '&' before the first failing name/value pair (or the
+ beginning of the string if the failure is in the first
+ name/value pair) or the terminating NULL if all was successful.
+
+ @retval EFI_SUCCESS The Results is processed successfully.
+ @retval EFI_INVALID_PARAMETER Configuration is NULL.
+ @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
+
+**/
+EFI_STATUS
+EFIAPI
+OemRouteConfig (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN CONST EFI_STRING Configuration,
+ OUT EFI_STRING *Progress
+ );
+
+/**
+ This function is invoked if user selected a interactive opcode from Device Manager's
+ Formset. If user set VBIOS, the new value is saved to EFI variable.
+
+ @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
+ @param Action Specifies the type of action taken by the browser.
+ @param QuestionId A unique value which is sent to the original exporting driver
+ so that it can identify the type of data to expect.
+ @param Type The type of value for the question.
+ @param Value A pointer to the data being sent to the original exporting driver.
+ @param ActionRequest On return, points to the action requested by the callback function.
+
+ @retval EFI_SUCCESS The callback successfully handled the action.
+ @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
+
+**/
+EFI_STATUS
+EFIAPI
+OemCallback (
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
+ IN EFI_BROWSER_ACTION Action,
+ IN EFI_QUESTION_ID QuestionId,
+ IN UINT8 Type,
+ IN EFI_IFR_TYPE_VALUE *Value,
+ OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
+ );
+
+VOID GetReleaseTime (EFI_TIME *Time);
+#endif
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h
new file mode 100644
index 0000000000..ee44411420
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h
@@ -0,0 +1,64 @@
+/** @file
+
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
+This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ OemConfigUi.h
+
+Abstract:
+
+ NVData structure used by the OEM Config.
+
+Revision History:
+
+
+**/
+
+#ifndef _OEM_CONFIG_UI_H_
+#define _OEM_CONFIG_UI_H_
+
+#define EFI_VARIABLE_NON_VOLATILE 0x00000001
+#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
+#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
+#define OEM_CONFIG_FORM_ID 1
+#define MEMORY_CONFIG_FORM_ID 2
+#define IBMC_CONFIG_FORM_ID 3
+#define PCIE_CONFIG_FORM_ID 4
+#define MISC_CONFIG_FORM_ID 5
+#define RAS_CONFIG_FORM_ID 6
+
+#define VFR_FORMID_PCIE_SOCKET0 0x4100
+#define VFR_FORMID_PCIE_SOCKET1 0x4200
+#define VFR_FORMID_PCIE_PORT0 0x4000
+#define VFR_FORMID_PCIE_PORT1 0x4001
+#define VFR_FORMID_PCIE_PORT2 0x4002
+#define VFR_FORMID_PCIE_PORT3 0x4003
+#define VFR_FORMID_PCIE_PORT4 0x4004
+#define VFR_FORMID_PCIE_PORT5 0x4005
+#define VFR_FORMID_PCIE_PORT6 0x4006
+#define VFR_FORMID_PCIE_PORT7 0x4007
+#define VFR_FORMID_PCIE_PORT8 0x4008
+#define VFR_FORMID_PCIE_PORT9 0x4009
+#define VFR_FORMID_PCIE_PORT10 0x4010
+#define VFR_FORMID_PCIE_PORT11 0x4011
+#define VFR_FORMID_PCIE_PORT12 0x4012
+#define VFR_FORMID_PCIE_PORT13 0x4013
+#define VFR_FORMID_PCIE_PORT14 0x4014
+#define VFR_FORMID_PCIE_PORT15 0x4015
+
+#define VFR_FORMID_MEMORY_RAS 0x6100
+#define VFR_FORMID_CORRECT_ERROR 0x6101
+#define VFR_FORMID_PCIE_RAS 0x6200
+
+#define RMT_PATTERN_LENGTH 256
+
+
+#endif
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf
new file mode 100644
index 0000000000..63cc01dafe
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf
@@ -0,0 +1,67 @@
+## @file
+# OEM config Library used by BDS
+#
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
+# This program and the accompanying materials are licensed and made available under
+# the terms and conditions of the BSD License that accompanies this distribution.
+# The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php.
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+##
+[Defines]
+ INF_VERSION = 0x0001001A
+ BASE_NAME = OemConfigUiLib
+ MODULE_UNI_FILE = OemConfigUiLib.uni
+ FILE_GUID = 32B373AC-00B6-471b-B3AE-6E4A4501F6BA
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = NULL|DXE_DRIVER UEFI_APPLICATION
+ CONSTRUCTOR = OemConfigUiLibConstructor
+ DESTRUCTOR = OemConfigUiLibDestructor
+
+[Sources]
+ OemConfig.h
+ OemConfigVfr.Vfr
+ OemConfigUiLibStrings.uni
+ OemConfig.c
+ MemoryConfig.hfr
+ MemoryConfig.uni
+ iBMCConfig.hfr
+ iBMCConfig.uni
+ PcieConfig.hfr
+ PcieConfigStrings.uni
+ PciePortConfig.hfr
+ MiscConfig.uni
+ MiscConfig.hfr
+ RasConfig.hfr
+ RasConfig.uni
+
+[Packages]
+ MdeModulePkg/MdeModulePkg.dec
+ MdePkg/MdePkg.dec
+ Silicon/Hisilicon/HisiPkg.dec
+
+[LibraryClasses]
+ BaseLib
+ BaseMemoryLib
+ DebugLib
+ DevicePathLib
+ HiiLib
+ MemoryAllocationLib
+ PrintLib
+ UefiBootServicesTableLib
+ UefiHiiServicesLib
+ UefiRuntimeServicesTableLib
+
+[Guids]
+ gEfiHiiPlatformSetupFormsetGuid ## CONSUMES ## GUID (Indicate the formset class guid to be displayed)
+ gEfiIfrFrontPageGuid ## CONSUMES ## GUID (Indicate the formset in this library need to dispaly in which page)
+ gEfiIfrTianoGuid ## CONSUMES ## GUID (Extended IFR Guid Opcode)
+ gOemConfigGuid
+ gVersionInfoHobGuid
+
+[Protocols]
+ gEfiHiiConfigAccessProtocolGuid ## CONSUMES
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni
new file mode 100644
index 0000000000..0b2c63a625
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni
@@ -0,0 +1,24 @@
+/** @file
+*
+* OEM Config Library used by UiApp
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#string STR_MODULE_ABSTRACT
+#language en-US "OEM Config Library used by BDS"
+
+#string STR_MODULE_DESCRIPTION
+#language en-US "OEM Config Library used by BDS"
+
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni
new file mode 100644
index 0000000000..b1e87f05f9
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni
@@ -0,0 +1,64 @@
+/** @file
+*
+* String definitions for the OEM Config.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+/=#
+
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_EMPTY_STRING #language en-US ""
+ #language fr-FR ""
+#string STR_BIOS_BUILDTIME_STRING #language en-US "Build Date"
+ #language fr-FR "Date de génération"
+#string STR_MISC_BIOS_BUILDTIME #language en-US ""
+ #language fr-FR ""
+#string SYSTEM_TIME #language en-US "System Time"
+ #language fr-FR "Temps système"
+#string SYSTEM_TIME_HELP #language en-US "System Time (HH:MM:SS)"
+ #language fr-FR "Heure système (hh: mm: SS)"
+#string SYSTEM_DATE #language en-US "System Date"
+ #language fr-FR "Date système"
+#string SYSTEM_DATE_HELP #language en-US "System Date (MM/DD/YYYY) Use [ENTER],[TAB] or [SHIFT-TAB] to select a field. Use [+] or [-] to configure system Time."
+ #language fr-FR "Date système (mm/jj/aaaa) utilisez [ENTER], [Tab] ou [Maj-Tab] pour sélectionner un champ. Utilisez [+] ou [-] pour configurer l'heure système."
+#string STR_OEM_CONFIG #language en-US "Oem Config"
+ #language fr-FR "Oem Config"
+#string STR_ENABLED #language en-US "Enabled"
+ #language fr-FR "Activé"
+#string STR_DISABLED #language en-US "Disabled"
+ #language fr-FR "Handicapés"
+#string STR_MEMORY_CONFIG_FORM_TITLE #language en-US "Memory Config"
+ #language fr-FR "Memory Config"
+#string STR_MEMORY_CONFIG_FORM_HELP #language en-US "Display Memory DIMM information."
+ #language fr-FR "Afficher les informations de mémoire DIMM."
+#string STR_PCIE_CONFIG_FORM_TITLE #language en-US "PCIe Config"
+ #language fr-FR "PCIe Config"
+#string STR_PCIE_CONFIG_FORM_HELP #language en-US "Display PCIe information."
+ #language fr-FR "Afficher les informations PCIe."
+#string STR_MISC_CONFIG_FORM_TITLE #language en-US "MISC Config"
+ #language fr-FR "MISC Config"
+#string STR_MISC_CONFIG_FORM_HELP #language en-US "Include SMMU Support Enable and Change the boot manner of DTB/ACPI."
+ #language fr-FR "Incluez la prise en charge SMMU et modifiez la manière de démarrage de DTB/ACPI."
+#string STR_IBMC_CONFIG_FORM_TITLE #language en-US "IBMC Config"
+ #language fr-FR "IBMC Config"
+#string STR_IBMC_CONFIG_FORM_HELP #language en-US "Include IBMC WDT(Watchdog Timer) Config."
+ #language fr-FR "Inclure IBMC WDT (minuterie de surveillance) config."
+#string STR_RAS_CONFIG_FORM_TITLE #language en-US "RAS Config"
+ #language fr-FR "RAS Config"
+#string STR_RAS_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Ras Configuration"
+ #language fr-FR "Displays and provides option to change the Ras Configuration"
+#string STR_EXIT_STRING #language en-US "Press ESC to exit."
+ #language fr-FR "Appuyez sur éCHAP pour quitter."
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.Vfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.Vfr
new file mode 100644
index 0000000000..470e9ace3d
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.Vfr
@@ -0,0 +1,89 @@
+/** @file
+*
+* OEM Config formset.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+#include "OemConfigUi.h"
+#include "Library/OemConfigData.h"
+
+formset
+ guid = gOemConfigGuid,
+ title = STRING_TOKEN(STR_OEM_CONFIG),
+ help = STRING_TOKEN(STR_OEM_CONFIG),
+ classguid = gEfiIfrFrontPageGuid, // for MdeModule Bds.
+ efivarstore OEM_CONFIG_DATA,
+ attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+ name = OemConfig,
+ guid = gOemConfigGuid;
+
+ form formid = OEM_CONFIG_FORM_ID,
+ title = STRING_TOKEN(STR_OEM_CONFIG);
+
+ grayoutif TRUE;
+ text
+ help = STRING_TOKEN(STR_EMPTY_STRING),
+ text = STRING_TOKEN(STR_BIOS_BUILDTIME_STRING),
+ text = STRING_TOKEN(STR_MISC_BIOS_BUILDTIME),
+ flags = 0,
+ key = 0;
+ endif;
+
+ date
+ prompt = STRING_TOKEN(SYSTEM_DATE),
+ help = STRING_TOKEN(SYSTEM_DATE_HELP),
+ flags = 0x10,
+ default = 2017/1/1,
+ enddate;
+
+ time
+ prompt = STRING_TOKEN(SYSTEM_TIME),
+ help = STRING_TOKEN(SYSTEM_TIME_HELP),
+ flags = 0x10,
+ endtime;
+
+ subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
+
+ goto MEMORY_CONFIG_FORM_ID,
+ prompt = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_HELP);
+
+ goto IBMC_CONFIG_FORM_ID,
+ prompt = STRING_TOKEN(STR_IBMC_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_IBMC_CONFIG_FORM_HELP);
+
+ suppressif TRUE;
+ goto PCIE_CONFIG_FORM_ID,
+ prompt = STRING_TOKEN(STR_PCIE_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_PCIE_CONFIG_FORM_HELP);
+ endif;
+
+ goto MISC_CONFIG_FORM_ID,
+ prompt = STRING_TOKEN(STR_MISC_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_MISC_CONFIG_FORM_HELP);
+
+ goto RAS_CONFIG_FORM_ID,
+ prompt = STRING_TOKEN(STR_RAS_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_RAS_CONFIG_FORM_HELP);
+
+ subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
+ subtitle text = STRING_TOKEN(STR_EXIT_STRING);
+
+ endform;
+
+#include "MemoryConfig.hfr"
+#include "iBMCConfig.hfr"
+#include "PcieConfig.hfr"
+#include "MiscConfig.hfr"
+#include "RasConfig.hfr"
+endformset;
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr
new file mode 100644
index 0000000000..7cf7cdd29b
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr
@@ -0,0 +1,219 @@
+/** @file
+*
+* PCIe Config form at Oem Config fromset.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+form formid = PCIE_CONFIG_FORM_ID,
+ title = STRING_TOKEN (STR_PCIE_CONFIG_FORM_TITLE);
+
+ goto VFR_FORMID_PCIE_SOCKET0,
+ prompt = STRING_TOKEN (STR_PCIE_CPU_0_PROMPT),
+ help = STRING_TOKEN (STR_PCIE_CPU_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_SOCKET1,
+ prompt = STRING_TOKEN (STR_PCIE_CPU_1_PROMPT),
+ help = STRING_TOKEN (STR_PCIE_CPU_PROMPT_HELP);
+
+ oneof varid = OEM_CONFIG_DATA.PcieSRIOVSupport,
+ prompt = STRING_TOKEN (STR_SRIOV_SUPPORT_PROMPT),
+ help = STRING_TOKEN (STR_SRIOV_SUPPORT_HELP),
+ option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+endform;
+
+form formid = VFR_FORMID_PCIE_SOCKET0,
+ title = STRING_TOKEN(STR_PCIE_CPU_0_PROMPT);
+
+ goto VFR_FORMID_PCIE_PORT2,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_2_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT4,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_4_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT5,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_5_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT6,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_6_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT7,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_7_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+endform;
+
+form formid = VFR_FORMID_PCIE_SOCKET1,
+ title = STRING_TOKEN(STR_PCIE_CPU_1_PROMPT);
+ goto VFR_FORMID_PCIE_PORT10,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_10_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT12,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_12_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+
+ goto VFR_FORMID_PCIE_PORT13,
+ prompt = STRING_TOKEN(STR_PCIE_PORT_13_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP);
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT0,
+ title = STRING_TOKEN(STR_PCIE_PORT_0_PROMPT);
+ #undef INDEX
+ #define INDEX 0
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT1,
+ title = STRING_TOKEN(STR_PCIE_PORT_1_PROMPT);
+
+ #undef INDEX
+ #define INDEX 1
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT2,
+ title = STRING_TOKEN(STR_PCIE_PORT_2_PROMPT);
+
+ #undef INDEX
+ #define INDEX 2
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT3,
+ title = STRING_TOKEN(STR_PCIE_PORT_3_PROMPT);
+
+ #undef INDEX
+ #define INDEX 3
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT4,
+ title = STRING_TOKEN(STR_PCIE_PORT_4_PROMPT);
+
+ #undef INDEX
+ #define INDEX 4
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT5,
+ title = STRING_TOKEN(STR_PCIE_PORT_5_PROMPT);
+
+ #undef INDEX
+ #define INDEX 5
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT6,
+ title = STRING_TOKEN(STR_PCIE_PORT_6_PROMPT);
+
+ #undef INDEX
+ #define INDEX 6
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT7,
+ title = STRING_TOKEN(STR_PCIE_PORT_7_PROMPT);
+
+ #undef INDEX
+ #define INDEX 7
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT8,
+ title = STRING_TOKEN(STR_PCIE_PORT_8_PROMPT);
+
+ #undef INDEX
+ #define INDEX 8
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT9,
+ title = STRING_TOKEN(STR_PCIE_PORT_9_PROMPT);
+
+ #undef INDEX
+ #define INDEX 9
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT10,
+ title = STRING_TOKEN(STR_PCIE_PORT_10_PROMPT);
+
+ #undef INDEX
+ #define INDEX 10
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT11,
+ title = STRING_TOKEN(STR_PCIE_PORT_11_PROMPT);
+
+ #undef INDEX
+ #define INDEX 11
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT12,
+ title = STRING_TOKEN(STR_PCIE_PORT_12_PROMPT);
+
+ #undef INDEX
+ #define INDEX 12
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT13,
+ title = STRING_TOKEN(STR_PCIE_PORT_13_PROMPT);
+
+ #undef INDEX
+ #define INDEX 13
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT14,
+ title = STRING_TOKEN(STR_PCIE_PORT_14_PROMPT);
+
+ #undef INDEX
+ #define INDEX 14
+ #include "PciePortConfig.hfr"
+
+endform;
+
+form formid = VFR_FORMID_PCIE_PORT15,
+ title = STRING_TOKEN(STR_PCIE_PORT_15_PROMPT);
+
+ #undef INDEX
+ #define INDEX 15
+ #include "PciePortConfig.hfr"
+
+endform;
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni
new file mode 100644
index 0000000000..2795471d4c
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni
@@ -0,0 +1,185 @@
+/** @file
+*
+* String definitions for the PCIe Config form.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+/=#
+
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_BLANK_STRING #language en-US ""
+ #language fr-FR ""
+#string STR_PCIE_CPU_PROMPT_HELP #language en-US "Press <Enter> to config this CPU."
+ #language fr-FR "Appuyez sur < ENTER > pour configurer ce CPU."
+#string STR_PCIE_CPU_0_NULL_PROMPT #language en-US ""
+ #language fr-FR ""
+#string STR_PCIE_CPU_0_PROMPT #language en-US "CPU 0 PCIE Configuration"
+ #language fr-FR "CPU 0 Configuration PCIe"
+#string STR_PCIE_CPU_1_PROMPT #language en-US "CPU 1 PCIE Configuration"
+ #language fr-FR "CPU 1 Configuration PCIe"
+#string STR_SRIOV_SUPPORT_PROMPT #language en-US "SRIOV"
+ #language fr-FR "SRIOV"
+#string STR_SRIOV_SUPPORT_HELP #language en-US "This option enables / disables the SRIOV function"
+ #language fr-FR "Cette option active/désactive la fonction SRIOV"
+
+#string STR_PCIE_PORT_PROMPT_HELP #language en-US "Press <Enter> to config this port."
+ #language fr-FR "Appuyez sur < ENTER > pour configurer ce port."
+#string STR_PCIE_PORT_0_NULL_PROMPT #language en-US ""
+ #language fr-FR ""
+#string STR_PCIE_PORT_0_PROMPT #language en-US "CPU 0 Pcie - Port 0"
+ #language fr-FR "CPU 0 Pcie - Port 0"
+#string STR_PCIE_PORT_1_PROMPT #language en-US "CPU 0 Pcie - Port 1"
+ #language fr-FR "CPU 0 Pcie - Port 1"
+#string STR_PCIE_PORT_2_PROMPT #language en-US "CPU 0 Pcie - Port 2"
+ #language fr-FR "CPU 0 Pcie - Port 2"
+#string STR_PCIE_PORT_3_PROMPT #language en-US "CPU 0 Pcie - Port 3"
+ #language fr-FR "CPU 0 Pcie - Port 3"
+#string STR_PCIE_PORT_4_PROMPT #language en-US "CPU 0 Pcie - Port 4"
+ #language fr-FR "CPU 0 Pcie - Port 4"
+#string STR_PCIE_PORT_5_PROMPT #language en-US "CPU 0 Pcie - Port 5"
+ #language fr-FR "CPU 0 Pcie - Port 5"
+#string STR_PCIE_PORT_6_PROMPT #language en-US "CPU 0 Pcie - Port 6"
+ #language fr-FR "CPU 0 Pcie - Port 6"
+#string STR_PCIE_PORT_7_PROMPT #language en-US "CPU 0 Pcie - Port 7"
+ #language fr-FR "CPU 0 Pcie - Port 7"
+#string STR_PCIE_PORT_8_PROMPT #language en-US "CPU 1 Pcie - Port 0"
+ #language fr-FR "CPU 1 Pcie - Port 0"
+#string STR_PCIE_PORT_9_PROMPT #language en-US "CPU 1 Pcie - Port 1"
+ #language fr-FR "CPU 1 Pcie - Port 1"
+#string STR_PCIE_PORT_10_PROMPT #language en-US "CPU 1 Pcie - Port 2"
+ #language fr-FR "CPU 1 Pcie - Port 2"
+#string STR_PCIE_PORT_11_PROMPT #language en-US "CPU 1 Pcie - Port 3"
+ #language fr-FR "CPU 1 Pcie - Port 3"
+#string STR_PCIE_PORT_12_PROMPT #language en-US "CPU 1 Pcie - Port 4"
+ #language fr-FR "CPU 1 Pcie - Port 4"
+#string STR_PCIE_PORT_13_PROMPT #language en-US "CPU 1 Pcie - Port 5"
+ #language fr-FR "CPU 1 Pcie - Port 5"
+#string STR_PCIE_PORT_14_PROMPT #language en-US "CPU 1 Pcie - Port 6"
+ #language fr-FR "CPU 1 Pcie - Port 6"
+#string STR_PCIE_PORT_15_PROMPT #language en-US "CPU 1 Pcie - Port 7"
+ #language fr-FR "CPU 1 Pcie - Port 7"
+
+#string STR_PCIE_PORT_ENABLE_PROMPT_0 #language en-US "PCI-E Port"
+ #language fr-FR "PCI-E Port"
+#string STR_PCIE_PORT_ENABLE_HELP #language en-US "Disable is used to disable the port and hide its CFG space."
+ #language fr-FR "Disable est utilisé pour désactiver le port et masquer son espace cfg."
+
+#string STR_LINK_STATUS #language en-US "PCI-E Port Link Status"
+ #language fr-FR "Statut de liaison de port PCI-E"
+#string STR_LINK_STATUS_NG #language en-US "Link Training Error"
+ #language fr-FR "Erreur de formation de lien"
+#string STR_LINK_STATUS_OK #language en-US "Link Up"
+ #language fr-FR "Lien vers le haut"
+#string STR_MAXLINK_STATUS #language en-US "PCI-E Port Link Max"
+ #language fr-FR "PCI-E port Link Max"
+#string STR_WIDTH1_STRING #language en-US "X1"
+ #language fr-FR "X1"
+#string STR_WIDTH2_STRING #language en-US "X2"
+ #language fr-FR "X2"
+#string STR_WIDTH4_STRING #language en-US "X4"
+ #language fr-FR "X4"
+#string STR_WIDTH8_STRING #language en-US "X8"
+ #language fr-FR "X8"
+#string STR_WIDTH16_STRING #language en-US "X16"
+ #language fr-FR "X16"
+#string STR_WIDTH32_STRING #language en-US "X32"
+ #language fr-FR "X32"
+
+#string STR_PCIESPEED_STATUS #language en-US "PCI-E Port Link Speed"
+ #language fr-FR "Vitesse de liaison de port PCI-E"
+#string STR_PCIE_LINK_SPEED1_STRING #language en-US "Gen 1 (2.5 GT/s)"
+ #language fr-FR "GEN 1 (2,5 gt/s)"
+#string STR_PCIE_LINK_SPEED2_STRING #language en-US "Gen 2 (5 GT/s)"
+ #language fr-FR "Gen 2 (5 gt/s)"
+#string STR_PCIE_LINK_SPEED3_STRING #language en-US "Gen 3 (8 GT/s)"
+ #language fr-FR "GEN 3 (8 gt/s)"
+
+#string STR_PCIE_PORT_DEEMPHASIS_PROMPT_0 #language en-US "PCI-E Port DeEmphasis"
+ #language fr-FR "Défocalisation du port PCI-E"
+
+#string STR_PCIE_PORT_DEEMPHASIS_HELP #language en-US "De-Emphais control for this PCIe port."
+ #language fr-FR "Contrôle de Emphais pour ce port PCIe."
+
+#string STR_35DB #language en-US "-3.5 dB"
+ #language fr-FR "-3,5 dB"
+#string STR_60DB #language en-US "-6.0 dB"
+ #language fr-FR "-6,0 dB"
+
+#string STR_PCIE_PORT_ASPM_PROMPT_G #language en-US "PCI-E ASPM Support"
+ #language fr-FR "Support ASPM PCI-E"
+
+#string STR_PCIE_GLOBAL_ASPM_HELP #language en-US "This option enables / disables the ASPM support for all downstream devices."
+ #language fr-FR "Cette option active/désactive la prise en charge ASPM de tous les périphériques en aval."
+#string STR_PCIE_PORT_ASPM_HELP #language en-US "This option enables / disables the ASPM (L1) support for the downstream devices."
+ #language fr-FR "Cette option active/désactive la prise en charge de ASPM (L1) pour les périphériques en aval."
+
+#string STR_L0S_ONLY #language en-US "L0s Only"
+ #language fr-FR "L0S seulement"
+#string STR_L0S_L1_BOTH #language en-US "L0s & L1 Both"
+ #language fr-FR "L0S & L1"
+#string STR_L1_ONLY #language en-US "L1 Only"
+ #language fr-FR "L1 seulement"
+
+#string STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_PROMPT #language en-US "Max Payload Size"
+ #language fr-FR "Taille maximale de la charge utile"
+#string STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_HELP #language en-US "Set Maxpayload size to 512B if possible"
+ #language fr-FR "Définissez la taille de Maxpayload sur 512 si possible"
+//
+// Common Strings
+//
+#string STR_AUTO #language en-US "Auto"
+ #language fr-FR "Auto"
+#string STR_X1 #language en-US "x1"
+ #language fr-FR "x1"
+#string STR_X2 #language en-US "x2"
+ #language fr-FR "x2"
+#string STR_X4 #language en-US "x4"
+ #language fr-FR "x4"
+#string STR_X8 #language en-US "x8"
+ #language fr-FR "x8"
+#string STR_X16 #language en-US "x16"
+ #language fr-FR "x16"
+
+#string STR_128B #language en-US "128B"
+ #language fr-FR "128B"
+#string STR_256B #language en-US "256B"
+ #language fr-FR "256B"
+#string STR_512B #language en-US "512B"
+ #language fr-FR "512B"
+#string STR_1024B #language en-US "1024B"
+ #language fr-FR "1024B"
+#string STR_2048B #language en-US "2048B"
+ #language fr-FR "2048B"
+#string STR_4096B #language en-US "4096B"
+ #language fr-FR "4096B"
+
+#string STR_CLEAR #language en-US "Clear"
+ #language fr-FR "Clear"
+#string STR_SET #language en-US "Set"
+ #language fr-FR "Set"
+
+#string STR_PCIE_PORT_LINK_SPEED_PROMPT_0 #language en-US "Link Speed"
+ #language fr-FR "Vitesse de liaison"
+#string STR_PCIE_PORT_LINK_SPEED_HELP #language en-US "Link Speed:Gen1(2.5 GT/s)/Gen2(5 GT/s)/Gen3(8 GT/s)/GEN 4 (16 gt/s)"
+ #language fr-FR "Vitesse de liaison: Gen1 (2.5 gt/s)/Gen2 (5 gt/s)/Gen3 (8 gt/s)/GEN 4 (16 gt/s)"
+#string STR_PCIE_GEN1 #language en-US "Gen 1 (2.5 GT/s)"
+ #language fr-FR "GEN 1 (2,5 gt/s)"
+#string STR_PCIE_GEN2 #language en-US "Gen 2 (5 GT/s)"
+ #language fr-FR "Gen 2 (5 gt/s)"
+#string STR_PCIE_GEN3 #language en-US "Gen 3 (8 GT/s)"
+ #language fr-FR "GEN 3 (8 gt/s)"
+#string STR_PCIE_GEN4 #language en-US "Gen 4 (16 GT/s)"
+ #language fr-FR "GEN 4 (16 gt/s)"
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr
new file mode 100644
index 0000000000..1a8942157c
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr
@@ -0,0 +1,167 @@
+/** @file
+*
+* PCIe Config form at Oem Config fromset.
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+oneof varid = OEM_CONFIG_DATA.PciePort[INDEX],
+ prompt = STRING_TOKEN(STR_PCIE_PORT_ENABLE_PROMPT_0),
+ help = STRING_TOKEN(STR_PCIE_PORT_ENABLE_HELP),
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+endoneof;
+
+suppressif ideqval OEM_CONFIG_DATA.PciePort[INDEX] == 0x00;
+ oneof varid = OEM_CONFIG_DATA.PcieLinkSpeedPort[INDEX],
+ prompt = STRING_TOKEN(STR_PCIE_PORT_LINK_SPEED_PROMPT_0),
+ help = STRING_TOKEN(STR_PCIE_PORT_LINK_SPEED_HELP),
+ option text = STRING_TOKEN(STR_PCIE_GEN1), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_PCIE_GEN2), value = 2, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_PCIE_GEN3), value = 3, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_PCIE_GEN4), value = 4, flags = RESET_REQUIRED;
+ endoneof;
+
+ suppressif NOT ideqval OEM_CONFIG_DATA.PcieLinkSpeedPort[INDEX] == 2;
+ oneof varid = OEM_CONFIG_DATA.PcieLinkDeEmphasisPort[INDEX],
+ prompt = STRING_TOKEN(STR_PCIE_PORT_DEEMPHASIS_PROMPT_0),
+ help = STRING_TOKEN(STR_PCIE_PORT_DEEMPHASIS_HELP),
+ #if ( INDEX == 0)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 1)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 3)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 4)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 6)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 7)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 8)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 9)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 11)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 14)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 15)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED;
+ #endif
+
+ #if ( INDEX == 2)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED ;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED| MANUFACTURING | DEFAULT;
+ #endif
+
+ #if ( INDEX == 5)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ #endif
+
+ #if ( INDEX == 10)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ #endif
+
+ #if ( INDEX == 12)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ #endif
+
+ #if ( INDEX == 13)
+ option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ #endif
+
+ endoneof;
+ endif;
+
+ grayoutif TRUE;
+ oneof varid = OEM_CONFIG_DATA.PcieLinkStatusPort[INDEX],
+ prompt = STRING_TOKEN(STR_LINK_STATUS),
+ help = STRING_TOKEN(STR_BLANK_STRING),
+ option text = STRING_TOKEN(STR_LINK_STATUS_NG), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_LINK_STATUS_OK), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.PcieLinkMaxPort[INDEX],
+ prompt = STRING_TOKEN(STR_MAXLINK_STATUS),
+ help = STRING_TOKEN(STR_BLANK_STRING),
+ option text = STRING_TOKEN(STR_WIDTH1_STRING), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_WIDTH2_STRING), value = 2, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_WIDTH4_STRING), value = 4, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_WIDTH8_STRING), value = 8, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ endoneof;
+
+ suppressif NOT ideqval OEM_CONFIG_DATA.PcieLinkStatusPort[INDEX] == 1;
+ oneof varid = OEM_CONFIG_DATA.PcieLinkSpeedRateStatusPort[INDEX],
+ prompt = STRING_TOKEN(STR_PCIESPEED_STATUS),
+ help = STRING_TOKEN(STR_BLANK_STRING),
+ option text = STRING_TOKEN(STR_PCIE_LINK_SPEED1_STRING), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_PCIE_LINK_SPEED2_STRING), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_PCIE_LINK_SPEED3_STRING), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+ endif;
+
+ oneof varid = OEM_CONFIG_DATA.PcieMaxPayloadSizePort[INDEX],
+ prompt = STRING_TOKEN(STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_PROMPT),
+ help = STRING_TOKEN(STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_HELP),
+ option text = STRING_TOKEN(STR_128B), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_256B), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_512B), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.PcieAspmPort[INDEX],
+ prompt = STRING_TOKEN (STR_PCIE_PORT_ASPM_PROMPT_G),
+ help = STRING_TOKEN (STR_PCIE_GLOBAL_ASPM_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT;
+ option text = STRING_TOKEN(STR_L0S_ONLY), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_L1_ONLY), value = 2, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_L0S_L1_BOTH), value = 3, flags = RESET_REQUIRED;
+ endoneof;
+
+endif;
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr
new file mode 100644
index 0000000000..aa472e62e8
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr
@@ -0,0 +1,171 @@
+ ///** @file
+//
+// Memory RAS Config form.
+//
+// Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+// This program and the accompanying materials
+// are licensed and made available under the terms and conditions of the BSD License
+// which accompanies this distribution. The full text of the license may be found at
+// http://opensource.org/licenses/bsd-license.php
+//
+// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+//
+//**/
+ form formid = RAS_CONFIG_FORM_ID,
+ title = STRING_TOKEN(STR_RAS_CONFIG_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.EnRasSupport,
+ prompt = STRING_TOKEN(STR_SUPPORT_RAS_TITLE),
+ help = STRING_TOKEN(STR_SUPPORT_RAS_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ endoneof;
+
+ suppressif TRUE;
+ goto VFR_FORMID_MEMORY_RAS,
+ prompt = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_HELP);
+
+ goto VFR_FORMID_PCIE_RAS,
+ prompt = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_TITLE),
+ help = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_HELP);
+ endif;
+ endform;
+
+ form formid = VFR_FORMID_MEMORY_RAS,
+ title = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.CheckAlgorithm,
+ prompt = STRING_TOKEN(STR_CHECK_ALGORITHM_PROMPT),
+ help = STRING_TOKEN(STR_CHECK_ALGORITHM_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ECC), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_SDEC), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+
+ grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0;
+ oneof varid = OEM_CONFIG_DATA.EnPoison,
+ prompt = STRING_TOKEN(STR_ENABLE_POISON_PROMPT),
+ help = STRING_TOKEN(STR_ENABLE_POISON_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.PatrolScrub,
+ prompt = STRING_TOKEN(STR_PATROL_SCRUB_PROMPT),
+ help = STRING_TOKEN(STR_PATROL_SCRUB_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ endoneof;
+ endif;
+
+ grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0 OR ideqval OEM_CONFIG_DATA.PatrolScrub == 0;
+ numeric varid = OEM_CONFIG_DATA.PatrolScrubDuration,
+ prompt = STRING_TOKEN(STR_PATROL_SCRUB_DURATION_PROMPT),
+ help = STRING_TOKEN(STR_PATROL_SCRUB_DURATION_HELP),
+ flags = 0 | RESET_REQUIRED,
+ minimum = 0,
+ maximum = 24,
+ step = 1,
+ default = 24,
+ endnumeric;
+ endif;
+
+ grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0;
+ oneof varid = OEM_CONFIG_DATA.DemandScrubMode,
+ prompt = STRING_TOKEN(STR_DEMAND_SCRUB_PROMPT),
+ help = STRING_TOKEN(STR_DEMAND_SCRUB_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+
+ suppressif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0 OR ideqval OEM_CONFIG_DATA.CheckAlgorithm == 1;
+ goto VFR_FORMID_CORRECT_ERROR,
+ prompt = STRING_TOKEN(STR_CORRECT_ERROR_FORM_TITLE),
+ help = STRING_TOKEN(STR_CORRECT_ERROR_FORM_HELP);
+ endif;
+ endform;
+
+
+ form formid = VFR_FORMID_CORRECT_ERROR,
+ title = STRING_TOKEN(STR_CORRECT_ERROR_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.CorrectErrorThreshold,
+ prompt = STRING_TOKEN(STR_CORRECT_ERROR_THRESHOLD_PROMPT),
+ help = STRING_TOKEN(STR_CORRECT_ERROR_THRESHOLD_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_500), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_1000), value = 2, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_2000), value = 3, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.FunnelPeriod,
+ prompt = STRING_TOKEN(STR_FUNNEL_PERIOD_PROMPT),
+ help = STRING_TOKEN(STR_FUNNEL_PERIOD_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_30), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_60), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+
+ suppressif ideqval OEM_CONFIG_DATA.CorrectErrorThreshold == 0;
+ oneof varid = OEM_CONFIG_DATA.AdvanceDeviceCorrection ,
+ prompt = STRING_TOKEN(STR_ADVANCE_DEVICE_CORRECTION_PROMPT),
+ help = STRING_TOKEN(STR_ADVANCE_DEVICE_CORRECTION_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_SR), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_MR), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.RankSparing,
+ prompt = STRING_TOKEN(STR_RANK_SPARING_PROMPT),
+ help = STRING_TOKEN(STR_RANK_SPARING_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+ endform;
+
+ form formid = VFR_FORMID_PCIE_RAS,
+ title = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_TITLE);
+
+ oneof varid = OEM_CONFIG_DATA.DpcFeature,
+ prompt = STRING_TOKEN(STR_DPC_FEARURE),
+ help = STRING_TOKEN(STR_DPC_FEARURE_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.EcrcFeature,
+ prompt = STRING_TOKEN(STR_ECRC_FEARURE),
+ help = STRING_TOKEN(STR_ECRC_FEARURE_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
+ endoneof;
+
+ oneof varid = OEM_CONFIG_DATA.CompletionTimeout,
+ prompt = STRING_TOKEN(STR_COMPLETION_TIMEOUT),
+ help = STRING_TOKEN(STR_COMPLETION_TIMEOUT_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ endoneof;
+
+ suppressif ideqval OEM_CONFIG_DATA.CompletionTimeout == 0;
+ oneof varid = OEM_CONFIG_DATA.CompletionTimeoutValue,
+ prompt = STRING_TOKEN(STR_COMPLETION_TIMEOUT_VALUE),
+ help = STRING_TOKEN(STR_COMPLETION_TIMEOUT_VALUE_HELP),
+ option text = STRING_TOKEN(STR_50US_TO_50MS), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_50US_TO_100US), value = 1, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_1MS_TO_10MS), value = 2, flags = RESET_REQUIRED;
+ endoneof;
+ endif;
+
+ oneof varid = OEM_CONFIG_DATA.HotPlug,
+ prompt = STRING_TOKEN(STR_HOT_PLUG),
+ help = STRING_TOKEN(STR_HOT_PLUG_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
+ endoneof;
+ endform;
+
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni
new file mode 100644
index 0000000000..8427860c1a
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni
@@ -0,0 +1,135 @@
+// /** @file
+// OEM Config Library used by UiApp
+//
+//
+// Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+//
+// This program and the accompanying materials are licensed and made available under
+// the terms and conditions of the BSD License that accompanies this distribution.
+// The full text of the license may be found at
+// http://opensource.org/licenses/bsd-license.php.
+//
+// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+//
+// **/
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_SUPPORT_RAS_TITLE #language en-US "Support RAS"
+ #language fr-FR "Support RAS"
+#string STR_SUPPORT_RAS_HELP #language en-US "Support memory/PCIe/CPU RAS funtions."
+ #language fr-FR "Support memory/PCIe/CPU RAS funtions."
+
+#string STR_MEMORY_RAS_CONFIG_FORM_TITLE #language en-US "Memory RAS Config"
+ #language fr-FR "Memory RAS Config"
+#string STR_MEMORY_RAS_CONFIG_FORM_HELP #language en-US "Memory RAS Config"
+ #language fr-FR "Memory RAS Config"
+
+#string STR_PCIE_RAS_CONFIG_FORM_TITLE #language en-US "PCIe RAS Config"
+ #language fr-FR "PCIe RAS Config"
+#string STR_PCIE_RAS_CONFIG_FORM_HELP #language en-US "PCIe RAS Config"
+ #language fr-FR "PCIe RAS Config"
+
+#string STR_CPU_RAS_CONFIG_FORM_TITLE #language en-US "CPU RAS Config"
+ #language fr-FR "CPU RAS Config"
+#string STR_CPU_RAS_CONFIG_FORM_HELP #language en-US "CPU RAS Config"
+ #language fr-FR "CPU RAS Config"
+
+#string STR_ENABLE_POISON_PROMPT #language en-US "Poison"
+ #language fr-FR "Poison"
+#string STR_ENABLE_POISON_HELP #language en-US "Enable/Disable Poison flag"
+ #language fr-FR "Activer/désactiver l'indicateur de poison"
+
+#string STR_CHECK_ALGORITHM_PROMPT #language en-US "Check Algorithm"
+ #language fr-FR "Vérifier l'algorithme"
+#string STR_CHECK_ALGORITHM_HELP #language en-US "Set the memory check algorithm"
+ #language fr-FR "Configurer l'algorithme de vérification de la mémoire"
+#string STR_ECC #language en-US "ECC"
+ #language fr-FR "ECC"
+#string STR_SDEC #language en-US "SDEC"
+ #language fr-FR "SDEC"
+
+#string STR_PATROL_SCRUB_PROMPT #language en-US "Active Scrub"
+ #language fr-FR "Gommage actif"
+#string STR_PATROL_SCRUB_HELP #language en-US "Enable/Disable Active Scrub"
+ #language fr-FR "Activer/désactiver le gommage actif"
+
+#string STR_PATROL_SCRUB_DURATION_PROMPT #language en-US "Active Scrub Interval"
+ #language fr-FR "Intervalle de gommage actif"
+#string STR_PATROL_SCRUB_DURATION_HELP #language en-US "Selects the number of hours (0-24) required to complete full scrub. A value of zero means auto!"
+ #language fr-FR "Sélectionne le nombre d'heures (0-24) requis pour compléter le gommage complet. Une valeur de zéro signifie auto!"
+
+#string STR_DEMAND_SCRUB_PROMPT #language en-US "Passive Scrub"
+ #language fr-FR "Gommage passif"
+#string STR_DEMAND_SCRUB_HELP #language en-US "Enable/Disable Passive Scrub"
+ #language fr-FR "Activer/désactiver le gommage passif"
+
+#string STR_CORRECT_ERROR_FORM_TITLE #language en-US "Correct Error handle"
+ #language fr-FR "Corriger la poignée d'erreur"
+#string STR_CORRECT_ERROR_FORM_HELP #language en-US "Correctable error-related configuration"
+ #language fr-FR "Activer/désactiver le gommage actif"
+
+#string STR_CORRECT_ERROR_THRESHOLD_PROMPT #language en-US "Correct Error Threshold"
+ #language fr-FR "Seuil d'erreur correct"
+#string STR_CORRECT_ERROR_THRESHOLD_HELP #language en-US "Correctable error-related configuration"
+ #language fr-FR "Configurer les seuils d'erreur corrigeables"
+#string STR_500 #language en-US "500"
+ #language fr-FR "500"
+#string STR_1000 #language en-US "1000"
+ #language fr-FR "1000"
+#string STR_2000 #language en-US "2000"
+ #language fr-FR "2000"
+
+#string STR_FUNNEL_PERIOD_PROMPT #language en-US "Funnel Period(min)"
+ #language fr-FR "Funnel Period(min)"
+#string STR_FUNNEL_PERIOD_HELP #language en-US "Set the Funnel function time period"
+ #language fr-FR "Régler la durée de la fonction de l'entonnoir"
+#string STR_30 #language en-US "30"
+ #language fr-FR "30"
+#string STR_60 #language en-US "60"
+ #language fr-FR "60"
+
+#string STR_ADVANCE_DEVICE_CORRECTION_PROMPT #language en-US "Advance Device Correction"
+ #language fr-FR "Seuil d'erreur correct"
+#string STR_ADVANCE_DEVICE_CORRECTION_HELP #language en-US "Configure the correctable error threshold alarm handling solution"
+ #language fr-FR "Configurer le système de traitement d'alarme de seuil d'erreur corrigé"
+#string STR_SR #language en-US "SR"
+ #language fr-FR "SR"
+#string STR_MR #language en-US "MR"
+ #language fr-FR "MR"
+
+#string STR_RANK_SPARING_PROMPT #language en-US "Rank Sparing"
+ #language fr-FR "Rank Sparing"
+#string STR_RANK_SPARING_HELP #language en-US "Enable/Disable Rank Sparing"
+ #language fr-FR "Activer/désactiver l'épargne de rang"
+
+#string STR_DPC_FEARURE #language en-US "DPC Feature"
+ #language fr-FR "Fonction DPC"
+#string STR_DPC_FEARURE_HELP #language en-US "Enable/Disable PCIE DPC(DownStream Port Containment) feature."
+ #language fr-FR "Activer/désactiver la fonction de DPC (port en aval) de PCIe."
+
+#string STR_ECRC_FEARURE #language en-US "ECRC Feature"
+ #language fr-FR "Fonction ECRC"
+#string STR_ECRC_FEARURE_HELP #language en-US "Enable/Disable ECRC check feature"
+ #language fr-FR "Activer/désactiver la fonctionnalité de vérification ECRC"
+#string STR_COMPLETION_TIMEOUT #language en-US "Completion Timeout"
+ #language fr-FR "Délai d'achèvement"
+#string STR_COMPLETION_TIMEOUT_HELP #language en-US "Enable/Disable PCIE Completion Timeout feature."
+ #language fr-FR "Activer/désactiver la fonctionnalité d'expiration du délai d'achèvement PCIe."
+
+#string STR_COMPLETION_TIMEOUT_VALUE #language en-US "Completion Timeout Value"
+ #language fr-FR "Valeur de temporisation d'achèvement"
+#string STR_COMPLETION_TIMEOUT_VALUE_HELP #language en-US "Set the corresponding Completion Timeout value."
+ #language fr-FR "Définir la valeur de temporisation d'achèvement correspondante."
+
+#string STR_HOT_PLUG #language en-US "Hot-Plug"
+ #language fr-FR "Hot-Plug"
+#string STR_HOT_PLUG_HELP #language en-US "Enable/Disable PCIE Hot-plug feature."
+ #language fr-FR "Activer/désactiver la fonction de branchement à chaud PCIe."
+#string STR_50US_TO_50MS #language en-US "50 us to 50 ms"
+ #language fr-FR "50 us to 50 ms"
+#string STR_50US_TO_100US #language en-US "50 us to 100 us"
+ #language fr-FR "50 us to 100 us"
+#string STR_1MS_TO_10MS #language en-US "1 ms to 10 ms"
+ #language fr-FR "1 ms to 10 ms"
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr
new file mode 100644
index 0000000000..f8d974100a
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr
@@ -0,0 +1,80 @@
+ ///** @file
+//
+// IBMC Config form.
+//
+// Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+// This program and the accompanying materials
+// are licensed and made available under the terms and conditions of the BSD License
+// which accompanies this distribution. The full text of the license may be found at
+// http://opensource.org/licenses/bsd-license.php
+//
+// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+//
+//**/
+ form formid = IBMC_CONFIG_FORM_ID,
+ title = STRING_TOKEN(STR_IBMC_CONFIG_FORM_TITLE);
+
+ oneof
+ varid = OEM_CONFIG_DATA.BmcWdtEnable,
+ prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER),
+ help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = 0;
+ endoneof;
+
+ suppressif ideqval OEM_CONFIG_DATA.BmcWdtEnable == 0;
+ numeric
+ varid = OEM_CONFIG_DATA.BmcWdtTimeout,
+ prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_TIMEOUT),
+ help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_TIMEOUT_C10_HELP),
+ minimum = 15,
+ maximum = 25,
+ step = 1,
+ default = 15,
+ endnumeric;
+
+ oneof
+ varid = OEM_CONFIG_DATA.BmcWdtAction,
+ prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION),
+ help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION_HELP),
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_NO_ACTION), value = 0, flags = 0;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HARD_RESET), value = 1, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_DOWN), value = 2, flags = 0;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_CYCLE), value = 3, flags = 0;
+ endoneof;
+ endif;
+
+ suppressif TRUE;
+ oneof
+ varid = OEM_CONFIG_DATA.OSWdtEnable,
+ prompt = STRING_TOKEN(STR_BMC_OS_WATCHDOG_TIMER),
+ help = STRING_TOKEN(STR_BMC_OS_WATCHDOG_TIMER_HELP),
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = 0;
+ endoneof;
+ endif;
+
+ suppressif ideqval OEM_CONFIG_DATA.OSWdtEnable == 0;
+ numeric
+ varid = OEM_CONFIG_DATA.OSWdtTimeout,
+ prompt = STRING_TOKEN(STR_BMC_OS_WDT_TIMEOUT),
+ help = STRING_TOKEN(STR_BMC_OS_WDT_TIMEOUT_HELP),
+ minimum = 5,
+ maximum = 8,
+ step = 1,
+ default = 5,
+ endnumeric;
+
+ oneof
+ varid = OEM_CONFIG_DATA.OSWdtAction,
+ prompt = STRING_TOKEN(STR_BMC_OS_WDT_ACTION),
+ help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION_HELP),
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_NO_ACTION), value = 0, flags = 0;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HARD_RESET), value = 1, flags = DEFAULT;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_DOWN), value = 2, flags = 0;
+ option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_CYCLE), value = 3, flags = 0;
+ endoneof;
+ endif;
+
+ endform;
diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni
new file mode 100644
index 0000000000..10d6569613
--- /dev/null
+++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni
@@ -0,0 +1,49 @@
+// /** @file
+// OEM Config Library used by UiApp
+//
+//
+// Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+//
+// This program and the accompanying materials are licensed and made available under
+// the terms and conditions of the BSD License that accompanies this distribution.
+// The full text of the license may be found at
+// http://opensource.org/licenses/bsd-license.php.
+//
+// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+//
+// **/
+#langdef en-US "English"
+#langdef fr-FR "Français"
+
+#string STR_BMC_WATCHDOG_TIMER #language en-US "iBMC WDT Support For POST"
+ #language fr-FR "iBMC WDT Support For POST"
+#string STR_BMC_WATCHDOG_TIMER_HELP #language en-US "Enable/Disable iBMC watchdog timer at start of POST."
+ #language fr-FR "Activer/désactiver iBMC chronomètre de surveillance au début du post."
+#string STR_BMC_WATCHDOG_TIMER_TIMEOUT #language en-US "iBMC WDT TimeOut For POST"
+ #language fr-FR "iBMC WDT TimeOut For POST"
+#string STR_BMC_WATCHDOG_TIMER_TIMEOUT_C10_HELP #language en-US "Enter the number of minutes the system firmware has to boot the OS before it takes the Timeout Action. Valid values are from 15 to 25 minutes."
+ #language fr-FR "Entrez le nombre de minutes que le firmware du système doit démarrer l'os avant qu'il ne prenne l'action Timeout. Les valeurs valides sont de 15 à 25 minutes."
+#string STR_BMC_WATCHDOG_TIMER_ACTION #language en-US "iBMC WDT Action For POST"
+ #language fr-FR "iBMC WDT Action For POST"
+#string STR_BMC_WATCHDOG_TIMER_ACTION_HELP #language en-US "Timeout Action Choices: No Action, Hard Reset, Power Down or Power Cycle"
+ #language fr-FR "Choix d'action de délai d'attente: aucune action, réinitialisation matérielle, puissance vers le bas ou cycle de puissance"
+#string STR_BMC_WATCHDOG_TIMER_NO_ACTION #language en-US "No Action"
+ #language fr-FR "Aucune action"
+#string STR_BMC_WATCHDOG_TIMER_HARD_RESET #language en-US "Hard Reset"
+ #language fr-FR "Réinitialisation matérielle"
+#string STR_BMC_WATCHDOG_TIMER_POWER_DOWN #language en-US "Power Down"
+ #language fr-FR "Puissance vers le bas"
+#string STR_BMC_WATCHDOG_TIMER_POWER_CYCLE #language en-US "Power Cycle"
+ #language fr-FR "Cycle de puissance"
+#string STR_BMC_OS_WATCHDOG_TIMER #language en-US "iBMC WDT Support For OS"
+ #language fr-FR "iBMC WDT Support For OS"
+#string STR_BMC_OS_WATCHDOG_TIMER_HELP #language en-US "Enable/Disable OS Watchdog Timer When OS Load"
+ #language fr-FR "Activer/désactiver le chronomètre de surveillance d'os quand charge d'OS"
+#string STR_BMC_OS_WDT_TIMEOUT #language en-US "iBMC WDT TimeOut For OS"
+ #language fr-FR "iBMC WDT TimeOut For OS"
+#string STR_BMC_OS_WDT_TIMEOUT_HELP #language en-US "Enter the number of minutes the system firmware \n has to OS Load before it takes the Timeout Action. Valid values are from 5 to 8 minutes."
+ #language fr-FR "Entrez le nombre de minutes que le firmware du système \n a à la charge OS avant qu'il ne prenne l'action Timeout. Les valeurs valides sont comprises entre 5 et 8 minutes."
+#string STR_BMC_OS_WDT_ACTION #language en-US "iBMC WDT Action For OS"
+ #language fr-FR "iBMC WDT Action For OS"
+
diff --git a/Silicon/Hisilicon/HisiPkg.dec b/Silicon/Hisilicon/HisiPkg.dec
index b56a6a6af7..858b840a57 100644
--- a/Silicon/Hisilicon/HisiPkg.dec
+++ b/Silicon/Hisilicon/HisiPkg.dec
@@ -44,6 +44,7 @@
gHisiTokenSpaceGuid = {0xc8bc553e, 0x12bf, 0x11e6, {0x97, 0x4f, 0x87, 0xf7, 0x7c, 0xfd, 0x52, 0x1d}}
gHisiEfiMemoryMapGuid = {0xf8870015, 0x6994, 0x4b98, {0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f}}
+ gOemConfigGuid = {0x42927b59, 0x58fc, 0x41be, {0x8f, 0x59, 0xd1, 0x7c, 0x02, 0x1a, 0x70, 0x13}}
gVersionInfoHobGuid = {0xe13a14c, 0x859c, 0x4f22, {0x82, 0xbd, 0x18, 0xe, 0xe1, 0x42, 0x12, 0xbf}}
gHisiOemVariableGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}}
gOemBootVariableGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99, 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8}}
diff --git a/Silicon/Hisilicon/Include/Library/OemConfigData.h b/Silicon/Hisilicon/Include/Library/OemConfigData.h
new file mode 100644
index 0000000000..478821ae2c
--- /dev/null
+++ b/Silicon/Hisilicon/Include/Library/OemConfigData.h
@@ -0,0 +1,84 @@
+/** @file
+*
+* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+
+#ifndef _OEM_CONFIG_DATA_H_
+#define _OEM_CONFIG_DATA_H_
+
+#define PCIE_MAX_TOTAL_PORTS 16
+#define OEM_CONFIG_NAME L"OemConfig"
+#define PLATFORM_SETUP_VARIABLE_FLAG (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE)
+
+#pragma pack(1)
+typedef struct {
+ /*Memory Config*/
+ UINT8 DdrDebugLevel;
+ UINT8 DdrFreqLimit;
+ UINT8 DdrRefreshSupport;
+ UINT8 DdrRefreshRate;
+ UINT8 RankMargin;
+ UINT8 RankMarginMode;
+ UINT32 rmtPatternLength;
+ UINT8 perbitmargin;
+ UINT8 CaMargin;
+ UINT8 CaVrefMarginOption;
+ UINT8 NumaEn;
+ UINT8 HwMemTest;
+ UINT8 DieInterleaving;
+ UINT8 ChannelInterleaving;
+ UINT8 RankInterleaving;
+ UINT8 EccSupport;
+ /*iBMC Config*/
+ UINT8 BmcWdtEnable;
+ UINT8 BmcWdtTimeout;
+ UINT8 BmcWdtAction;
+ UINT8 OSWdtEnable;
+ UINT8 OSWdtTimeout;
+ UINT8 OSWdtAction;
+ /*PCIe Config*/
+ UINT8 PcieSRIOVSupport;
+ UINT8 PciePort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieLinkSpeedPort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieLinkDeEmphasisPort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieLinkStatusPort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieLinkSpeedRateStatusPort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieLinkMaxPort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieMaxPayloadSizePort[PCIE_MAX_TOTAL_PORTS];
+ UINT8 PcieAspmPort[PCIE_MAX_TOTAL_PORTS];
+ /*Misc Config*/
+ UINT8 EnableSmmu;
+ UINT8 EnableFdtTable;
+ UINT8 EnableSpcr;
+ /*RAS Config*/
+ UINT8 EnRasSupport;
+ UINT8 EnPoison;
+ UINT8 CheckAlgorithm;
+ UINT8 PatrolScrub;
+ UINT8 PatrolScrubDuration;
+ UINT8 DemandScrubMode;
+ UINT8 CorrectErrorThreshold;
+ UINT8 AdvanceDeviceCorrection;
+ UINT8 RankSparing;
+ UINT8 FunnelPeriod;
+ UINT8 DpcFeature;
+ UINT8 EcrcFeature;
+ UINT8 CompletionTimeout;
+ UINT8 CompletionTimeoutValue;
+ UINT8 HotPlug;
+
+} OEM_CONFIG_DATA;
+#pragma pack()
+
+#endif
--
2.17.0
next prev parent reply other threads:[~2018-07-24 7:14 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-24 7:08 [PATCH edk2-platforms v1 00/38] Upload for D06 platform Ming Huang
2018-07-24 7:08 ` [PATCH edk2-platforms v1 01/38] Silicon/Hisilicon: Modify the MRC interface for other module Ming Huang
2018-08-02 14:42 ` Leif Lindholm
2018-08-05 3:35 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 02/38] Silicon/Hisilicon: Separate PlatformArch.h Ming Huang
2018-08-02 14:56 ` Leif Lindholm
2018-08-05 15:11 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 03/38] Hisilicon/D06: Add several basal file for D06 Ming Huang
2018-08-02 16:14 ` Leif Lindholm
2018-08-05 15:06 ` Ming
2018-08-06 3:01 ` Ming
2018-08-06 9:57 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 04/38] Platform/Hisilicon/D06: Add M41T83RealTimeClockLib Ming Huang
2018-08-02 16:56 ` Leif Lindholm
2018-08-08 8:02 ` Ming
2018-08-08 9:12 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 05/38] Platform/Hisilicon/D06: Add binary file for D06 Ming Huang
2018-08-02 17:05 ` Leif Lindholm
2018-08-07 15:04 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 06/38] Hisilicon/D06: Add OemMiscLibD06 Ming Huang
2018-08-02 17:22 ` Leif Lindholm
2018-08-08 3:49 ` Ming
2018-08-08 9:43 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 07/38] Silicon/Hisilicon/D06: Wait for all disk ready Ming Huang
2018-08-02 17:36 ` Leif Lindholm
2018-08-08 9:02 ` Ming
2018-08-08 9:59 ` Leif Lindholm
2018-08-08 11:44 ` Ming
2018-08-08 12:53 ` Leif Lindholm
2018-08-10 1:44 ` Ming
2018-08-14 15:26 ` Leif Lindholm
2018-08-15 4:01 ` Ming
2018-08-15 13:12 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 08/38] Silicon/Hisilicon/Acpi: Unify HisiAcipPlatformDxe Ming Huang
2018-08-02 17:39 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 09/38] Hisilicon/D06: Add Debug Serial Port Init Driver Ming Huang
2018-08-02 18:10 ` Leif Lindholm
2018-08-08 7:37 ` Ming
2018-08-08 10:01 ` Leif Lindholm
2018-08-08 14:48 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 10/38] Hisilicon/D06: Add ACPI Tables for D06 Ming Huang
2018-08-02 18:13 ` Leif Lindholm
2018-08-02 18:24 ` Ard Biesheuvel
2018-07-24 7:08 ` Ming Huang [this message]
2018-08-03 10:24 ` [PATCH edk2-platforms v1 11/38] Hisilicon/D06: Add Hi1620OemConfigUiLib Leif Lindholm
2018-08-08 12:09 ` Ming
2018-08-11 6:35 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 12/38] Silicon/Hisilicon/D06: Stop watchdog Ming Huang
2018-08-03 10:28 ` Leif Lindholm
2018-08-08 9:49 ` Ming
2018-08-03 10:31 ` Ard Biesheuvel
2018-08-09 11:40 ` Ming
2018-08-09 11:53 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 13/38] Silicon/Hisilicon/Acpi: Move some macro to PlatformArch.h Ming Huang
2018-08-03 10:37 ` Leif Lindholm
2018-08-08 12:22 ` Ming
2018-08-08 12:57 ` Leif Lindholm
2018-07-24 7:08 ` [PATCH edk2-platforms v1 14/38] Silicon/Hisilicon/D06: Fix I2C enable fail issue for D06 Ming Huang
2018-08-03 10:40 ` Leif Lindholm
2018-08-08 14:33 ` Ming
2018-07-24 7:08 ` [PATCH edk2-platforms v1 15/38] Silicon/Hisilicon/I2C: Optimize I2C library Ming Huang
2018-08-03 13:24 ` Leif Lindholm
2018-08-08 14:41 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 16/38] Silicon/Hisilicon/D06: Add I2C delay for HNS auto config Ming Huang
2018-08-03 13:28 ` Leif Lindholm
2018-08-09 3:59 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 17/38] Silicon/Hisilicon/D06: Optimize HNS config CDR post time Ming Huang
2018-08-03 13:30 ` Leif Lindholm
2018-08-08 14:54 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 18/38] Silicon/Hisilicon/Setup: Add Setup Item "EnableGOP" Ming Huang
2018-08-03 13:32 ` Leif Lindholm
2018-08-09 0:35 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 19/38] Hisilicon/Hi1620: Add ACPI PPTT table Ming Huang
2018-08-03 13:42 ` Leif Lindholm
2018-08-09 0:52 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 20/38] Platform/Hisilicon/D06: Enable ACPI PPTT Ming Huang
2018-08-03 13:43 ` Leif Lindholm
2018-07-24 7:09 ` [PATCH edk2-platforms v1 21/38] Silicon/Hisilicon/D0x: Move macro definition to PlatformArch.h Ming Huang
2018-08-03 13:44 ` Leif Lindholm
2018-07-24 7:09 ` [PATCH edk2-platforms v1 22/38] Platform/Hisilicon/D06: Add OemNicLib Ming Huang
2018-08-03 14:36 ` Leif Lindholm
2018-08-09 6:16 ` Ming
2018-08-09 10:19 ` Leif Lindholm
2018-08-09 14:41 ` Ming
2018-08-14 2:38 ` Ming
2018-08-14 15:48 ` Leif Lindholm
2018-08-15 11:08 ` Ming
2018-08-15 13:22 ` Leif Lindholm
2018-08-15 14:16 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 23/38] Hisilicon/D0X: Rename the global variable gDS3231RtcDevice Ming Huang
2018-08-03 15:20 ` Leif Lindholm
2018-08-09 6:22 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 24/38] Platform/Hisilicon/D06: Add OemNicConfig2P Driver Ming Huang
2018-08-03 15:23 ` Leif Lindholm
2018-08-09 6:24 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 25/38] Hisilicon/D0x: Update SMBIOS type9 info Ming Huang
2018-08-04 9:28 ` Leif Lindholm
2018-08-09 6:34 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 26/38] Silicon/Hisilicon/D0x: Move macro definition to PlatformArch.h Ming Huang
2018-08-04 9:34 ` Leif Lindholm
2018-08-09 6:37 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 27/38] Platform/Hisilicon/D06: Add EarlyConfigPeim peim Ming Huang
2018-08-04 9:59 ` Leif Lindholm
2018-08-09 7:07 ` Ming
2018-08-09 10:27 ` Leif Lindholm
2018-08-09 11:54 ` Ming
2018-08-14 2:31 ` Ming
2018-08-14 15:42 ` Leif Lindholm
2018-07-24 7:09 ` [PATCH edk2-platforms v1 28/38] Hisilicon/D0x: Unify FlashFvbDxe driver Ming Huang
2018-08-04 10:06 ` Leif Lindholm
2018-08-09 7:15 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 29/38] Platform/Hisilicon/D06: Add PciHostBridgeLib Ming Huang
2018-08-04 13:41 ` Leif Lindholm
2018-08-09 7:22 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 30/38] Hisilicon/D06: add apei driver Ming Huang
2018-08-04 14:47 ` Leif Lindholm
2018-08-10 2:46 ` Ming
2018-08-14 15:39 ` Leif Lindholm
2018-08-15 8:57 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 31/38] Silicon/Hisilicon/D06: Add some Lpc macro to LpcLib.h Ming Huang
2018-08-04 14:58 ` Leif Lindholm
2018-08-09 12:02 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 32/38] Platform/Hisilicon/D06: Add capsule upgrade support Ming Huang
2018-08-04 15:08 ` Leif Lindholm
2018-07-24 7:09 ` [PATCH edk2-platforms v1 33/38] Silicon/Hisilicon/D06: Modify for close slave core clock Ming Huang
2018-08-04 15:14 ` Leif Lindholm
2018-08-09 12:15 ` Ming
2018-08-09 12:27 ` Leif Lindholm
2018-08-10 2:05 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 34/38] Silicon/Hisilicon/D06: Add I2C Bus Exception deal function Ming Huang
2018-08-04 15:18 ` Leif Lindholm
2018-08-10 2:19 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 35/38] Silicon/Hisilicon/Setup: Support SPCR table switch Ming Huang
2018-08-04 15:20 ` Leif Lindholm
2018-08-09 14:17 ` Ming
2018-08-09 14:44 ` Leif Lindholm
2018-08-09 15:40 ` Ming
2018-08-09 15:48 ` Leif Lindholm
2018-07-24 7:09 ` [PATCH edk2-platforms v1 36/38] Silicon/Hisilicon/setup: Support SMMU switch Ming Huang
2018-08-06 9:59 ` Leif Lindholm
2018-08-09 14:19 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 37/38] Hisilicon/D06: Add PciPlatformLib Ming Huang
2018-08-06 10:01 ` Leif Lindholm
2018-08-09 14:27 ` Ming
2018-07-24 7:09 ` [PATCH edk2-platforms v1 38/38] Platform/Hisilicon/D0x: Update version string to 18.08 Ming Huang
2018-08-06 10:03 ` Leif Lindholm
2018-08-09 14:29 ` Ming
2018-08-01 21:56 ` [PATCH edk2-platforms v1 00/38] Upload for D06 platform Leif Lindholm
2018-08-02 1:46 ` Ming
2018-08-02 3:17 ` 答复: " Guoheyi
2018-08-02 10:12 ` Leif Lindholm
2018-08-02 15:36 ` Graeme Gregory
2018-08-04 14:26 ` Ming
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180724070922.63362-12-ming.huang@linaro.org \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox