summaryrefslogtreecommitdiff
path: root/board/nvidia/seaboard/flashmap-twostop-4mb.dtsi
blob: 857e5585ad2a79c1fc56ef8a6f84a275fe0d70c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
* 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>;
		};
		dev-cfg {
			label = "dev-cfg";
			/* 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];
		};
	};
};