[coreboot-gerrit] Patch set updated for coreboot: chromeos: import Chrome OS fmaps

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Wed Jan 13 21:55:15 CET 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12715

-gerrit

commit 3c3e3d8204e2b4a7ff045b514a97b1e6ad9c7258
Author: Patrick Georgi <pgeorgi at chromium.org>
Date:   Sat Dec 12 00:23:15 2015 +0100

    chromeos: import Chrome OS fmaps
    
    These are generated from depthcharge's board/*/fmap.dts using the
    dts-to-fmd.sh script.
    
    One special case is google/veyron's chromeos.fmd, which is used for a
    larger set of boards - no problem since the converted fmd was the same
    for all of them.
    
    TODO: with fmap, we don't use the master header anymore, so on ARM we
    need to prepend the COREBOOT region with a BOOTBLOCK region (the
    coreboot build system expects that, too). One "simple" fix would be to
    synthesize that on conversion, but that will require more changes in the
    rest of Chrome OS' build scripts so they expect the same situation.
    
    Change-Id: Ieeb33702d3e58e07e958523533f83da97237ecf1
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
---
 src/Kconfig                                     |  1 +
 src/mainboard/gizmosphere/gizmo/chromeos.fmd    | 27 +++++++
 src/mainboard/google/auron/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/bolt/chromeos.fmd          | 38 ++++++++++
 src/mainboard/google/chell/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/cosmos/chromeos.fmd        | 27 +++++++
 src/mainboard/google/cyan/chromeos.fmd          | 38 ++++++++++
 src/mainboard/google/daisy/chromeos.fmd         | 26 +++++++
 src/mainboard/google/falco/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/foster/chromeos.fmd        | 27 +++++++
 src/mainboard/google/glados/chromeos.fmd        | 38 ++++++++++
 src/mainboard/google/jecht/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/lars/chromeos.fmd          | 38 ++++++++++
 src/mainboard/google/link/chromeos.fmd          | 38 ++++++++++
 src/mainboard/google/nyan/chromeos.fmd          | 27 +++++++
 src/mainboard/google/nyan_big/chromeos.fmd      | 27 +++++++
 src/mainboard/google/nyan_blaze/chromeos.fmd    | 27 +++++++
 src/mainboard/google/oak/chromeos.fmd           | 27 +++++++
 src/mainboard/google/panther/chromeos.fmd       | 38 ++++++++++
 src/mainboard/google/peach_pit/chromeos.fmd     | 26 +++++++
 src/mainboard/google/peppy/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/purin/chromeos.fmd         | 31 ++++++++
 src/mainboard/google/rambi/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/rush/chromeos.fmd          | 26 +++++++
 src/mainboard/google/rush_ryu/chromeos.fmd      | 26 +++++++
 src/mainboard/google/samus/chromeos.fmd         | 38 ++++++++++
 src/mainboard/google/slippy/chromeos.fmd        | 38 ++++++++++
 src/mainboard/google/smaug/chromeos.fmd         | 26 +++++++
 src/mainboard/google/storm/chromeos.fmd         | 32 ++++++++
 src/mainboard/google/urara/chromeos.fmd         | 31 ++++++++
 src/mainboard/google/veyron/chromeos.fmd        | 27 +++++++
 src/mainboard/google/veyron_brain/chromeos.fmd  | 28 +++++++
 src/mainboard/google/veyron_danger/chromeos.fmd | 28 +++++++
 src/mainboard/google/veyron_emile/chromeos.fmd  | 28 +++++++
 src/mainboard/google/veyron_mickey/chromeos.fmd | 28 +++++++
 src/mainboard/google/veyron_rialto/chromeos.fmd | 28 +++++++
 src/mainboard/google/veyron_romy/chromeos.fmd   | 28 +++++++
 src/mainboard/google/veyron_speedy/chromeos.fmd | 27 +++++++
 src/mainboard/intel/bayleybay_fsp/chromeos.fmd  | 37 ++++++++++
 src/mainboard/intel/kunimitsu/chromeos.fmd      | 38 ++++++++++
 src/mainboard/intel/sklrvp/chromeos.fmd         | 37 ++++++++++
 src/mainboard/intel/strago/chromeos.fmd         | 38 ++++++++++
 util/scripts/dts-to-fmd.sh                      | 98 +++++++++++++++++++++++++
 43 files changed, 1416 insertions(+)

diff --git a/src/Kconfig b/src/Kconfig
index f6702ea..c3042a8 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -377,6 +377,7 @@ config CBFS_SIZE
 
 config FMDFILE
 	string "fmap description file in fmd format"
+	default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
 	default ""
 	help
 	  The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
diff --git a/src/mainboard/gizmosphere/gizmo/chromeos.fmd b/src/mainboard/gizmosphere/gizmo/chromeos.fmd
new file mode 100644
index 0000000..d09b801
--- /dev/null
+++ b/src/mainboard/gizmosphere/gizmo/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0xffe00000 0x200000 {
+	RW_SECTION_A at 0x0 0x44000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x41fc0
+		RW_FWID_A at 0x43fc0 0x40
+	}
+	RW_SHARED at 0x44000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_ELOG at 0x46000 0x2000
+	RW_SECTION_B at 0x48000 0x44000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x41fc0
+		RW_FWID_B at 0x43fc0 0x40
+	}
+	RW_VPD at 0x8c000 0x2000
+	RW_LEGACY at 0x8e000 0x3a000
+	WP_RO at 0xc8000 0x138000 {
+		RO_SECTION at 0x0 0x138000 {
+			FMAP at 0x0 0x1000
+			GBB at 0x1000 0x2ef00
+			RO_FRID at 0x2ff00 0x100
+			RO_VPD at 0x30000 0x8000
+			COREBOOT(CBFS)@0x38000 0x100000
+		}
+	}
+}
diff --git a/src/mainboard/google/auron/chromeos.fmd b/src/mainboard/google/auron/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/auron/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/bolt/chromeos.fmd b/src/mainboard/google/bolt/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/bolt/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/chell/chromeos.fmd b/src/mainboard/google/chell/chromeos.fmd
new file mode 100644
index 0000000..5a8504e
--- /dev/null
+++ b/src/mainboard/google/chell/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff000000 0x1000000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0xe00000 {
+		RW_SECTION_A at 0x0 0x3f0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0x3dffc0
+			RW_FWID_A at 0x3effc0 0x40
+		}
+		RW_SECTION_B at 0x3f0000 0x3f0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0x3dffc0
+			RW_FWID_B at 0x3effc0 0x40
+		}
+		RW_MRC_CACHE at 0x7e0000 0x10000
+		RW_ELOG at 0x7f0000 0x4000
+		RW_SHARED at 0x7f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x7f8000 0x2000
+		RW_NVRAM at 0x7fa000 0x6000
+		RW_LEGACY at 0x800000 0x200000
+		WP_RO at 0xa00000 0x400000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x3f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x300000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/cosmos/chromeos.fmd b/src/mainboard/google/cosmos/chromeos.fmd
new file mode 100644
index 0000000..45cc951
--- /dev/null
+++ b/src/mainboard/google/cosmos/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			COREBOOT(CBFS)@0x0 0x80000
+			FMAP at 0x80000 0x1000
+			GBB at 0x81000 0x6ef00
+			RO_FRID at 0xeff00 0x100
+		}
+		RO_VPD at 0xf0000 0x10000
+	}
+	RW_SECTION_A at 0x100000 0x68000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x65f00
+		RW_FWID_A at 0x67f00 0x100
+	}
+	RW_SHARED at 0x168000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x16c000 0x4000
+	RW_SECTION_B at 0x180000 0x68000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x65f00
+		RW_FWID_B at 0x67f00 0x100
+	}
+	RW_VPD at 0x1e8000 0x8000
+	RW_NVRAM at 0x1f0000 0x10000
+}
diff --git a/src/mainboard/google/cyan/chromeos.fmd b/src/mainboard/google/cyan/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/cyan/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/daisy/chromeos.fmd b/src/mainboard/google/daisy/chromeos.fmd
new file mode 100644
index 0000000..40272e9
--- /dev/null
+++ b/src/mainboard/google/daisy/chromeos.fmd
@@ -0,0 +1,26 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0xf0000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0xedf00
+		RW_FWID_A at 0xeff00 0x100
+	}
+	RW_SECTION_B at 0x300000 0xf0000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0xedf00
+		RW_FWID_B at 0xeff00 0x100
+	}
+	RW_VPD at 0x3f0000 0x8000
+	RW_SHARED at 0x3f8000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_UNUSED at 0x3fc000 0x4000
+}
diff --git a/src/mainboard/google/falco/chromeos.fmd b/src/mainboard/google/falco/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/falco/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/foster/chromeos.fmd b/src/mainboard/google/foster/chromeos.fmd
new file mode 100644
index 0000000..2d6529d
--- /dev/null
+++ b/src/mainboard/google/foster/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			COREBOOT(CBFS)@0x0 0x200000
+			FMAP at 0x200000 0x1000
+			GBB at 0x201000 0xeef00
+			RO_FRID at 0x2eff00 0x100
+		}
+		RO_VPD at 0x2f0000 0x10000
+	}
+	RW_SECTION_A at 0x300000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x378000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x37c000 0x4000
+	RW_SECTION_B at 0x380000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x3f8000 0x4000
+	RW_NVRAM at 0x3fc000 0x4000
+}
diff --git a/src/mainboard/google/glados/chromeos.fmd b/src/mainboard/google/glados/chromeos.fmd
new file mode 100644
index 0000000..5a8504e
--- /dev/null
+++ b/src/mainboard/google/glados/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff000000 0x1000000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0xe00000 {
+		RW_SECTION_A at 0x0 0x3f0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0x3dffc0
+			RW_FWID_A at 0x3effc0 0x40
+		}
+		RW_SECTION_B at 0x3f0000 0x3f0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0x3dffc0
+			RW_FWID_B at 0x3effc0 0x40
+		}
+		RW_MRC_CACHE at 0x7e0000 0x10000
+		RW_ELOG at 0x7f0000 0x4000
+		RW_SHARED at 0x7f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x7f8000 0x2000
+		RW_NVRAM at 0x7fa000 0x6000
+		RW_LEGACY at 0x800000 0x200000
+		WP_RO at 0xa00000 0x400000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x3f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x300000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/jecht/chromeos.fmd b/src/mainboard/google/jecht/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/jecht/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/lars/chromeos.fmd b/src/mainboard/google/lars/chromeos.fmd
new file mode 100644
index 0000000..5a8504e
--- /dev/null
+++ b/src/mainboard/google/lars/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff000000 0x1000000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0xe00000 {
+		RW_SECTION_A at 0x0 0x3f0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0x3dffc0
+			RW_FWID_A at 0x3effc0 0x40
+		}
+		RW_SECTION_B at 0x3f0000 0x3f0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0x3dffc0
+			RW_FWID_B at 0x3effc0 0x40
+		}
+		RW_MRC_CACHE at 0x7e0000 0x10000
+		RW_ELOG at 0x7f0000 0x4000
+		RW_SHARED at 0x7f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x7f8000 0x2000
+		RW_NVRAM at 0x7fa000 0x6000
+		RW_LEGACY at 0x800000 0x200000
+		WP_RO at 0xa00000 0x400000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x3f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x300000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/link/chromeos.fmd b/src/mainboard/google/link/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/link/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/nyan/chromeos.fmd b/src/mainboard/google/nyan/chromeos.fmd
new file mode 100644
index 0000000..bc0a026
--- /dev/null
+++ b/src/mainboard/google/nyan/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/nyan_big/chromeos.fmd b/src/mainboard/google/nyan_big/chromeos.fmd
new file mode 100644
index 0000000..bc0a026
--- /dev/null
+++ b/src/mainboard/google/nyan_big/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/nyan_blaze/chromeos.fmd b/src/mainboard/google/nyan_blaze/chromeos.fmd
new file mode 100644
index 0000000..bc0a026
--- /dev/null
+++ b/src/mainboard/google/nyan_blaze/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/oak/chromeos.fmd b/src/mainboard/google/oak/chromeos.fmd
new file mode 100644
index 0000000..9e0d752
--- /dev/null
+++ b/src/mainboard/google/oak/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_UNUSED at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/panther/chromeos.fmd b/src/mainboard/google/panther/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/panther/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/peach_pit/chromeos.fmd b/src/mainboard/google/peach_pit/chromeos.fmd
new file mode 100644
index 0000000..40272e9
--- /dev/null
+++ b/src/mainboard/google/peach_pit/chromeos.fmd
@@ -0,0 +1,26 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0xf0000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0xedf00
+		RW_FWID_A at 0xeff00 0x100
+	}
+	RW_SECTION_B at 0x300000 0xf0000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0xedf00
+		RW_FWID_B at 0xeff00 0x100
+	}
+	RW_VPD at 0x3f0000 0x8000
+	RW_SHARED at 0x3f8000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_UNUSED at 0x3fc000 0x4000
+}
diff --git a/src/mainboard/google/peppy/chromeos.fmd b/src/mainboard/google/peppy/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/peppy/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/purin/chromeos.fmd b/src/mainboard/google/purin/chromeos.fmd
new file mode 100644
index 0000000..2151ff6
--- /dev/null
+++ b/src/mainboard/google/purin/chromeos.fmd
@@ -0,0 +1,31 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			COREBOOT(CBFS)@0x0 0x80000
+			FMAP at 0x80000 0x1000
+			GBB at 0x81000 0x6ef00
+			RO_FRID at 0xeff00 0x100
+		}
+		RO_VPD at 0xf0000 0x10000
+	}
+	RW_SECTION_A at 0x100000 0x58000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x55f00
+		RW_FWID_A at 0x57f00 0x100
+	}
+	RW_SHARED at 0x158000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x15c000 0x4000
+	RW_GPT at 0x160000 0x20000 {
+		RW_GPT_PRIMARY at 0x0 0x10000
+		RW_GPT_SECONDARY at 0x10000 0x10000
+	}
+	RW_SECTION_B at 0x180000 0x58000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x55f00
+		RW_FWID_B at 0x57f00 0x100
+	}
+	RW_VPD at 0x1d8000 0x8000
+	RW_NVRAM at 0x1e0000 0x10000
+}
diff --git a/src/mainboard/google/rambi/chromeos.fmd b/src/mainboard/google/rambi/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/rambi/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/rush/chromeos.fmd b/src/mainboard/google/rush/chromeos.fmd
new file mode 100644
index 0000000..bc825dd
--- /dev/null
+++ b/src/mainboard/google/rush/chromeos.fmd
@@ -0,0 +1,26 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			COREBOOT(CBFS)@0x0 0x200000
+			FMAP at 0x200000 0x1000
+			GBB at 0x201000 0xeef00
+			RO_FRID at 0x2eff00 0x100
+		}
+		RO_VPD at 0x2f0000 0x10000
+	}
+	RW_SECTION_A at 0x300000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x378000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x37c000 0x4000
+	RW_SECTION_B at 0x380000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x3f8000 0x8000
+}
diff --git a/src/mainboard/google/rush_ryu/chromeos.fmd b/src/mainboard/google/rush_ryu/chromeos.fmd
new file mode 100644
index 0000000..e6f90f1
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/chromeos.fmd
@@ -0,0 +1,26 @@
+FLASH at 0x0 0x800000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			COREBOOT(CBFS)@0x0 0x200000
+			FMAP at 0x200000 0x1000
+			GBB at 0x201000 0xeef00
+			RO_FRID at 0x2eff00 0x100
+		}
+		RO_VPD at 0x2f0000 0x10000
+	}
+	RW_SECTION_A at 0x300000 0x278000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x275f00
+		RW_FWID_A at 0x277f00 0x100
+	}
+	RW_SHARED at 0x578000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x57c000 0x4000
+	RW_SECTION_B at 0x580000 0x278000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x275f00
+		RW_FWID_B at 0x277f00 0x100
+	}
+	RW_VPD at 0x7f8000 0x8000
+}
diff --git a/src/mainboard/google/samus/chromeos.fmd b/src/mainboard/google/samus/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/samus/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/slippy/chromeos.fmd b/src/mainboard/google/slippy/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/google/slippy/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/google/smaug/chromeos.fmd b/src/mainboard/google/smaug/chromeos.fmd
new file mode 100644
index 0000000..457874b
--- /dev/null
+++ b/src/mainboard/google/smaug/chromeos.fmd
@@ -0,0 +1,26 @@
+FLASH at 0x0 0x1000000 {
+	WP_RO at 0x0 0x500000 {
+		RO_SECTION at 0x0 0x4f0000 {
+			COREBOOT(CBFS)@0x0 0x400000
+			FMAP at 0x400000 0x1000
+			GBB at 0x401000 0xeef00
+			RO_FRID at 0x4eff00 0x100
+		}
+		RO_VPD at 0x4f0000 0x10000
+	}
+	RW_SECTION_A at 0x500000 0x500000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x4fdf00
+		RW_FWID_A at 0x4fff00 0x100
+	}
+	RW_SECTION_B at 0xa00000 0x500000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x4fdf00
+		RW_FWID_B at 0x4fff00 0x100
+	}
+	RW_SHARED at 0xf00000 0x4000
+	SHARED_DATA at 0xf04000 0x4000
+	RW_ELOG at 0xf08000 0x4000
+	RW_VPD at 0xf0c000 0x8000
+	RW_NVRAM at 0xf20000 0x10000
+}
diff --git a/src/mainboard/google/storm/chromeos.fmd b/src/mainboard/google/storm/chromeos.fmd
new file mode 100644
index 0000000..cde48ad
--- /dev/null
+++ b/src/mainboard/google/storm/chromeos.fmd
@@ -0,0 +1,32 @@
+FLASH at 0x0 0x800000 {
+	WP_RO at 0x0 0x400000 {
+		RO_SECTION at 0x0 0x3e0000 {
+			COREBOOT(CBFS)@0x0 0x300000
+			FMAP at 0x300000 0x1000
+			GBB at 0x301000 0xdef00
+			RO_FRID at 0x3dff00 0x100
+		}
+		RO_VPD at 0x3e0000 0x20000
+	}
+	RW_SECTION_A at 0x400000 0x160000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x14df00
+		RW_FWID_A at 0x14ff00 0x100
+		RW_SHARED at 0x150000 0x10000 {
+			SHARED_DATA at 0x0 0x10000
+		}
+	}
+	RW_GPT at 0x560000 0x20000 {
+		RW_GPT_PRIMARY at 0x0 0x10000
+		RW_GPT_SECONDARY at 0x10000 0x10000
+	}
+	RW_SECTION_B at 0x580000 0x160000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x14df00
+		RW_FWID_B at 0x14ff00 0x100
+	}
+	RW_VPD at 0x6e0000 0x8000
+	RW_ELOG at 0x6e8000 0x8000
+	RW_NVRAM at 0x6f0000 0x10000
+	RW_LEGACY at 0x700000 0x100000
+}
diff --git a/src/mainboard/google/urara/chromeos.fmd b/src/mainboard/google/urara/chromeos.fmd
new file mode 100644
index 0000000..218e278
--- /dev/null
+++ b/src/mainboard/google/urara/chromeos.fmd
@@ -0,0 +1,31 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			COREBOOT(CBFS)@0x0 0x80000
+			FMAP at 0xe0000 0x1000
+			GBB at 0xe1000 0xef00
+			RO_FRID at 0xeff00 0x100
+		}
+		RO_VPD at 0xf0000 0x10000
+	}
+	RW_SECTION_A at 0x100000 0x70000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x6df00
+		RW_FWID_A at 0x6ff00 0x100
+	}
+	RW_SHARED at 0x170000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_GPT at 0x172000 0x2000 {
+		RW_GPT_PRIMARY at 0x0 0x1000
+		RW_GPT_SECONDARY at 0x1000 0x1000
+	}
+	RW_ELOG at 0x174000 0x4000
+	RW_VPD at 0x178000 0x8000
+	RW_SECTION_B at 0x180000 0x70000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x6df00
+		RW_FWID_B at 0x6ff00 0x100
+	}
+	RW_NVRAM at 0x1f0000 0x10000
+}
diff --git a/src/mainboard/google/veyron/chromeos.fmd b/src/mainboard/google/veyron/chromeos.fmd
new file mode 100644
index 0000000..bc0a026
--- /dev/null
+++ b/src/mainboard/google/veyron/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_brain/chromeos.fmd b/src/mainboard/google/veyron_brain/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_brain/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_danger/chromeos.fmd b/src/mainboard/google/veyron_danger/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_danger/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_emile/chromeos.fmd b/src/mainboard/google/veyron_emile/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_emile/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_mickey/chromeos.fmd b/src/mainboard/google/veyron_mickey/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_mickey/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_rialto/chromeos.fmd b/src/mainboard/google/veyron_rialto/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_rialto/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_romy/chromeos.fmd b/src/mainboard/google/veyron_romy/chromeos.fmd
new file mode 100644
index 0000000..bbed906
--- /dev/null
+++ b/src/mainboard/google/veyron_romy/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x2000 {
+		SHARED_DATA at 0x0 0x2000
+	}
+	RW_NVRAM at 0x27a000 0x2000
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/google/veyron_speedy/chromeos.fmd b/src/mainboard/google/veyron_speedy/chromeos.fmd
new file mode 100644
index 0000000..bc0a026
--- /dev/null
+++ b/src/mainboard/google/veyron_speedy/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			COREBOOT(CBFS)@0x0 0x100000
+			FMAP at 0x100000 0x1000
+			GBB at 0x101000 0xeef00
+			RO_FRID at 0x1eff00 0x100
+		}
+		RO_VPD at 0x1f0000 0x10000
+	}
+	RW_SECTION_A at 0x200000 0x78000 {
+		VBLOCK_A at 0x0 0x2000
+		FW_MAIN_A(CBFS)@0x2000 0x75f00
+		RW_FWID_A at 0x77f00 0x100
+	}
+	RW_SHARED at 0x278000 0x4000 {
+		SHARED_DATA at 0x0 0x4000
+	}
+	RW_ELOG at 0x27c000 0x4000
+	RW_SECTION_B at 0x280000 0x78000 {
+		VBLOCK_B at 0x0 0x2000
+		FW_MAIN_B(CBFS)@0x2000 0x75f00
+		RW_FWID_B at 0x77f00 0x100
+	}
+	RW_VPD at 0x2f8000 0x8000
+	RW_LEGACY at 0x300000 0x100000
+}
diff --git a/src/mainboard/intel/bayleybay_fsp/chromeos.fmd b/src/mainboard/intel/bayleybay_fsp/chromeos.fmd
new file mode 100644
index 0000000..913bf97
--- /dev/null
+++ b/src/mainboard/intel/bayleybay_fsp/chromeos.fmd
@@ -0,0 +1,37 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x300000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x2ff000
+	}
+	SI_BIOS at 0x300000 0x500000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xc0000
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xc0000
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x106000
+		WP_RO at 0x300000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/intel/kunimitsu/chromeos.fmd b/src/mainboard/intel/kunimitsu/chromeos.fmd
new file mode 100644
index 0000000..5a8504e
--- /dev/null
+++ b/src/mainboard/intel/kunimitsu/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff000000 0x1000000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0xe00000 {
+		RW_SECTION_A at 0x0 0x3f0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0x3dffc0
+			RW_FWID_A at 0x3effc0 0x40
+		}
+		RW_SECTION_B at 0x3f0000 0x3f0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0x3dffc0
+			RW_FWID_B at 0x3effc0 0x40
+		}
+		RW_MRC_CACHE at 0x7e0000 0x10000
+		RW_ELOG at 0x7f0000 0x4000
+		RW_SHARED at 0x7f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x7f8000 0x2000
+		RW_NVRAM at 0x7fa000 0x6000
+		RW_LEGACY at 0x800000 0x200000
+		WP_RO at 0xa00000 0x400000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x3f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x300000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/intel/sklrvp/chromeos.fmd b/src/mainboard/intel/sklrvp/chromeos.fmd
new file mode 100644
index 0000000..85f0e6a
--- /dev/null
+++ b/src/mainboard/intel/sklrvp/chromeos.fmd
@@ -0,0 +1,37 @@
+FLASH at 0xff000000 0x1000000 {
+	SI_ALL at 0x0 0xa00000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0xa00000 0x600000 {
+		RW_SECTION_A at 0x0 0x100000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xeffc0
+			RW_FWID_A at 0xfffc0 0x40
+		}
+		RW_SECTION_B at 0x100000 0x100000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xeffc0
+			RW_FWID_B at 0xfffc0 0x40
+		}
+		RW_MRC_CACHE at 0x200000 0x10000
+		RW_ELOG at 0x210000 0x4000
+		RW_SHARED at 0x214000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x218000 0x2000
+		RW_UNUSED at 0x21a000 0x6000
+		WP_RO at 0x300000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/src/mainboard/intel/strago/chromeos.fmd b/src/mainboard/intel/strago/chromeos.fmd
new file mode 100644
index 0000000..21b39c0
--- /dev/null
+++ b/src/mainboard/intel/strago/chromeos.fmd
@@ -0,0 +1,38 @@
+FLASH at 0xff800000 0x800000 {
+	SI_ALL at 0x0 0x200000 {
+		SI_DESC at 0x0 0x1000
+		SI_ME at 0x1000 0x1ff000
+	}
+	SI_BIOS at 0x200000 0x600000 {
+		RW_SECTION_A at 0x0 0xf0000 {
+			VBLOCK_A at 0x0 0x10000
+			FW_MAIN_A(CBFS)@0x10000 0xdffc0
+			RW_FWID_A at 0xeffc0 0x40
+		}
+		RW_SECTION_B at 0xf0000 0xf0000 {
+			VBLOCK_B at 0x0 0x10000
+			FW_MAIN_B(CBFS)@0x10000 0xdffc0
+			RW_FWID_B at 0xeffc0 0x40
+		}
+		RW_MRC_CACHE at 0x1e0000 0x10000
+		RW_ELOG at 0x1f0000 0x4000
+		RW_SHARED at 0x1f4000 0x4000 {
+			SHARED_DATA at 0x0 0x2000
+			VBLOCK_DEV at 0x2000 0x2000
+		}
+		RW_VPD at 0x1f8000 0x2000
+		RW_UNUSED at 0x1fa000 0x6000
+		RW_LEGACY at 0x200000 0x200000
+		WP_RO at 0x400000 0x200000 {
+			RO_VPD at 0x0 0x4000
+			RO_UNUSED at 0x4000 0xc000
+			RO_SECTION at 0x10000 0x1f0000 {
+				FMAP at 0x0 0x800
+				RO_FRID at 0x800 0x40
+				RO_FRID_PAD at 0x840 0x7c0
+				GBB at 0x1000 0xef000
+				COREBOOT(CBFS)@0xf0000 0x100000
+			}
+		}
+	}
+}
diff --git a/util/scripts/dts-to-fmd.sh b/util/scripts/dts-to-fmd.sh
new file mode 100755
index 0000000..50f3c49
--- /dev/null
+++ b/util/scripts/dts-to-fmd.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# converts a depthcharge fmap.dts into an fmaptool compatible .fmd format
+# requires fdt utilities (dtc, fdtget)
+#
+# $1 dts file name
+# result on stdout
+set -e
+
+if [ $# -lt 1 ]; then
+	echo "usage: $0 dts-file"
+	exit 1
+fi
+
+DTS=$1
+DTB=`mktemp`
+
+# $1 node
+# $2 start variable name
+# $3 size variable name
+get_reg() {
+	local t=`fdtget -t x $DTB $1 reg 2>/dev/null`
+	if [ -n "$t" ]; then
+		export $2=0x`echo $t|cut -d' ' -f1`
+		export $3=0x`echo $t|cut -d' ' -f2`
+	else
+		export $3=0x`fdtget -t x $DTB $1 size`
+	fi
+}
+
+dtc -O dtb -o $DTB $DTS
+get_reg /flash ROM_START ROM_SIZE
+printf "FLASH@${ROM_START} ${ROM_SIZE} {"
+
+PREFIX="\t"
+REGION_START=-1
+REGION_SIZE=0
+CONTAINER_END=$(( ${ROM_SIZE} ))
+CONTAINER_END_STACK=${CONTAINER_END}
+CONTAINER_OFFSET=0
+CONTAINER_OFFSET_STACK=0
+
+FMAP_REGIONS=`fdtget -l $DTB /flash`
+for region in $FMAP_REGIONS; do
+	OLD_REGION_START=$REGION_START
+	OLD_REGION_SIZE=$REGION_SIZE
+	get_reg /flash/$region REGION_START REGION_SIZE
+
+	# determine if we're past an existing container
+	while [ $(( ${REGION_START} )) -ge ${CONTAINER_END} ]; do
+		PREFIX=`printf "${PREFIX}" | cut -c2-`
+		printf "\n${PREFIX}}"
+		CONTAINER_END_STACK=`printf "${CONTAINER_END_STACK}" | cut -d' ' -f2-`
+		CONTAINER_OFFSET_STACK=`printf "${CONTAINER_OFFSET_STACK}" | cut -d' ' -f2-`
+		CONTAINER_END=`printf ${CONTAINER_END_STACK} | cut -d' ' -f1`
+		CONTAINER_OFFSET=`printf ${CONTAINER_OFFSET_STACK} | cut -d' ' -f1`
+	done
+
+	# determine if we're inside a new container region now
+	if [ $(( ${OLD_REGION_START} + ${OLD_REGION_SIZE} )) -gt $(( ${REGION_START} )) ]; then
+		PREFIX="\t${PREFIX}"
+		CONTAINER_END=$(( ${OLD_REGION_START} + ${OLD_REGION_SIZE} ))
+		CONTAINER_OFFSET=$(( ${OLD_REGION_START} ))
+		CONTAINER_END_STACK="${CONTAINER_END} ${CONTAINER_END_STACK}"
+		CONTAINER_OFFSET_STACK="${CONTAINER_OFFSET} ${CONTAINER_OFFSET_STACK}"
+		printf " {"
+	fi
+
+	LOCAL_REGION_START=$(( ${REGION_START} - ${CONTAINER_OFFSET} ))
+	LOCAL_REGION_START=`printf "0x%x" ${LOCAL_REGION_START}`
+
+	REGION_NAME=`fdtget $DTB /flash/$region label | tr '[a-z]-' '[A-Z]_'`
+	REGION_TYPE=`fdtget $DTB /flash/$region type 2>/dev/null | cut -d'/' -f1`
+
+	# a CBFS region? if so, mark as such
+	if [ "${REGION_TYPE}" = "blob cbfs" ]; then
+		IS_CBFS="(CBFS)"
+	else
+		IS_CBFS=""
+	fi
+
+	# special handling: rename BOOT_STUB to COREBOOT, mark them as CBFS
+	if [ "${REGION_NAME}" = "BOOT_STUB" ]; then
+		REGION_NAME="COREBOOT"
+	fi
+	if [ "${REGION_NAME}" = "COREBOOT" ]; then
+		IS_CBFS="(CBFS)"
+	fi
+
+	printf "\n${PREFIX}${REGION_NAME}${IS_CBFS}@${LOCAL_REGION_START} ${REGION_SIZE}"
+done
+
+while [ -n "${PREFIX}" ]; do
+	PREFIX=`printf "${PREFIX}" | cut -c2-`
+	printf "\n${PREFIX}}"
+done
+printf "\n"
+
+rm -f $DTB



More information about the coreboot-gerrit mailing list