summaryrefslogtreecommitdiffstats
path: root/resources/utilities/ich9deblob/ich9deblob.c
diff options
context:
space:
mode:
Diffstat (limited to 'resources/utilities/ich9deblob/ich9deblob.c')
-rw-r--r--resources/utilities/ich9deblob/ich9deblob.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/resources/utilities/ich9deblob/ich9deblob.c b/resources/utilities/ich9deblob/ich9deblob.c
index ab347c6..05ba4e0 100644
--- a/resources/utilities/ich9deblob/ich9deblob.c
+++ b/resources/utilities/ich9deblob/ich9deblob.c
@@ -245,12 +245,10 @@ int main(int argc, char *argv[])
// -------------------------------------------------------------------------------------
// calculate the 0x3F'th 16-bit uint to make the desired final checksum for GBe
- // observed values (from actual factory.rom dumps) 0xBABA 0x3ABA 0x34BA. spec defined as 0xBABA.
- // theoretically, this could be any l33t speak variation of BABA, eg 3434 or BA34, and so on, but this is untested. so far.
- // 40BA was also observed in another factory dump for another X200 - this is l33t speak for aoba, not baba....
- // maybe only the 8 least significant bits are checked? or something deeper than that
- // it will need to be tested if those gbe regions that use something other than baba
- // will also work with the checksum changed to match baba (per datasheets)
+ // observed checksum matches (from X200 factory.rom dumps) on main: 0x3ABA 0x34BA 0x40BA. spec defined as 0xBABA.
+ // X200 ships with a broken main gbe region by default (invalid checksum, and more)
+ // The "backup" gbe regions on these machines are correct, though, and is what the machines default to
+ // For libreboot's purpose, we can do much better than that by fixing the main one...
unsigned short gbeCalculatedChecksum = GetChecksum(factoryGbeBuffer, 0xBABA, 0);
// get the actual 0x3F'th 16-bit uint that was already in the supplied (pre-compiled) region data
unsigned short gbeChecksum = GetRegionWord(0x3F, factoryGbeBuffer); // from the original factory.rom