summaryrefslogtreecommitdiffstats
path: root/resources/utilities/ich9deblob/src/ich9gen.c
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2014-12-28 12:33:50 (EST)
committer Francis Rowe <info@gluglug.org.uk>2014-12-28 12:33:50 (EST)
commit4ff5a94eb974a783081ee358966b2022aaf1fb20 (patch)
tree242d67dcfcf3fb4f1f9f0f06097757ec707a7520 /resources/utilities/ich9deblob/src/ich9gen.c
parent779f26c4b48b792873438d99526ebe51c9db2565 (diff)
downloadlibreboot-4ff5a94eb974a783081ee358966b2022aaf1fb20.zip
libreboot-4ff5a94eb974a783081ee358966b2022aaf1fb20.tar.gz
libreboot-4ff5a94eb974a783081ee358966b2022aaf1fb20.tar.bz2
ich9deblob: added ich9gen utility
This can generate the descriptor+gbe images from scratch, without the need for a factory.bin dump.
Diffstat (limited to 'resources/utilities/ich9deblob/src/ich9gen.c')
-rw-r--r--resources/utilities/ich9deblob/src/ich9gen.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/resources/utilities/ich9deblob/src/ich9gen.c b/resources/utilities/ich9deblob/src/ich9gen.c
new file mode 100644
index 0000000..583957e
--- /dev/null
+++ b/resources/utilities/ich9deblob/src/ich9gen.c
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Generate deblobbed descriptor and gbe 12KiB file from scratch
+ * without relying on a factory.rom dump */
+
+#include "ich9gen.h"
+
+int main(int argc, char *argv[])
+{
+ struct GBEREGIONRECORD_8K gbeStruct8k = generatedGbeStruct8k();
+ struct DESCRIPTORREGIONRECORD descriptorStruct4M = generatedDescriptorStructRom4M();
+ struct DESCRIPTORREGIONRECORD descriptorStruct8M = generatedDescriptorStructRom8M();
+
+ /* Only for the compatibility checks */
+ struct DESCRIPTORREGIONRECORD dummyDescriptorStruct;
+ struct GBEREGIONRECORD_8K dummyGbeStruct8k;
+
+ /*
+ * ------------------------------------------------------------------
+ * Compatibility checks. This version of ich9deblob is not yet portable.
+ * ------------------------------------------------------------------
+ */
+
+ if (systemOrCompilerIncompatible(dummyDescriptorStruct, dummyGbeStruct8k)) return 1;
+ /* If true, fail with error message */
+
+ /*
+ * ------------------------------------------------------------------
+ * Down to business
+ * ------------------------------------------------------------------
+ */
+
+ if (notCreatedDescriptorGbeFile(descriptorStruct4M, gbeStruct8k, "ich9fdgbe_4m.bin")) {
+ return 1;
+ }
+
+ if (notCreatedDescriptorGbeFile(descriptorStruct8M, gbeStruct8k, "ich9fdgbe_8m.bin")) {
+ return 1;
+ }
+
+ return 0;
+}