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

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Wed Jan 20 21:18:57 CET 2016


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

-gerrit

commit aea57c948e3f663ac1fa69b69edcd4a4c86caf02
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.
    
    Set aside 128K for the bootblock on non-x86 systems (where the COREBOOT
    region ends up at the beginning of flash). This becomes necessary
    because we're working without a real cbfs master header (exists for
    transition only), which carved out the space for the offset.
    
    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         |  28 ++++++
 src/mainboard/google/cyan/chromeos.fmd           |  38 ++++++++
 src/mainboard/google/daisy/chromeos.fmd          |  27 ++++++
 src/mainboard/google/falco/chromeos.fmd          |  38 ++++++++
 src/mainboard/google/foster/chromeos.fmd         |  28 ++++++
 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           |  28 ++++++
 src/mainboard/google/nyan_big/chromeos.fmd       |  28 ++++++
 src/mainboard/google/nyan_blaze/chromeos.fmd     |  28 ++++++
 src/mainboard/google/oak/chromeos.fmd            |  29 ++++++
 src/mainboard/google/panther/chromeos.fmd        |  38 ++++++++
 src/mainboard/google/peach_pit/chromeos.fmd      |  27 ++++++
 src/mainboard/google/peppy/chromeos.fmd          |  38 ++++++++
 src/mainboard/google/purin/chromeos.fmd          |  32 +++++++
 src/mainboard/google/rambi/chromeos.fmd          |  38 ++++++++
 src/mainboard/google/rush/chromeos.fmd           |  27 ++++++
 src/mainboard/google/rush_ryu/chromeos.fmd       |  27 ++++++
 src/mainboard/google/samus/chromeos.fmd          |  38 ++++++++
 src/mainboard/google/slippy/chromeos.fmd         |  38 ++++++++
 src/mainboard/google/smaug/chromeos.fmd          |  27 ++++++
 src/mainboard/google/storm/chromeos.fmd          |  33 +++++++
 src/mainboard/google/urara/chromeos.fmd          |  32 +++++++
 src/mainboard/google/veyron/chromeos.fmd         |  28 ++++++
 src/mainboard/google/veyron_brain/chromeos.fmd   |  29 ++++++
 src/mainboard/google/veyron_danger/chromeos.fmd  |  29 ++++++
 src/mainboard/google/veyron_emile/chromeos.fmd   |  29 ++++++
 src/mainboard/google/veyron_mickey/chromeos.fmd  |  29 ++++++
 src/mainboard/google/veyron_rialto/chromeos.fmd  |  29 ++++++
 src/mainboard/google/veyron_romy/chromeos.fmd    |  29 ++++++
 src/mainboard/google/veyron_speedy/chromeos.fmd  |  28 ++++++
 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/convert-all-depthcharge-fmap.dts.sh |  10 +++
 util/scripts/dts-to-fmd.sh                       | 110 +++++++++++++++++++++++
 44 files changed, 1461 insertions(+)

diff --git a/src/Kconfig b/src/Kconfig
index 6a0209d..dcd3bdd 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..9817169
--- /dev/null
+++ b/src/mainboard/google/cosmos/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x60000
+			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..5d6d456
--- /dev/null
+++ b/src/mainboard/google/daisy/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..603d4bb
--- /dev/null
+++ b/src/mainboard/google/foster/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x1e0000
+			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..93afe34
--- /dev/null
+++ b/src/mainboard/google/nyan/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..93afe34
--- /dev/null
+++ b/src/mainboard/google/nyan_big/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..93afe34
--- /dev/null
+++ b/src/mainboard/google/nyan_blaze/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/oak/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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/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..5d6d456
--- /dev/null
+++ b/src/mainboard/google/peach_pit/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..3f4ca84
--- /dev/null
+++ b/src/mainboard/google/purin/chromeos.fmd
@@ -0,0 +1,32 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x60000
+			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..4326f24
--- /dev/null
+++ b/src/mainboard/google/rush/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x1e0000
+			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..bd78e09
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x800000 {
+	WP_RO at 0x0 0x300000 {
+		RO_SECTION at 0x0 0x2f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x1e0000
+			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..88809ab
--- /dev/null
+++ b/src/mainboard/google/smaug/chromeos.fmd
@@ -0,0 +1,27 @@
+FLASH at 0x0 0x1000000 {
+	WP_RO at 0x0 0x500000 {
+		RO_SECTION at 0x0 0x4f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x3e0000
+			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..a7b4059
--- /dev/null
+++ b/src/mainboard/google/storm/chromeos.fmd
@@ -0,0 +1,33 @@
+FLASH at 0x0 0x800000 {
+	WP_RO at 0x0 0x400000 {
+		RO_SECTION at 0x0 0x3e0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x2e0000
+			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..7898cf5
--- /dev/null
+++ b/src/mainboard/google/urara/chromeos.fmd
@@ -0,0 +1,32 @@
+FLASH at 0x0 0x200000 {
+	WP_RO at 0x0 0x100000 {
+		RO_SECTION at 0x0 0xf0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0x60000
+			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..93afe34
--- /dev/null
+++ b/src/mainboard/google/veyron/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_brain/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_danger/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_emile/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_mickey/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_rialto/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..a18bb6b
--- /dev/null
+++ b/src/mainboard/google/veyron_romy/chromeos.fmd
@@ -0,0 +1,29 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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..93afe34
--- /dev/null
+++ b/src/mainboard/google/veyron_speedy/chromeos.fmd
@@ -0,0 +1,28 @@
+FLASH at 0x0 0x400000 {
+	WP_RO at 0x0 0x200000 {
+		RO_SECTION at 0x0 0x1f0000 {
+			BOOTBLOCK at 0 128K
+			COREBOOT(CBFS)@0x20000 0xe0000
+			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/convert-all-depthcharge-fmap.dts.sh b/util/scripts/convert-all-depthcharge-fmap.dts.sh
new file mode 100755
index 0000000..4c4b2d2
--- /dev/null
+++ b/util/scripts/convert-all-depthcharge-fmap.dts.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+CROS_ROOT=~/cros
+for i in auron bolt chell cosmos cyan daisy falco foster glados jecht lars link nyan nyan_big nyan_blaze oak panther peach_pit peppy purin rambi rush rush_ryu samus slippy smaug storm urara veyron_{brain,danger,emile,mickey,rialto,romy,speedy}; do
+	util/scripts/dts-to-fmd.sh ${CROS_ROOT}/src/platform/depthcharge/board/$i/fmap.dts > src/mainboard/google/$i/chromeos.fmd
+done
+for i in kunimitsu sklrvp strago; do
+	util/scripts/dts-to-fmd.sh ${CROS_ROOT}/src/platform/depthcharge/board/$i/fmap.dts > src/mainboard/intel/$i/chromeos.fmd
+done
+util/scripts/dts-to-fmd.sh ${CROS_ROOT}/src/platform/depthcharge/board/bayleybay/fmap.dts > src/mainboard/intel/bayleybay_fsp/chromeos.fmd
+util/scripts/dts-to-fmd.sh ${CROS_ROOT}/src/platform/depthcharge/board/veyron_minnie/fmap.dts > src/mainboard/google/veyron/chromeos.fmd
diff --git a/util/scripts/dts-to-fmd.sh b/util/scripts/dts-to-fmd.sh
new file mode 100755
index 0000000..3b87eee
--- /dev/null
+++ b/util/scripts/dts-to-fmd.sh
@@ -0,0 +1,110 @@
+#!/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
+
+	# special handling: COREBOOT region at 0, inject a 128K bootblock
+	# The size may need changes to accomodate the chipsets,
+	# but should work for now.
+	if [ "${REGION_NAME}" = "COREBOOT" -a \
+		$(( ${REGION_START} )) -eq 0 ]; then
+		printf "\n${PREFIX}BOOTBLOCK at 0 128K"
+		LOCAL_REGION_START=$(( ${LOCAL_REGION_START} + 128*1024 ))
+		LOCAL_REGION_START=`printf 0x%x ${LOCAL_REGION_START}`
+		REGION_SIZE=$(( ${REGION_SIZE} - 128*1024 ))
+		REGION_SIZE=`printf 0x%x ${REGION_SIZE}`
+	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