summaryrefslogtreecommitdiff
path: root/util/romtool/romtool.h
diff options
context:
space:
mode:
authorRonald G. Minnich <rminnich@gmail.com>2009-03-31 11:57:36 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2009-03-31 11:57:36 +0000
commit5d01ec0f80cc8379df17ed9a922de37b487770b4 (patch)
tree6994cd877e80a721cef1154239d4af6653980379 /util/romtool/romtool.h
parent0f0f9bb9a2e1c1257fdfee0b50061e82ea92161b (diff)
This patch adds Jordan's romtool support for v2.
There are a few changes. The 20K bootblock size restriction is gone. ROMFS has been tested and works on v2 with qemu and kontron. Once this patch is in, those patches will follow. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4032 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/romtool/romtool.h')
-rw-r--r--util/romtool/romtool.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/util/romtool/romtool.h b/util/romtool/romtool.h
new file mode 100644
index 0000000000..ab083a6c5e
--- /dev/null
+++ b/util/romtool/romtool.h
@@ -0,0 +1,77 @@
+/*
+ * romtool
+ *
+ * Copyright (C) 2008 Jordan Crouse <jordan@cosmicpenguin.net>
+ *
+ * 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; version 2 of the License.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
+ */
+
+#ifndef _ROMTOOL_H_
+#define _ROMTOOL_H_
+
+#include <stdio.h>
+#include <arpa/inet.h>
+#include "romfs.h"
+
+/* Definitions */
+
+/* Structures */
+
+struct rom {
+ unsigned char *name;
+ unsigned char *ptr;
+
+ int fd;
+ int size;
+ int fssize;
+
+ struct romfs_header *header;
+};
+
+/* Macros */
+
+#define ROM_OFFSET(_r, _c) ((unsigned int) ((unsigned char *) (_c) - (_r)->ptr))
+
+#define ROM_PTR(_r, _o) ((_r)->ptr + (_o))
+#define ROM_WRITEL(_r, _o, _v) do { *((unsigned int *) ROM_PTR((_r), (_o))) = (_v); } while(0)
+#define ROM_READL(_r, _o) *((unsigned int *) (ROM_PTR((_r), (_o))))
+
+#define ERROR(err, args...) fprintf(stderr, "(romtool) E: " err, ##args)
+#define WARN(err, args...) fprintf(stderr, "(romtool) W: " err, ##args)
+#define VERBOSE(str, args...) printf(str, ##args)
+
+#define ALIGN(_v, _a) ( ( (_v) + ( (_a) - 1 ) ) & ~( (_a) - 1 ) )
+
+/* Function prototypes */
+
+/* util.c */
+int open_rom(struct rom *rom, const char *filename);
+int create_rom(struct rom *rom, const unsigned char *filename, int size,
+ int bootblocksize, int align);
+int size_and_open(const char *filename, unsigned int *size);
+int copy_from_fd(int fd, void *ptr, int size);
+int get_size(const char *size);
+int add_bootblock(struct rom *rom, const char *filename);
+
+/* fs.c */
+
+struct romfs_file *rom_find(struct rom *rom, unsigned int offset);
+struct romfs_file *rom_find_first(struct rom *);
+struct romfs_file *rom_find_next(struct rom *, struct romfs_file *);
+int rom_add(struct rom *rom, const char *name, void *, int size, int type);
+int rom_remove(struct rom *rom, const char *name);
+unsigned int rom_used_space(struct rom *rom);
+int rom_exists(struct rom *rom);
+
+#endif