aboutsummaryrefslogtreecommitdiff
path: root/projects/ich9gen/sources
diff options
context:
space:
mode:
Diffstat (limited to 'projects/ich9gen/sources')
-rw-r--r--projects/ich9gen/sources/Makefile16
-rw-r--r--projects/ich9gen/sources/src/common/descriptor_gbe.c36
-rw-r--r--projects/ich9gen/sources/src/common/descriptor_gbe.h4
-rw-r--r--projects/ich9gen/sources/src/common/x86compatibility.c48
-rw-r--r--projects/ich9gen/sources/src/common/x86compatibility.h4
-rw-r--r--projects/ich9gen/sources/src/demefactory.c38
-rw-r--r--projects/ich9gen/sources/src/demefactory.h4
-rw-r--r--projects/ich9gen/sources/src/descriptor/descriptor.c94
-rw-r--r--projects/ich9gen/sources/src/descriptor/descriptor.h44
-rw-r--r--projects/ich9gen/sources/src/gbe/gbe.c78
-rw-r--r--projects/ich9gen/sources/src/gbe/gbe.h116
-rw-r--r--projects/ich9gen/sources/src/ich9deblob.c44
-rw-r--r--projects/ich9gen/sources/src/ich9deblob.h4
-rw-r--r--projects/ich9gen/sources/src/ich9gen.c46
-rw-r--r--projects/ich9gen/sources/src/ich9gen.h4
-rw-r--r--projects/ich9gen/sources/src/ich9gen/mkdescriptor.c1
-rw-r--r--projects/ich9gen/sources/src/ich9gen/mkgbe.c1
17 files changed, 290 insertions, 292 deletions
diff --git a/projects/ich9gen/sources/Makefile b/projects/ich9gen/sources/Makefile
index dad57e7f..e16b63f0 100644
--- a/projects/ich9gen/sources/Makefile
+++ b/projects/ich9gen/sources/Makefile
@@ -1,4 +1,4 @@
-#
+#
# Makefile for ich9deblob utility from libreboot project
#
# Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
@@ -26,15 +26,15 @@ all: ich9deblob ich9gen demefactory
ich9deblob: obj/ich9deblob.o obj/common/descriptor_gbe.o \
obj/descriptor/descriptor.o obj/gbe/gbe.o obj/common/x86compatibility.o
-
+
$(CC) $(CFLAGS) obj/ich9deblob.o obj/common/descriptor_gbe.o \
obj/common/x86compatibility.o obj/descriptor/descriptor.o obj/gbe/gbe.o \
-o ich9deblob
-
+
ich9gen: obj/ich9gen.o obj/ich9gen/mkdescriptor.o obj/ich9gen/mkgbe.o \
obj/common/descriptor_gbe.o \
obj/descriptor/descriptor.o obj/gbe/gbe.o obj/common/x86compatibility.o
-
+
$(CC) $(CFLAGS) obj/ich9gen.o obj/ich9gen/mkdescriptor.o obj/ich9gen/mkgbe.o \
obj/common/descriptor_gbe.o \
obj/common/x86compatibility.o obj/descriptor/descriptor.o obj/gbe/gbe.o \
@@ -42,7 +42,7 @@ ich9gen: obj/ich9gen.o obj/ich9gen/mkdescriptor.o obj/ich9gen/mkgbe.o \
demefactory: obj/demefactory.o obj/common/descriptor_gbe.o \
obj/descriptor/descriptor.o obj/gbe/gbe.o obj/common/x86compatibility.o
-
+
$(CC) $(CFLAGS) obj/demefactory.o obj/common/descriptor_gbe.o \
obj/common/x86compatibility.o obj/descriptor/descriptor.o obj/gbe/gbe.o \
-o demefactory
@@ -64,7 +64,7 @@ obj/ich9deblob.o:
obj/ich9gen.o:
$(CC) $(CFLAGS) $(NOLINKER) src/ich9gen.c -o obj/ich9gen.o
-
+
obj/ich9gen/mkdescriptor.o:
$(CC) $(CFLAGS) $(NOLINKER) src/ich9gen/mkdescriptor.c -o obj/ich9gen/mkdescriptor.o
@@ -76,7 +76,7 @@ obj/ich9gen/mkgbe.o:
obj/common/descriptor_gbe.o:
$(CC) $(CFLAGS) $(NOLINKER) src/common/descriptor_gbe.c -o obj/common/descriptor_gbe.o
-
+
obj/common/x86compatibility.o:
$(CC) $(CFLAGS) $(NOLINKER) src/common/x86compatibility.c -o obj/common/x86compatibility.o
@@ -85,7 +85,7 @@ obj/descriptor/descriptor.o:
obj/gbe/gbe.o:
$(CC) $(CFLAGS) $(NOLINKER) src/gbe/gbe.c -o obj/gbe/gbe.o
-
+
# make clean
# ----------------------------------------------------------------------
clean:
diff --git a/projects/ich9gen/sources/src/common/descriptor_gbe.c b/projects/ich9gen/sources/src/common/descriptor_gbe.c
index 1c1ad32b..bce8afc3 100644
--- a/projects/ich9gen/sources/src/common/descriptor_gbe.c
+++ b/projects/ich9gen/sources/src/common/descriptor_gbe.c
@@ -1,7 +1,7 @@
/*
* descriptor_gbe.c
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: common descriptor/gbe functions used by ich9deblob
*
* Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
@@ -20,71 +20,71 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
#include "descriptor_gbe.h"
-/*
+/*
* create 12KiB file with descriptor, and then gbe immediately after.
*/
int notCreatedDescriptorGbeFile(struct DESCRIPTORREGIONRECORD descriptorStruct, struct GBEREGIONRECORD_8K gbeStruct8k, char* fileName)
{
FILE* fileStream = NULL;
-
+
/* delete old file before continuing */
remove(fileName);
-
+
/* open new file for writing the descriptor+gbe */
fileStream = fopen(fileName, "ab");
-
+
/* write the descriptor region into the first part */
if (DESCRIPTORREGIONSIZE != fwrite((uint8_t*)&descriptorStruct, 1, sizeof(descriptorStruct), fileStream))
{
printf("\nerror: writing descriptor region failed\n");
return 1;
}
-
+
/* add gbe to the end of the file */
if (GBEREGIONSIZE_8K != fwrite((uint8_t*)&gbeStruct8k, 1, sizeof(gbeStruct8k), fileStream))
{
printf("\nerror: writing GBe region failed\n");
return 1;
}
-
+
fclose(fileStream);
-
+
printf("descriptor and gbe successfully written to the file: %s\n", fileName);
printf("Now do: dd if=%s of=libreboot.rom bs=1 count=12k conv=notrunc\n", fileName);
printf("(in other words, add the modified descriptor+gbe to your ROM image)\n\n");
-
+
return 0;
}
-/*
+/*
* create 4KiB file with descriptor
*/
int notCreated4kDescriptorFile(struct DESCRIPTORREGIONRECORD descriptorStruct, char* fileName)
{
FILE* fileStream = NULL;
-
+
/* delete old file before continuing */
remove(fileName);
-
+
/* open new file for writing the descriptor+gbe */
fileStream = fopen(fileName, "ab");
-
+
/* write the descriptor region into the first part */
if (DESCRIPTORREGIONSIZE != fwrite((uint8_t*)&descriptorStruct, 1, sizeof(descriptorStruct), fileStream))
{
printf("\nerror: writing descriptor region failed\n");
return 1;
}
-
-
+
+
fclose(fileStream);
-
+
printf("descriptor successfully written to the file: %s\n", fileName);
printf("Now do: dd if=%s of=yourrom.rom bs=1 count=4k conv=notrunc\n", fileName);
printf("(in other words, add the modified descriptor to your ROM image)\n\n");
-
+
return 0;
}
diff --git a/projects/ich9gen/sources/src/common/descriptor_gbe.h b/projects/ich9gen/sources/src/common/descriptor_gbe.h
index b3713c80..ff685720 100644
--- a/projects/ich9gen/sources/src/common/descriptor_gbe.h
+++ b/projects/ich9gen/sources/src/common/descriptor_gbe.h
@@ -1,7 +1,7 @@
/*
* gbe_descriptor.h
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: header file for descriptor_gbe.c
*
* Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
@@ -20,7 +20,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
#ifndef COMMON_DESCRIPTOR_GBE_H
#define COMMON_DESCRIPTOR_GBE_H
diff --git a/projects/ich9gen/sources/src/common/x86compatibility.c b/projects/ich9gen/sources/src/common/x86compatibility.c
index 362c634b..522f3e29 100644
--- a/projects/ich9gen/sources/src/common/x86compatibility.c
+++ b/projects/ich9gen/sources/src/common/x86compatibility.c
@@ -1,7 +1,7 @@
/*
* x86compatibility.c
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: compiler/cpu compatibility checks. ich9deblob is not portable, yet.
*
* Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
@@ -30,11 +30,11 @@
*/
/* fail if struct size is incorrect */
-int structSizesIncorrect(struct DESCRIPTORREGIONRECORD descriptorDummy, struct GBEREGIONRECORD_8K gbe8kDummy)
+int structSizesIncorrect(struct DESCRIPTORREGIONRECORD descriptorDummy, struct GBEREGIONRECORD_8K gbe8kDummy)
{
unsigned int descriptorRegionStructSize = sizeof(descriptorDummy);
unsigned int gbeRegion8kStructSize = sizeof(gbe8kDummy);
-
+
/* check compiler bit-packs in a compatible way. basically, it is expected that this code will be used on x86 */
if (DESCRIPTORREGIONSIZE != descriptorRegionStructSize){
printf("\nerror: compiler incompatibility: descriptor struct length is %i bytes (should be %i)\n", descriptorRegionStructSize, DESCRIPTORREGIONSIZE);
@@ -44,7 +44,7 @@ int structSizesIncorrect(struct DESCRIPTORREGIONRECORD descriptorDummy, struct G
printf("\nerror: compiler incompatibility: gbe struct length is %i bytes (should be %i)\n", gbeRegion8kStructSize, GBEREGIONSIZE_8K);
return 1;
}
-
+
return 0;
}
@@ -54,7 +54,7 @@ int structMembersWrongOrder()
int i;
struct DESCRIPTORREGIONRECORD descriptorDummy;
uint8_t *meVsccTablePtr = (uint8_t*)&descriptorDummy.meVsccTable;
-
+
/* These do not use bitfields. */
descriptorDummy.meVsccTable.jid0 = 0x01020304; /* unsigned int 32-bit */
descriptorDummy.meVsccTable.vscc0 = 0x10203040; /* unsigned int 32-bit */
@@ -66,10 +66,10 @@ int structMembersWrongOrder()
descriptorDummy.meVsccTable.padding[1] = 0xBB; /* unsigned char 8-bit */
descriptorDummy.meVsccTable.padding[2] = 0xCC; /* unsigned char 8-bit */
descriptorDummy.meVsccTable.padding[3] = 0xDD; /* unsigned char 8-bit */
-
+
/*
* Look from the top down, and concatenate the unsigned ints but
- * with each unsigned in little endian order.
+ * with each unsigned in little endian order.
* Then, concatenate the unsigned chars in big endian order. (in the padding array)
*
* combined, these should become:
@@ -77,7 +77,7 @@ int structMembersWrongOrder()
* 04030201 40302010 44332211 08070605 80706050 88776655 AA BB CC DD (ignore this. not byte-separated, just working it out:)
* 04 03 02 01 40 30 20 10 44 33 22 11 08 07 06 05 80 70 60 50 88 77 66 55 AA BB CC DD <-- it should match this
*/
-
+
if (
!
(
@@ -90,65 +90,65 @@ int structMembersWrongOrder()
&& *(meVsccTablePtr+24) == 0xAA && *(meVsccTablePtr+25) == 0xBB && *(meVsccTablePtr+26) == 0xCC && *(meVsccTablePtr+27) == 0xDD
)
) {
-
+
printf("\nStruct member order check (descriptorDummy.meVsccTable) with junk/dummy data:");
printf("\nShould be: 04 03 02 01 40 30 20 10 44 33 22 11 08 07 06 05 80 70 60 50 88 77 66 55 aa bb cc dd ");
printf("\nAnd it is: ");
-
+
for (i = 0; i < 28; i++) {
- printf("%02x ", *(meVsccTablePtr + i));
+ printf("%02x ", *(meVsccTablePtr + i));
}
printf("\nIncorrect order.\n");
-
+
return 1;
}
-
+
return 0;
}
/* fail if bit fields are presented in the wrong order */
-int structBitfieldWrongOrder()
+int structBitfieldWrongOrder()
{
int i;
struct DESCRIPTORREGIONRECORD descriptorDummy;
uint8_t *flMap0Ptr = (uint8_t*)&descriptorDummy.flMaps.flMap0;
-
+
descriptorDummy.flMaps.flMap0.FCBA = 0xA2; /* :8 --> 10100010 */
descriptorDummy.flMaps.flMap0.NC = 0x02; /* :2 --> 10 */
descriptorDummy.flMaps.flMap0.reserved1 = 0x38; /* :6 --> 111000 */
descriptorDummy.flMaps.flMap0.FRBA = 0xD2; /* :8 --> 11010010 */
descriptorDummy.flMaps.flMap0.NR = 0x05; /* :3 --> 101 */
descriptorDummy.flMaps.flMap0.reserved2 = 0x1C; /* :5 --> 11100 */
-
+
/*
* Look from the top bottom up, and concatenate the binary strings.
* Then, convert the 8-bit groups to hex and reverse the (8-bit)byte order
- *
+ *
* combined, these should become (in memory), in binary:
* 10100010 11100010 11010010 11100101
* or in hex:
* A2 E2 D2 E5
*/
-
- if (!(*flMap0Ptr == 0xA2 && *(flMap0Ptr+1) == 0xE2 && *(flMap0Ptr+2) == 0xD2 && *(flMap0Ptr+3) == 0xE5))
+
+ if (!(*flMap0Ptr == 0xA2 && *(flMap0Ptr+1) == 0xE2 && *(flMap0Ptr+2) == 0xD2 && *(flMap0Ptr+3) == 0xE5))
{
printf("\nBitfield order check (descriptorDummy.flMaps.flMaps0) with junk/dummy data:");
printf("\nShould be: a2 e2 d2 e5 ");
printf("\nAnd it is: ");
for (i = 0; i < 4; i++) {
- printf("%02x ", *(flMap0Ptr + i));
+ printf("%02x ", *(flMap0Ptr + i));
}
printf("\nIncorrect order.\n");
-
+
return 1;
}
-
+
return 0;
}
/* Compatibility checks. This version of ich9deblob is not yet porable. */
-int systemOrCompilerIncompatible(struct DESCRIPTORREGIONRECORD descriptorStruct, struct GBEREGIONRECORD_8K gbeStruct8k)
+int systemOrCompilerIncompatible(struct DESCRIPTORREGIONRECORD descriptorStruct, struct GBEREGIONRECORD_8K gbeStruct8k)
{
if (structSizesIncorrect(descriptorStruct, gbeStruct8k)) return 1;
if (IS_BIG_ENDIAN) {
@@ -156,6 +156,6 @@ int systemOrCompilerIncompatible(struct DESCRIPTORREGIONRECORD descriptorStruct,
return 1;
}
if (structBitfieldWrongOrder()) return 1;
- if (structMembersWrongOrder()) return 1;
+ if (structMembersWrongOrder()) return 1;
return 0;
}
diff --git a/projects/ich9gen/sources/src/common/x86compatibility.h b/projects/ich9gen/sources/src/common/x86compatibility.h
index 5a598adc..a4829888 100644
--- a/projects/ich9gen/sources/src/common/x86compatibility.h
+++ b/projects/ich9gen/sources/src/common/x86compatibility.h
@@ -1,7 +1,7 @@
/*
* x86compatibility.h
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: keep gcc/make happy. no actual code here, just function definitions.
*
* Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
@@ -20,7 +20,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
#ifndef X86COMPATIBILITY_H
#define X86COMPATIBILITY_H
diff --git a/projects/ich9gen/sources/src/demefactory.c b/projects/ich9gen/sources/src/demefactory.c
index 596118cf..96bb0d41 100644
--- a/projects/ich9gen/sources/src/demefactory.c
+++ b/projects/ich9gen/sources/src/demefactory.c
@@ -1,12 +1,12 @@
/*
* demefactory.c
* This file is part of the demefactory utility from the libreboot project
- *
+ *
* Purpose: disable ME on GM45 factory firmware, but leave region intact
* enable read-write on all regions
*
* Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
- * Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
+ * Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
*
* 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
@@ -21,8 +21,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-/*
+
+/*
* demfactory utility - main
*/
@@ -32,15 +32,15 @@ int main()
{
struct DESCRIPTORREGIONRECORD descriptorStruct;
uint8_t* descriptorBuffer = (uint8_t*)&descriptorStruct;
-
+
struct GBEREGIONRECORD_8K gbeStruct8k; /* not needed, except for compatibility checking */
-
+
char* romFilename = "factory.rom";
char* descriptorFilename = "demefactory_4kdescriptor.bin";
-
+
unsigned int bufferLength;
unsigned int romSize;
-
+
/*
* ------------------------------------------------------------------
* Compatibility checks. This version of ich9deblob is not yet portable.
@@ -49,7 +49,7 @@ int main()
if (systemOrCompilerIncompatible(descriptorStruct, gbeStruct8k)) return 1;
/* If true, fail with error message */
-
+
/*
* ------------------------------------------------------------------
* Extract the descriptor region from the factory.rom dump
@@ -64,33 +64,33 @@ int main()
return 1;
}
printf("\n%s opened successfully\n", romFilename);
-
- /*
+
+ /*
* Get the descriptor region dump from the factory.rom
* (goes in factoryDescriptorBuffer variable)
*/
bufferLength = fread(descriptorBuffer, 1, DESCRIPTORREGIONSIZE, fp);
- if (DESCRIPTORREGIONSIZE != bufferLength) //
+ if (DESCRIPTORREGIONSIZE != bufferLength) //
{
printf("\nerror: could not read descriptor from %s (%i) bytes read\n", romFilename, bufferLength);
fclose(fp);
return 1;
}
printf("\ndescriptor region read successfully\n");
-
+
/* ------------------------------------------------- */
fseek(fp, 0L, SEEK_END);
romSize = ftell(fp);
printf("\n%s size: [%i] bytes\n", romFilename, romSize);
-
+
/* -------------------------------------------------- */
fclose(fp);
-
+
/* Debugging (before modification) */
printDescriptorRegionLocations(descriptorStruct, "Original");
-
+
/*
* ------------------------------------------------------------------
* Modify the descriptor region, ready to go in the modified factory.rom
@@ -100,7 +100,7 @@ int main()
// Disable the ME/TPM:
descriptorStruct = descriptorDisableMe(descriptorStruct);
descriptorStruct = descriptorDisableTpm(descriptorStruct);
-
+
/* Host/CPU is allowed to read/write all regions. */
descriptorStruct = descriptorHostRegionsUnlocked(descriptorStruct);
/* The ME is disallowed read-write access to all regions
@@ -120,7 +120,7 @@ int main()
if (notCreated4kDescriptorFile(descriptorStruct, descriptorFilename)) {
return 1;
}
-
+
/*
* ------------------------------------------------------------------
* Generate ich9gen data (C code that will recreate the deactivatedME descriptor from scratch)
@@ -134,7 +134,7 @@ int main()
if (notCreatedCFileFromDescriptorStruct(descriptorStruct, "mkdescriptor.c", "mkdescriptor.h")) {
return 1;
}
-
+
printf("The modified descriptor region has also been dumped as src files: mkdescriptor.c, mkdescriptor.h\n\n");
return 0;
diff --git a/projects/ich9gen/sources/src/demefactory.h b/projects/ich9gen/sources/src/demefactory.h
index 7226886b..3478cef5 100644
--- a/projects/ich9gen/sources/src/demefactory.h
+++ b/projects/ich9gen/sources/src/demefactory.h
@@ -14,9 +14,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/* Header file for demefactory.c */
-
+
#ifndef DEMEFACTORY_H
#define DEMEFACTORY_H
diff --git a/projects/ich9gen/sources/src/descriptor/descriptor.c b/projects/ich9gen/sources/src/descriptor/descriptor.c
index 18e4e17a..61ced67e 100644
--- a/projects/ich9gen/sources/src/descriptor/descriptor.c
+++ b/projects/ich9gen/sources/src/descriptor/descriptor.c
@@ -1,9 +1,9 @@
/*
* descriptor/descriptor.c
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
- * Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
+ * Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
*
* 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
@@ -32,7 +32,7 @@
* ---------------------------------------------------------------------
*/
-/* Set the Host CPU / BIOS region to have read-write access on all regions */
+/* Set the Host CPU / BIOS region to have read-write access on all regions */
struct DESCRIPTORREGIONRECORD descriptorHostRegionsUnlocked(struct DESCRIPTORREGIONRECORD descriptorStruct)
{
descriptorStruct.masterAccessSection.flMstr1.fdRegionReadAccess = 0x1;
@@ -80,7 +80,7 @@ struct DESCRIPTORREGIONRECORD descriptorPlatformRegionRemoved(struct DESCRIPTORR
{
descriptorStruct.regionSection.flReg4.BASE = 0x1FFF;
descriptorStruct.regionSection.flReg4.LIMIT = 0;
-
+
return descriptorStruct;
}
@@ -89,7 +89,7 @@ struct DESCRIPTORREGIONRECORD descriptorDisableMe(struct DESCRIPTORREGIONRECORD
{
descriptorStruct.ichStraps.ichStrap0.meDisable = 1;
descriptorStruct.mchStraps.mchStrap0.meDisable = 1;
-
+
return descriptorStruct;
}
@@ -97,7 +97,7 @@ struct DESCRIPTORREGIONRECORD descriptorDisableMe(struct DESCRIPTORREGIONRECORD
struct DESCRIPTORREGIONRECORD descriptorDisableTpm(struct DESCRIPTORREGIONRECORD descriptorStruct)
{
descriptorStruct.mchStraps.mchStrap0.tpmDisable = 1;
-
+
return descriptorStruct;
}
@@ -106,7 +106,7 @@ struct DESCRIPTORREGIONRECORD descriptorMoveGbeToStart(struct DESCRIPTORREGIONRE
{
descriptorStruct.regionSection.flReg3.BASE = DESCRIPTORREGIONSIZE >> FLREGIONBITSHIFT;
descriptorStruct.regionSection.flReg3.LIMIT = GBEREGIONSIZE_8K >> FLREGIONBITSHIFT;
-
+
return descriptorStruct;
}
@@ -115,7 +115,7 @@ struct DESCRIPTORREGIONRECORD descriptorGbeRegionRemoved(struct DESCRIPTORREGION
{
descriptorStruct.regionSection.flReg3.BASE = 0x1FFF;
descriptorStruct.regionSection.flReg3.LIMIT = 0;
-
+
return descriptorStruct;
}
@@ -124,7 +124,7 @@ struct DESCRIPTORREGIONRECORD descriptorBiosRegionFillImageAfterGbe(struct DESCR
{
descriptorStruct.regionSection.flReg1.BASE = (DESCRIPTORREGIONSIZE + GBEREGIONSIZE_8K) >> FLREGIONBITSHIFT;
descriptorStruct.regionSection.flReg1.LIMIT = (romSize >> FLREGIONBITSHIFT) - 1;
-
+
return descriptorStruct;
}
@@ -133,7 +133,7 @@ struct DESCRIPTORREGIONRECORD descriptorBiosRegionFillImageAfterDescriptor(struc
{
descriptorStruct.regionSection.flReg1.BASE = DESCRIPTORREGIONSIZE >> FLREGIONBITSHIFT;
descriptorStruct.regionSection.flReg1.LIMIT = (romSize >> FLREGIONBITSHIFT) - 1;
-
+
return descriptorStruct;
}
@@ -150,7 +150,7 @@ struct DESCRIPTORREGIONRECORD descriptorOemString(struct DESCRIPTORREGIONRECORD
descriptorStruct.oemSection.magicString[7] = 0x45;
return descriptorStruct;
-}
+}
/* Check whether a GbE region is defined by this descriptor.
* Not thorough, but should work in most cases */
@@ -178,7 +178,7 @@ struct DESCRIPTORREGIONRECORD librebootSetGbeBiosDescriptorRegions(struct DESCRI
{
if (descriptorDefinesGbeRegion(descriptorStruct))
{
- /*
+ /*
* set number of regions from 4 -> 2 (0 based, so 4 means 5 and 2
* means 3. We want 3 regions: descriptor, gbe and bios, in that order)
*/
@@ -193,7 +193,7 @@ struct DESCRIPTORREGIONRECORD librebootSetGbeBiosDescriptorRegions(struct DESCRI
descriptorStruct.ichStraps.ichStrap0.lanPhy = 0x1;
}
else {
- /*
+ /*
* set number of regions from 4 -> 2 (0 based, so 4 means 5 and 1
* means 2. We want 2 regions: descriptor and bios, in that order)
*/
@@ -237,12 +237,12 @@ struct DESCRIPTORREGIONRECORD librebootDescriptorStructFromFactory(struct DESCRI
descriptorStruct = descriptorMeRegionRemoved(descriptorStruct);
/* Disable the ME/TPM and remove the ME/Platform regions: */
descriptorStruct = descriptorPlatformRegionRemoved(descriptorStruct);
-
+
/* Disable the ME itself, so that it doesn't try to start when this descriptor is in use */
descriptorStruct = descriptorDisableMe(descriptorStruct);
/* Also disable the TPM, by default */
descriptorStruct = descriptorDisableTpm(descriptorStruct);
-
+
return descriptorStruct;
}
@@ -254,64 +254,64 @@ struct DESCRIPTORREGIONRECORD librebootDescriptorStructFromFactory(struct DESCRI
/*
* Generate a C (.h) header file for the C source file made by notCreatedCFileFromDescriptorStruct()
- *
+ *
* Output it to a file.
*/
-int notCreatedHFileForDescriptorCFile(char* outFileName, char* cFileName)
-{
+int notCreatedHFileForDescriptorCFile(char* outFileName, char* cFileName)
+{
remove(outFileName); /* Remove the old file before continuing */
-
+
/* Open the file that will be written to */
FILE* fp = fopen(outFileName, "w+");
/* ------------------------------ */
-
+
fprintf(fp, "/* %s: generated C code from ich9deblob */\n", outFileName);
fprintf(fp, "/* .h header file for the descriptor-generating C code (%s) */\n\n", cFileName);
-
+
fprintf(fp, "#ifndef ICH9GEN_MKDESCRIPTOR_H\n");
fprintf(fp, "#define ICH9GEN_MKDESCRIPTOR_H\n\n");
-
+
fprintf(fp, "#include <stdio.h>\n");
fprintf(fp, "#include <string.h>\n");
fprintf(fp, "#include \"../descriptor/descriptor.h\"\n\n");
-
+
fprintf(fp, "struct DESCRIPTORREGIONRECORD generatedDescriptorStruct(unsigned int romSize, int hasGbe);\n");
-
+
fprintf(fp, "#endif\n");
-
+
/* ------------------------------ */
-
+
fclose(fp); /* Always close the file when done. */
-
+
return 0;
}
/*
* Generate a C source file that initializes the same data from a given
* 4KiB Descriptor data structure.
- *
+ *
* Output it to a file.
*/
int notCreatedCFileFromDescriptorStruct(struct DESCRIPTORREGIONRECORD descriptorStruct, char* outFileName, char* headerFileName)
{
int i, j;
-
+
remove(outFileName); /* Remove the old file before continuing */
-
+
/* Open the file that will be written to */
FILE* fp = fopen(outFileName, "w+");
/* ------------------------------ */
-
+
fprintf(fp, "/* %s: generated C code from ich9deblob */\n", outFileName);
fprintf(fp, "/* .c source file for the descriptor-generating C code */\n\n");
-
+
fprintf(fp, "#include \"%s\"\n\n", headerFileName);
-
+
fprintf(fp, "/* Generate a 4KiB Descriptor struct, with default values. */\n");
fprintf(fp, "/* Read ../descriptor/descriptor.h for an explanation of the default values used here */\n\n");
-
+
fprintf(fp, "struct DESCRIPTORREGIONRECORD generatedDescriptorStruct(unsigned int romSize, int hasGbe)\n");
fprintf(fp, "{\n");
fprintf(fp, " int i;\n");
@@ -600,11 +600,11 @@ int notCreatedCFileFromDescriptorStruct(struct DESCRIPTORREGIONRECORD descriptor
fprintf(fp, "\n");
fprintf(fp, " return descriptorStruct;\n");
fprintf(fp, "}\n\n");
-
+
/* ------------------------------ */
-
+
fclose(fp); /* Always close the file when done. */
-
+
return 0;
}
@@ -620,7 +620,7 @@ int notCreatedCFileFromDescriptorStruct(struct DESCRIPTORREGIONRECORD descriptor
void printDescriptorRegionLocations(struct DESCRIPTORREGIONRECORD descriptorStruct, char* romName)
{
printf("\n");
-
+
/* Descriptor region */
printf(
"%s: Descriptor start block: %08x ; Descriptor end block: %08x\n",
@@ -628,23 +628,23 @@ void printDescriptorRegionLocations(struct DESCRIPTORREGIONRECORD descriptorStru
descriptorStruct.regionSection.flReg0.BASE << FLREGIONBITSHIFT,
descriptorStruct.regionSection.flReg0.LIMIT << FLREGIONBITSHIFT
);
-
+
/* BIOS region */
printf(
- "%s: BIOS start block: %08x ; BIOS end block: %08x\n",
+ "%s: BIOS start block: %08x ; BIOS end block: %08x\n",
romName,
- descriptorStruct.regionSection.flReg1.BASE << FLREGIONBITSHIFT,
+ descriptorStruct.regionSection.flReg1.BASE << FLREGIONBITSHIFT,
descriptorStruct.regionSection.flReg1.LIMIT << FLREGIONBITSHIFT
);
-
+
/* ME region */
printf(
- "%s: ME start block: %08x ; ME end block: %08x\n",
+ "%s: ME start block: %08x ; ME end block: %08x\n",
romName,
- descriptorStruct.regionSection.flReg2.BASE << FLREGIONBITSHIFT,
+ descriptorStruct.regionSection.flReg2.BASE << FLREGIONBITSHIFT,
descriptorStruct.regionSection.flReg2.LIMIT << FLREGIONBITSHIFT
);
-
+
/* GBe region */
printf(
"%s: GBe start block: %08x ; GBe end block: %08x\n",
@@ -652,7 +652,7 @@ void printDescriptorRegionLocations(struct DESCRIPTORREGIONRECORD descriptorStru
descriptorStruct.regionSection.flReg3.BASE << FLREGIONBITSHIFT,
descriptorStruct.regionSection.flReg3.LIMIT << FLREGIONBITSHIFT
);
-
+
/* Platform region */
printf(
"%s: Platform start block: %08x ; Platform end block: %08x\n",
@@ -660,6 +660,6 @@ void printDescriptorRegionLocations(struct DESCRIPTORREGIONRECORD descriptorStru
descriptorStruct.regionSection.flReg4.BASE << FLREGIONBITSHIFT,
descriptorStruct.regionSection.flReg4.LIMIT << FLREGIONBITSHIFT
);
-
+
return;
}
diff --git a/projects/ich9gen/sources/src/descriptor/descriptor.h b/projects/ich9gen/sources/src/descriptor/descriptor.h
index 7fb5c257..c81d451f 100644
--- a/projects/ich9gen/sources/src/descriptor/descriptor.h
+++ b/projects/ich9gen/sources/src/descriptor/descriptor.h
@@ -18,7 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/*
* Purpose: provide struct representing descriptor region.
* Map actual buffers of this regions, directly to instances of these
@@ -27,10 +27,10 @@
* bit fields used, corresponding to datasheet. See links to datasheets
* and documentation in ich9deblob.c
*/
-
+
/*
* See docs/hardware/x200_remove_me.html for info plus links to datasheet (also linked below)
- *
+ *
* Info about flash descriptor (read page 845 onwards):
* http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf
*/
@@ -54,7 +54,7 @@
#define ROMSIZE_8MB 0x800000
#define ROMSIZE_16MB 0x1000000
-/*
+/*
* Related to the flash descriptor
* bits 12(0xC)-24(0x18) are represented for words found in the flash descriptor
* To manipulate these easily in C, we shift them by FLREGIONBITSHIFT and then shift them back when done
@@ -72,7 +72,7 @@
struct FLVALSIG
{
/*
- * 4 bytes.
+ * 4 bytes.
* descriptor mode = 0FF0A55A (hex, big endian). Note: stored in ROM in little endian order.
* Anything else is considered invalid and will put the system in non-descriptor mode.
*/
@@ -92,7 +92,7 @@ struct FLMAP0
/* most significant bits. */
};
-struct FLMAP1
+struct FLMAP1
{
/* least significant bits */
uint8_t FMBA : 8;
@@ -103,7 +103,7 @@ struct FLMAP1
/* most significant bits */
};
-struct FLMAP2
+struct FLMAP2
{
/* least significant bits */
uint8_t FMSBA : 8;
@@ -113,7 +113,7 @@ struct FLMAP2
};
/* Flash Map Registers */
-struct FLMAPS
+struct FLMAPS
{
struct FLMAP0 flMap0;
struct FLMAP1 flMap1;
@@ -121,7 +121,7 @@ struct FLMAPS
};
/* Flash Components Register */
-struct FLCOMP
+struct FLCOMP
{
/* least significant bits */
uint8_t component1Density : 3;
@@ -138,7 +138,7 @@ struct FLCOMP
/* most significant bits */
};
-struct COMPONENTSECTIONRECORD
+struct COMPONENTSECTIONRECORD
{
struct FLCOMP flcomp;
uint32_t flill;
@@ -146,7 +146,7 @@ struct COMPONENTSECTIONRECORD
uint8_t padding[36];
};
-struct FLREG
+struct FLREG
{
/* least significant bits */
uint16_t BASE : 13;
@@ -161,7 +161,7 @@ struct FLREG
* Defines where all the regions begin/end.
* This is very important for disabling ME/AMT
*/
-struct REGIONSECTIONRECORD
+struct REGIONSECTIONRECORD
{
struct FLREG flReg0; /* Descriptor */
struct FLREG flReg1; /* BIOS */
@@ -171,7 +171,7 @@ struct REGIONSECTIONRECORD
uint8_t padding[12];
};
-struct FLMSTR
+struct FLMSTR
{
/* least significant bits */
uint16_t requesterId : 16;
@@ -199,7 +199,7 @@ struct MASTERACCESSSECTIONRECORD
uint8_t padding[148];
};
-struct ICHSTRAP0
+struct ICHSTRAP0
{
/* least significant bits */
/* todo: add MeSmBus2Sel (boring setting) */
@@ -218,7 +218,7 @@ struct ICHSTRAP0
/* most significant bits */
};
-struct ICHSTRAP1
+struct ICHSTRAP1
{
/* least significant bits */
uint8_t northMlink : 1; /* North MLink Dynamic Clock Gate Disable : Sets the default value for the South MLink Dynamic Clock Gate Enable registers. */
@@ -233,14 +233,14 @@ struct ICHSTRAP1
};
/* ICH straps */
-struct ICHSTRAPSRECORD
+struct ICHSTRAPSRECORD
{
struct ICHSTRAP0 ichStrap0;
struct ICHSTRAP1 ichStrap1;
uint8_t padding[248];
};
-struct MCHSTRAP0
+struct MCHSTRAP0
{
/* least significant bits */
uint8_t meDisable : 1; /* If true, ME is disabled. */
@@ -255,14 +255,14 @@ struct MCHSTRAP0
};
/* MCH straps */
-struct MCHSTRAPSRECORD
+struct MCHSTRAPSRECORD
{
struct MCHSTRAP0 mchStrap0;
uint8_t padding[3292];
};
/* ME VSCC Table */
-struct MEVSCCTABLERECORD
+struct MEVSCCTABLERECORD
{
uint32_t jid0;
uint32_t vscc0;
@@ -284,14 +284,14 @@ struct DESCRIPTORMAP2RECORD
};
/* OEM section */
-struct OEMSECTIONRECORD
+struct OEMSECTIONRECORD
{
uint8_t magicString[8];
uint8_t padding[248];
};
/* 4KiB descriptor region, goes at the beginning of the ROM image */
-struct DESCRIPTORREGIONRECORD
+struct DESCRIPTORREGIONRECORD
{
struct FLVALSIG flValSig; /* Flash Valid Signature Register */
struct FLMAPS flMaps; /* Flash Map Registers */
@@ -310,7 +310,7 @@ struct DESCRIPTORREGIONRECORD
* Function declarations (keep gcc/make happy. check them in descriptor.c)
* ---------------------------------------------------------------------
*/
-
+
struct DESCRIPTORREGIONRECORD descriptorHostRegionsUnlocked(struct DESCRIPTORREGIONRECORD descriptorStruct);
struct DESCRIPTORREGIONRECORD descriptorMeRegionsForbidden(struct DESCRIPTORREGIONRECORD descriptorStruct);
struct DESCRIPTORREGIONRECORD descriptorMeRegionRemoved(struct DESCRIPTORREGIONRECORD descriptorStruct);
diff --git a/projects/ich9gen/sources/src/gbe/gbe.c b/projects/ich9gen/sources/src/gbe/gbe.c
index d04b8f2a..6bd41549 100644
--- a/projects/ich9gen/sources/src/gbe/gbe.c
+++ b/projects/ich9gen/sources/src/gbe/gbe.c
@@ -18,7 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/*
* Provide gbe related functions.
*/
@@ -40,7 +40,7 @@ uint16_t gbeGetChecksumFrom4kBuffer(uint16_t* gbeWord, uint16_t desiredValue, in
for (wordOffset = 0; wordOffset < 0x3F; wordOffset++)
total += gbeWord[wordOffset + (gbeRegionBase>>1)];
-
+
return desiredValue - total;
}
@@ -51,25 +51,25 @@ uint16_t gbeGetChecksumFrom4kStruct(struct GBEREGIONRECORD_4K gbeStruct4k, uint1
}
/* modify the gbe region extracted from a factory.rom dump */
-struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8K gbeStruct8k)
-{
+struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8K gbeStruct8k)
+{
unsigned int i;
-
+
/*
* http://www.intel.co.uk/content/dam/doc/application-note/82573-nvm-map-appl-note.pdf
- * That is a datasheet for a later chipset. Word 40H-53H seems (as per this datasheet) to be for AMT.
+ * That is a datasheet for a later chipset. Word 40H-53H seems (as per this datasheet) to be for AMT.
* Writing over it doesn't seem to cause any harm, since the ME/AMT is already removed in libreboot.
*/
for(i = 0; i < sizeof(gbeStruct8k.backup.padding); i++) {
gbeStruct8k.backup.padding[i] = 0xFF; /* FF is correct. In the struct, this is a char buffer. */
} /* We really only need to do this for words 40h-53h, but let's just nuke the whole lot. It's all 0xFF anyway. */
-
+
/* Fix the checksum */
gbeStruct8k.backup.checkSum = gbeGetChecksumFrom4kStruct(gbeStruct8k.backup, GBECHECKSUMTOTAL);
-
+
/* Main Gbe region on X200 (as shipped by Lenovo) is broken. Fix it by over-writing it with the contents of the backup */
memcpy(&gbeStruct8k.main, &gbeStruct8k.backup, GBEREGIONSIZE_4K);
-
+
return gbeStruct8k;
}
@@ -81,46 +81,46 @@ struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8
/*
* Generate a C (.h) header file for the C source file made by notCreatedCFileFromGbeStruct4k()
- *
+ *
* Output it to a file.
*/
-int notCreatedHFileForGbeCFile(char* outFileName, char* cFileName)
-{
+int notCreatedHFileForGbeCFile(char* outFileName, char* cFileName)
+{
remove(outFileName); /* Remove the old file before continuing */
-
+
/* Open the file that will be written to */
FILE* fp = fopen(outFileName, "w+");
/* ------------------------------ */
-
+
fprintf(fp, "/* %s: generated C code from ich9deblob */\n", outFileName);
fprintf(fp, "/* .h header file for the gbe-generating C code (%s) */\n\n", cFileName);
-
+
fprintf(fp, "#ifndef ICH9GEN_MKGBE_H\n");
fprintf(fp, "#define ICH9GEN_MKGBE_H\n\n");
-
+
fprintf(fp, "#include <stdio.h>\n");
fprintf(fp, "#include <string.h>\n");
fprintf(fp, "#include \"../gbe/gbe.h\"\n\n");
-
+
fprintf(fp, "struct GBEREGIONRECORD_4K generatedGbeStruct4k();\n");
fprintf(fp, "struct GBEREGIONRECORD_8K generatedGbeStruct8k();\n\n");
-
+
fprintf(fp, "#endif\n");
-
+
/* ------------------------------ */
-
+
fclose(fp); /* Always close the file when done. */
-
+
return 0;
}
/*
* Generate a C source file that initializes the same data from a given
* 4KiB Gbe data structure.
- *
+ *
* It will simply copy the 4KiB struct at the end to make a full 8KiB struct.
* So just pass a working 4KiB Gbe struct here and you're good to go.
- *
+ *
* Output it to a file.
*/
int notCreatedCFileFromGbeStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char* outFileName, char* headerFileName)
@@ -128,22 +128,22 @@ int notCreatedCFileFromGbeStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char*
int i;
int paddingSize;
int paddingIdentical;
-
+
remove(outFileName); /* Remove the old file before continuing */
-
+
/* Open the file that will be written to */
FILE* fp = fopen(outFileName, "w+");
/* ------------------------------ */
-
+
fprintf(fp, "/* %s: generated C code from ich9deblob */\n", outFileName);
fprintf(fp, "/* .c source file for the gbe-generating C code */\n\n");
-
+
fprintf(fp, "#include \"%s\"\n\n", headerFileName);
-
+
fprintf(fp, "/* Generate a 4KiB Gbe struct, with default values. */\n");
fprintf(fp, "/* Read ../gbe/gbe.h for an explanation of the default values used here */\n\n");
-
+
fprintf(fp, "struct GBEREGIONRECORD_4K generatedGbeStruct4k()\n");
fprintf(fp, "{\n");
fprintf(fp, " int i;\n");
@@ -402,7 +402,7 @@ int notCreatedCFileFromGbeStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char*
fprintf(fp, "\n");
fprintf(fp, " return gbeStruct4k;\n");
fprintf(fp, "}\n\n");
-
+
fprintf(fp, "struct GBEREGIONRECORD_8K generatedGbeStruct8k()\n");
fprintf(fp, "{\n");
fprintf(fp, " struct GBEREGIONRECORD_8K gbeStruct8k;\n");
@@ -410,11 +410,11 @@ int notCreatedCFileFromGbeStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char*
fprintf(fp, " memcpy(&gbeStruct8k.backup, &gbeStruct8k.main, GBEREGIONSIZE_4K);\n");
fprintf(fp, " return gbeStruct8k;\n");
fprintf(fp, "}\n\n");
-
+
/* ------------------------------ */
-
+
fclose(fp); /* Always close the file when done. */
-
+
return 0;
}
@@ -431,24 +431,24 @@ int notCreatedCFileFromGbeStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char*
void printGbeChecksumDataFromStruct4k(struct GBEREGIONRECORD_4K gbeStruct4k, char* romName, char* regionName)
{
printf(
- "%s Gbe (%s): calculated Gbe checksum: 0x%hx and actual GBe checksum: 0x%hx\n",
+ "%s Gbe (%s): calculated Gbe checksum: 0x%hx and actual GBe checksum: 0x%hx\n",
romName,
regionName,
- gbeGetChecksumFrom4kStruct(gbeStruct4k, GBECHECKSUMTOTAL),
+ gbeGetChecksumFrom4kStruct(gbeStruct4k, GBECHECKSUMTOTAL),
gbeStruct4k.checkSum
);
-
+
return;
}
/*
- * show debugging info: show calculated (correct) gbe checksum and what
+ * show debugging info: show calculated (correct) gbe checksum and what
* is actually stored, in a 8K gbe struct. Do so for main and backup regions.
*/
void printGbeChecksumDataFromStruct8k(struct GBEREGIONRECORD_8K gbeStruct8k, char* romName)
-{
+{
printGbeChecksumDataFromStruct4k(gbeStruct8k.main, romName, "main");
printGbeChecksumDataFromStruct4k(gbeStruct8k.backup, romName, "backup");
-
+
return;
}
diff --git a/projects/ich9gen/sources/src/gbe/gbe.h b/projects/ich9gen/sources/src/gbe/gbe.h
index a1350fdd..14548e71 100644
--- a/projects/ich9gen/sources/src/gbe/gbe.h
+++ b/projects/ich9gen/sources/src/gbe/gbe.h
@@ -18,21 +18,21 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/*
* Purpose: provide struct representing gbe region.
* Map actual buffers of this regions, directly to instances of these
* structs. This makes working with gbe really easy.
*/
-
+
/*
* bit fields used, corresponding to datasheet. See links to datasheets
* and documentation in ich9deblob.c
*/
-
+
/*
* See docs/hardware/x200_remove_me.html for info plus links to datasheet (also linked below)
- *
+ *
* Info about Gbe region (read whole datasheet):
* http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf
* https://communities.intel.com/community/wired/blog/2010/10/14/how-to-basic-eeprom-checksums
@@ -49,14 +49,14 @@
/* Size of the full gbe region in bytes */
#define GBEREGIONSIZE_8K 0x2000
/*
- * Size of each sub-region in gbe.
+ * Size of each sub-region in gbe.
* gbe contains two regions which
* can be identical: main and backup.
* These are each half the size of the full region
*/
#define GBEREGIONSIZE_4K 0x1000
-/*
+/*
* When adding up the first 0x3F 16-bit words
* in a 4KiB GBE region, it should be equal
* to 0xBABA
@@ -74,7 +74,7 @@
* ---------------------------------------------------------------------
* Gbe struct representing the data:
* ---------------------------------------------------------------------
- */
+ */
struct GBE_RESERVED_WORD_03H {
/* least significant bits */
@@ -147,17 +147,17 @@ struct GBE_EXTENDED_CONFIGURATION_CONTROL_WORD_2 {
/*
* Word 17h: LED 1 Configuration and Power Management
- *
+ *
* Default values for LEDCTL register fields controlling LED1 (LINK_1000)
* output behaviours and OEM fields that define PHY power management
* parameters loaded to the PHY_CTRL register.
*/
struct LED_CTL_1 {
/* least significant bits */
-
+
/* See page 16 in the datasheet to show the different modes. deblobbed_descriptor.bin has "ACTIVITY" mode set */
uint8_t led1Mode : 4; /* Default value 0111 (bin) 7 (hex) says datasheet. 1011 (bin) B (hex) according to deblobbed_descriptor.bin */
-
+
uint8_t reserved1 : 1; /* Reserved. Should be 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led1BlinkMode : 1; /* 0 = slow blink, 1 = fast blink. should be identical to led0 blink mode. Default is 0 according to datasheet and deblobbed_descriptor.bin */
/* By setting this and led0 blink mode (see word 18h) to 1, you could enable a faster blinking on the LED's where the ethernet cable goes
@@ -175,26 +175,26 @@ struct LED_CTL_1 {
/* most significant bits */
};
-/*
+/*
* Word 18: LED 0 and 2 Configuration Defaults
- *
+ *
* Hardware defaults for LEDCTL register fields controlling LED0 (LINK/ACTIVITY)
* and LED2 (LINK_100) output behaviours.
*/
struct LED_CTL_02 {
/* least significant bits */
-
+
/* see page 16 in datasheet to show the different modes. deblobbed_descriptor has "LINK-UP" mode set */
uint8_t led0Mode : 4; /* default value 0100 (bin) or 4 (hex) according to datasheet. It's 0010 (bin) or 2 (hex) according to deblobbed_descriptor.bin */
-
+
uint8_t reserved1 : 1; /* Reserved. Should be set to 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led0BlinkMode : 1; /* This should be the same as led1BlinkMode (see word 17h). Default is 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led0Invert : 1; /* initial value of LED0_IVRT field. 0 = led0 has active low output, 1 is high active output. Default is 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led0Blink : 1; /* LED0_BLINK field. Should be 0 according to datasheet and deblobbed_descriptor.bin */
-
+
/* see page 16 in datasheet to shew the different modes. deblobbed_descriptor has "LINK_100" mode set */
uint8_t led2Mode : 4; /* default value 0110 (bin) or 6 (hex) according to datasheet and deblobbed_descriptor.bin */
-
+
uint8_t reserved2 : 1; /* Reserved. Should be 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led2BlinkMode : 1; /* 0 = slow blink. 1 = fast. default 0 according to datasheet and deblobbed_descriptor.bin */
uint8_t led2Invert : 1; /* LED2_IVRT field. Should be 0 according to datasheet and deblobbed_descriptor.bin */
@@ -218,7 +218,7 @@ struct GBE_PXE_BOOT_AGENT_MAIN_SETUP_OPTIONS {
uint8_t efiPresence : 1; /* 1 means that an EFI image is present (0 means not present). deblobbed_descriptor.bin says 0. if 1, eeprom word 33h (efi version) becomes valid. if pxePresent is 1, that means EFI and PXE are both present.*/
uint8_t pxePresence : 1; /* 0 means that a PXE image is present. 1 means to pxe present. deblobbed_descriptor.bin says 0. if 0, then word 32h (PXE version) in eeprom becomes valid */
/* most significant bits */
-
+
/* This whole data structure is pointless, since libreboot doesn't (read: won't)
* include the proprietary intel boot agent. Struct exists here simply for documentations sake. */
};
@@ -232,18 +232,18 @@ struct GBE_PXE_BOOT_AGENT_CONFIGURATION_CUSTOMIZATION_OPTIONS_31H {
uint8_t disableLegacyWakeupSupport : 1; /* 1 means no changes in legacy wakeup support menu is allowed. default is 0, and deblobbed_descriptor.bin says 0 */
uint8_t disableFlashUpdate : 1; /* 1 means no changes to flash image using PROset is allowed. default is 0, and deblobbed_descriptor.bin says 0 */
uint8_t reserved1 : 2; /* Reserved. Datasheet says these must be 0, and deblobbed_descriptor.bin sets them to 0. */
-
+
/*
* deblobbed_descriptor says 000
* 000 = normal behaviour
* see datasheet (page 21) for other modes.
*/
uint8_t ibaBootOrderSetupMode : 3;
-
+
uint8_t reserved2 : 3; /* Reserved. Datasheet says these must be set to 0, and deblobbed_descriptor.bin sets them to 0. */
uint8_t signature : 2; /* Must be set to 01 to indicate that this whole word has been configured by the agent or other software. deblobbed_descriptor.bin says 01. */
/* most significant bits */
-
+
/* This whole data structure is pointless, since libreboot doesn't (read: won't)
* include the proprietary intel boot agent. Struct exists here simply for documentations sake. */
};
@@ -254,7 +254,7 @@ struct GBE_PXE_BOOT_AGENT_CONFIGURATION_CUSTOMIZATION_OPTIONS_32H {
uint8_t minorVersionNumber : 4; /* PXE boot agent minor number. default is 2 (hex). deblobbed_descriptor.bin says 3 (hex) */
uint8_t majorVersionNumber : 4; /* PXE boot agent major number. default is F (hex). deblobbed_descriptor.bin says 1 (hex) */
/* most significant bits */
-
+
/* This whole data structure is pointless, since libreboot doesn't (read: won't)
* include the proprietary intel boot agent. Struct exists here simply for documentations sake. */
};
@@ -269,7 +269,7 @@ struct GBE_PXE_IBA_CAPABILITIES {
uint8_t reserved2_1 : 6; /* ^ part of reserved2_0. split this way so that the bitfields align */
uint8_t signature : 2; /* must be 01 to indicate that the word is configured by the agent or other software. deblobbed_descriptor.bin says 01 */
/* most significant bits */
-
+
/* This whole data structure is pointless, since libreboot doesn't (read: won't)
* include the proprietary intel boot agent. Struct exists here simply for documentations sake. */
};
@@ -279,14 +279,14 @@ struct GBE_PXE_SOFTWARE_REGION {
struct GBE_PXE_BOOT_AGENT_CONFIGURATION_CUSTOMIZATION_OPTIONS_31H bootAgentConfigurationCustomizationOptions31h; /* Word 31h */
struct GBE_PXE_BOOT_AGENT_CONFIGURATION_CUSTOMIZATION_OPTIONS_32H bootAgentConfigurationCustomizationOptions32h; /* Word 32h */
struct GBE_PXE_IBA_CAPABILITIES ibaCapabilities; /* Word 33h */
-
+
/* Words 34h to 3Eh (padding). Set these to 0xFFFF (according to deblobbed_descriptor.bin) */
uint16_t paddingWords34hTo3Eh[11];
-
+
/*
* the pxe software region is practically useless in libreboot, since
- * libreboot does not include the intel boot agent (it's proprietary software).
- *
+ * libreboot does not include the intel boot agent (it's proprietary software).
+ *
* Having this struct in place is simply for documentations sake. It is completely
* irrelevant what you put here. filling it with 0xFFFF would probably be fine.
*/
@@ -301,90 +301,90 @@ struct GBEREGIONRECORD_4K {
/*
* Word 08 and 09 (pba low and pba high):
- *
+ *
* Both of these should be set to 0xFFFF by default, according to the datasheet.
* "nine digit printed board assembly (PBA) number" for intel cards to be stored
- * in a 4 byte (read: 2 word) field.
- *
+ * in a 4 byte (read: 2 word) field.
+ *
* Example: if pba number is 123456-003, then word 08 should be 1234h and word 09 becomes 5603.
* Note: 1234 and 5603 above are big endian. In the image it would actually be 34 12 and 0356
- *
+ *
* Example: in mine it was (in the image): 08 10 FF FF. That becomes 1008h and FFFFh, or
* basically: 1008FF-0FF. The same was observed in another.
- *
+ *
* Setting it to FF FF FF FF should be fine, according to the datasheet.
*/
uint16_t pbaLow; /* Word 08. Set it to 0x1008 (according to deblobbed_descriptor.bin). */
uint16_t pbaHigh; /* Word 09. Set it to 0xFFFF (according to deblobbed_descriptor.bin). */
-
+
/* Word 0A */
struct GBE_PCI_INITIALIZATION_CONTROL_WORD pciInitializationControlWord;
-
- /*
+
+ /*
* Word 0B; subsystem ID
- *
+ *
* If load subsystem ID bit of word 0A (pci init control word) is
* set to 1 (read: it is. in my deblobbed_descriptor.bin), store
* the subsystem id here. Datasheet says that the default value is
* 0000h, but you should set this to 20EEh (little endian: EE 20)
*/
uint16_t subsystemId; /* Set this to 0x20EE */
-
+
/*
* Word 0C; subsystem vendor ID
- *
+ *
* If load subsystem vendor ID bit of word 0A (pci init control word)
* is set to 1 (read: it is. in my deblobbed_descriptor.bin), store
- * the subsystem vendor id here. Datasheet says that the default
+ * the subsystem vendor id here. Datasheet says that the default
* value is 8086h, but you should set this to 17AAh (lendian: AA 17).
*/
uint16_t subsystemVendorId; /* Set this to 0x17AA */
-
- /*
+
+ /*
* Word 0D: device ID
- *
+ *
* If load vendor/device ID in word 0A (pci init control word) is 1
* (it is) then this word is used to init device id using word 21h,
* 1Eh or 1Fh. In my case, deviceId is 0x10F5. Word 21h is set to
* 0x10CB, word 1Eh is 0x10F5 and 1Fh is 0x10BF
- *
+ *
* The datasheet says that 10F5 is for Intel 82567LM gigabit ethernet
* controller; 10BF is for Intel 82567LF and 10CB is for Intel 82567V.
- *
+ *
* Based on this, the X200 is shown to have the Intel 82567LM ethernet
* controller.
*/
uint16_t deviceId; /* Set this to 0x10F5. */
/* It is important that this is correct, for the linux kernel driver */
-
- /*
+
+ /*
* Word 0E: vendor ID
- *
+ *
* If load vendor/device ID in word 0A (pci init control) is 1 (it is),
* then this word used read to initialize the PCI vendor ID. Default
- * value is 8086 according to datasheets, and deblobbed_descriptor.bin.
- *
+ * value is 8086 according to datasheets, and deblobbed_descriptor.bin.
+ *
* Intel is often 8086 as a PCI vendor ID. Because 8086. As in the CPU architecture.
*/
uint16_t vendorId;
-
+
uint16_t deviceRevId; /* Word 0F: reserved bits. Set all bits to 0. */
struct GBE_LAN_POWER_CONSUMPTION lanPowerConsumption; /* Word 10: LAN Power Consumption (see struct definition) */
uint16_t reservedWords11h12h[2]; /* Words 11-12: Reserved. Set both of them to 0x0000 (according to datasheet). */
-
+
/* Word 13: Shared Initialization Control Word */
struct GBE_SHARED_INITIALIZATION_CONTROL_WORD sharedInitializationControlWord;
-
+
/* Word 14: Extended Configuration Control Word 1 */
struct GBE_EXTENDED_CONFIGURATION_CONTROL_WORD_1 extendedConfigurationControlWord1;
-
+
/* Word 15: Extended Configuration Control Word 2 */
struct GBE_EXTENDED_CONFIGURATION_CONTROL_WORD_2 extendedConfigurationControlWord2;
-
+
/* Word 16: Extended Configuration Control Word 3 */
/* All bits reserved. Datasheet and deblobbed_descriptor.bin say to set it to zero */
uint16_t extendedConfigurationControlWord3;
-
+
struct LED_CTL_1 ledCtl1; /* Word 17: LED 1 Configuration and Power Management */
struct LED_CTL_02 ledCtl02; /* Word 18: LED 0 and 2 Configuration Defaults */
uint16_t reservedWord19h; /* Word 19: Reserved. Default is 0x2B00 according to datasheet, but in deblobbed_descriptor.bin it is 0x2B40 */
@@ -401,16 +401,16 @@ struct GBEREGIONRECORD_4K {
uint16_t reservedWords24to2Fh[12]; /* Words 24-2F: Reserved. These should all be 0x0000 according to datasheet and deblobbed_descriptor.bin */
struct GBE_PXE_SOFTWARE_REGION pxeSoftwareRegion; /* Words 30-3E: PXE Software Region */
uint16_t checkSum; /* when added to the sum of all words above, this should match GBECHECKSUMTOTAL */
-
+
/* set all bytes in here to 0xFF */
uint8_t padding[3968];
};
-/* main and backup region in gbe */
+/* main and backup region in gbe */
struct GBEREGIONRECORD_8K {
struct GBEREGIONRECORD_4K main;
struct GBEREGIONRECORD_4K backup;
- /*
+ /*
* Backup region:
* This is actually "main" on X200, since the real main has a bad checksum
* and other errors. You should do what you need on this one (if modifying
@@ -423,7 +423,7 @@ struct GBEREGIONRECORD_8K {
* Function declarations (keep gcc/make happy. check them in gbe.c)
* ---------------------------------------------------------------------
*/
-
+
uint16_t gbeGetChecksumFrom4kBuffer(uint16_t* gbeWord, uint16_t desiredValue, int gbeRegionBase);
uint16_t gbeGetChecksumFrom4kStruct(struct GBEREGIONRECORD_4K gbeStruct4k, uint16_t desiredValue);
struct GBEREGIONRECORD_8K deblobbedGbeStructFromFactory(struct GBEREGIONRECORD_8K factoryGbeStruct8k);
diff --git a/projects/ich9gen/sources/src/ich9deblob.c b/projects/ich9gen/sources/src/ich9deblob.c
index d79a3a89..b9153ed6 100644
--- a/projects/ich9gen/sources/src/ich9deblob.c
+++ b/projects/ich9gen/sources/src/ich9deblob.c
@@ -1,7 +1,7 @@
/*
* ich9deblob.c
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: disable and remove the ME from ich9m/gm45 systems in coreboot.
*
* Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
@@ -20,26 +20,26 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/* Initially based on proof of concept by Steve Shenton. */
/* Original utility can be found at https://gitorious.org/ich9descriptortool */
-
+
/*
- * Read a factory.rom dump (ich9m/gm45 systems) and
+ * Read a factory.rom dump (ich9m/gm45 systems) and
* modify the flash descriptor to remove all regions except descriptor,
* Gbe and BIOS. Set BIOS region to full size of the ROM image (after
* the flash descriptor and gbe). Basically, deblob the descriptor.
- *
+ *
* This will will generate a concatenated descriptor+gbe dump suitable
* for use in libreboot. Currently tested: ThinkPad X200 (coreboot/libreboot)
*/
-
+
/*
* See docs/hardware/x200_remove_me.html for info plus links to datasheet (also linked below)
- *
+ *
* Info about flash descriptor (read page 845 onwards):
* http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf
- *
+ *
* Info about Gbe region (read whole datasheet):
* http://www.intel.co.uk/content/dam/doc/application-note/i-o-controller-hub-9m-82567lf-lm-v-nvm-map-appl-note.pdf
* https://communities.intel.com/community/wired/blog/2010/10/14/how-to-basic-eeprom-checksums
@@ -51,18 +51,18 @@ int main()
{
struct DESCRIPTORREGIONRECORD descriptorStruct;
uint8_t* descriptorBuffer = (uint8_t*)&descriptorStruct;
-
+
struct GBEREGIONRECORD_8K gbeStruct8k;
uint8_t* gbeBuffer8k = (uint8_t*)&gbeStruct8k;
uint32_t gbeRegionStart;
-
+
char* romFilename = "factory.rom";
char* descriptorGbeFilename = "deblobbed_descriptor.bin";
char* descriptorNoGbeFilename = "deblobbed_4kdescriptor.bin";
-
+
unsigned int bufferLength;
unsigned int romSize;
-
+
/*
* ------------------------------------------------------------------
* Compatibility checks. This version of ich9deblob is not yet portable.
@@ -71,7 +71,7 @@ int main()
if (systemOrCompilerIncompatible(descriptorStruct, gbeStruct8k)) return 1;
/* If true, fail with error message */
-
+
/*
* ------------------------------------------------------------------
* Extract the descriptor and gbe regions from the factory.rom dump
@@ -86,20 +86,20 @@ int main()
return 1;
}
printf("\n%s opened successfully\n", romFilename);
-
- /*
+
+ /*
* Get the descriptor region dump from the factory.rom
* (goes in factoryDescriptorBuffer variable)
*/
bufferLength = fread(descriptorBuffer, 1, DESCRIPTORREGIONSIZE, fp);
- if (DESCRIPTORREGIONSIZE != bufferLength) //
+ if (DESCRIPTORREGIONSIZE != bufferLength) //
{
printf("\nerror: could not read descriptor from %s (%i) bytes read\n", romFilename, bufferLength);
fclose(fp);
return 1;
}
printf("\ndescriptor region read successfully\n");
-
+
if (descriptorDefinesGbeRegion(descriptorStruct))
{
gbeRegionStart = descriptorStruct.regionSection.flReg3.BASE << FLREGIONBITSHIFT;
@@ -125,13 +125,13 @@ int main()
printf("\n%s size: [%i] bytes\n", romFilename, romSize);
fclose(fp);
-
+
/* Debugging (before modification) */
printDescriptorRegionLocations(descriptorStruct, "Original");
- if (descriptorDefinesGbeRegion(descriptorStruct))
+ if (descriptorDefinesGbeRegion(descriptorStruct))
printGbeChecksumDataFromStruct8k(gbeStruct8k, "Original");
else printf("NO GBE REGION\n");
-
+
/*
* ------------------------------------------------------------------
* Modify the descriptor and gbe regions, ready to go in libreboot.rom
@@ -179,7 +179,7 @@ int main()
return 1;
}
}
-
+
/*
* ------------------------------------------------------------------
* Generate ich9gen data (C code that will recreate the deblobbed descriptor+gbe from scratch)
@@ -205,7 +205,7 @@ int main()
return 1;
}
}
-
+
if (descriptorDefinesGbeRegion(descriptorStruct))
{
printf("The modified descriptor and gbe regions have also been dumped as src files: mkdescriptor.c, mkdescriptor.h, mkgbe.c, mkgbe.h\n");
diff --git a/projects/ich9gen/sources/src/ich9deblob.h b/projects/ich9gen/sources/src/ich9deblob.h
index c11ea290..e00b2c66 100644
--- a/projects/ich9gen/sources/src/ich9deblob.h
+++ b/projects/ich9gen/sources/src/ich9deblob.h
@@ -1,7 +1,7 @@
/*
* ich9deblob.h
* This file is part of the ich9deblob utility from the libreboot project
- *
+ *
* Purpose: header file for ich9deblob.c
*
* Copyright (C) 2014 Steve Shenton <sgsit@libreboot.org>
@@ -20,7 +20,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
#ifndef ICH9DEBLOB_H
#define ICH9DEBLOB_H
diff --git a/projects/ich9gen/sources/src/ich9gen.c b/projects/ich9gen/sources/src/ich9gen.c
index b3a2c9f1..4d1e767e 100644
--- a/projects/ich9gen/sources/src/ich9gen.c
+++ b/projects/ich9gen/sources/src/ich9gen.c
@@ -15,16 +15,16 @@
* 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[])
+int main(int argc, char *argv[])
{
int i, j;
-
+
struct GBEREGIONRECORD_8K gbeStruct8k = generatedGbeStruct8k();
struct DESCRIPTORREGIONRECORD descriptorStruct4M = generatedDescriptorStruct(ROMSIZE_4MB, WITHGBE);
struct DESCRIPTORREGIONRECORD descriptorStruct8M = generatedDescriptorStruct(ROMSIZE_8MB, WITHGBE);
@@ -32,11 +32,11 @@ int main(int argc, char *argv[])
struct DESCRIPTORREGIONRECORD descriptorStructNoGbe4M = generatedDescriptorStruct(ROMSIZE_4MB, WITHOUTGBE);
struct DESCRIPTORREGIONRECORD descriptorStructNoGbe8M = generatedDescriptorStruct(ROMSIZE_8MB, WITHOUTGBE);
struct DESCRIPTORREGIONRECORD descriptorStructNoGbe16M = generatedDescriptorStruct(ROMSIZE_16MB, WITHOUTGBE);
-
+
/* Only for the compatibility checks */
struct DESCRIPTORREGIONRECORD dummyDescriptorStruct;
struct GBEREGIONRECORD_8K dummyGbeStruct8k;
-
+
/*
* ------------------------------------------------------------------
* Compatibility checks. This version of ich9deblob is not yet portable.
@@ -45,19 +45,19 @@ int main(int argc, char *argv[])
if (systemOrCompilerIncompatible(dummyDescriptorStruct, dummyGbeStruct8k)) return 1;
/* If true, fail with error message */
-
+
/*
* ------------------------------------------------------------------
* Arguments given on the terminal
* ------------------------------------------------------------------
*/
-
+
if(argc==3) {
-
+
/* If user provides their own MAC address, it will be used.
- * Otherwise, ich9gen will simply use the default one.
- *
+ * Otherwise, ich9gen will simply use the default one.
+ *
* However, if the user provides an invalid MAC address, then ich9gen
* will exit. */
if(0==strcmp(argv[1],"--macaddress")) {
@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
}
for(i=0; i<6; i++) {
gbeStruct8k.main.macAddress[i] = 0;
-
+
/* Go through each nibble of the byte */
for(j=0; j<2; j++) {
if(argv[2][(i*3)+j]>='a' && argv[2][(i*3)+j]<='f')
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
gbeStruct8k.main.checkSum = gbeGetChecksumFrom4kStruct(gbeStruct8k.main, GBECHECKSUMTOTAL); /* Fix the checksum */
memcpy(&gbeStruct8k.backup, &gbeStruct8k.main, GBEREGIONSIZE_4K); /* Copy to the backup */
-
+
/* Generate ich9gen data (C code for Gbe region): */
/* mkgbe.h */
@@ -102,29 +102,29 @@ int main(int argc, char *argv[])
if (notCreatedCFileFromGbeStruct4k(gbeStruct8k.backup, "mkgbe.c", "mkgbe.h")) {
return 1;
}
-
+
printf("You selected to change the MAC address in the Gbe section. This has been done.\n\n");
-
+
printf("The modified gbe region has also been dumped as src files: mkgbe.c, mkgbe.h\n");
printf("To use these in ich9gen, place them in src/ich9gen/ and re-build ich9gen.\n\n");
}
-
+
}
-
+
/*
* ------------------------------------------------------------------
* Generate the 12KiB files, ready to be used in a libreboot image
* ------------------------------------------------------------------
*/
-
+
if (notCreatedDescriptorGbeFile(descriptorStruct4M, gbeStruct8k, "ich9fdgbe_4m.bin")) {
return 1;
}
-
+
if (notCreatedDescriptorGbeFile(descriptorStruct8M, gbeStruct8k, "ich9fdgbe_8m.bin")) {
return 1;
}
-
+
if (notCreatedDescriptorGbeFile(descriptorStruct16M, gbeStruct8k, "ich9fdgbe_16m.bin")) {
return 1;
}
@@ -134,15 +134,15 @@ int main(int argc, char *argv[])
* In these descriptors, the onboard Intel GbE NIC is disabled; a discrete one is used instead
* ------------------------------------------------------------------
*/
-
+
if (notCreated4kDescriptorFile(descriptorStructNoGbe4M, "ich9fdnogbe_4m.bin")) {
return 1;
}
-
+
if (notCreated4kDescriptorFile(descriptorStructNoGbe8M, "ich9fdnogbe_8m.bin")) {
return 1;
}
-
+
if (notCreated4kDescriptorFile(descriptorStructNoGbe16M, "ich9fdnogbe_16m.bin")) {
return 1;
}
diff --git a/projects/ich9gen/sources/src/ich9gen.h b/projects/ich9gen/sources/src/ich9gen.h
index 6b346b06..c558e04a 100644
--- a/projects/ich9gen/sources/src/ich9gen.h
+++ b/projects/ich9gen/sources/src/ich9gen.h
@@ -14,9 +14,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
+
/* Header file for ich9gen.c */
-
+
#ifndef ICH9GEN_H
#define ICH9GEN_H
diff --git a/projects/ich9gen/sources/src/ich9gen/mkdescriptor.c b/projects/ich9gen/sources/src/ich9gen/mkdescriptor.c
index 3b97a97b..09669ccf 100644
--- a/projects/ich9gen/sources/src/ich9gen/mkdescriptor.c
+++ b/projects/ich9gen/sources/src/ich9gen/mkdescriptor.c
@@ -226,4 +226,3 @@ struct DESCRIPTORREGIONRECORD generatedDescriptorStruct(unsigned int romSize, in
return descriptorStruct;
}
-
diff --git a/projects/ich9gen/sources/src/ich9gen/mkgbe.c b/projects/ich9gen/sources/src/ich9gen/mkgbe.c
index d6865823..099ab5b7 100644
--- a/projects/ich9gen/sources/src/ich9gen/mkgbe.c
+++ b/projects/ich9gen/sources/src/ich9gen/mkgbe.c
@@ -254,4 +254,3 @@ struct GBEREGIONRECORD_8K generatedGbeStruct8k()
memcpy(&gbeStruct8k.backup, &gbeStruct8k.main, GBEREGIONSIZE_4K);
return gbeStruct8k;
}
-