summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-08-24 07:23:07 -0600
committerSimon Glass <sjg@chromium.org>2019-10-15 08:40:02 -0600
commitea0fff929b3e5337c5fcc61c8123659de81eff4f (patch)
treea8251335dae3f875d8a1fbf13293268bd56544df
parentb87064c2496785dde9e33fcdf84175d64163db57 (diff)
downloadu-boot-ea0fff929b3e5337c5fcc61c8123659de81eff4f.tar.gz
binman: Add support for Intel FSP meminit
The Intel FSP supports initialising memory early during boot using a binary blob called 'fspm'. Add support for this. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/binman/README.entries17
-rw-r--r--tools/binman/etype/intel_fsp_m.py27
-rw-r--r--tools/binman/ftest.py8
-rw-r--r--tools/binman/test/152_intel_fsp_m.dts14
4 files changed, 66 insertions, 0 deletions
diff --git a/tools/binman/README.entries b/tools/binman/README.entries
index dba51e6daa..bce2244596 100644
--- a/tools/binman/README.entries
+++ b/tools/binman/README.entries
@@ -427,6 +427,23 @@ See README.x86 for information about x86 binary blobs.
+Entry: intel-fsp-m: Entry containing Intel Firmware Support Package (FSP) memory init
+-------------------------------------------------------------------------------------
+
+Properties / Entry arguments:
+ - filename: Filename of file to read into entry
+
+This file contains a binary blob which is used on some devices to set up
+SDRAM. U-Boot executes this code in SPL so that it can make full use of
+memory. Documentation is typically not available in sufficient detail to
+allow U-Boot do this this itself..
+
+An example filename is 'fsp_m.bin'
+
+See README.x86 for information about x86 binary blobs.
+
+
+
Entry: intel-ifwi: Entry containing an Intel Integrated Firmware Image (IFWI) file
----------------------------------------------------------------------------------
diff --git a/tools/binman/etype/intel_fsp_m.py b/tools/binman/etype/intel_fsp_m.py
new file mode 100644
index 0000000000..2d6b2b6621
--- /dev/null
+++ b/tools/binman/etype/intel_fsp_m.py
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright 2019 Google LLC
+# Written by Simon Glass <sjg@chromium.org>
+#
+# Entry-type module for Intel Firmware Support Package binary blob (T section)
+#
+
+from entry import Entry
+from blob import Entry_blob
+
+class Entry_intel_fsp_m(Entry_blob):
+ """Entry containing Intel Firmware Support Package (FSP) memory init
+
+ Properties / Entry arguments:
+ - filename: Filename of file to read into entry
+
+ This file contains a binary blob which is used on some devices to set up
+ SDRAM. U-Boot executes this code in SPL so that it can make full use of
+ memory. Documentation is typically not available in sufficient detail to
+ allow U-Boot do this this itself..
+
+ An example filename is 'fsp_m.bin'
+
+ See README.x86 for information about x86 binary blobs.
+ """
+ def __init__(self, section, etype, node):
+ Entry_blob.__init__(self, section, etype, node)
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 6d59fa4874..481f0dd21a 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -72,6 +72,7 @@ FILES_DATA = (b"sorry I'm late\nOh, don't bother apologising, I'm " +
b"sorry you're alive\n")
COMPRESS_DATA = b'compress xxxxxxxxxxxxxxxxxxxxxx data'
REFCODE_DATA = b'refcode'
+FSP_M_DATA = b'fsp_m'
# The expected size for the device tree in some tests
EXTRACT_DTB_SIZE = 0x3c9
@@ -147,6 +148,7 @@ class TestFunctional(unittest.TestCase):
TestFunctional._MakeInputDir('devkeys')
TestFunctional._MakeInputFile('bmpblk.bin', BMPBLK_DATA)
TestFunctional._MakeInputFile('refcode.bin', REFCODE_DATA)
+ TestFunctional._MakeInputFile('fsp_m.bin', FSP_M_DATA)
cls._elf_testdir = os.path.join(cls._indir, 'elftest')
elf_test.BuildElfTestFiles(cls._elf_testdir)
@@ -3327,6 +3329,12 @@ class TestFunctional(unittest.TestCase):
data = self._DoReadFile('151_x86_rom_ifwi_section.dts')
self._CheckIfwi(data)
+ def testPackFspM(self):
+ """Test that an image with a FSP memory-init binary can be created"""
+ data = self._DoReadFile('152_intel_fsp_m.dts')
+ self.assertEqual(FSP_M_DATA, data[:len(FSP_M_DATA)])
+
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/test/152_intel_fsp_m.dts b/tools/binman/test/152_intel_fsp_m.dts
new file mode 100644
index 0000000000..b6010f31c2
--- /dev/null
+++ b/tools/binman/test/152_intel_fsp_m.dts
@@ -0,0 +1,14 @@
+/dts-v1/;
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ binman {
+ size = <16>;
+
+ intel-fsp-m {
+ filename = "fsp_m.bin";
+ };
+ };
+};