blob: 1d94b9b3b2424e4593e95e48abd0ba708f166694 [file] [log] [blame]
/*
* Copyright (c) 2012 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.
*/
/ {
/*
* Names will be capitalized and hyphen converted to underscore by
* cros_bundle_firmware.
*
* If you didn't know this, and were searching for where FMAP
* entries come from, you'd have an awful hard time finding
* this file via grep. So, here's some examples in the
* hopes that you were searching for one of these...
*
* si-bios -> SI_BIOS
* ro-section -> RO_SECTION
* ro-frid -> RO_FRID
* rw-section-a -> RW_SECTION_A
*/
flash@ff800000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "chromeos,flashmap";
reg = <0xff800000 0x00800000>;
/*
* Non-BIOS section of the Intel Firmware Descriptor image.
* This section covers the all the parts that are not shown
* to the CPU right below 4G.
*/
si-all {
label = "si-all";
reg = <0x00000000 0x00200000>;
type = "ifd";
};
/*
* Firmware Descriptor section of the Intel Firmware Descriptor
* image.
*/
si-desc {
label = "si-desc";
reg = <0x00000000 0x00001000>;
};
/*
* Intel Management Engine section of the Intel Firmware
* Descriptor image.
*/
si-me {
label = "si-me";
reg = <0x00001000 0x001ff000>;
};
/*
* "BIOS" section of the Intel Firmware Descriptor image.
* This section covers the complete image as shown to the
* CPU right below 4G.
*/
si-bios {
label ="si-bios";
reg = <0x00200000 0x00600000>;
};
/* ---- Section: Rewritable slot A ---- */
rw-a {
label = "rw-section-a";
/* Alignment: 4k (for updating) */
reg = <0x00200000 0x000f0000>;
};
rw-a-vblock {
label = "vblock-a";
/*
* Alignment: 4k (for updating) and must be in start of
* each RW_SECTION.
*/
reg = <0x00200000 0x00010000>;
type = "keyblock boot,dtb";
keyblock = "firmware.keyblock";
signprivate = "firmware_data_key.vbprivk";
version = <1>;
kernelkey = "kernel_subkey.vbpubk";
preamble-flags = <0>;
};
rw-a-boot {
/* Alignment: no requirement (yet). */
label = "fw-main-a";
reg = <0x00210000 0x000dffc0>;
type = "blob boot,dtb";
};
rw-a-firmware-id {
/* Alignment: no requirement. */
label = "rw-fwid-a";
reg = <0x002effc0 0x00000040>;
read-only;
type = "blobstring fwid";
};
/* ---- Section: Rewritable slot B ---- */
rw-b {
label = "rw-section-b";
/* Alignment: 4k (for updating) */
reg = <0x002f0000 0x000f0000>;
};
rw-b-vblock {
label = "vblock-b";
/*
* Alignment: 4k (for updating) and must be in start of
* each RW_SECTION.
*/
reg = <0x002f0000 0x00010000>;
type = "keyblock boot,dtb";
keyblock = "firmware.keyblock";
signprivate = "firmware_data_key.vbprivk";
version = <1>;
kernelkey = "kernel_subkey.vbpubk";
preamble-flags = <0>;
};
rw-b-boot {
label = "fw-main-b";
/* Alignment: no requirement (yet). */
reg = <0x00300000 0x000dffc0>;
type = "blob boot,dtb";
};
rw-b-firmware-id {
label = "rw-fwid-b";
/* Alignment: no requirement. */
reg = <0x003dffc0 0x00000040>;
read-only;
type = "blobstring fwid";
};
/* ---- Section: Rewritable MRC cache 64KB ---- */
rw-mrc-cache {
label = "rw-mrc-cache";
/* Alignment: 4k (for updating) */
reg = <0x003e0000 0x00010000>;
type = "wiped";
wipe-value = [ff];
};
/* ---- Section: Rewritable Event Log 16KB ---- */
rw-elog {
label = "rw-elog";
/* Alignment: 4k (for updating) */
reg = <0x003f0000 0x00004000>;
type = "wiped";
wipe-value = [ff];
};
/* ---- Section: Rewritable shared 16 KB---- */
shared-section {
/*
* Alignment: 4k (for updating).
* Anything in this range may be updated in recovery.
*/
label = "rw-shared";
reg = <0x003f4000 0x00004000>;
};
shared-data {
label = "shared-data";
/*
* Alignment: 4k (for random read/write).
* RW firmware can put calibration data here.
*/
reg = <0x003f4000 0x00002000>;
type = "wiped";
wipe-value = [00];
};
rw-vblock-dev {
label = "vblock-dev";
/*
* Alignment: 4k (for random read/write).
* Reserve space for an optional user-installed
* vblock to validate dev-mode kernels.
* See crosbug.com/p/11216.
*/
reg = <0x003f6000 0x00002000>;
type = "wiped";
wipe-value = [ff];
};
/* ---- Section: Rewritable private 16 KB---- */
rw-environment {
label = "rw-environment";
/*
* Alignment: 4k, and must occupy bottom of U-Boot
* firmware -- check CONFIG_ENV_OFFSET
*/
reg = <0x003f8000 0x00004000>;
/*
* 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];
};
/* ---- Section: Rewritable VPD 4 KB ---- */
rw-vpd {
label = "rw-vpd";
/* Alignment: 4k (for updating) */
reg = <0x003fc000 0x00002000>;
type = "wiped";
wipe-value = [ff];
};
/*
* This space is currently unused and reserved for future
* extensions. cros_bundle_firmware dislikes holes in the
* FMAP, so we cover all empty space here.
*/
rw-unused {
label = "rw-unused";
reg = <0x003fe000 0x00002000>;
type = "wiped";
wipe-value = [ff];
};
rw-legacy {
label = "rw-legacy";
reg = <0x00400000 0x00200000>;
type = "blob legacy";
read-only;
};
/*
* This describes the portion of the image that will be
* write-protected in the factory.
*/
wp-ro {
label = "wp-ro";
reg = <0x00600000 0x00200000>;
read-only;
};
/* ---- Section: Vital-product data (VPD) ---- */
ro-vpd {
label = "ro-vpd";
/* VPD offset must be aligned to 4K bytes */
reg = <0x00600000 0x00004000>;
read-only;
type = "wiped";
wipe-value = [ff];
};
/*
* This space is currently unused and reserved for future
* extensions. cros_bundle_firmware dislikes holes in the
* FMAP, so we cover all empty space here.
*/
ro-unused {
label = "ro-unused";
reg = <0x00604000 0x0000c000>;
type = "wiped";
wipe-value = [ff];
};
/* ---- Section: Read-only ---- */
ro-section {
label = "ro-section";
reg = <0x00610000 0x001f0000>;
read-only;
};
ro-fmap {
label = "fmap";
/*
* We encourage to align FMAP partition in as large
* block as possible so that flashrom can find it soon.
* For example, aligning to 512KB is better than to
* 256KB.
*/
reg = <0x00610000 0x00000800>;
read-only;
type = "fmap";
ver-major = <1>;
ver-minor = <0>;
};
ro-firmware-id {
label = "ro-frid";
reg = <0x00610800 0x00000040>;
read-only;
type = "blobstring fwid";
};
/*
* Padding after FRID so the next section is 4K aligned. This
* is only needed to avoid gaps in the FMAP and to keep the
* next section aligned; FRID itself doesn't care.
*/
ro-firmware-id-pad {
label = "ro-frid-pad";
reg = <0x00610840 0x000007c0>;
type = "wiped";
wipe-value = [ff];
};
ro-gbb {
label = "gbb";
/* GBB offset must be aligned to 4K bytes */
reg = <0x00611000 0x000ef000>;
read-only;
type = "blob gbb";
};
ro-boot {
label = "boot-stub";
reg = <0x00700000 0x00100000>; /* 1 MB */
read-only;
type = "blob coreboot";
required;
};
};
};