[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