[coreboot-gerrit] Change in coreboot[master]: amd/pi/hudson: Add fanless SMU firmware
Marshall Dawson (Code Review)
gerrit at coreboot.org
Sun Mar 26 01:12:54 CET 2017
Marshall Dawson has uploaded a new change for review. ( https://review.coreboot.org/18991 )
Change subject: amd/pi/hudson: Add fanless SMU firmware
......................................................................
amd/pi/hudson: Add fanless SMU firmware
The Stoney Ridge program has OPNs that are considered fanless. These
APUs are strapped to search for unique SMU firmware, indicated by
Type[8]=1 in the directory table entry.
Add new options to amdfwtool and modify the southbridge makefile to
pick up the appropriate files.
Change-Id: I4b80ccf8fd9644f9a9d300e6c67aed9834a2c7a7
Signed-off-by: Marshall Dawson <marshalldawson3rd at gmail.com>
Reviewed-on: http://ec2-52-3-99-3.compute-1.amazonaws.com/195
Reviewed-by: Marc Jones <marcj303 at gmail.com>
(cherry picked from commit 8df0d6847c39bb021271983018ac6f448f9ff9da)
---
M src/southbridge/amd/pi/hudson/Makefile.inc
M util/amdfwtool/amdfwtool.c
2 files changed, 95 insertions(+), 63 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/91/18991/1
diff --git a/src/southbridge/amd/pi/hudson/Makefile.inc b/src/southbridge/amd/pi/hudson/Makefile.inc
index 9bc2dec..5f5b1c8 100644
--- a/src/southbridge/amd/pi/hudson/Makefile.inc
+++ b/src/southbridge/amd/pi/hudson/Makefile.inc
@@ -124,6 +124,7 @@
###8
CONFIG_SMUFWM_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware$(FIRMWARE_TYPE).sbin
+CONFIG_SMUFWM_FN_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware$(FIRMWARE_TYPE)_FN.sbin
###95
CONFIG_SMUSCS_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuScs$(FIRMWARE_TYPE).bin
@@ -152,6 +153,7 @@
###18
ifeq ($(CONFIG_CPU_AMD_PI_00670F00_FP4)$(CONFIG_CPU_AMD_PI_00670F00_FT4), y)
CONFIG_SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware2_prod_$(FIRMWARE_TYPE).sbin
+CONFIG_SMUFIRMWARE2_FN_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware2_prod_$(FIRMWARE_TYPE)_FN.sbin
else ifeq ($(CONFIG_CPU_AMD_PI_00660F01), y)
CONFIG_SMUFIRMWARE2_FILE=$(top)/$(FIRMWARE_LOCATE)/SmuFirmware2_prod_$(FIRMWARE_TYPE).sbin
endif
@@ -171,6 +173,7 @@
CONFIG_2AMD_PUBKEY_FILE =$(CONFIG_AMD_PUBKEY_FILE)
CONFIG_2PSPBTLDR_FILE =$(CONFIG_PSPBTLDR_FILE)
CONFIG_2SMUFWM_FILE =$(CONFIG_SMUFWM_FILE)
+ CONFIG_2SMUFWM_FN_FILE =$(CONFIG_SMUFWM_FN_FILE)
CONFIG_2PSPRCVR_FILE =$(CONFIG_PSPRCVR_FILE)
CONFIG_2PUBSIGNEDKEY_FILE =$(CONFIG_PUBSIGNEDKEY_FILE)
CONFIG_2PSPSCUREOS_FILE =$(CONFIG_PSPSCUREOS_FILE)
@@ -179,6 +182,7 @@
CONFIG_2PSPTRUSTLETS_FILE =$(CONFIG_PSPTRUSTLETS_FILE)
CONFIG_2TRUSTLETKEY_FILE =$(CONFIG_TRUSTLETKEY_FILE)
CONFIG_2SMUFIRMWARE2_FILE =$(CONFIG_SMUFIRMWARE2_FILE)
+ CONFIG_2SMUFIRMWARE2_FN_FILE =$(CONFIG_SMUFIRMWARE2_FN_FILE)
CONFIG_2SMUSCS_FILE =$(CONFIG_SMUSCS_FILE)
OPT_2AMD_PUBKEY_FILE=$(call add_opt_prefix, $(CONFIG_2AMD_PUBKEY_FILE), --pubkey2)
@@ -193,6 +197,8 @@
OPT_2TRUSTLETKEY_FILE=$(call add_opt_prefix, $(CONFIG_2TRUSTLETKEY_FILE), --trustletkey2)
OPT_2SMUFIRMWARE2_FILE=$(call add_opt_prefix, $(CONFIG_2SMUFIRMWARE2_FILE), --smufirmware2_2)
OPT_2SMUSCS_FILE=$(call add_opt_prefix, $(CONFIG_2SMUSCS_FILE), --smuscs2)
+ OPT_2SMUFWM_FN_FILE=$(call add_opt_prefix, $(CONFIG_2SMUFWM_FN_FILE), --smufnfirmware_2)
+ OPT_2SMUFIRMWARE2_FN_FILE=$(call add_opt_prefix, $(CONFIG_2SMUFIRMWARE2_FN_FILE), --smufnfirmware2_2)
else
OPT_AMD_PUBKEY_FILE=$(call add_opt_prefix, $(CONFIG_AMD_PUBKEY_FILE), --pubkey)
OPT_PSPBTLDR_FILE=$(call add_opt_prefix, $(CONFIG_PSPBTLDR_FILE), --bootloader)
@@ -227,6 +233,7 @@
$(call strip_quotes, $(CONFIG_2PUBSIGNEDKEY_FILE)) \
$(call strip_quotes, $(CONFIG_2PSPBTLDR_FILE)) \
$(call strip_quotes, $(CONFIG_2SMUFWM_FILE)) \
+ $(call strip_quotes, $(CONFIG_2SMUFWM_FN_FILE)) \
$(call strip_quotes, $(CONFIG_2PSPRCVR_FILE)) \
$(call strip_quotes, $(CONFIG_2PSPSCUREOS_FILE)) \
$(call strip_quotes, $(CONFIG_2PSPNVRAM_FILE)) \
@@ -235,6 +242,7 @@
$(call strip_quotes, $(CONFIG_2PSPTRUSTLETS_FILE)) \
$(call strip_quotes, $(CONFIG_2TRUSTLETKEY_FILE)) \
$(call strip_quotes, $(CONFIG_2SMUFIRMWARE2_FILE)) \
+ $(call strip_quotes, $(CONFIG_2SMUFIRMWARE2_FN_FILE)) \
$(AMDFWTOOL)
rm -f $@
@printf " AMDFWTOOL $(subst $(obj)/,,$(@))\n"
@@ -257,6 +265,7 @@
$(OPT_2AMD_PUBKEY_FILE) \
$(OPT_2PSPBTLDR_FILE) \
$(OPT_2SMUFWM_FILE) \
+ $(OPT_2SMUFWM_FN_FILE) \
$(OPT_2PSPRCVR_FILE) \
$(OPT_2PUBSIGNEDKEY_FILE) \
$(OPT_2PSPSCUREOS_FILE) \
@@ -265,6 +274,7 @@
$(OPT_2PSPTRUSTLETS_FILE) \
$(OPT_2TRUSTLETKEY_FILE) \
$(OPT_2SMUFIRMWARE2_FILE) \
+ $(OPT_2SMUFIRMWARE2_FN_FILE) \
$(OPT_2SMUSCS_FILE) \
--flashsize $(CONFIG_ROM_SIZE) \
--output $@
diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c
index feac409..58d010c 100644
--- a/util/amdfwtool/amdfwtool.c
+++ b/util/amdfwtool/amdfwtool.c
@@ -149,53 +149,58 @@
{
printf("amdfwtool: Create AMD Firmware combination\n");
printf("Usage: amdfwtool [options] -f <size> -o <filename>\n");
- printf("-x | --xhci <FILE> Add XHCI blob\n");
- printf("-i | --imc <FILE> Add IMC blob\n");
- printf("-g | --gec <FILE> Add GEC blob\n");
+ printf("-x | --xhci <FILE> Add XHCI blob\n");
+ printf("-i | --imc <FILE> Add IMC blob\n");
+ printf("-g | --gec <FILE> Add GEC blob\n");
printf("\nPSP options:\n");
- printf("-p | --pubkey <FILE> Add pubkey\n");
- printf("-b | --bootloader <FILE> Add bootloader\n");
- printf("-s | --smufirmware <FILE> Add smufirmware\n");
- printf("-r | --recovery <FILE> Add recovery\n");
- printf("-k | --rtmpubkey <FILE> Add rtmpubkey\n");
- printf("-c | --secureos <FILE> Add secureos\n");
- printf("-n | --nvram <FILE> Add nvram\n");
- printf("-d | --securedebug <FILE> Add securedebug\n");
- printf("-t | --trustlets <FILE> Add trustlets\n");
- printf("-u | --trustletkey <FILE> Add trustletkey\n");
- printf("-w | --smufirmware2 <FILE> Add smufirmware2\n");
- printf("-m | --smuscs <FILE> Add smuscs\n");
+ printf("-p | --pubkey <FILE> Add pubkey\n");
+ printf("-b | --bootloader <FILE> Add bootloader\n");
+ printf("-s | --smufirmware <FILE> Add smufirmware\n");
+ printf("-r | --recovery <FILE> Add recovery\n");
+ printf("-k | --rtmpubkey <FILE> Add rtmpubkey\n");
+ printf("-c | --secureos <FILE> Add secureos\n");
+ printf("-n | --nvram <FILE> Add nvram\n");
+ printf("-d | --securedebug <FILE> Add securedebug\n");
+ printf("-t | --trustlets <FILE> Add trustlets\n");
+ printf("-u | --trustletkey <FILE> Add trustletkey\n");
+ printf("-w | --smufirmware2 <FILE> Add smufirmware2\n");
+ printf("-m | --smuscs <FILE> Add smuscs\n");
#if PSP2
printf("\nPSP2 options:\n");
- printf("-P | --pubkey2 <FILE> Add pubkey\n");
- printf("-B | --bootloader2 <FILE> Add bootloader\n");
- printf("-S | --smufirmware_2 <FILE> Add smufirmware\n");
- printf("-R | --recovery2 <FILE> Add recovery\n");
- printf("-K | --rtmpubkey2 <FILE> Add rtmpubkey\n");
- printf("-C | --secureos2 <FILE> Add secureos\n");
- printf("-N | --nvram2 <FILE> Add nvram\n");
- printf("-D | --securedebug2 <FILE> Add securedebug\n");
- printf("-T | --trustlets2 <FILE> Add trustlets\n");
- printf("-U | --trustletkey2 <FILE> Add trustletkey\n");
- printf("-W | --smufirmware2_2 <FILE> Add smufirmware2\n");
- printf("-M | --smuscs2 <FILE> Add smuscs\n");
+ printf("-P | --pubkey2 <FILE> Add pubkey\n");
+ printf("-B | --bootloader2 <FILE> Add bootloader\n");
+ printf("-S | --smufirmware_2 <FILE> Add smufirmware\n");
+ printf("-L | --smufnfirmware_2 <FILE> Add fanless smufirmware\n");
+ printf("-R | --recovery2 <FILE> Add recovery\n");
+ printf("-K | --rtmpubkey2 <FILE> Add rtmpubkey\n");
+ printf("-C | --secureos2 <FILE> Add secureos\n");
+ printf("-N | --nvram2 <FILE> Add nvram\n");
+ printf("-D | --securedebug2 <FILE> Add securedebug\n");
+ printf("-T | --trustlets2 <FILE> Add trustlets\n");
+ printf("-U | --trustletkey2 <FILE> Add trustletkey\n");
+ printf("-W | --smufirmware2_2 <FILE> Add smufirmware2\n");
+ printf("-E | --smufnfirmware2_2 <FILE> Add fanless smufirmware2\n");
+ printf("-M | --smuscs2 <FILE> Add smuscs\n");
#endif
printf("\n-o | --output <filename> output filename\n");
- printf("-f | --flashsize <HEX_VAL> ROM size in bytes\n");
- printf(" size must be larger than %dKB\n",
+ printf("-f | --flashsize <HEX_VAL> ROM size in bytes\n");
+ printf(" size must be larger than %dKB\n",
MIN_ROM_KB);
- printf(" and must a multiple of 1024\n");
- printf("-h | --help show this help\n");
+ printf(" and must a multiple of 1024\n");
+ printf("-h | --help show this help\n");
}
+
+#define FANLESS_FW 0x100 /* type[15:8]: 0=non-fanless OPNs, 1=fanless */
typedef enum _amd_fw_type {
AMD_FW_PSP_PUBKEY = 0,
AMD_FW_PSP_BOOTLOADER = 1,
AMD_FW_PSP_SMU_FIRMWARE = 8,
+ AMD_FW_PSP_SMU_FN_FIRMWARE = FANLESS_FW + AMD_FW_PSP_SMU_FIRMWARE,
AMD_FW_PSP_RECOVERY = 3,
AMD_FW_PSP_RTM_PUBKEY = 5,
AMD_FW_PSP_SECURED_OS = 2,
@@ -204,6 +209,7 @@
AMD_FW_PSP_TRUSTLETS = 12,
AMD_FW_PSP_TRUSTLETKEY = 13,
AMD_FW_PSP_SMU_FIRMWARE2 = 18,
+ AMD_FW_PSP_SMU_FN_FIRMWARE2 = FANLESS_FW + AMD_FW_PSP_SMU_FIRMWARE2,
AMD_PSP_FUSE_CHAIN = 11,
AMD_FW_PSP_SMUSCS = 95,
@@ -230,6 +236,8 @@
{ .type = AMD_FW_PSP_TRUSTLETS },
{ .type = AMD_FW_PSP_TRUSTLETKEY },
{ .type = AMD_FW_PSP_SMU_FIRMWARE2 },
+ { .type = AMD_FW_PSP_SMU_FN_FIRMWARE },
+ { .type = AMD_FW_PSP_SMU_FN_FIRMWARE2 },
{ .type = AMD_FW_PSP_SMUSCS },
{ .type = AMD_PSP_FUSE_CHAIN },
{ .type = AMD_FW_INVALID },
@@ -248,6 +256,8 @@
{ .type = AMD_FW_PSP_TRUSTLETS },
{ .type = AMD_FW_PSP_TRUSTLETKEY },
{ .type = AMD_FW_PSP_SMU_FIRMWARE2 },
+ { .type = AMD_FW_PSP_SMU_FN_FIRMWARE },
+ { .type = AMD_FW_PSP_SMU_FN_FIRMWARE2 },
{ .type = AMD_FW_PSP_SMUSCS },
{ .type = AMD_PSP_FUSE_CHAIN },
{ .type = AMD_FW_INVALID },
@@ -367,50 +377,52 @@
#if PSP2
static const char *optstring =
- "x:i:g:p:b:s:r:k:c:n:d:t:u:w:m:P:B:S:R:K:C:N:D:T:U:W:M:o:f:h";
+ "x:i:g:p:b:s:r:k:c:n:d:t:u:w:m:P:B:S:L:R:K:C:N:D:T:U:W:E:M:o:f:h";
#else
static const char *optstring = "x:i:g:p:b:s:r:k:c:n:d:t:u:w:m:o:f:h";
#endif
static struct option long_options[] = {
- {"xhci", required_argument, 0, 'x' },
- {"imc", required_argument, 0, 'i' },
- {"gec", required_argument, 0, 'g' },
+ {"xhci", required_argument, 0, 'x' },
+ {"imc", required_argument, 0, 'i' },
+ {"gec", required_argument, 0, 'g' },
/* PSP */
- {"pubkey", required_argument, 0, 'p' },
- {"bootloader", required_argument, 0, 'b' },
- {"smufirmware", required_argument, 0, 's' },
- {"recovery", required_argument, 0, 'r' },
- {"rtmpubkey", required_argument, 0, 'k' },
- {"secureos", required_argument, 0, 'c' },
- {"nvram", required_argument, 0, 'n' },
- {"securedebug", required_argument, 0, 'd' },
- {"trustlets", required_argument, 0, 't' },
- {"trustletkey", required_argument, 0, 'u' },
- {"smufirmware2", required_argument, 0, 'w' },
- {"smuscs", required_argument, 0, 'm' },
+ {"pubkey", required_argument, 0, 'p' },
+ {"bootloader", required_argument, 0, 'b' },
+ {"smufirmware", required_argument, 0, 's' },
+ {"recovery", required_argument, 0, 'r' },
+ {"rtmpubkey", required_argument, 0, 'k' },
+ {"secureos", required_argument, 0, 'c' },
+ {"nvram", required_argument, 0, 'n' },
+ {"securedebug", required_argument, 0, 'd' },
+ {"trustlets", required_argument, 0, 't' },
+ {"trustletkey", required_argument, 0, 'u' },
+ {"smufirmware2", required_argument, 0, 'w' },
+ {"smuscs", required_argument, 0, 'm' },
/* TODO: PSP2 */
#if PSP2
- {"pubkey2", required_argument, 0, 'P' },
- {"bootloader2", required_argument, 0, 'B' },
- {"smufirmware_2", required_argument, 0, 'S' },
- {"recovery2", required_argument, 0, 'R' },
- {"rtmpubkey2", required_argument, 0, 'K' },
- {"secureos2", required_argument, 0, 'C' },
- {"nvram2", required_argument, 0, 'N' },
- {"securedebug2", required_argument, 0, 'D' },
- {"trustlets2", required_argument, 0, 'T' },
- {"trustletkey2", required_argument, 0, 'U' },
- {"smufirmware2_2", required_argument, 0, 'W' },
- {"smuscs2", required_argument, 0, 'M' },
+ {"pubkey2", required_argument, 0, 'P' },
+ {"bootloader2", required_argument, 0, 'B' },
+ {"smufirmware_2", required_argument, 0, 'S' },
+ {"smufnfirmware_2", required_argument, 0, 'L' },
+ {"recovery2", required_argument, 0, 'R' },
+ {"rtmpubkey2", required_argument, 0, 'K' },
+ {"secureos2", required_argument, 0, 'C' },
+ {"nvram2", required_argument, 0, 'N' },
+ {"securedebug2", required_argument, 0, 'D' },
+ {"trustlets2", required_argument, 0, 'T' },
+ {"trustletkey2", required_argument, 0, 'U' },
+ {"smufirmware2_2", required_argument, 0, 'W' },
+ {"smufnfirmware2_2", required_argument, 0, 'E' },
+ {"smuscs2", required_argument, 0, 'M' },
#endif
- {"output", required_argument, 0, 'o' },
- {"flashsize", required_argument, 0, 'f' },
- {"help", no_argument, 0, 'h' },
+ {"output", required_argument, 0, 'o' },
+ {"flashsize", required_argument, 0, 'f' },
+ {"help", no_argument, 0, 'h' },
- {NULL, 0, 0, 0 }
+ {NULL, 0, 0, 0 }
};
static void register_fw_filename(amd_fw_type type, char filename[], int pspflag)
@@ -552,6 +564,11 @@
optarg, 2);
psp2flag = 1;
break;
+ case 'L':
+ register_fw_filename(AMD_FW_PSP_SMU_FN_FIRMWARE,
+ optarg, 2);
+ psp2flag = 1;
+ break;
case 'R':
register_fw_filename(AMD_FW_PSP_RECOVERY, optarg, 2);
psp2flag = 1;
@@ -586,6 +603,11 @@
optarg, 2);
psp2flag = 1;
break;
+ case 'E':
+ register_fw_filename(AMD_FW_PSP_SMU_FN_FIRMWARE2,
+ optarg, 2);
+ psp2flag = 1;
+ break;
case 'M':
register_fw_filename(AMD_FW_PSP_SMUSCS, optarg, 2);
psp2flag = 1;
--
To view, visit https://review.coreboot.org/18991
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4b80ccf8fd9644f9a9d300e6c67aed9834a2c7a7
Gerrit-PatchSet: 1
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Owner: Marshall Dawson <marshalldawson3rd at gmail.com>
More information about the coreboot-gerrit
mailing list