[coreboot-gerrit] Change in coreboot[master]: util/amdfwtool: Add fanless SMU firmware options

Martin Roth (Code Review) gerrit at coreboot.org
Tue Mar 28 22:26:27 CEST 2017


Martin Roth has submitted this change and it was merged. ( https://review.coreboot.org/18991 )

Change subject: util/amdfwtool: Add fanless SMU firmware options
......................................................................


util/amdfwtool: Add fanless SMU firmware options

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 include the blobs in the build with
the appropriate bit set in the Type encoding.

Original-Signed-off-by: Marshall Dawson <marshalldawson3rd at gmail.com>
Original-Reviewed-by: Marc Jones <marcj303 at gmail.com>
(cherry picked from commit 8df0d6847c39bb021271983018ac6f448f9ff9da)

Change-Id: I4b80ccf8fd9644f9a9d300e6c67aed9834a2c7a7
Signed-off-by: Marshall Dawson <marshalldawson3rd at gmail.com>
Reviewed-on: https://review.coreboot.org/18991
Reviewed-by: Paul Menzel <paulepanter at users.sourceforge.net>
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth at google.com>
---
M util/amdfwtool/amdfwtool.c
1 file changed, 85 insertions(+), 63 deletions(-)

Approvals:
  Paul Menzel: Looks good to me, but someone else must approve
  build bot (Jenkins): Verified
  Martin Roth: Looks good to me, approved



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: merged
Gerrit-Change-Id: I4b80ccf8fd9644f9a9d300e6c67aed9834a2c7a7
Gerrit-PatchSet: 6
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Owner: Marshall Dawson <marshalldawson3rd at gmail.com>
Gerrit-Reviewer: Martin Roth <martinroth at google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter at users.sourceforge.net>
Gerrit-Reviewer: build bot (Jenkins)



More information about the coreboot-gerrit mailing list