Furquan Shaikh has uploaded this change for review. ( https://review.coreboot.org/25306
Change subject: util/ifdtool: Fix region access control for SKL/KBL ......................................................................
util/ifdtool: Fix region access control for SKL/KBL
The default values used by ifdtool for setting region access control do not match the expected values for SKL/KBL as per the SPI programming guide. This change adds platform "sklkbl" that sets region access control bits differently for SKL/KBL images.
BUG=b:76098647 BRANCH=poppy TEST=Verified that the access control bits on KBL images is set correctly.
Change-Id: I1328d8006c25be282b3223268d8f1fd0a64e2ed3 Signed-off-by: Furquan Shaikh furquan@google.com --- M util/ifdtool/ifdtool.c M util/ifdtool/ifdtool.h 2 files changed, 18 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/06/25306/1
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c index 8397f5c..290c777 100644 --- a/util/ifdtool/ifdtool.c +++ b/util/ifdtool/ifdtool.c @@ -826,6 +826,20 @@ /* TXE can only write Device Expansion */ fmba->flmstr2 |= 0x20 << wr_shift; break; + case PLATFORM_SKLKBL: + /* CPU/BIOS can read descriptor, BIOS and GbE. */ + fmba->flmstr1 |= 0xb << rd_shift; + /* CPU/BIOS can write BIOS and Gbe. */ + fmba->flmstr1 |= 0xa << wr_shift; + /* ME can read descriptor, ME and GbE. */ + fmba->flmstr2 |= 0xd << rd_shift; + /* ME can write ME. */ + fmba->flmstr2 |= 0x4 << wr_shift; + /* GbE can read GbE and descriptor. */ + fmba->flmstr3 |= 0x9 << rd_shift; + /* GbE can write GbE. */ + fmba->flmstr3 |= 0x8 << wr_shift; + break; default: /* CPU/BIOS can read descriptor, BIOS, and GbE. */ fmba->flmstr1 |= 0xb << rd_shift; @@ -1325,6 +1339,8 @@ case 'p': if (!strcmp(optarg, "aplk")) { platform = PLATFORM_APOLLOLAKE; + } else if (!strcmp(optarg, "sklkbl")) { + platform = PLATFORM_SKLKBL; } else { fprintf(stderr, "Unknown platform: %s\n", optarg); exit(EXIT_FAILURE); diff --git a/util/ifdtool/ifdtool.h b/util/ifdtool/ifdtool.h index cd5af79..ad299a9 100644 --- a/util/ifdtool/ifdtool.h +++ b/util/ifdtool/ifdtool.h @@ -22,7 +22,8 @@ };
enum platform { - PLATFORM_APOLLOLAKE + PLATFORM_APOLLOLAKE, + PLATFORM_SKLKBL, };
#define LAYOUT_LINELEN 80