| /* |
| * 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; |
| }; |
| }; |
| }; |