blob: ab01bd61c9d1710042a8b4f5efa1d8bf18b1f54b [file] [log] [blame]
/*
* 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.
*/
/include/ "flashmap-ro.dtsi"
/ {
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,W25Q32BVSSIG", "cfi-flash",
"chromeos,flashmap";
reg = <0x00000000 0x00400000>;
/*
* Note: rw-a and rw-b are used by auto-update. They must be
* the same size, and must include the vblock, boot and
* firmware-id parts within them. There is no check on this
* at present so you need to manually verify that it is
* correct.
*
* The rw-b section must not overlap/include the rw-vpd
* section.
*/
/* ---- 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 0x00002000>;
type = "keyblock boot";
keyblock = "firmware.keyblock";
signprivate = "firmware_data_key.vbprivk";
version = <1>;
kernelkey = "kernel_subkey.vbpubk";
preamble-flags = <1>;
};
rw-a-boot {
/* Alignment: no requirement (yet). */
label = "fw-main-a";
reg = <0x00202000 0x000edf00>;
type = "blob boot";
};
rw-a-firmware-id {
/* Alignment: no requirement. */
label = "rw-fwid-a";
reg = <0x002eff00 0x00000100>;
read-only;
type = "blobstring fwid";
};
/* ---- Section: Rewritable slot B ---- */
rw-b {
label = "rw-section-b";
/* Alignment: 4k (for updating) */
reg = <0x00300000 0x000f0000>;
};
rw-b-vblock {
label = "vblock-b";
/* Alignment: 4k (for updating) and must be in start of
* each RW_SECTION. */
reg = <0x00300000 0x00002000>;
type = "keyblock boot";
keyblock = "firmware.keyblock";
signprivate = "firmware_data_key.vbprivk";
version = <1>;
kernelkey = "kernel_subkey.vbpubk";
preamble-flags = <1>;
};
rw-b-boot {
label = "fw-main-b";
/* Alignment: no requirement (yet). */
reg = <0x00302000 0x000edf00>;
type = "blob boot";
};
rw-b-firmware-id {
label = "rw-fwid-b";
/* Alignment: no requirement. */
reg = <0x003eff00 0x00000100>;
read-only;
type = "blobstring fwid";
};
/* ---- Section: Rewritable VPD 32 KB ---- */
rw-vpd {
label = "rw-vpd";
/* Alignment: 4k (for updating) */
reg = <0x003f0000 0x00008000>;
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 = <0x003f8000 0x00004000>;
};
shared-data {
label = "shared-data";
/* Alignment: 4k (for random read/write).
* RW firmware can put calibration data here. */
reg = <0x003f8000 0x00004000>;
type = "wiped";
wipe-value = [00];
};
/* ---- Section: Rewritable private 16 KB---- */
private-section {
/* Anything in this range will never be updated */
label = "rw-private";
reg = <0x003fc000 0x00004000>;
};
rw-environment {
label = "rw-environment";
/* Alignment: 4k, and must occupy bottom of U-Boot
* firmware -- check CONFIG_ENV_OFFSET */
reg = <0x003fe000 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];
};
};
};