diff --git a/util/nvramtool/coreboot_tables.h b/util/nvramtool/coreboot_tables.h
index afab7bc..d6e1b76 100644
--- a/util/nvramtool/coreboot_tables.h
+++ b/util/nvramtool/coreboot_tables.h
@@ -59,30 +59,27 @@
 
 static inline uint64_t unpack_lb64(struct lb_uint64 value)
 {
-        uint64_t result;
-        result = value.hi;
-        result = (result << 32) + value.lo;
-        return result;
+	uint64_t result;
+	result = value.hi;
+	result = (result << 32) + value.lo;
+	return result;
 }
 
 static inline struct lb_uint64 pack_lb64(uint64_t value)
 {
-        struct lb_uint64 result;
-        result.lo = (value >> 0) & 0xffffffff;
-        result.hi = (value >> 32) & 0xffffffff;
-        return result;
+	struct lb_uint64 result;
+	result.lo = (value >> 0) & 0xffffffff;
+	result.hi = (value >> 32) & 0xffffffff;
+	return result;
 }
 
-
-
-struct lb_header
-{
-        uint8_t  signature[4]; /* LBIO */
-        uint32_t header_bytes;
-        uint32_t header_checksum;
-        uint32_t table_bytes;
-        uint32_t table_checksum;
-        uint32_t table_entries;
+struct lb_header {
+	uint8_t signature[4];	/* LBIO */
+	uint32_t header_bytes;
+	uint32_t header_checksum;
+	uint32_t table_bytes;
+	uint32_t table_checksum;
+	uint32_t table_entries;
 };
 
 /* Every entry in the boot enviroment list will correspond to a boot
@@ -92,8 +89,8 @@
  * forward compatibility with records not yet defined.
  */
 struct lb_record {
-        uint32_t tag;                /* tag ID */
-        uint32_t size;                /* size of record (in bytes) */
+	uint32_t tag;		/* tag ID */
+	uint32_t size;		/* size of record (in bytes) */
 };
 
 #define LB_TAG_UNUSED        0x0000
@@ -103,48 +100,48 @@
 struct lb_memory_range {
 	struct lb_uint64 start;
 	struct lb_uint64 size;
-        uint32_t type;
-#define LB_MEM_RAM       1        /* Memory anyone can use */
-#define LB_MEM_RESERVED  2        /* Don't use this memory region */
-#define LB_MEM_TABLE     16        /* Ram configuration tables are kept in */
+	uint32_t type;
+#define LB_MEM_RAM       1	/* Memory anyone can use */
+#define LB_MEM_RESERVED  2	/* Don't use this memory region */
+#define LB_MEM_TABLE     16	/* Ram configuration tables are kept in */
 };
 
 struct lb_memory {
-        uint32_t tag;
-        uint32_t size;
-        struct lb_memory_range map[0];
+	uint32_t tag;
+	uint32_t size;
+	struct lb_memory_range map[0];
 };
 
-#define LB_TAG_HWRPB        0x0002
+#define LB_TAG_HWRPB            0x0002
 struct lb_hwrpb {
-        uint32_t tag;
-        uint32_t size;
-        uint64_t hwrpb;
+	uint32_t tag;
+	uint32_t size;
+	uint64_t hwrpb;
 };
 
 #define LB_TAG_MAINBOARD        0x0003
 struct lb_mainboard {
-        uint32_t tag;
-        uint32_t size;
-        uint8_t  vendor_idx;
-        uint8_t  part_number_idx;
-        uint8_t  strings[0];
+	uint32_t tag;
+	uint32_t size;
+	uint8_t vendor_idx;
+	uint8_t part_number_idx;
+	uint8_t strings[0];
 };
 
-#define LB_TAG_VERSION                0x0004
-#define LB_TAG_EXTRA_VERSION        0x0005
-#define LB_TAG_BUILD                0x0006
-#define LB_TAG_COMPILE_TIME        0x0007
-#define LB_TAG_COMPILE_BY        0x0008
-#define LB_TAG_COMPILE_HOST        0x0009
-#define LB_TAG_COMPILE_DOMAIN        0x000a
-#define LB_TAG_COMPILER                0x000b
-#define LB_TAG_LINKER                0x000c
+#define LB_TAG_VERSION          0x0004
+#define LB_TAG_EXTRA_VERSION    0x0005
+#define LB_TAG_BUILD            0x0006
+#define LB_TAG_COMPILE_TIME     0x0007
+#define LB_TAG_COMPILE_BY       0x0008
+#define LB_TAG_COMPILE_HOST     0x0009
+#define LB_TAG_COMPILE_DOMAIN   0x000a
+#define LB_TAG_COMPILER         0x000b
+#define LB_TAG_LINKER           0x000c
 #define LB_TAG_ASSEMBLER        0x000d
 struct lb_string {
-        uint32_t tag;
-        uint32_t size;
-        uint8_t  string[0];
+	uint32_t tag;
+	uint32_t size;
+	uint8_t string[0];
 };
 #define LB_TAG_SERIAL		0x000f
 #define LB_TAG_CONSOLE		0x0010
@@ -159,9 +156,9 @@
 #define LB_TAG_CMOS_OPTION_TABLE 200
 /* cmos header record */
 struct cmos_option_table {
-        uint32_t tag;               /* CMOS definitions table type */
-        uint32_t size;               /* size of the entire table */
-        uint32_t header_length;      /* length of header */
+	uint32_t tag;		/* CMOS definitions table type */
+	uint32_t size;		/* size of the entire table */
+	uint32_t header_length;	/* length of header */
 };
 
 /* cmos entry record
@@ -173,31 +170,30 @@
 */
 #define LB_TAG_OPTION 201
 struct cmos_entries {
-        uint32_t tag;                /* entry type */
-        uint32_t size;               /* length of this record */
-        uint32_t bit;                /* starting bit from start of image */
-        uint32_t length;             /* length of field in bits */
-        uint32_t config;             /* e=enumeration, h=hex, r=reserved */
-        uint32_t config_id;          /* a number linking to an enumeration record */
+	uint32_t tag;		/* entry type */
+	uint32_t size;		/* length of this record */
+	uint32_t bit;		/* starting bit from start of image */
+	uint32_t length;	/* length of field in bits */
+	uint32_t config;	/* e=enumeration, h=hex, r=reserved */
+	uint32_t config_id;	/* a number linking to an enumeration record */
 #define CMOS_MAX_NAME_LENGTH 32
-        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name of entry in ascii, 
-                                               variable length int aligned */
+	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name of entry in ascii, 
+						   variable length int aligned */
 };
 
-
 /* cmos enumerations record
         This record is variable length.  The text field may be
         shorter than CMOS_MAX_TEXT_LENGTH.
 */
 #define LB_TAG_OPTION_ENUM 202
 struct cmos_enums {
-        uint32_t tag;                     /* enumeration type */
-        uint32_t size;                      /* length of this record */
-        uint32_t config_id;          /* a number identifying the config id */
-        uint32_t value;              /* the value associated with the text */
+	uint32_t tag;		/* enumeration type */
+	uint32_t size;		/* length of this record */
+	uint32_t config_id;	/* a number identifying the config id */
+	uint32_t value;		/* the value associated with the text */
 #define CMOS_MAX_TEXT_LENGTH 32
-        uint8_t text[CMOS_MAX_TEXT_LENGTH]; /* enum description in ascii, 
-                                                variable length int aligned */
+	uint8_t text[CMOS_MAX_TEXT_LENGTH];	/* enum description in ascii, 
+						   variable length int aligned */
 };
 
 /* cmos defaults record
@@ -205,16 +201,16 @@
 */
 #define LB_TAG_OPTION_DEFAULTS 203
 struct cmos_defaults {
-        uint32_t tag;                /* default type */
-        uint32_t size;               /* length of this record */
-        uint32_t name_length;        /* length of the following name field */
-        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name identifying the default */
+	uint32_t tag;		/* default type */
+	uint32_t size;		/* length of this record */
+	uint32_t name_length;	/* length of the following name field */
+	uint8_t name[CMOS_MAX_NAME_LENGTH];	/* name identifying the default */
 #define CMOS_IMAGE_BUFFER_SIZE 128
-        uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE]; /* default settings */
+	uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE];	/* default settings */
 };
 
 #define LB_TAG_OPTION_CHECKSUM 204
-struct	cmos_checksum {
+struct cmos_checksum {
 	uint32_t tag;
 	uint32_t size;
 	/* In practice everything is byte aligned, but things are measured
@@ -228,6 +224,4 @@
 #define CHECKSUM_PCBIOS	1
 };
 
-
-
-#endif /* COREBOOT_TABLES_H */
+#endif				/* COREBOOT_TABLES_H */
