/*
* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/

/*
* This is the flash map (fmap) for a twostop firmware. It defines all the areas
* that Chrome OS expects to find in its firmware device. The device is split
* into a number of top-level sections, and within each are several areas.
*
* Available flags for each entry are: read-only, compresed.
* All sections will be marked static in the fmap.
*/

/* Use the small 1MB flash map when we only have 2MB of SPI flash */
/include/ "flashmap-ro-1mb.dtsi"

/ {
	flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "winbond,W25Q16BVSSIG", "cfi-flash",
			"chromeos,flashmap";
		reg = <0x00000000 0x00200000>;

		/* ---- Section: Rewritable slot A ---- */
		rw-a@100000 {
			label = "rw-section-a";
			/* Alignment: 4k (for updating) */
			reg = <0x00100000 0x00078000>;
			block-lba = <0x00000022>;
		};
		rw-a-vblock@100000 {
			label = "vblock-a";
			/* Alignment: 4k (for updating) and must be in start of
			 * each RW_SECTION. */
			reg = <0x00100000 0x00002000>;
			type = "keyblock boot";
			keyblock = "firmware.keyblock";
			signprivate = "firmware_data_key.vbprivk";
			version = <1>;
			kernelkey = "kernel_subkey.vbpubk";
			preamble-flags = <1>;
		};
		rw-a-boot@102000 {
			/* Alignment: no requirement (yet). */
			label = "fw-main-a";
			reg = <0x00102000 0x00075000>;

			/* There is not enough space for this, so remove it */
			/* type = "blob boot"; */
		};
		rw-a-firmware-id@177f00 {
			/* Alignment: no requirement. */
			label = "rw-fwid-a";
			reg = <0x00177f00 0x00000100>;
			read-only;
			type = "blobstring fwid";
		};

		/* ---- Section: Rewritable slot B ---- */
		rw-b@178000 {
			label = "rw-section-b";
			/* Alignment: 4k (for updating) */
			reg = <0x00178000 0x00078000>;
			block-lba = <0x00000422>;
		};
		rw-b-vblock@178000 {
			label = "vblock-b";
			/* Alignment: 4k (for updating) and must be in start of
			 * each RW_SECTION. */
			reg = <0x00178000 0x00002000>;
			type = "keyblock boot";
			keyblock = "firmware.keyblock";
			signprivate = "firmware_data_key.vbprivk";
			version = <1>;
			kernelkey = "kernel_subkey.vbpubk";
			preamble-flags = <1>;
		};
		rw-b-boot@17a000 {
			label = "fw-main-b";
			/* Alignment: no requirement (yet). */
			reg = <0x0017a000 0x00075000>;
			/* There is not enough space for this, so remove it */
			/* type = "blob boot"; */
		};
		rw-b-firmware-id@1eff00 {
			label = "rw-fwid-b";
			/* Alignment: no requirement. */
			reg = <0x001eff00 0x00000100>;
			read-only;
			type = "blobstring fwid";
		};

		/* ---- Section: Rewritable VPD 32 KB ---- */
		rw-vpd@1f0000 {
			label = "rw-vpd";
			/* Alignment: 4k (for updating) */
			reg = <0x001f0000 0x00008000>;
			type = "wiped";
			wipe-value = [ff];
		};

		/* ---- Section: Rewritable shared 16 KB---- */
		shared-section@1f8000 {
			/* Alignment: 4k (for updating).
			 * Anything in this range may be updated in recovery. */
			label = "rw-shared";
			reg = <0x001f8000 0x00004000>;
		};
		shared-data@1f8000 {
			label = "shared-data";
			/* Alignment: 4k (for random read/write).
			 * RW firmware can put calibration data here. */
			reg = <0x001f8000 0x00004000>;
			type = "wiped";
			wipe-value = [00];
		};
		/* ---- Section: Rewritable private 16 KB---- */
		private-section@1fc000 {
			/* Anything in this range will never be updated */
			label = "rw-private";
			reg = <0x001fc000 0x00004000>;
		};
		rw-environment@1fe000 {
			label = "rw-environment";
			/* Alignment: 4k, and must occupy bottom of U-Boot
			 * firmware -- check CONFIG_ENV_OFFSET */
			reg = <0x001fe000 0x00002000>;

			/*
			 * We could put the dev environment here, but U-Boot has
			 * a default built in. Devs can 'saveenv' to set this
			 * up.
			 */
			type = "wiped";
			wipe-value = [00];
		};
	};
};
