aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/ifdtool/ifdtool.c20
-rw-r--r--util/ifdtool/ifdtool.h3
2 files changed, 22 insertions, 1 deletions
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c
index 8397f5c157..12dfdd1bf6 100644
--- a/util/ifdtool/ifdtool.c
+++ b/util/ifdtool/ifdtool.c
@@ -826,6 +826,24 @@ static void lock_descriptor(const char *filename, char *image, int size)
/* 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;
+ /* EC can read EC and descriptor. */
+ fmba->flmstr5 |= 0x101 << rd_shift;
+ /* EC can write EC region. */
+ fmba->flmstr5 |= 0x100 << wr_shift;
+ break;
default:
/* CPU/BIOS can read descriptor, BIOS, and GbE. */
fmba->flmstr1 |= 0xb << rd_shift;
@@ -1325,6 +1343,8 @@ int main(int argc, char *argv[])
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 cd5af79a0f..ad299a94f8 100644
--- a/util/ifdtool/ifdtool.h
+++ b/util/ifdtool/ifdtool.h
@@ -22,7 +22,8 @@ enum ifd_version {
};
enum platform {
- PLATFORM_APOLLOLAKE
+ PLATFORM_APOLLOLAKE,
+ PLATFORM_SKLKBL,
};
#define LAYOUT_LINELEN 80