coreboot-kgpe-d16/util/kbc1126/kbc1126_ec_dump.c
Patrick Georgi 6b5bc77c9b treewide: Remove "this file is part of" lines
Stefan thinks they don't add value.

Command used:
sed -i -e '/file is part of /d' $(git grep "file is part of " |egrep ":( */\*.*\*/\$|#|;#|-- | *\* )" | cut -d: -f1 |grep -v crossgcc |grep -v gcov | grep -v /elf.h |grep -v nvramtool)

The exceptions are for:
 - crossgcc (patch file)
 - gcov (imported from gcc)
 - elf.h (imported from GNU's libc)
 - nvramtool (more complicated header)

The removed lines are:
-       fmt.Fprintln(f, "/* This file is part of the coreboot project. */")
-# This file is part of a set of unofficial pre-commit hooks available
-/* This file is part of coreboot */
-# This file is part of msrtool.
-/* This file is part of msrtool. */
- * This file is part of ncurses, designed to be appended after curses.h.in
-/* This file is part of pgtblgen. */
- * This file is part of the coreboot project.
- /* This file is part of the coreboot project. */
-#  This file is part of the coreboot project.
-# This file is part of the coreboot project.
-## This file is part of the coreboot project.
--- This file is part of the coreboot project.
-/* This file is part of the coreboot project */
-/* This file is part of the coreboot project. */
-;## This file is part of the coreboot project.
-# This file is part of the coreboot project. It originated in the
- * This file is part of the coreinfo project.
-## This file is part of the coreinfo project.
- * This file is part of the depthcharge project.
-/* This file is part of the depthcharge project. */
-/* This file is part of the ectool project. */
- * This file is part of the GNU C Library.
- * This file is part of the libpayload project.
-## This file is part of the libpayload project.
-/* This file is part of the Linux kernel. */
-## This file is part of the superiotool project.
-/* This file is part of the superiotool project */
-/* This file is part of uio_usbdebug */

Change-Id: I82d872b3b337388c93d5f5bf704e9ee9e53ab3a9
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41194
Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2020-05-11 17:11:40 +00:00

111 lines
2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void usage(const char *s)
{
printf("%s <rom file>\n", s);
exit(1);
}
static void FseekEnd(FILE *fp, long o)
{
if (fseek(fp, o, SEEK_END) != 0) {
puts("fseek() error!\n");
exit(1);
}
}
void dump_fw(FILE *dst, FILE *src, long offset)
{
static unsigned char buf[65536];
if (offset > 0)
offset -= 0x1000000;
printf("Dumping firmware at -0x%lx...", -offset);
FseekEnd(src, offset);
unsigned short len;
unsigned short cksum;
unsigned short _cksum = 0;
fread(&len, 2, 1, src);
fread(&cksum, 2, 1, src);
fread(buf, len, 1, src);
for (size_t i = 0; i < len; i++)
_cksum += buf[i];
if (_cksum == cksum) {
puts("checksum ok");
} else {
puts("checksum fail");
exit(1);
}
fwrite(&len, 2, 1, dst);
fwrite(&cksum, 2, 1, dst);
fwrite(buf, len, 1, dst);
}
int main(int argc, char *argv[])
{
if (argc != 2)
usage(argv[0]);
FILE *fp = fopen(argv[1], "rb");
if (fp == NULL) {
puts("Error opening file!");
exit(1);
}
char *basename = strrchr(argv[1], '/');
if (basename == NULL)
basename = argv[1];
else
basename = basename + 1;
int len = strlen(basename);
char fn1[len + 5], fn2[len + 5];
strcpy(fn1, basename);
strcpy(fn2, basename);
strcat(fn1, ".fw1");
strcat(fn2, ".fw2");
FILE *fw1 = fopen(fn1, "wb");
FILE *fw2 = fopen(fn2, "wb");
long romsz;
FseekEnd(fp, -1);
romsz = ftell(fp) + 1;
printf("size of %s: 0x%lx\n", argv[1], romsz);
if (romsz & 0xff) {
puts("The ROM size must be multiple of 0x100");
exit(1);
}
/* read offset of fw1 and fw2 */
unsigned char offs[8];
FseekEnd(fp, -0x100);
fread(offs, 8, 1, fp);
assert(offs[0] + offs[2] == 0xff);
assert(offs[1] + offs[3] == 0xff);
assert(offs[4] + offs[6] == 0xff);
assert(offs[5] + offs[7] == 0xff);
long offw1 = (offs[0] << 16) | (offs[1] << 8);
long offw2 = (offs[4] << 16) | (offs[5] << 8);
dump_fw(fw1, fp, offw1);
dump_fw(fw2, fp, offw2);
fclose(fp);
fclose(fw1);
fclose(fw2);
return 0;
}