Commit c654b5172a65faba2b541ee1fda1738534d47241

Authored by Simon Glass
1 parent 6f4dbc21e4

fdt: Add ft_system_setup() function for system device tree additions

Add an additional function for adding information to the device tree before
booting. This permits additions which are not board-specific.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Tom Rini <trini@ti.com>

Showing 5 changed files with 48 additions and 1 deletions Inline Diff

1 # 1 #
2 # (C) Copyright 2000 - 2013 2 # (C) Copyright 2000 - 2013
3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. 3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 # 4 #
5 # SPDX-License-Identifier: GPL-2.0+ 5 # SPDX-License-Identifier: GPL-2.0+
6 # 6 #
7 7
8 Summary: 8 Summary:
9 ======== 9 ========
10 10
11 This directory contains the source code for U-Boot, a boot loader for 11 This directory contains the source code for U-Boot, a boot loader for
12 Embedded boards based on PowerPC, ARM, MIPS and several other 12 Embedded boards based on PowerPC, ARM, MIPS and several other
13 processors, which can be installed in a boot ROM and used to 13 processors, which can be installed in a boot ROM and used to
14 initialize and test the hardware or to download and run application 14 initialize and test the hardware or to download and run application
15 code. 15 code.
16 16
17 The development of U-Boot is closely related to Linux: some parts of 17 The development of U-Boot is closely related to Linux: some parts of
18 the source code originate in the Linux source tree, we have some 18 the source code originate in the Linux source tree, we have some
19 header files in common, and special provision has been made to 19 header files in common, and special provision has been made to
20 support booting of Linux images. 20 support booting of Linux images.
21 21
22 Some attention has been paid to make this software easily 22 Some attention has been paid to make this software easily
23 configurable and extendable. For instance, all monitor commands are 23 configurable and extendable. For instance, all monitor commands are
24 implemented with the same call interface, so that it's very easy to 24 implemented with the same call interface, so that it's very easy to
25 add new commands. Also, instead of permanently adding rarely used 25 add new commands. Also, instead of permanently adding rarely used
26 code (for instance hardware test utilities) to the monitor, you can 26 code (for instance hardware test utilities) to the monitor, you can
27 load and run it dynamically. 27 load and run it dynamically.
28 28
29 29
30 Status: 30 Status:
31 ======= 31 =======
32 32
33 In general, all boards for which a configuration option exists in the 33 In general, all boards for which a configuration option exists in the
34 Makefile have been tested to some extent and can be considered 34 Makefile have been tested to some extent and can be considered
35 "working". In fact, many of them are used in production systems. 35 "working". In fact, many of them are used in production systems.
36 36
37 In case of problems see the CHANGELOG and CREDITS files to find out 37 In case of problems see the CHANGELOG and CREDITS files to find out
38 who contributed the specific port. The boards.cfg file lists board 38 who contributed the specific port. The boards.cfg file lists board
39 maintainers. 39 maintainers.
40 40
41 Note: There is no CHANGELOG file in the actual U-Boot source tree; 41 Note: There is no CHANGELOG file in the actual U-Boot source tree;
42 it can be created dynamically from the Git log using: 42 it can be created dynamically from the Git log using:
43 43
44 make CHANGELOG 44 make CHANGELOG
45 45
46 46
47 Where to get help: 47 Where to get help:
48 ================== 48 ==================
49 49
50 In case you have questions about, problems with or contributions for 50 In case you have questions about, problems with or contributions for
51 U-Boot you should send a message to the U-Boot mailing list at 51 U-Boot you should send a message to the U-Boot mailing list at
52 <u-boot@lists.denx.de>. There is also an archive of previous traffic 52 <u-boot@lists.denx.de>. There is also an archive of previous traffic
53 on the mailing list - please search the archive before asking FAQ's. 53 on the mailing list - please search the archive before asking FAQ's.
54 Please see http://lists.denx.de/pipermail/u-boot and 54 Please see http://lists.denx.de/pipermail/u-boot and
55 http://dir.gmane.org/gmane.comp.boot-loaders.u-boot 55 http://dir.gmane.org/gmane.comp.boot-loaders.u-boot
56 56
57 57
58 Where to get source code: 58 Where to get source code:
59 ========================= 59 =========================
60 60
61 The U-Boot source code is maintained in the git repository at 61 The U-Boot source code is maintained in the git repository at
62 git://www.denx.de/git/u-boot.git ; you can browse it online at 62 git://www.denx.de/git/u-boot.git ; you can browse it online at
63 http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary 63 http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
64 64
65 The "snapshot" links on this page allow you to download tarballs of 65 The "snapshot" links on this page allow you to download tarballs of
66 any version you might be interested in. Official releases are also 66 any version you might be interested in. Official releases are also
67 available for FTP download from the ftp://ftp.denx.de/pub/u-boot/ 67 available for FTP download from the ftp://ftp.denx.de/pub/u-boot/
68 directory. 68 directory.
69 69
70 Pre-built (and tested) images are available from 70 Pre-built (and tested) images are available from
71 ftp://ftp.denx.de/pub/u-boot/images/ 71 ftp://ftp.denx.de/pub/u-boot/images/
72 72
73 73
74 Where we come from: 74 Where we come from:
75 =================== 75 ===================
76 76
77 - start from 8xxrom sources 77 - start from 8xxrom sources
78 - create PPCBoot project (http://sourceforge.net/projects/ppcboot) 78 - create PPCBoot project (http://sourceforge.net/projects/ppcboot)
79 - clean up code 79 - clean up code
80 - make it easier to add custom boards 80 - make it easier to add custom boards
81 - make it possible to add other [PowerPC] CPUs 81 - make it possible to add other [PowerPC] CPUs
82 - extend functions, especially: 82 - extend functions, especially:
83 * Provide extended interface to Linux boot loader 83 * Provide extended interface to Linux boot loader
84 * S-Record download 84 * S-Record download
85 * network boot 85 * network boot
86 * PCMCIA / CompactFlash / ATA disk / SCSI ... boot 86 * PCMCIA / CompactFlash / ATA disk / SCSI ... boot
87 - create ARMBoot project (http://sourceforge.net/projects/armboot) 87 - create ARMBoot project (http://sourceforge.net/projects/armboot)
88 - add other CPU families (starting with ARM) 88 - add other CPU families (starting with ARM)
89 - create U-Boot project (http://sourceforge.net/projects/u-boot) 89 - create U-Boot project (http://sourceforge.net/projects/u-boot)
90 - current project page: see http://www.denx.de/wiki/U-Boot 90 - current project page: see http://www.denx.de/wiki/U-Boot
91 91
92 92
93 Names and Spelling: 93 Names and Spelling:
94 =================== 94 ===================
95 95
96 The "official" name of this project is "Das U-Boot". The spelling 96 The "official" name of this project is "Das U-Boot". The spelling
97 "U-Boot" shall be used in all written text (documentation, comments 97 "U-Boot" shall be used in all written text (documentation, comments
98 in source files etc.). Example: 98 in source files etc.). Example:
99 99
100 This is the README file for the U-Boot project. 100 This is the README file for the U-Boot project.
101 101
102 File names etc. shall be based on the string "u-boot". Examples: 102 File names etc. shall be based on the string "u-boot". Examples:
103 103
104 include/asm-ppc/u-boot.h 104 include/asm-ppc/u-boot.h
105 105
106 #include <asm/u-boot.h> 106 #include <asm/u-boot.h>
107 107
108 Variable names, preprocessor constants etc. shall be either based on 108 Variable names, preprocessor constants etc. shall be either based on
109 the string "u_boot" or on "U_BOOT". Example: 109 the string "u_boot" or on "U_BOOT". Example:
110 110
111 U_BOOT_VERSION u_boot_logo 111 U_BOOT_VERSION u_boot_logo
112 IH_OS_U_BOOT u_boot_hush_start 112 IH_OS_U_BOOT u_boot_hush_start
113 113
114 114
115 Versioning: 115 Versioning:
116 =========== 116 ===========
117 117
118 Starting with the release in October 2008, the names of the releases 118 Starting with the release in October 2008, the names of the releases
119 were changed from numerical release numbers without deeper meaning 119 were changed from numerical release numbers without deeper meaning
120 into a time stamp based numbering. Regular releases are identified by 120 into a time stamp based numbering. Regular releases are identified by
121 names consisting of the calendar year and month of the release date. 121 names consisting of the calendar year and month of the release date.
122 Additional fields (if present) indicate release candidates or bug fix 122 Additional fields (if present) indicate release candidates or bug fix
123 releases in "stable" maintenance trees. 123 releases in "stable" maintenance trees.
124 124
125 Examples: 125 Examples:
126 U-Boot v2009.11 - Release November 2009 126 U-Boot v2009.11 - Release November 2009
127 U-Boot v2009.11.1 - Release 1 in version November 2009 stable tree 127 U-Boot v2009.11.1 - Release 1 in version November 2009 stable tree
128 U-Boot v2010.09-rc1 - Release candiate 1 for September 2010 release 128 U-Boot v2010.09-rc1 - Release candiate 1 for September 2010 release
129 129
130 130
131 Directory Hierarchy: 131 Directory Hierarchy:
132 ==================== 132 ====================
133 133
134 /arch Architecture specific files 134 /arch Architecture specific files
135 /arc Files generic to ARC architecture 135 /arc Files generic to ARC architecture
136 /cpu CPU specific files 136 /cpu CPU specific files
137 /arc700 Files specific to ARC 700 CPUs 137 /arc700 Files specific to ARC 700 CPUs
138 /lib Architecture specific library files 138 /lib Architecture specific library files
139 /arm Files generic to ARM architecture 139 /arm Files generic to ARM architecture
140 /cpu CPU specific files 140 /cpu CPU specific files
141 /arm720t Files specific to ARM 720 CPUs 141 /arm720t Files specific to ARM 720 CPUs
142 /arm920t Files specific to ARM 920 CPUs 142 /arm920t Files specific to ARM 920 CPUs
143 /at91 Files specific to Atmel AT91RM9200 CPU 143 /at91 Files specific to Atmel AT91RM9200 CPU
144 /imx Files specific to Freescale MC9328 i.MX CPUs 144 /imx Files specific to Freescale MC9328 i.MX CPUs
145 /s3c24x0 Files specific to Samsung S3C24X0 CPUs 145 /s3c24x0 Files specific to Samsung S3C24X0 CPUs
146 /arm926ejs Files specific to ARM 926 CPUs 146 /arm926ejs Files specific to ARM 926 CPUs
147 /arm1136 Files specific to ARM 1136 CPUs 147 /arm1136 Files specific to ARM 1136 CPUs
148 /pxa Files specific to Intel XScale PXA CPUs 148 /pxa Files specific to Intel XScale PXA CPUs
149 /sa1100 Files specific to Intel StrongARM SA1100 CPUs 149 /sa1100 Files specific to Intel StrongARM SA1100 CPUs
150 /lib Architecture specific library files 150 /lib Architecture specific library files
151 /avr32 Files generic to AVR32 architecture 151 /avr32 Files generic to AVR32 architecture
152 /cpu CPU specific files 152 /cpu CPU specific files
153 /lib Architecture specific library files 153 /lib Architecture specific library files
154 /blackfin Files generic to Analog Devices Blackfin architecture 154 /blackfin Files generic to Analog Devices Blackfin architecture
155 /cpu CPU specific files 155 /cpu CPU specific files
156 /lib Architecture specific library files 156 /lib Architecture specific library files
157 /m68k Files generic to m68k architecture 157 /m68k Files generic to m68k architecture
158 /cpu CPU specific files 158 /cpu CPU specific files
159 /mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs 159 /mcf52x2 Files specific to Freescale ColdFire MCF52x2 CPUs
160 /mcf5227x Files specific to Freescale ColdFire MCF5227x CPUs 160 /mcf5227x Files specific to Freescale ColdFire MCF5227x CPUs
161 /mcf532x Files specific to Freescale ColdFire MCF5329 CPUs 161 /mcf532x Files specific to Freescale ColdFire MCF5329 CPUs
162 /mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs 162 /mcf5445x Files specific to Freescale ColdFire MCF5445x CPUs
163 /mcf547x_8x Files specific to Freescale ColdFire MCF547x_8x CPUs 163 /mcf547x_8x Files specific to Freescale ColdFire MCF547x_8x CPUs
164 /lib Architecture specific library files 164 /lib Architecture specific library files
165 /microblaze Files generic to microblaze architecture 165 /microblaze Files generic to microblaze architecture
166 /cpu CPU specific files 166 /cpu CPU specific files
167 /lib Architecture specific library files 167 /lib Architecture specific library files
168 /mips Files generic to MIPS architecture 168 /mips Files generic to MIPS architecture
169 /cpu CPU specific files 169 /cpu CPU specific files
170 /mips32 Files specific to MIPS32 CPUs 170 /mips32 Files specific to MIPS32 CPUs
171 /mips64 Files specific to MIPS64 CPUs 171 /mips64 Files specific to MIPS64 CPUs
172 /lib Architecture specific library files 172 /lib Architecture specific library files
173 /nds32 Files generic to NDS32 architecture 173 /nds32 Files generic to NDS32 architecture
174 /cpu CPU specific files 174 /cpu CPU specific files
175 /n1213 Files specific to Andes Technology N1213 CPUs 175 /n1213 Files specific to Andes Technology N1213 CPUs
176 /lib Architecture specific library files 176 /lib Architecture specific library files
177 /nios2 Files generic to Altera NIOS2 architecture 177 /nios2 Files generic to Altera NIOS2 architecture
178 /cpu CPU specific files 178 /cpu CPU specific files
179 /lib Architecture specific library files 179 /lib Architecture specific library files
180 /openrisc Files generic to OpenRISC architecture 180 /openrisc Files generic to OpenRISC architecture
181 /cpu CPU specific files 181 /cpu CPU specific files
182 /lib Architecture specific library files 182 /lib Architecture specific library files
183 /powerpc Files generic to PowerPC architecture 183 /powerpc Files generic to PowerPC architecture
184 /cpu CPU specific files 184 /cpu CPU specific files
185 /74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs 185 /74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs
186 /mpc5xx Files specific to Freescale MPC5xx CPUs 186 /mpc5xx Files specific to Freescale MPC5xx CPUs
187 /mpc5xxx Files specific to Freescale MPC5xxx CPUs 187 /mpc5xxx Files specific to Freescale MPC5xxx CPUs
188 /mpc8xx Files specific to Freescale MPC8xx CPUs 188 /mpc8xx Files specific to Freescale MPC8xx CPUs
189 /mpc824x Files specific to Freescale MPC824x CPUs 189 /mpc824x Files specific to Freescale MPC824x CPUs
190 /mpc8260 Files specific to Freescale MPC8260 CPUs 190 /mpc8260 Files specific to Freescale MPC8260 CPUs
191 /mpc85xx Files specific to Freescale MPC85xx CPUs 191 /mpc85xx Files specific to Freescale MPC85xx CPUs
192 /ppc4xx Files specific to AMCC PowerPC 4xx CPUs 192 /ppc4xx Files specific to AMCC PowerPC 4xx CPUs
193 /lib Architecture specific library files 193 /lib Architecture specific library files
194 /sh Files generic to SH architecture 194 /sh Files generic to SH architecture
195 /cpu CPU specific files 195 /cpu CPU specific files
196 /sh2 Files specific to sh2 CPUs 196 /sh2 Files specific to sh2 CPUs
197 /sh3 Files specific to sh3 CPUs 197 /sh3 Files specific to sh3 CPUs
198 /sh4 Files specific to sh4 CPUs 198 /sh4 Files specific to sh4 CPUs
199 /lib Architecture specific library files 199 /lib Architecture specific library files
200 /sparc Files generic to SPARC architecture 200 /sparc Files generic to SPARC architecture
201 /cpu CPU specific files 201 /cpu CPU specific files
202 /leon2 Files specific to Gaisler LEON2 SPARC CPU 202 /leon2 Files specific to Gaisler LEON2 SPARC CPU
203 /leon3 Files specific to Gaisler LEON3 SPARC CPU 203 /leon3 Files specific to Gaisler LEON3 SPARC CPU
204 /lib Architecture specific library files 204 /lib Architecture specific library files
205 /x86 Files generic to x86 architecture 205 /x86 Files generic to x86 architecture
206 /cpu CPU specific files 206 /cpu CPU specific files
207 /lib Architecture specific library files 207 /lib Architecture specific library files
208 /api Machine/arch independent API for external apps 208 /api Machine/arch independent API for external apps
209 /board Board dependent files 209 /board Board dependent files
210 /common Misc architecture independent functions 210 /common Misc architecture independent functions
211 /disk Code for disk drive partition handling 211 /disk Code for disk drive partition handling
212 /doc Documentation (don't expect too much) 212 /doc Documentation (don't expect too much)
213 /drivers Commonly used device drivers 213 /drivers Commonly used device drivers
214 /dts Contains Makefile for building internal U-Boot fdt. 214 /dts Contains Makefile for building internal U-Boot fdt.
215 /examples Example code for standalone applications, etc. 215 /examples Example code for standalone applications, etc.
216 /fs Filesystem code (cramfs, ext2, jffs2, etc.) 216 /fs Filesystem code (cramfs, ext2, jffs2, etc.)
217 /include Header Files 217 /include Header Files
218 /lib Files generic to all architectures 218 /lib Files generic to all architectures
219 /libfdt Library files to support flattened device trees 219 /libfdt Library files to support flattened device trees
220 /lzma Library files to support LZMA decompression 220 /lzma Library files to support LZMA decompression
221 /lzo Library files to support LZO decompression 221 /lzo Library files to support LZO decompression
222 /net Networking code 222 /net Networking code
223 /post Power On Self Test 223 /post Power On Self Test
224 /spl Secondary Program Loader framework 224 /spl Secondary Program Loader framework
225 /tools Tools to build S-Record or U-Boot images, etc. 225 /tools Tools to build S-Record or U-Boot images, etc.
226 226
227 Software Configuration: 227 Software Configuration:
228 ======================= 228 =======================
229 229
230 Configuration is usually done using C preprocessor defines; the 230 Configuration is usually done using C preprocessor defines; the
231 rationale behind that is to avoid dead code whenever possible. 231 rationale behind that is to avoid dead code whenever possible.
232 232
233 There are two classes of configuration variables: 233 There are two classes of configuration variables:
234 234
235 * Configuration _OPTIONS_: 235 * Configuration _OPTIONS_:
236 These are selectable by the user and have names beginning with 236 These are selectable by the user and have names beginning with
237 "CONFIG_". 237 "CONFIG_".
238 238
239 * Configuration _SETTINGS_: 239 * Configuration _SETTINGS_:
240 These depend on the hardware etc. and should not be meddled with if 240 These depend on the hardware etc. and should not be meddled with if
241 you don't know what you're doing; they have names beginning with 241 you don't know what you're doing; they have names beginning with
242 "CONFIG_SYS_". 242 "CONFIG_SYS_".
243 243
244 Later we will add a configuration tool - probably similar to or even 244 Later we will add a configuration tool - probably similar to or even
245 identical to what's used for the Linux kernel. Right now, we have to 245 identical to what's used for the Linux kernel. Right now, we have to
246 do the configuration by hand, which means creating some symbolic 246 do the configuration by hand, which means creating some symbolic
247 links and editing some configuration files. We use the TQM8xxL boards 247 links and editing some configuration files. We use the TQM8xxL boards
248 as an example here. 248 as an example here.
249 249
250 250
251 Selection of Processor Architecture and Board Type: 251 Selection of Processor Architecture and Board Type:
252 --------------------------------------------------- 252 ---------------------------------------------------
253 253
254 For all supported boards there are ready-to-use default 254 For all supported boards there are ready-to-use default
255 configurations available; just type "make <board_name>_defconfig". 255 configurations available; just type "make <board_name>_defconfig".
256 256
257 Example: For a TQM823L module type: 257 Example: For a TQM823L module type:
258 258
259 cd u-boot 259 cd u-boot
260 make TQM823L_defconfig 260 make TQM823L_defconfig
261 261
262 For the Cogent platform, you need to specify the CPU type as well; 262 For the Cogent platform, you need to specify the CPU type as well;
263 e.g. "make cogent_mpc8xx_defconfig". And also configure the cogent 263 e.g. "make cogent_mpc8xx_defconfig". And also configure the cogent
264 directory according to the instructions in cogent/README. 264 directory according to the instructions in cogent/README.
265 265
266 266
267 Sandbox Environment: 267 Sandbox Environment:
268 -------------------- 268 --------------------
269 269
270 U-Boot can be built natively to run on a Linux host using the 'sandbox' 270 U-Boot can be built natively to run on a Linux host using the 'sandbox'
271 board. This allows feature development which is not board- or architecture- 271 board. This allows feature development which is not board- or architecture-
272 specific to be undertaken on a native platform. The sandbox is also used to 272 specific to be undertaken on a native platform. The sandbox is also used to
273 run some of U-Boot's tests. 273 run some of U-Boot's tests.
274 274
275 See board/sandbox/README.sandbox for more details. 275 See board/sandbox/README.sandbox for more details.
276 276
277 277
278 Configuration Options: 278 Configuration Options:
279 ---------------------- 279 ----------------------
280 280
281 Configuration depends on the combination of board and CPU type; all 281 Configuration depends on the combination of board and CPU type; all
282 such information is kept in a configuration file 282 such information is kept in a configuration file
283 "include/configs/<board_name>.h". 283 "include/configs/<board_name>.h".
284 284
285 Example: For a TQM823L module, all configuration settings are in 285 Example: For a TQM823L module, all configuration settings are in
286 "include/configs/TQM823L.h". 286 "include/configs/TQM823L.h".
287 287
288 288
289 Many of the options are named exactly as the corresponding Linux 289 Many of the options are named exactly as the corresponding Linux
290 kernel configuration options. The intention is to make it easier to 290 kernel configuration options. The intention is to make it easier to
291 build a config tool - later. 291 build a config tool - later.
292 292
293 293
294 The following options need to be configured: 294 The following options need to be configured:
295 295
296 - CPU Type: Define exactly one, e.g. CONFIG_MPC85XX. 296 - CPU Type: Define exactly one, e.g. CONFIG_MPC85XX.
297 297
298 - Board Type: Define exactly one, e.g. CONFIG_MPC8540ADS. 298 - Board Type: Define exactly one, e.g. CONFIG_MPC8540ADS.
299 299
300 - CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined) 300 - CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined)
301 Define exactly one, e.g. CONFIG_ATSTK1002 301 Define exactly one, e.g. CONFIG_ATSTK1002
302 302
303 - CPU Module Type: (if CONFIG_COGENT is defined) 303 - CPU Module Type: (if CONFIG_COGENT is defined)
304 Define exactly one of 304 Define exactly one of
305 CONFIG_CMA286_60_OLD 305 CONFIG_CMA286_60_OLD
306 --- FIXME --- not tested yet: 306 --- FIXME --- not tested yet:
307 CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P, 307 CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P,
308 CONFIG_CMA287_23, CONFIG_CMA287_50 308 CONFIG_CMA287_23, CONFIG_CMA287_50
309 309
310 - Motherboard Type: (if CONFIG_COGENT is defined) 310 - Motherboard Type: (if CONFIG_COGENT is defined)
311 Define exactly one of 311 Define exactly one of
312 CONFIG_CMA101, CONFIG_CMA102 312 CONFIG_CMA101, CONFIG_CMA102
313 313
314 - Motherboard I/O Modules: (if CONFIG_COGENT is defined) 314 - Motherboard I/O Modules: (if CONFIG_COGENT is defined)
315 Define one or more of 315 Define one or more of
316 CONFIG_CMA302 316 CONFIG_CMA302
317 317
318 - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined) 318 - Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
319 Define one or more of 319 Define one or more of
320 CONFIG_LCD_HEARTBEAT - update a character position on 320 CONFIG_LCD_HEARTBEAT - update a character position on
321 the LCD display every second with 321 the LCD display every second with
322 a "rotator" |\-/|\-/ 322 a "rotator" |\-/|\-/
323 323
324 - Marvell Family Member 324 - Marvell Family Member
325 CONFIG_SYS_MVFS - define it if you want to enable 325 CONFIG_SYS_MVFS - define it if you want to enable
326 multiple fs option at one time 326 multiple fs option at one time
327 for marvell soc family 327 for marvell soc family
328 328
329 - MPC824X Family Member (if CONFIG_MPC824X is defined) 329 - MPC824X Family Member (if CONFIG_MPC824X is defined)
330 Define exactly one of 330 Define exactly one of
331 CONFIG_MPC8240, CONFIG_MPC8245 331 CONFIG_MPC8240, CONFIG_MPC8245
332 332
333 - 8xx CPU Options: (if using an MPC8xx CPU) 333 - 8xx CPU Options: (if using an MPC8xx CPU)
334 CONFIG_8xx_GCLK_FREQ - deprecated: CPU clock if 334 CONFIG_8xx_GCLK_FREQ - deprecated: CPU clock if
335 get_gclk_freq() cannot work 335 get_gclk_freq() cannot work
336 e.g. if there is no 32KHz 336 e.g. if there is no 32KHz
337 reference PIT/RTC clock 337 reference PIT/RTC clock
338 CONFIG_8xx_OSCLK - PLL input clock (either EXTCLK 338 CONFIG_8xx_OSCLK - PLL input clock (either EXTCLK
339 or XTAL/EXTAL) 339 or XTAL/EXTAL)
340 340
341 - 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU): 341 - 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU):
342 CONFIG_SYS_8xx_CPUCLK_MIN 342 CONFIG_SYS_8xx_CPUCLK_MIN
343 CONFIG_SYS_8xx_CPUCLK_MAX 343 CONFIG_SYS_8xx_CPUCLK_MAX
344 CONFIG_8xx_CPUCLK_DEFAULT 344 CONFIG_8xx_CPUCLK_DEFAULT
345 See doc/README.MPC866 345 See doc/README.MPC866
346 346
347 CONFIG_SYS_MEASURE_CPUCLK 347 CONFIG_SYS_MEASURE_CPUCLK
348 348
349 Define this to measure the actual CPU clock instead 349 Define this to measure the actual CPU clock instead
350 of relying on the correctness of the configured 350 of relying on the correctness of the configured
351 values. Mostly useful for board bringup to make sure 351 values. Mostly useful for board bringup to make sure
352 the PLL is locked at the intended frequency. Note 352 the PLL is locked at the intended frequency. Note
353 that this requires a (stable) reference clock (32 kHz 353 that this requires a (stable) reference clock (32 kHz
354 RTC clock or CONFIG_SYS_8XX_XIN) 354 RTC clock or CONFIG_SYS_8XX_XIN)
355 355
356 CONFIG_SYS_DELAYED_ICACHE 356 CONFIG_SYS_DELAYED_ICACHE
357 357
358 Define this option if you want to enable the 358 Define this option if you want to enable the
359 ICache only when Code runs from RAM. 359 ICache only when Code runs from RAM.
360 360
361 - 85xx CPU Options: 361 - 85xx CPU Options:
362 CONFIG_SYS_PPC64 362 CONFIG_SYS_PPC64
363 363
364 Specifies that the core is a 64-bit PowerPC implementation (implements 364 Specifies that the core is a 64-bit PowerPC implementation (implements
365 the "64" category of the Power ISA). This is necessary for ePAPR 365 the "64" category of the Power ISA). This is necessary for ePAPR
366 compliance, among other possible reasons. 366 compliance, among other possible reasons.
367 367
368 CONFIG_SYS_FSL_TBCLK_DIV 368 CONFIG_SYS_FSL_TBCLK_DIV
369 369
370 Defines the core time base clock divider ratio compared to the 370 Defines the core time base clock divider ratio compared to the
371 system clock. On most PQ3 devices this is 8, on newer QorIQ 371 system clock. On most PQ3 devices this is 8, on newer QorIQ
372 devices it can be 16 or 32. The ratio varies from SoC to Soc. 372 devices it can be 16 or 32. The ratio varies from SoC to Soc.
373 373
374 CONFIG_SYS_FSL_PCIE_COMPAT 374 CONFIG_SYS_FSL_PCIE_COMPAT
375 375
376 Defines the string to utilize when trying to match PCIe device 376 Defines the string to utilize when trying to match PCIe device
377 tree nodes for the given platform. 377 tree nodes for the given platform.
378 378
379 CONFIG_SYS_PPC_E500_DEBUG_TLB 379 CONFIG_SYS_PPC_E500_DEBUG_TLB
380 380
381 Enables a temporary TLB entry to be used during boot to work 381 Enables a temporary TLB entry to be used during boot to work
382 around limitations in e500v1 and e500v2 external debugger 382 around limitations in e500v1 and e500v2 external debugger
383 support. This reduces the portions of the boot code where 383 support. This reduces the portions of the boot code where
384 breakpoints and single stepping do not work. The value of this 384 breakpoints and single stepping do not work. The value of this
385 symbol should be set to the TLB1 entry to be used for this 385 symbol should be set to the TLB1 entry to be used for this
386 purpose. 386 purpose.
387 387
388 CONFIG_SYS_FSL_ERRATUM_A004510 388 CONFIG_SYS_FSL_ERRATUM_A004510
389 389
390 Enables a workaround for erratum A004510. If set, 390 Enables a workaround for erratum A004510. If set,
391 then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and 391 then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and
392 CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set. 392 CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set.
393 393
394 CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 394 CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV
395 CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional) 395 CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional)
396 396
397 Defines one or two SoC revisions (low 8 bits of SVR) 397 Defines one or two SoC revisions (low 8 bits of SVR)
398 for which the A004510 workaround should be applied. 398 for which the A004510 workaround should be applied.
399 399
400 The rest of SVR is either not relevant to the decision 400 The rest of SVR is either not relevant to the decision
401 of whether the erratum is present (e.g. p2040 versus 401 of whether the erratum is present (e.g. p2040 versus
402 p2041) or is implied by the build target, which controls 402 p2041) or is implied by the build target, which controls
403 whether CONFIG_SYS_FSL_ERRATUM_A004510 is set. 403 whether CONFIG_SYS_FSL_ERRATUM_A004510 is set.
404 404
405 See Freescale App Note 4493 for more information about 405 See Freescale App Note 4493 for more information about
406 this erratum. 406 this erratum.
407 407
408 CONFIG_A003399_NOR_WORKAROUND 408 CONFIG_A003399_NOR_WORKAROUND
409 Enables a workaround for IFC erratum A003399. It is only 409 Enables a workaround for IFC erratum A003399. It is only
410 requred during NOR boot. 410 requred during NOR boot.
411 411
412 CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 412 CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY
413 413
414 This is the value to write into CCSR offset 0x18600 414 This is the value to write into CCSR offset 0x18600
415 according to the A004510 workaround. 415 according to the A004510 workaround.
416 416
417 CONFIG_SYS_FSL_DSP_DDR_ADDR 417 CONFIG_SYS_FSL_DSP_DDR_ADDR
418 This value denotes start offset of DDR memory which is 418 This value denotes start offset of DDR memory which is
419 connected exclusively to the DSP cores. 419 connected exclusively to the DSP cores.
420 420
421 CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 421 CONFIG_SYS_FSL_DSP_M2_RAM_ADDR
422 This value denotes start offset of M2 memory 422 This value denotes start offset of M2 memory
423 which is directly connected to the DSP core. 423 which is directly connected to the DSP core.
424 424
425 CONFIG_SYS_FSL_DSP_M3_RAM_ADDR 425 CONFIG_SYS_FSL_DSP_M3_RAM_ADDR
426 This value denotes start offset of M3 memory which is directly 426 This value denotes start offset of M3 memory which is directly
427 connected to the DSP core. 427 connected to the DSP core.
428 428
429 CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 429 CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
430 This value denotes start offset of DSP CCSR space. 430 This value denotes start offset of DSP CCSR space.
431 431
432 CONFIG_SYS_FSL_SINGLE_SOURCE_CLK 432 CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
433 Single Source Clock is clocking mode present in some of FSL SoC's. 433 Single Source Clock is clocking mode present in some of FSL SoC's.
434 In this mode, a single differential clock is used to supply 434 In this mode, a single differential clock is used to supply
435 clocks to the sysclock, ddrclock and usbclock. 435 clocks to the sysclock, ddrclock and usbclock.
436 436
437 CONFIG_SYS_CPC_REINIT_F 437 CONFIG_SYS_CPC_REINIT_F
438 This CONFIG is defined when the CPC is configured as SRAM at the 438 This CONFIG is defined when the CPC is configured as SRAM at the
439 time of U-boot entry and is required to be re-initialized. 439 time of U-boot entry and is required to be re-initialized.
440 440
441 CONFIG_DEEP_SLEEP 441 CONFIG_DEEP_SLEEP
442 Inidcates this SoC supports deep sleep feature. If deep sleep is 442 Inidcates this SoC supports deep sleep feature. If deep sleep is
443 supported, core will start to execute uboot when wakes up. 443 supported, core will start to execute uboot when wakes up.
444 444
445 - Generic CPU options: 445 - Generic CPU options:
446 CONFIG_SYS_GENERIC_GLOBAL_DATA 446 CONFIG_SYS_GENERIC_GLOBAL_DATA
447 Defines global data is initialized in generic board board_init_f(). 447 Defines global data is initialized in generic board board_init_f().
448 If this macro is defined, global data is created and cleared in 448 If this macro is defined, global data is created and cleared in
449 generic board board_init_f(). Without this macro, architecture/board 449 generic board board_init_f(). Without this macro, architecture/board
450 should initialize global data before calling board_init_f(). 450 should initialize global data before calling board_init_f().
451 451
452 CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN 452 CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
453 453
454 Defines the endianess of the CPU. Implementation of those 454 Defines the endianess of the CPU. Implementation of those
455 values is arch specific. 455 values is arch specific.
456 456
457 CONFIG_SYS_FSL_DDR 457 CONFIG_SYS_FSL_DDR
458 Freescale DDR driver in use. This type of DDR controller is 458 Freescale DDR driver in use. This type of DDR controller is
459 found in mpc83xx, mpc85xx, mpc86xx as well as some ARM core 459 found in mpc83xx, mpc85xx, mpc86xx as well as some ARM core
460 SoCs. 460 SoCs.
461 461
462 CONFIG_SYS_FSL_DDR_ADDR 462 CONFIG_SYS_FSL_DDR_ADDR
463 Freescale DDR memory-mapped register base. 463 Freescale DDR memory-mapped register base.
464 464
465 CONFIG_SYS_FSL_DDR_EMU 465 CONFIG_SYS_FSL_DDR_EMU
466 Specify emulator support for DDR. Some DDR features such as 466 Specify emulator support for DDR. Some DDR features such as
467 deskew training are not available. 467 deskew training are not available.
468 468
469 CONFIG_SYS_FSL_DDRC_GEN1 469 CONFIG_SYS_FSL_DDRC_GEN1
470 Freescale DDR1 controller. 470 Freescale DDR1 controller.
471 471
472 CONFIG_SYS_FSL_DDRC_GEN2 472 CONFIG_SYS_FSL_DDRC_GEN2
473 Freescale DDR2 controller. 473 Freescale DDR2 controller.
474 474
475 CONFIG_SYS_FSL_DDRC_GEN3 475 CONFIG_SYS_FSL_DDRC_GEN3
476 Freescale DDR3 controller. 476 Freescale DDR3 controller.
477 477
478 CONFIG_SYS_FSL_DDRC_GEN4 478 CONFIG_SYS_FSL_DDRC_GEN4
479 Freescale DDR4 controller. 479 Freescale DDR4 controller.
480 480
481 CONFIG_SYS_FSL_DDRC_ARM_GEN3 481 CONFIG_SYS_FSL_DDRC_ARM_GEN3
482 Freescale DDR3 controller for ARM-based SoCs. 482 Freescale DDR3 controller for ARM-based SoCs.
483 483
484 CONFIG_SYS_FSL_DDR1 484 CONFIG_SYS_FSL_DDR1
485 Board config to use DDR1. It can be enabled for SoCs with 485 Board config to use DDR1. It can be enabled for SoCs with
486 Freescale DDR1 or DDR2 controllers, depending on the board 486 Freescale DDR1 or DDR2 controllers, depending on the board
487 implemetation. 487 implemetation.
488 488
489 CONFIG_SYS_FSL_DDR2 489 CONFIG_SYS_FSL_DDR2
490 Board config to use DDR2. It can be eanbeld for SoCs with 490 Board config to use DDR2. It can be eanbeld for SoCs with
491 Freescale DDR2 or DDR3 controllers, depending on the board 491 Freescale DDR2 or DDR3 controllers, depending on the board
492 implementation. 492 implementation.
493 493
494 CONFIG_SYS_FSL_DDR3 494 CONFIG_SYS_FSL_DDR3
495 Board config to use DDR3. It can be enabled for SoCs with 495 Board config to use DDR3. It can be enabled for SoCs with
496 Freescale DDR3 or DDR3L controllers. 496 Freescale DDR3 or DDR3L controllers.
497 497
498 CONFIG_SYS_FSL_DDR3L 498 CONFIG_SYS_FSL_DDR3L
499 Board config to use DDR3L. It can be enabled for SoCs with 499 Board config to use DDR3L. It can be enabled for SoCs with
500 DDR3L controllers. 500 DDR3L controllers.
501 501
502 CONFIG_SYS_FSL_DDR4 502 CONFIG_SYS_FSL_DDR4
503 Board config to use DDR4. It can be enabled for SoCs with 503 Board config to use DDR4. It can be enabled for SoCs with
504 DDR4 controllers. 504 DDR4 controllers.
505 505
506 CONFIG_SYS_FSL_IFC_BE 506 CONFIG_SYS_FSL_IFC_BE
507 Defines the IFC controller register space as Big Endian 507 Defines the IFC controller register space as Big Endian
508 508
509 CONFIG_SYS_FSL_IFC_LE 509 CONFIG_SYS_FSL_IFC_LE
510 Defines the IFC controller register space as Little Endian 510 Defines the IFC controller register space as Little Endian
511 511
512 CONFIG_SYS_FSL_PBL_PBI 512 CONFIG_SYS_FSL_PBL_PBI
513 It enables addition of RCW (Power on reset configuration) in built image. 513 It enables addition of RCW (Power on reset configuration) in built image.
514 Please refer doc/README.pblimage for more details 514 Please refer doc/README.pblimage for more details
515 515
516 CONFIG_SYS_FSL_PBL_RCW 516 CONFIG_SYS_FSL_PBL_RCW
517 It adds PBI(pre-boot instructions) commands in u-boot build image. 517 It adds PBI(pre-boot instructions) commands in u-boot build image.
518 PBI commands can be used to configure SoC before it starts the execution. 518 PBI commands can be used to configure SoC before it starts the execution.
519 Please refer doc/README.pblimage for more details 519 Please refer doc/README.pblimage for more details
520 520
521 CONFIG_SPL_FSL_PBL 521 CONFIG_SPL_FSL_PBL
522 It adds a target to create boot binary having SPL binary in PBI format 522 It adds a target to create boot binary having SPL binary in PBI format
523 concatenated with u-boot binary. 523 concatenated with u-boot binary.
524 524
525 CONFIG_SYS_FSL_DDR_BE 525 CONFIG_SYS_FSL_DDR_BE
526 Defines the DDR controller register space as Big Endian 526 Defines the DDR controller register space as Big Endian
527 527
528 CONFIG_SYS_FSL_DDR_LE 528 CONFIG_SYS_FSL_DDR_LE
529 Defines the DDR controller register space as Little Endian 529 Defines the DDR controller register space as Little Endian
530 530
531 CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY 531 CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY
532 Physical address from the view of DDR controllers. It is the 532 Physical address from the view of DDR controllers. It is the
533 same as CONFIG_SYS_DDR_SDRAM_BASE for all Power SoCs. But 533 same as CONFIG_SYS_DDR_SDRAM_BASE for all Power SoCs. But
534 it could be different for ARM SoCs. 534 it could be different for ARM SoCs.
535 535
536 CONFIG_SYS_FSL_DDR_INTLV_256B 536 CONFIG_SYS_FSL_DDR_INTLV_256B
537 DDR controller interleaving on 256-byte. This is a special 537 DDR controller interleaving on 256-byte. This is a special
538 interleaving mode, handled by Dickens for Freescale layerscape 538 interleaving mode, handled by Dickens for Freescale layerscape
539 SoCs with ARM core. 539 SoCs with ARM core.
540 540
541 CONFIG_SYS_FSL_DDR_MAIN_NUM_CTRLS 541 CONFIG_SYS_FSL_DDR_MAIN_NUM_CTRLS
542 Number of controllers used as main memory. 542 Number of controllers used as main memory.
543 543
544 CONFIG_SYS_FSL_OTHER_DDR_NUM_CTRLS 544 CONFIG_SYS_FSL_OTHER_DDR_NUM_CTRLS
545 Number of controllers used for other than main memory. 545 Number of controllers used for other than main memory.
546 546
547 CONFIG_SYS_FSL_SEC_BE 547 CONFIG_SYS_FSL_SEC_BE
548 Defines the SEC controller register space as Big Endian 548 Defines the SEC controller register space as Big Endian
549 549
550 CONFIG_SYS_FSL_SEC_LE 550 CONFIG_SYS_FSL_SEC_LE
551 Defines the SEC controller register space as Little Endian 551 Defines the SEC controller register space as Little Endian
552 552
553 - Intel Monahans options: 553 - Intel Monahans options:
554 CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO 554 CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO
555 555
556 Defines the Monahans run mode to oscillator 556 Defines the Monahans run mode to oscillator
557 ratio. Valid values are 8, 16, 24, 31. The core 557 ratio. Valid values are 8, 16, 24, 31. The core
558 frequency is this value multiplied by 13 MHz. 558 frequency is this value multiplied by 13 MHz.
559 559
560 CONFIG_SYS_MONAHANS_TURBO_RUN_MODE_RATIO 560 CONFIG_SYS_MONAHANS_TURBO_RUN_MODE_RATIO
561 561
562 Defines the Monahans turbo mode to oscillator 562 Defines the Monahans turbo mode to oscillator
563 ratio. Valid values are 1 (default if undefined) and 563 ratio. Valid values are 1 (default if undefined) and
564 2. The core frequency as calculated above is multiplied 564 2. The core frequency as calculated above is multiplied
565 by this value. 565 by this value.
566 566
567 - MIPS CPU options: 567 - MIPS CPU options:
568 CONFIG_SYS_INIT_SP_OFFSET 568 CONFIG_SYS_INIT_SP_OFFSET
569 569
570 Offset relative to CONFIG_SYS_SDRAM_BASE for initial stack 570 Offset relative to CONFIG_SYS_SDRAM_BASE for initial stack
571 pointer. This is needed for the temporary stack before 571 pointer. This is needed for the temporary stack before
572 relocation. 572 relocation.
573 573
574 CONFIG_SYS_MIPS_CACHE_MODE 574 CONFIG_SYS_MIPS_CACHE_MODE
575 575
576 Cache operation mode for the MIPS CPU. 576 Cache operation mode for the MIPS CPU.
577 See also arch/mips/include/asm/mipsregs.h. 577 See also arch/mips/include/asm/mipsregs.h.
578 Possible values are: 578 Possible values are:
579 CONF_CM_CACHABLE_NO_WA 579 CONF_CM_CACHABLE_NO_WA
580 CONF_CM_CACHABLE_WA 580 CONF_CM_CACHABLE_WA
581 CONF_CM_UNCACHED 581 CONF_CM_UNCACHED
582 CONF_CM_CACHABLE_NONCOHERENT 582 CONF_CM_CACHABLE_NONCOHERENT
583 CONF_CM_CACHABLE_CE 583 CONF_CM_CACHABLE_CE
584 CONF_CM_CACHABLE_COW 584 CONF_CM_CACHABLE_COW
585 CONF_CM_CACHABLE_CUW 585 CONF_CM_CACHABLE_CUW
586 CONF_CM_CACHABLE_ACCELERATED 586 CONF_CM_CACHABLE_ACCELERATED
587 587
588 CONFIG_SYS_XWAY_EBU_BOOTCFG 588 CONFIG_SYS_XWAY_EBU_BOOTCFG
589 589
590 Special option for Lantiq XWAY SoCs for booting from NOR flash. 590 Special option for Lantiq XWAY SoCs for booting from NOR flash.
591 See also arch/mips/cpu/mips32/start.S. 591 See also arch/mips/cpu/mips32/start.S.
592 592
593 CONFIG_XWAY_SWAP_BYTES 593 CONFIG_XWAY_SWAP_BYTES
594 594
595 Enable compilation of tools/xway-swap-bytes needed for Lantiq 595 Enable compilation of tools/xway-swap-bytes needed for Lantiq
596 XWAY SoCs for booting from NOR flash. The U-Boot image needs to 596 XWAY SoCs for booting from NOR flash. The U-Boot image needs to
597 be swapped if a flash programmer is used. 597 be swapped if a flash programmer is used.
598 598
599 - ARM options: 599 - ARM options:
600 CONFIG_SYS_EXCEPTION_VECTORS_HIGH 600 CONFIG_SYS_EXCEPTION_VECTORS_HIGH
601 601
602 Select high exception vectors of the ARM core, e.g., do not 602 Select high exception vectors of the ARM core, e.g., do not
603 clear the V bit of the c1 register of CP15. 603 clear the V bit of the c1 register of CP15.
604 604
605 CONFIG_SYS_THUMB_BUILD 605 CONFIG_SYS_THUMB_BUILD
606 606
607 Use this flag to build U-Boot using the Thumb instruction 607 Use this flag to build U-Boot using the Thumb instruction
608 set for ARM architectures. Thumb instruction set provides 608 set for ARM architectures. Thumb instruction set provides
609 better code density. For ARM architectures that support 609 better code density. For ARM architectures that support
610 Thumb2 this flag will result in Thumb2 code generated by 610 Thumb2 this flag will result in Thumb2 code generated by
611 GCC. 611 GCC.
612 612
613 CONFIG_ARM_ERRATA_716044 613 CONFIG_ARM_ERRATA_716044
614 CONFIG_ARM_ERRATA_742230 614 CONFIG_ARM_ERRATA_742230
615 CONFIG_ARM_ERRATA_743622 615 CONFIG_ARM_ERRATA_743622
616 CONFIG_ARM_ERRATA_751472 616 CONFIG_ARM_ERRATA_751472
617 CONFIG_ARM_ERRATA_794072 617 CONFIG_ARM_ERRATA_794072
618 CONFIG_ARM_ERRATA_761320 618 CONFIG_ARM_ERRATA_761320
619 619
620 If set, the workarounds for these ARM errata are applied early 620 If set, the workarounds for these ARM errata are applied early
621 during U-Boot startup. Note that these options force the 621 during U-Boot startup. Note that these options force the
622 workarounds to be applied; no CPU-type/version detection 622 workarounds to be applied; no CPU-type/version detection
623 exists, unlike the similar options in the Linux kernel. Do not 623 exists, unlike the similar options in the Linux kernel. Do not
624 set these options unless they apply! 624 set these options unless they apply!
625 625
626 - Linux Kernel Interface: 626 - Linux Kernel Interface:
627 CONFIG_CLOCKS_IN_MHZ 627 CONFIG_CLOCKS_IN_MHZ
628 628
629 U-Boot stores all clock information in Hz 629 U-Boot stores all clock information in Hz
630 internally. For binary compatibility with older Linux 630 internally. For binary compatibility with older Linux
631 kernels (which expect the clocks passed in the 631 kernels (which expect the clocks passed in the
632 bd_info data to be in MHz) the environment variable 632 bd_info data to be in MHz) the environment variable
633 "clocks_in_mhz" can be defined so that U-Boot 633 "clocks_in_mhz" can be defined so that U-Boot
634 converts clock data to MHZ before passing it to the 634 converts clock data to MHZ before passing it to the
635 Linux kernel. 635 Linux kernel.
636 When CONFIG_CLOCKS_IN_MHZ is defined, a definition of 636 When CONFIG_CLOCKS_IN_MHZ is defined, a definition of
637 "clocks_in_mhz=1" is automatically included in the 637 "clocks_in_mhz=1" is automatically included in the
638 default environment. 638 default environment.
639 639
640 CONFIG_MEMSIZE_IN_BYTES [relevant for MIPS only] 640 CONFIG_MEMSIZE_IN_BYTES [relevant for MIPS only]
641 641
642 When transferring memsize parameter to linux, some versions 642 When transferring memsize parameter to linux, some versions
643 expect it to be in bytes, others in MB. 643 expect it to be in bytes, others in MB.
644 Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes. 644 Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
645 645
646 CONFIG_OF_LIBFDT 646 CONFIG_OF_LIBFDT
647 647
648 New kernel versions are expecting firmware settings to be 648 New kernel versions are expecting firmware settings to be
649 passed using flattened device trees (based on open firmware 649 passed using flattened device trees (based on open firmware
650 concepts). 650 concepts).
651 651
652 CONFIG_OF_LIBFDT 652 CONFIG_OF_LIBFDT
653 * New libfdt-based support 653 * New libfdt-based support
654 * Adds the "fdt" command 654 * Adds the "fdt" command
655 * The bootm command automatically updates the fdt 655 * The bootm command automatically updates the fdt
656 656
657 OF_CPU - The proper name of the cpus node (only required for 657 OF_CPU - The proper name of the cpus node (only required for
658 MPC512X and MPC5xxx based boards). 658 MPC512X and MPC5xxx based boards).
659 OF_SOC - The proper name of the soc node (only required for 659 OF_SOC - The proper name of the soc node (only required for
660 MPC512X and MPC5xxx based boards). 660 MPC512X and MPC5xxx based boards).
661 OF_TBCLK - The timebase frequency. 661 OF_TBCLK - The timebase frequency.
662 OF_STDOUT_PATH - The path to the console device 662 OF_STDOUT_PATH - The path to the console device
663 663
664 boards with QUICC Engines require OF_QE to set UCC MAC 664 boards with QUICC Engines require OF_QE to set UCC MAC
665 addresses 665 addresses
666 666
667 CONFIG_OF_BOARD_SETUP 667 CONFIG_OF_BOARD_SETUP
668 668
669 Board code has addition modification that it wants to make 669 Board code has addition modification that it wants to make
670 to the flat device tree before handing it off to the kernel 670 to the flat device tree before handing it off to the kernel
671 671
672 CONFIG_OF_SYSTEM_SETUP
673
674 Other code has addition modification that it wants to make
675 to the flat device tree before handing it off to the kernel.
676 This causes ft_system_setup() to be called before booting
677 the kernel.
678
672 CONFIG_OF_BOOT_CPU 679 CONFIG_OF_BOOT_CPU
673 680
674 This define fills in the correct boot CPU in the boot 681 This define fills in the correct boot CPU in the boot
675 param header, the default value is zero if undefined. 682 param header, the default value is zero if undefined.
676 683
677 CONFIG_OF_IDE_FIXUP 684 CONFIG_OF_IDE_FIXUP
678 685
679 U-Boot can detect if an IDE device is present or not. 686 U-Boot can detect if an IDE device is present or not.
680 If not, and this new config option is activated, U-Boot 687 If not, and this new config option is activated, U-Boot
681 removes the ATA node from the DTS before booting Linux, 688 removes the ATA node from the DTS before booting Linux,
682 so the Linux IDE driver does not probe the device and 689 so the Linux IDE driver does not probe the device and
683 crash. This is needed for buggy hardware (uc101) where 690 crash. This is needed for buggy hardware (uc101) where
684 no pull down resistor is connected to the signal IDE5V_DD7. 691 no pull down resistor is connected to the signal IDE5V_DD7.
685 692
686 CONFIG_MACH_TYPE [relevant for ARM only][mandatory] 693 CONFIG_MACH_TYPE [relevant for ARM only][mandatory]
687 694
688 This setting is mandatory for all boards that have only one 695 This setting is mandatory for all boards that have only one
689 machine type and must be used to specify the machine type 696 machine type and must be used to specify the machine type
690 number as it appears in the ARM machine registry 697 number as it appears in the ARM machine registry
691 (see http://www.arm.linux.org.uk/developer/machines/). 698 (see http://www.arm.linux.org.uk/developer/machines/).
692 Only boards that have multiple machine types supported 699 Only boards that have multiple machine types supported
693 in a single configuration file and the machine type is 700 in a single configuration file and the machine type is
694 runtime discoverable, do not have to use this setting. 701 runtime discoverable, do not have to use this setting.
695 702
696 - vxWorks boot parameters: 703 - vxWorks boot parameters:
697 704
698 bootvx constructs a valid bootline using the following 705 bootvx constructs a valid bootline using the following
699 environments variables: bootfile, ipaddr, serverip, hostname. 706 environments variables: bootfile, ipaddr, serverip, hostname.
700 It loads the vxWorks image pointed bootfile. 707 It loads the vxWorks image pointed bootfile.
701 708
702 CONFIG_SYS_VXWORKS_BOOT_DEVICE - The vxworks device name 709 CONFIG_SYS_VXWORKS_BOOT_DEVICE - The vxworks device name
703 CONFIG_SYS_VXWORKS_MAC_PTR - Ethernet 6 byte MA -address 710 CONFIG_SYS_VXWORKS_MAC_PTR - Ethernet 6 byte MA -address
704 CONFIG_SYS_VXWORKS_SERVERNAME - Name of the server 711 CONFIG_SYS_VXWORKS_SERVERNAME - Name of the server
705 CONFIG_SYS_VXWORKS_BOOT_ADDR - Address of boot parameters 712 CONFIG_SYS_VXWORKS_BOOT_ADDR - Address of boot parameters
706 713
707 CONFIG_SYS_VXWORKS_ADD_PARAMS 714 CONFIG_SYS_VXWORKS_ADD_PARAMS
708 715
709 Add it at the end of the bootline. E.g "u=username pw=secret" 716 Add it at the end of the bootline. E.g "u=username pw=secret"
710 717
711 Note: If a "bootargs" environment is defined, it will overwride 718 Note: If a "bootargs" environment is defined, it will overwride
712 the defaults discussed just above. 719 the defaults discussed just above.
713 720
714 - Cache Configuration: 721 - Cache Configuration:
715 CONFIG_SYS_ICACHE_OFF - Do not enable instruction cache in U-Boot 722 CONFIG_SYS_ICACHE_OFF - Do not enable instruction cache in U-Boot
716 CONFIG_SYS_DCACHE_OFF - Do not enable data cache in U-Boot 723 CONFIG_SYS_DCACHE_OFF - Do not enable data cache in U-Boot
717 CONFIG_SYS_L2CACHE_OFF- Do not enable L2 cache in U-Boot 724 CONFIG_SYS_L2CACHE_OFF- Do not enable L2 cache in U-Boot
718 725
719 - Cache Configuration for ARM: 726 - Cache Configuration for ARM:
720 CONFIG_SYS_L2_PL310 - Enable support for ARM PL310 L2 cache 727 CONFIG_SYS_L2_PL310 - Enable support for ARM PL310 L2 cache
721 controller 728 controller
722 CONFIG_SYS_PL310_BASE - Physical base address of PL310 729 CONFIG_SYS_PL310_BASE - Physical base address of PL310
723 controller register space 730 controller register space
724 731
725 - Serial Ports: 732 - Serial Ports:
726 CONFIG_PL010_SERIAL 733 CONFIG_PL010_SERIAL
727 734
728 Define this if you want support for Amba PrimeCell PL010 UARTs. 735 Define this if you want support for Amba PrimeCell PL010 UARTs.
729 736
730 CONFIG_PL011_SERIAL 737 CONFIG_PL011_SERIAL
731 738
732 Define this if you want support for Amba PrimeCell PL011 UARTs. 739 Define this if you want support for Amba PrimeCell PL011 UARTs.
733 740
734 CONFIG_PL011_CLOCK 741 CONFIG_PL011_CLOCK
735 742
736 If you have Amba PrimeCell PL011 UARTs, set this variable to 743 If you have Amba PrimeCell PL011 UARTs, set this variable to
737 the clock speed of the UARTs. 744 the clock speed of the UARTs.
738 745
739 CONFIG_PL01x_PORTS 746 CONFIG_PL01x_PORTS
740 747
741 If you have Amba PrimeCell PL010 or PL011 UARTs on your board, 748 If you have Amba PrimeCell PL010 or PL011 UARTs on your board,
742 define this to a list of base addresses for each (supported) 749 define this to a list of base addresses for each (supported)
743 port. See e.g. include/configs/versatile.h 750 port. See e.g. include/configs/versatile.h
744 751
745 CONFIG_PL011_SERIAL_RLCR 752 CONFIG_PL011_SERIAL_RLCR
746 753
747 Some vendor versions of PL011 serial ports (e.g. ST-Ericsson U8500) 754 Some vendor versions of PL011 serial ports (e.g. ST-Ericsson U8500)
748 have separate receive and transmit line control registers. Set 755 have separate receive and transmit line control registers. Set
749 this variable to initialize the extra register. 756 this variable to initialize the extra register.
750 757
751 CONFIG_PL011_SERIAL_FLUSH_ON_INIT 758 CONFIG_PL011_SERIAL_FLUSH_ON_INIT
752 759
753 On some platforms (e.g. U8500) U-Boot is loaded by a second stage 760 On some platforms (e.g. U8500) U-Boot is loaded by a second stage
754 boot loader that has already initialized the UART. Define this 761 boot loader that has already initialized the UART. Define this
755 variable to flush the UART at init time. 762 variable to flush the UART at init time.
756 763
757 CONFIG_SERIAL_HW_FLOW_CONTROL 764 CONFIG_SERIAL_HW_FLOW_CONTROL
758 765
759 Define this variable to enable hw flow control in serial driver. 766 Define this variable to enable hw flow control in serial driver.
760 Current user of this option is drivers/serial/nsl16550.c driver 767 Current user of this option is drivers/serial/nsl16550.c driver
761 768
762 - Console Interface: 769 - Console Interface:
763 Depending on board, define exactly one serial port 770 Depending on board, define exactly one serial port
764 (like CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2, 771 (like CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2,
765 CONFIG_8xx_CONS_SCC1, ...), or switch off the serial 772 CONFIG_8xx_CONS_SCC1, ...), or switch off the serial
766 console by defining CONFIG_8xx_CONS_NONE 773 console by defining CONFIG_8xx_CONS_NONE
767 774
768 Note: if CONFIG_8xx_CONS_NONE is defined, the serial 775 Note: if CONFIG_8xx_CONS_NONE is defined, the serial
769 port routines must be defined elsewhere 776 port routines must be defined elsewhere
770 (i.e. serial_init(), serial_getc(), ...) 777 (i.e. serial_init(), serial_getc(), ...)
771 778
772 CONFIG_CFB_CONSOLE 779 CONFIG_CFB_CONSOLE
773 Enables console device for a color framebuffer. Needs following 780 Enables console device for a color framebuffer. Needs following
774 defines (cf. smiLynxEM, i8042) 781 defines (cf. smiLynxEM, i8042)
775 VIDEO_FB_LITTLE_ENDIAN graphic memory organisation 782 VIDEO_FB_LITTLE_ENDIAN graphic memory organisation
776 (default big endian) 783 (default big endian)
777 VIDEO_HW_RECTFILL graphic chip supports 784 VIDEO_HW_RECTFILL graphic chip supports
778 rectangle fill 785 rectangle fill
779 (cf. smiLynxEM) 786 (cf. smiLynxEM)
780 VIDEO_HW_BITBLT graphic chip supports 787 VIDEO_HW_BITBLT graphic chip supports
781 bit-blit (cf. smiLynxEM) 788 bit-blit (cf. smiLynxEM)
782 VIDEO_VISIBLE_COLS visible pixel columns 789 VIDEO_VISIBLE_COLS visible pixel columns
783 (cols=pitch) 790 (cols=pitch)
784 VIDEO_VISIBLE_ROWS visible pixel rows 791 VIDEO_VISIBLE_ROWS visible pixel rows
785 VIDEO_PIXEL_SIZE bytes per pixel 792 VIDEO_PIXEL_SIZE bytes per pixel
786 VIDEO_DATA_FORMAT graphic data format 793 VIDEO_DATA_FORMAT graphic data format
787 (0-5, cf. cfb_console.c) 794 (0-5, cf. cfb_console.c)
788 VIDEO_FB_ADRS framebuffer address 795 VIDEO_FB_ADRS framebuffer address
789 VIDEO_KBD_INIT_FCT keyboard int fct 796 VIDEO_KBD_INIT_FCT keyboard int fct
790 (i.e. i8042_kbd_init()) 797 (i.e. i8042_kbd_init())
791 VIDEO_TSTC_FCT test char fct 798 VIDEO_TSTC_FCT test char fct
792 (i.e. i8042_tstc) 799 (i.e. i8042_tstc)
793 VIDEO_GETC_FCT get char fct 800 VIDEO_GETC_FCT get char fct
794 (i.e. i8042_getc) 801 (i.e. i8042_getc)
795 CONFIG_CONSOLE_CURSOR cursor drawing on/off 802 CONFIG_CONSOLE_CURSOR cursor drawing on/off
796 (requires blink timer 803 (requires blink timer
797 cf. i8042.c) 804 cf. i8042.c)
798 CONFIG_SYS_CONSOLE_BLINK_COUNT blink interval (cf. i8042.c) 805 CONFIG_SYS_CONSOLE_BLINK_COUNT blink interval (cf. i8042.c)
799 CONFIG_CONSOLE_TIME display time/date info in 806 CONFIG_CONSOLE_TIME display time/date info in
800 upper right corner 807 upper right corner
801 (requires CONFIG_CMD_DATE) 808 (requires CONFIG_CMD_DATE)
802 CONFIG_VIDEO_LOGO display Linux logo in 809 CONFIG_VIDEO_LOGO display Linux logo in
803 upper left corner 810 upper left corner
804 CONFIG_VIDEO_BMP_LOGO use bmp_logo.h instead of 811 CONFIG_VIDEO_BMP_LOGO use bmp_logo.h instead of
805 linux_logo.h for logo. 812 linux_logo.h for logo.
806 Requires CONFIG_VIDEO_LOGO 813 Requires CONFIG_VIDEO_LOGO
807 CONFIG_CONSOLE_EXTRA_INFO 814 CONFIG_CONSOLE_EXTRA_INFO
808 additional board info beside 815 additional board info beside
809 the logo 816 the logo
810 817
811 When CONFIG_CFB_CONSOLE_ANSI is defined, console will support 818 When CONFIG_CFB_CONSOLE_ANSI is defined, console will support
812 a limited number of ANSI escape sequences (cursor control, 819 a limited number of ANSI escape sequences (cursor control,
813 erase functions and limited graphics rendition control). 820 erase functions and limited graphics rendition control).
814 821
815 When CONFIG_CFB_CONSOLE is defined, video console is 822 When CONFIG_CFB_CONSOLE is defined, video console is
816 default i/o. Serial console can be forced with 823 default i/o. Serial console can be forced with
817 environment 'console=serial'. 824 environment 'console=serial'.
818 825
819 When CONFIG_SILENT_CONSOLE is defined, all console 826 When CONFIG_SILENT_CONSOLE is defined, all console
820 messages (by U-Boot and Linux!) can be silenced with 827 messages (by U-Boot and Linux!) can be silenced with
821 the "silent" environment variable. See 828 the "silent" environment variable. See
822 doc/README.silent for more information. 829 doc/README.silent for more information.
823 830
824 CONFIG_SYS_CONSOLE_BG_COL: define the backgroundcolor, default 831 CONFIG_SYS_CONSOLE_BG_COL: define the backgroundcolor, default
825 is 0x00. 832 is 0x00.
826 CONFIG_SYS_CONSOLE_FG_COL: define the foregroundcolor, default 833 CONFIG_SYS_CONSOLE_FG_COL: define the foregroundcolor, default
827 is 0xa0. 834 is 0xa0.
828 835
829 - Console Baudrate: 836 - Console Baudrate:
830 CONFIG_BAUDRATE - in bps 837 CONFIG_BAUDRATE - in bps
831 Select one of the baudrates listed in 838 Select one of the baudrates listed in
832 CONFIG_SYS_BAUDRATE_TABLE, see below. 839 CONFIG_SYS_BAUDRATE_TABLE, see below.
833 CONFIG_SYS_BRGCLK_PRESCALE, baudrate prescale 840 CONFIG_SYS_BRGCLK_PRESCALE, baudrate prescale
834 841
835 - Console Rx buffer length 842 - Console Rx buffer length
836 With CONFIG_SYS_SMC_RXBUFLEN it is possible to define 843 With CONFIG_SYS_SMC_RXBUFLEN it is possible to define
837 the maximum receive buffer length for the SMC. 844 the maximum receive buffer length for the SMC.
838 This option is actual only for 82xx and 8xx possible. 845 This option is actual only for 82xx and 8xx possible.
839 If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE 846 If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE
840 must be defined, to setup the maximum idle timeout for 847 must be defined, to setup the maximum idle timeout for
841 the SMC. 848 the SMC.
842 849
843 - Pre-Console Buffer: 850 - Pre-Console Buffer:
844 Prior to the console being initialised (i.e. serial UART 851 Prior to the console being initialised (i.e. serial UART
845 initialised etc) all console output is silently discarded. 852 initialised etc) all console output is silently discarded.
846 Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to 853 Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
847 buffer any console messages prior to the console being 854 buffer any console messages prior to the console being
848 initialised to a buffer of size CONFIG_PRE_CON_BUF_SZ 855 initialised to a buffer of size CONFIG_PRE_CON_BUF_SZ
849 bytes located at CONFIG_PRE_CON_BUF_ADDR. The buffer is 856 bytes located at CONFIG_PRE_CON_BUF_ADDR. The buffer is
850 a circular buffer, so if more than CONFIG_PRE_CON_BUF_SZ 857 a circular buffer, so if more than CONFIG_PRE_CON_BUF_SZ
851 bytes are output before the console is initialised, the 858 bytes are output before the console is initialised, the
852 earlier bytes are discarded. 859 earlier bytes are discarded.
853 860
854 'Sane' compilers will generate smaller code if 861 'Sane' compilers will generate smaller code if
855 CONFIG_PRE_CON_BUF_SZ is a power of 2 862 CONFIG_PRE_CON_BUF_SZ is a power of 2
856 863
857 - Safe printf() functions 864 - Safe printf() functions
858 Define CONFIG_SYS_VSNPRINTF to compile in safe versions of 865 Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
859 the printf() functions. These are defined in 866 the printf() functions. These are defined in
860 include/vsprintf.h and include snprintf(), vsnprintf() and 867 include/vsprintf.h and include snprintf(), vsnprintf() and
861 so on. Code size increase is approximately 300-500 bytes. 868 so on. Code size increase is approximately 300-500 bytes.
862 If this option is not given then these functions will 869 If this option is not given then these functions will
863 silently discard their buffer size argument - this means 870 silently discard their buffer size argument - this means
864 you are not getting any overflow checking in this case. 871 you are not getting any overflow checking in this case.
865 872
866 - Boot Delay: CONFIG_BOOTDELAY - in seconds 873 - Boot Delay: CONFIG_BOOTDELAY - in seconds
867 Delay before automatically booting the default image; 874 Delay before automatically booting the default image;
868 set to -1 to disable autoboot. 875 set to -1 to disable autoboot.
869 set to -2 to autoboot with no delay and not check for abort 876 set to -2 to autoboot with no delay and not check for abort
870 (even when CONFIG_ZERO_BOOTDELAY_CHECK is defined). 877 (even when CONFIG_ZERO_BOOTDELAY_CHECK is defined).
871 878
872 See doc/README.autoboot for these options that 879 See doc/README.autoboot for these options that
873 work with CONFIG_BOOTDELAY. None are required. 880 work with CONFIG_BOOTDELAY. None are required.
874 CONFIG_BOOT_RETRY_TIME 881 CONFIG_BOOT_RETRY_TIME
875 CONFIG_BOOT_RETRY_MIN 882 CONFIG_BOOT_RETRY_MIN
876 CONFIG_AUTOBOOT_KEYED 883 CONFIG_AUTOBOOT_KEYED
877 CONFIG_AUTOBOOT_PROMPT 884 CONFIG_AUTOBOOT_PROMPT
878 CONFIG_AUTOBOOT_DELAY_STR 885 CONFIG_AUTOBOOT_DELAY_STR
879 CONFIG_AUTOBOOT_STOP_STR 886 CONFIG_AUTOBOOT_STOP_STR
880 CONFIG_AUTOBOOT_DELAY_STR2 887 CONFIG_AUTOBOOT_DELAY_STR2
881 CONFIG_AUTOBOOT_STOP_STR2 888 CONFIG_AUTOBOOT_STOP_STR2
882 CONFIG_ZERO_BOOTDELAY_CHECK 889 CONFIG_ZERO_BOOTDELAY_CHECK
883 CONFIG_RESET_TO_RETRY 890 CONFIG_RESET_TO_RETRY
884 891
885 - Autoboot Command: 892 - Autoboot Command:
886 CONFIG_BOOTCOMMAND 893 CONFIG_BOOTCOMMAND
887 Only needed when CONFIG_BOOTDELAY is enabled; 894 Only needed when CONFIG_BOOTDELAY is enabled;
888 define a command string that is automatically executed 895 define a command string that is automatically executed
889 when no character is read on the console interface 896 when no character is read on the console interface
890 within "Boot Delay" after reset. 897 within "Boot Delay" after reset.
891 898
892 CONFIG_BOOTARGS 899 CONFIG_BOOTARGS
893 This can be used to pass arguments to the bootm 900 This can be used to pass arguments to the bootm
894 command. The value of CONFIG_BOOTARGS goes into the 901 command. The value of CONFIG_BOOTARGS goes into the
895 environment value "bootargs". 902 environment value "bootargs".
896 903
897 CONFIG_RAMBOOT and CONFIG_NFSBOOT 904 CONFIG_RAMBOOT and CONFIG_NFSBOOT
898 The value of these goes into the environment as 905 The value of these goes into the environment as
899 "ramboot" and "nfsboot" respectively, and can be used 906 "ramboot" and "nfsboot" respectively, and can be used
900 as a convenience, when switching between booting from 907 as a convenience, when switching between booting from
901 RAM and NFS. 908 RAM and NFS.
902 909
903 - Bootcount: 910 - Bootcount:
904 CONFIG_BOOTCOUNT_LIMIT 911 CONFIG_BOOTCOUNT_LIMIT
905 Implements a mechanism for detecting a repeating reboot 912 Implements a mechanism for detecting a repeating reboot
906 cycle, see: 913 cycle, see:
907 http://www.denx.de/wiki/view/DULG/UBootBootCountLimit 914 http://www.denx.de/wiki/view/DULG/UBootBootCountLimit
908 915
909 CONFIG_BOOTCOUNT_ENV 916 CONFIG_BOOTCOUNT_ENV
910 If no softreset save registers are found on the hardware 917 If no softreset save registers are found on the hardware
911 "bootcount" is stored in the environment. To prevent a 918 "bootcount" is stored in the environment. To prevent a
912 saveenv on all reboots, the environment variable 919 saveenv on all reboots, the environment variable
913 "upgrade_available" is used. If "upgrade_available" is 920 "upgrade_available" is used. If "upgrade_available" is
914 0, "bootcount" is always 0, if "upgrade_available" is 921 0, "bootcount" is always 0, if "upgrade_available" is
915 1 "bootcount" is incremented in the environment. 922 1 "bootcount" is incremented in the environment.
916 So the Userspace Applikation must set the "upgrade_available" 923 So the Userspace Applikation must set the "upgrade_available"
917 and "bootcount" variable to 0, if a boot was successfully. 924 and "bootcount" variable to 0, if a boot was successfully.
918 925
919 - Pre-Boot Commands: 926 - Pre-Boot Commands:
920 CONFIG_PREBOOT 927 CONFIG_PREBOOT
921 928
922 When this option is #defined, the existence of the 929 When this option is #defined, the existence of the
923 environment variable "preboot" will be checked 930 environment variable "preboot" will be checked
924 immediately before starting the CONFIG_BOOTDELAY 931 immediately before starting the CONFIG_BOOTDELAY
925 countdown and/or running the auto-boot command resp. 932 countdown and/or running the auto-boot command resp.
926 entering interactive mode. 933 entering interactive mode.
927 934
928 This feature is especially useful when "preboot" is 935 This feature is especially useful when "preboot" is
929 automatically generated or modified. For an example 936 automatically generated or modified. For an example
930 see the LWMON board specific code: here "preboot" is 937 see the LWMON board specific code: here "preboot" is
931 modified when the user holds down a certain 938 modified when the user holds down a certain
932 combination of keys on the (special) keyboard when 939 combination of keys on the (special) keyboard when
933 booting the systems 940 booting the systems
934 941
935 - Serial Download Echo Mode: 942 - Serial Download Echo Mode:
936 CONFIG_LOADS_ECHO 943 CONFIG_LOADS_ECHO
937 If defined to 1, all characters received during a 944 If defined to 1, all characters received during a
938 serial download (using the "loads" command) are 945 serial download (using the "loads" command) are
939 echoed back. This might be needed by some terminal 946 echoed back. This might be needed by some terminal
940 emulations (like "cu"), but may as well just take 947 emulations (like "cu"), but may as well just take
941 time on others. This setting #define's the initial 948 time on others. This setting #define's the initial
942 value of the "loads_echo" environment variable. 949 value of the "loads_echo" environment variable.
943 950
944 - Kgdb Serial Baudrate: (if CONFIG_CMD_KGDB is defined) 951 - Kgdb Serial Baudrate: (if CONFIG_CMD_KGDB is defined)
945 CONFIG_KGDB_BAUDRATE 952 CONFIG_KGDB_BAUDRATE
946 Select one of the baudrates listed in 953 Select one of the baudrates listed in
947 CONFIG_SYS_BAUDRATE_TABLE, see below. 954 CONFIG_SYS_BAUDRATE_TABLE, see below.
948 955
949 - Monitor Functions: 956 - Monitor Functions:
950 Monitor commands can be included or excluded 957 Monitor commands can be included or excluded
951 from the build by using the #include files 958 from the build by using the #include files
952 <config_cmd_all.h> and #undef'ing unwanted 959 <config_cmd_all.h> and #undef'ing unwanted
953 commands, or using <config_cmd_default.h> 960 commands, or using <config_cmd_default.h>
954 and augmenting with additional #define's 961 and augmenting with additional #define's
955 for wanted commands. 962 for wanted commands.
956 963
957 The default command configuration includes all commands 964 The default command configuration includes all commands
958 except those marked below with a "*". 965 except those marked below with a "*".
959 966
960 CONFIG_CMD_AES AES 128 CBC encrypt/decrypt 967 CONFIG_CMD_AES AES 128 CBC encrypt/decrypt
961 CONFIG_CMD_ASKENV * ask for env variable 968 CONFIG_CMD_ASKENV * ask for env variable
962 CONFIG_CMD_BDI bdinfo 969 CONFIG_CMD_BDI bdinfo
963 CONFIG_CMD_BEDBUG * Include BedBug Debugger 970 CONFIG_CMD_BEDBUG * Include BedBug Debugger
964 CONFIG_CMD_BMP * BMP support 971 CONFIG_CMD_BMP * BMP support
965 CONFIG_CMD_BSP * Board specific commands 972 CONFIG_CMD_BSP * Board specific commands
966 CONFIG_CMD_BOOTD bootd 973 CONFIG_CMD_BOOTD bootd
967 CONFIG_CMD_BOOTI * ARM64 Linux kernel Image support 974 CONFIG_CMD_BOOTI * ARM64 Linux kernel Image support
968 CONFIG_CMD_CACHE * icache, dcache 975 CONFIG_CMD_CACHE * icache, dcache
969 CONFIG_CMD_CLK * clock command support 976 CONFIG_CMD_CLK * clock command support
970 CONFIG_CMD_CONSOLE coninfo 977 CONFIG_CMD_CONSOLE coninfo
971 CONFIG_CMD_CRC32 * crc32 978 CONFIG_CMD_CRC32 * crc32
972 CONFIG_CMD_DATE * support for RTC, date/time... 979 CONFIG_CMD_DATE * support for RTC, date/time...
973 CONFIG_CMD_DHCP * DHCP support 980 CONFIG_CMD_DHCP * DHCP support
974 CONFIG_CMD_DIAG * Diagnostics 981 CONFIG_CMD_DIAG * Diagnostics
975 CONFIG_CMD_DS4510 * ds4510 I2C gpio commands 982 CONFIG_CMD_DS4510 * ds4510 I2C gpio commands
976 CONFIG_CMD_DS4510_INFO * ds4510 I2C info command 983 CONFIG_CMD_DS4510_INFO * ds4510 I2C info command
977 CONFIG_CMD_DS4510_MEM * ds4510 I2C eeprom/sram commansd 984 CONFIG_CMD_DS4510_MEM * ds4510 I2C eeprom/sram commansd
978 CONFIG_CMD_DS4510_RST * ds4510 I2C rst command 985 CONFIG_CMD_DS4510_RST * ds4510 I2C rst command
979 CONFIG_CMD_DTT * Digital Therm and Thermostat 986 CONFIG_CMD_DTT * Digital Therm and Thermostat
980 CONFIG_CMD_ECHO echo arguments 987 CONFIG_CMD_ECHO echo arguments
981 CONFIG_CMD_EDITENV edit env variable 988 CONFIG_CMD_EDITENV edit env variable
982 CONFIG_CMD_EEPROM * EEPROM read/write support 989 CONFIG_CMD_EEPROM * EEPROM read/write support
983 CONFIG_CMD_ELF * bootelf, bootvx 990 CONFIG_CMD_ELF * bootelf, bootvx
984 CONFIG_CMD_ENV_CALLBACK * display details about env callbacks 991 CONFIG_CMD_ENV_CALLBACK * display details about env callbacks
985 CONFIG_CMD_ENV_FLAGS * display details about env flags 992 CONFIG_CMD_ENV_FLAGS * display details about env flags
986 CONFIG_CMD_ENV_EXISTS * check existence of env variable 993 CONFIG_CMD_ENV_EXISTS * check existence of env variable
987 CONFIG_CMD_EXPORTENV * export the environment 994 CONFIG_CMD_EXPORTENV * export the environment
988 CONFIG_CMD_EXT2 * ext2 command support 995 CONFIG_CMD_EXT2 * ext2 command support
989 CONFIG_CMD_EXT4 * ext4 command support 996 CONFIG_CMD_EXT4 * ext4 command support
990 CONFIG_CMD_FS_GENERIC * filesystem commands (e.g. load, ls) 997 CONFIG_CMD_FS_GENERIC * filesystem commands (e.g. load, ls)
991 that work for multiple fs types 998 that work for multiple fs types
992 CONFIG_CMD_SAVEENV saveenv 999 CONFIG_CMD_SAVEENV saveenv
993 CONFIG_CMD_FDC * Floppy Disk Support 1000 CONFIG_CMD_FDC * Floppy Disk Support
994 CONFIG_CMD_FAT * FAT command support 1001 CONFIG_CMD_FAT * FAT command support
995 CONFIG_CMD_FLASH flinfo, erase, protect 1002 CONFIG_CMD_FLASH flinfo, erase, protect
996 CONFIG_CMD_FPGA FPGA device initialization support 1003 CONFIG_CMD_FPGA FPGA device initialization support
997 CONFIG_CMD_FUSE * Device fuse support 1004 CONFIG_CMD_FUSE * Device fuse support
998 CONFIG_CMD_GETTIME * Get time since boot 1005 CONFIG_CMD_GETTIME * Get time since boot
999 CONFIG_CMD_GO * the 'go' command (exec code) 1006 CONFIG_CMD_GO * the 'go' command (exec code)
1000 CONFIG_CMD_GREPENV * search environment 1007 CONFIG_CMD_GREPENV * search environment
1001 CONFIG_CMD_HASH * calculate hash / digest 1008 CONFIG_CMD_HASH * calculate hash / digest
1002 CONFIG_CMD_HWFLOW * RTS/CTS hw flow control 1009 CONFIG_CMD_HWFLOW * RTS/CTS hw flow control
1003 CONFIG_CMD_I2C * I2C serial bus support 1010 CONFIG_CMD_I2C * I2C serial bus support
1004 CONFIG_CMD_IDE * IDE harddisk support 1011 CONFIG_CMD_IDE * IDE harddisk support
1005 CONFIG_CMD_IMI iminfo 1012 CONFIG_CMD_IMI iminfo
1006 CONFIG_CMD_IMLS List all images found in NOR flash 1013 CONFIG_CMD_IMLS List all images found in NOR flash
1007 CONFIG_CMD_IMLS_NAND * List all images found in NAND flash 1014 CONFIG_CMD_IMLS_NAND * List all images found in NAND flash
1008 CONFIG_CMD_IMMAP * IMMR dump support 1015 CONFIG_CMD_IMMAP * IMMR dump support
1009 CONFIG_CMD_IOTRACE * I/O tracing for debugging 1016 CONFIG_CMD_IOTRACE * I/O tracing for debugging
1010 CONFIG_CMD_IMPORTENV * import an environment 1017 CONFIG_CMD_IMPORTENV * import an environment
1011 CONFIG_CMD_INI * import data from an ini file into the env 1018 CONFIG_CMD_INI * import data from an ini file into the env
1012 CONFIG_CMD_IRQ * irqinfo 1019 CONFIG_CMD_IRQ * irqinfo
1013 CONFIG_CMD_ITEST Integer/string test of 2 values 1020 CONFIG_CMD_ITEST Integer/string test of 2 values
1014 CONFIG_CMD_JFFS2 * JFFS2 Support 1021 CONFIG_CMD_JFFS2 * JFFS2 Support
1015 CONFIG_CMD_KGDB * kgdb 1022 CONFIG_CMD_KGDB * kgdb
1016 CONFIG_CMD_LDRINFO * ldrinfo (display Blackfin loader) 1023 CONFIG_CMD_LDRINFO * ldrinfo (display Blackfin loader)
1017 CONFIG_CMD_LINK_LOCAL * link-local IP address auto-configuration 1024 CONFIG_CMD_LINK_LOCAL * link-local IP address auto-configuration
1018 (169.254.*.*) 1025 (169.254.*.*)
1019 CONFIG_CMD_LOADB loadb 1026 CONFIG_CMD_LOADB loadb
1020 CONFIG_CMD_LOADS loads 1027 CONFIG_CMD_LOADS loads
1021 CONFIG_CMD_MD5SUM * print md5 message digest 1028 CONFIG_CMD_MD5SUM * print md5 message digest
1022 (requires CONFIG_CMD_MEMORY and CONFIG_MD5) 1029 (requires CONFIG_CMD_MEMORY and CONFIG_MD5)
1023 CONFIG_CMD_MEMINFO * Display detailed memory information 1030 CONFIG_CMD_MEMINFO * Display detailed memory information
1024 CONFIG_CMD_MEMORY md, mm, nm, mw, cp, cmp, crc, base, 1031 CONFIG_CMD_MEMORY md, mm, nm, mw, cp, cmp, crc, base,
1025 loop, loopw 1032 loop, loopw
1026 CONFIG_CMD_MEMTEST * mtest 1033 CONFIG_CMD_MEMTEST * mtest
1027 CONFIG_CMD_MISC Misc functions like sleep etc 1034 CONFIG_CMD_MISC Misc functions like sleep etc
1028 CONFIG_CMD_MMC * MMC memory mapped support 1035 CONFIG_CMD_MMC * MMC memory mapped support
1029 CONFIG_CMD_MII * MII utility commands 1036 CONFIG_CMD_MII * MII utility commands
1030 CONFIG_CMD_MTDPARTS * MTD partition support 1037 CONFIG_CMD_MTDPARTS * MTD partition support
1031 CONFIG_CMD_NAND * NAND support 1038 CONFIG_CMD_NAND * NAND support
1032 CONFIG_CMD_NET bootp, tftpboot, rarpboot 1039 CONFIG_CMD_NET bootp, tftpboot, rarpboot
1033 CONFIG_CMD_NFS NFS support 1040 CONFIG_CMD_NFS NFS support
1034 CONFIG_CMD_PCA953X * PCA953x I2C gpio commands 1041 CONFIG_CMD_PCA953X * PCA953x I2C gpio commands
1035 CONFIG_CMD_PCA953X_INFO * PCA953x I2C gpio info command 1042 CONFIG_CMD_PCA953X_INFO * PCA953x I2C gpio info command
1036 CONFIG_CMD_PCI * pciinfo 1043 CONFIG_CMD_PCI * pciinfo
1037 CONFIG_CMD_PCMCIA * PCMCIA support 1044 CONFIG_CMD_PCMCIA * PCMCIA support
1038 CONFIG_CMD_PING * send ICMP ECHO_REQUEST to network 1045 CONFIG_CMD_PING * send ICMP ECHO_REQUEST to network
1039 host 1046 host
1040 CONFIG_CMD_PORTIO * Port I/O 1047 CONFIG_CMD_PORTIO * Port I/O
1041 CONFIG_CMD_READ * Read raw data from partition 1048 CONFIG_CMD_READ * Read raw data from partition
1042 CONFIG_CMD_REGINFO * Register dump 1049 CONFIG_CMD_REGINFO * Register dump
1043 CONFIG_CMD_RUN run command in env variable 1050 CONFIG_CMD_RUN run command in env variable
1044 CONFIG_CMD_SANDBOX * sb command to access sandbox features 1051 CONFIG_CMD_SANDBOX * sb command to access sandbox features
1045 CONFIG_CMD_SAVES * save S record dump 1052 CONFIG_CMD_SAVES * save S record dump
1046 CONFIG_CMD_SCSI * SCSI Support 1053 CONFIG_CMD_SCSI * SCSI Support
1047 CONFIG_CMD_SDRAM * print SDRAM configuration information 1054 CONFIG_CMD_SDRAM * print SDRAM configuration information
1048 (requires CONFIG_CMD_I2C) 1055 (requires CONFIG_CMD_I2C)
1049 CONFIG_CMD_SETGETDCR Support for DCR Register access 1056 CONFIG_CMD_SETGETDCR Support for DCR Register access
1050 (4xx only) 1057 (4xx only)
1051 CONFIG_CMD_SF * Read/write/erase SPI NOR flash 1058 CONFIG_CMD_SF * Read/write/erase SPI NOR flash
1052 CONFIG_CMD_SHA1SUM * print sha1 memory digest 1059 CONFIG_CMD_SHA1SUM * print sha1 memory digest
1053 (requires CONFIG_CMD_MEMORY) 1060 (requires CONFIG_CMD_MEMORY)
1054 CONFIG_CMD_SOFTSWITCH * Soft switch setting command for BF60x 1061 CONFIG_CMD_SOFTSWITCH * Soft switch setting command for BF60x
1055 CONFIG_CMD_SOURCE "source" command Support 1062 CONFIG_CMD_SOURCE "source" command Support
1056 CONFIG_CMD_SPI * SPI serial bus support 1063 CONFIG_CMD_SPI * SPI serial bus support
1057 CONFIG_CMD_TFTPSRV * TFTP transfer in server mode 1064 CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
1058 CONFIG_CMD_TFTPPUT * TFTP put command (upload) 1065 CONFIG_CMD_TFTPPUT * TFTP put command (upload)
1059 CONFIG_CMD_TIME * run command and report execution time (ARM specific) 1066 CONFIG_CMD_TIME * run command and report execution time (ARM specific)
1060 CONFIG_CMD_TIMER * access to the system tick timer 1067 CONFIG_CMD_TIMER * access to the system tick timer
1061 CONFIG_CMD_USB * USB support 1068 CONFIG_CMD_USB * USB support
1062 CONFIG_CMD_CDP * Cisco Discover Protocol support 1069 CONFIG_CMD_CDP * Cisco Discover Protocol support
1063 CONFIG_CMD_MFSL * Microblaze FSL support 1070 CONFIG_CMD_MFSL * Microblaze FSL support
1064 CONFIG_CMD_XIMG Load part of Multi Image 1071 CONFIG_CMD_XIMG Load part of Multi Image
1065 CONFIG_CMD_UUID * Generate random UUID or GUID string 1072 CONFIG_CMD_UUID * Generate random UUID or GUID string
1066 1073
1067 EXAMPLE: If you want all functions except of network 1074 EXAMPLE: If you want all functions except of network
1068 support you can write: 1075 support you can write:
1069 1076
1070 #include "config_cmd_all.h" 1077 #include "config_cmd_all.h"
1071 #undef CONFIG_CMD_NET 1078 #undef CONFIG_CMD_NET
1072 1079
1073 Other Commands: 1080 Other Commands:
1074 fdt (flattened device tree) command: CONFIG_OF_LIBFDT 1081 fdt (flattened device tree) command: CONFIG_OF_LIBFDT
1075 1082
1076 Note: Don't enable the "icache" and "dcache" commands 1083 Note: Don't enable the "icache" and "dcache" commands
1077 (configuration option CONFIG_CMD_CACHE) unless you know 1084 (configuration option CONFIG_CMD_CACHE) unless you know
1078 what you (and your U-Boot users) are doing. Data 1085 what you (and your U-Boot users) are doing. Data
1079 cache cannot be enabled on systems like the 8xx or 1086 cache cannot be enabled on systems like the 8xx or
1080 8260 (where accesses to the IMMR region must be 1087 8260 (where accesses to the IMMR region must be
1081 uncached), and it cannot be disabled on all other 1088 uncached), and it cannot be disabled on all other
1082 systems where we (mis-) use the data cache to hold an 1089 systems where we (mis-) use the data cache to hold an
1083 initial stack and some data. 1090 initial stack and some data.
1084 1091
1085 1092
1086 XXX - this list needs to get updated! 1093 XXX - this list needs to get updated!
1087 1094
1088 - Regular expression support: 1095 - Regular expression support:
1089 CONFIG_REGEX 1096 CONFIG_REGEX
1090 If this variable is defined, U-Boot is linked against 1097 If this variable is defined, U-Boot is linked against
1091 the SLRE (Super Light Regular Expression) library, 1098 the SLRE (Super Light Regular Expression) library,
1092 which adds regex support to some commands, as for 1099 which adds regex support to some commands, as for
1093 example "env grep" and "setexpr". 1100 example "env grep" and "setexpr".
1094 1101
1095 - Device tree: 1102 - Device tree:
1096 CONFIG_OF_CONTROL 1103 CONFIG_OF_CONTROL
1097 If this variable is defined, U-Boot will use a device tree 1104 If this variable is defined, U-Boot will use a device tree
1098 to configure its devices, instead of relying on statically 1105 to configure its devices, instead of relying on statically
1099 compiled #defines in the board file. This option is 1106 compiled #defines in the board file. This option is
1100 experimental and only available on a few boards. The device 1107 experimental and only available on a few boards. The device
1101 tree is available in the global data as gd->fdt_blob. 1108 tree is available in the global data as gd->fdt_blob.
1102 1109
1103 U-Boot needs to get its device tree from somewhere. This can 1110 U-Boot needs to get its device tree from somewhere. This can
1104 be done using one of the two options below: 1111 be done using one of the two options below:
1105 1112
1106 CONFIG_OF_EMBED 1113 CONFIG_OF_EMBED
1107 If this variable is defined, U-Boot will embed a device tree 1114 If this variable is defined, U-Boot will embed a device tree
1108 binary in its image. This device tree file should be in the 1115 binary in its image. This device tree file should be in the
1109 board directory and called <soc>-<board>.dts. The binary file 1116 board directory and called <soc>-<board>.dts. The binary file
1110 is then picked up in board_init_f() and made available through 1117 is then picked up in board_init_f() and made available through
1111 the global data structure as gd->blob. 1118 the global data structure as gd->blob.
1112 1119
1113 CONFIG_OF_SEPARATE 1120 CONFIG_OF_SEPARATE
1114 If this variable is defined, U-Boot will build a device tree 1121 If this variable is defined, U-Boot will build a device tree
1115 binary. It will be called u-boot.dtb. Architecture-specific 1122 binary. It will be called u-boot.dtb. Architecture-specific
1116 code will locate it at run-time. Generally this works by: 1123 code will locate it at run-time. Generally this works by:
1117 1124
1118 cat u-boot.bin u-boot.dtb >image.bin 1125 cat u-boot.bin u-boot.dtb >image.bin
1119 1126
1120 and in fact, U-Boot does this for you, creating a file called 1127 and in fact, U-Boot does this for you, creating a file called
1121 u-boot-dtb.bin which is useful in the common case. You can 1128 u-boot-dtb.bin which is useful in the common case. You can
1122 still use the individual files if you need something more 1129 still use the individual files if you need something more
1123 exotic. 1130 exotic.
1124 1131
1125 - Watchdog: 1132 - Watchdog:
1126 CONFIG_WATCHDOG 1133 CONFIG_WATCHDOG
1127 If this variable is defined, it enables watchdog 1134 If this variable is defined, it enables watchdog
1128 support for the SoC. There must be support in the SoC 1135 support for the SoC. There must be support in the SoC
1129 specific code for a watchdog. For the 8xx and 8260 1136 specific code for a watchdog. For the 8xx and 8260
1130 CPUs, the SIU Watchdog feature is enabled in the SYPCR 1137 CPUs, the SIU Watchdog feature is enabled in the SYPCR
1131 register. When supported for a specific SoC is 1138 register. When supported for a specific SoC is
1132 available, then no further board specific code should 1139 available, then no further board specific code should
1133 be needed to use it. 1140 be needed to use it.
1134 1141
1135 CONFIG_HW_WATCHDOG 1142 CONFIG_HW_WATCHDOG
1136 When using a watchdog circuitry external to the used 1143 When using a watchdog circuitry external to the used
1137 SoC, then define this variable and provide board 1144 SoC, then define this variable and provide board
1138 specific code for the "hw_watchdog_reset" function. 1145 specific code for the "hw_watchdog_reset" function.
1139 1146
1140 - U-Boot Version: 1147 - U-Boot Version:
1141 CONFIG_VERSION_VARIABLE 1148 CONFIG_VERSION_VARIABLE
1142 If this variable is defined, an environment variable 1149 If this variable is defined, an environment variable
1143 named "ver" is created by U-Boot showing the U-Boot 1150 named "ver" is created by U-Boot showing the U-Boot
1144 version as printed by the "version" command. 1151 version as printed by the "version" command.
1145 Any change to this variable will be reverted at the 1152 Any change to this variable will be reverted at the
1146 next reset. 1153 next reset.
1147 1154
1148 - Real-Time Clock: 1155 - Real-Time Clock:
1149 1156
1150 When CONFIG_CMD_DATE is selected, the type of the RTC 1157 When CONFIG_CMD_DATE is selected, the type of the RTC
1151 has to be selected, too. Define exactly one of the 1158 has to be selected, too. Define exactly one of the
1152 following options: 1159 following options:
1153 1160
1154 CONFIG_RTC_MPC8xx - use internal RTC of MPC8xx 1161 CONFIG_RTC_MPC8xx - use internal RTC of MPC8xx
1155 CONFIG_RTC_PCF8563 - use Philips PCF8563 RTC 1162 CONFIG_RTC_PCF8563 - use Philips PCF8563 RTC
1156 CONFIG_RTC_MC13XXX - use MC13783 or MC13892 RTC 1163 CONFIG_RTC_MC13XXX - use MC13783 or MC13892 RTC
1157 CONFIG_RTC_MC146818 - use MC146818 RTC 1164 CONFIG_RTC_MC146818 - use MC146818 RTC
1158 CONFIG_RTC_DS1307 - use Maxim, Inc. DS1307 RTC 1165 CONFIG_RTC_DS1307 - use Maxim, Inc. DS1307 RTC
1159 CONFIG_RTC_DS1337 - use Maxim, Inc. DS1337 RTC 1166 CONFIG_RTC_DS1337 - use Maxim, Inc. DS1337 RTC
1160 CONFIG_RTC_DS1338 - use Maxim, Inc. DS1338 RTC 1167 CONFIG_RTC_DS1338 - use Maxim, Inc. DS1338 RTC
1161 CONFIG_RTC_DS1339 - use Maxim, Inc. DS1339 RTC 1168 CONFIG_RTC_DS1339 - use Maxim, Inc. DS1339 RTC
1162 CONFIG_RTC_DS164x - use Dallas DS164x RTC 1169 CONFIG_RTC_DS164x - use Dallas DS164x RTC
1163 CONFIG_RTC_ISL1208 - use Intersil ISL1208 RTC 1170 CONFIG_RTC_ISL1208 - use Intersil ISL1208 RTC
1164 CONFIG_RTC_MAX6900 - use Maxim, Inc. MAX6900 RTC 1171 CONFIG_RTC_MAX6900 - use Maxim, Inc. MAX6900 RTC
1165 CONFIG_SYS_RTC_DS1337_NOOSC - Turn off the OSC output for DS1337 1172 CONFIG_SYS_RTC_DS1337_NOOSC - Turn off the OSC output for DS1337
1166 CONFIG_SYS_RV3029_TCR - enable trickle charger on 1173 CONFIG_SYS_RV3029_TCR - enable trickle charger on
1167 RV3029 RTC. 1174 RV3029 RTC.
1168 1175
1169 Note that if the RTC uses I2C, then the I2C interface 1176 Note that if the RTC uses I2C, then the I2C interface
1170 must also be configured. See I2C Support, below. 1177 must also be configured. See I2C Support, below.
1171 1178
1172 - GPIO Support: 1179 - GPIO Support:
1173 CONFIG_PCA953X - use NXP's PCA953X series I2C GPIO 1180 CONFIG_PCA953X - use NXP's PCA953X series I2C GPIO
1174 1181
1175 The CONFIG_SYS_I2C_PCA953X_WIDTH option specifies a list of 1182 The CONFIG_SYS_I2C_PCA953X_WIDTH option specifies a list of
1176 chip-ngpio pairs that tell the PCA953X driver the number of 1183 chip-ngpio pairs that tell the PCA953X driver the number of
1177 pins supported by a particular chip. 1184 pins supported by a particular chip.
1178 1185
1179 Note that if the GPIO device uses I2C, then the I2C interface 1186 Note that if the GPIO device uses I2C, then the I2C interface
1180 must also be configured. See I2C Support, below. 1187 must also be configured. See I2C Support, below.
1181 1188
1182 - I/O tracing: 1189 - I/O tracing:
1183 When CONFIG_IO_TRACE is selected, U-Boot intercepts all I/O 1190 When CONFIG_IO_TRACE is selected, U-Boot intercepts all I/O
1184 accesses and can checksum them or write a list of them out 1191 accesses and can checksum them or write a list of them out
1185 to memory. See the 'iotrace' command for details. This is 1192 to memory. See the 'iotrace' command for details. This is
1186 useful for testing device drivers since it can confirm that 1193 useful for testing device drivers since it can confirm that
1187 the driver behaves the same way before and after a code 1194 the driver behaves the same way before and after a code
1188 change. Currently this is supported on sandbox and arm. To 1195 change. Currently this is supported on sandbox and arm. To
1189 add support for your architecture, add '#include <iotrace.h>' 1196 add support for your architecture, add '#include <iotrace.h>'
1190 to the bottom of arch/<arch>/include/asm/io.h and test. 1197 to the bottom of arch/<arch>/include/asm/io.h and test.
1191 1198
1192 Example output from the 'iotrace stats' command is below. 1199 Example output from the 'iotrace stats' command is below.
1193 Note that if the trace buffer is exhausted, the checksum will 1200 Note that if the trace buffer is exhausted, the checksum will
1194 still continue to operate. 1201 still continue to operate.
1195 1202
1196 iotrace is enabled 1203 iotrace is enabled
1197 Start: 10000000 (buffer start address) 1204 Start: 10000000 (buffer start address)
1198 Size: 00010000 (buffer size) 1205 Size: 00010000 (buffer size)
1199 Offset: 00000120 (current buffer offset) 1206 Offset: 00000120 (current buffer offset)
1200 Output: 10000120 (start + offset) 1207 Output: 10000120 (start + offset)
1201 Count: 00000018 (number of trace records) 1208 Count: 00000018 (number of trace records)
1202 CRC32: 9526fb66 (CRC32 of all trace records) 1209 CRC32: 9526fb66 (CRC32 of all trace records)
1203 1210
1204 - Timestamp Support: 1211 - Timestamp Support:
1205 1212
1206 When CONFIG_TIMESTAMP is selected, the timestamp 1213 When CONFIG_TIMESTAMP is selected, the timestamp
1207 (date and time) of an image is printed by image 1214 (date and time) of an image is printed by image
1208 commands like bootm or iminfo. This option is 1215 commands like bootm or iminfo. This option is
1209 automatically enabled when you select CONFIG_CMD_DATE . 1216 automatically enabled when you select CONFIG_CMD_DATE .
1210 1217
1211 - Partition Labels (disklabels) Supported: 1218 - Partition Labels (disklabels) Supported:
1212 Zero or more of the following: 1219 Zero or more of the following:
1213 CONFIG_MAC_PARTITION Apple's MacOS partition table. 1220 CONFIG_MAC_PARTITION Apple's MacOS partition table.
1214 CONFIG_DOS_PARTITION MS Dos partition table, traditional on the 1221 CONFIG_DOS_PARTITION MS Dos partition table, traditional on the
1215 Intel architecture, USB sticks, etc. 1222 Intel architecture, USB sticks, etc.
1216 CONFIG_ISO_PARTITION ISO partition table, used on CDROM etc. 1223 CONFIG_ISO_PARTITION ISO partition table, used on CDROM etc.
1217 CONFIG_EFI_PARTITION GPT partition table, common when EFI is the 1224 CONFIG_EFI_PARTITION GPT partition table, common when EFI is the
1218 bootloader. Note 2TB partition limit; see 1225 bootloader. Note 2TB partition limit; see
1219 disk/part_efi.c 1226 disk/part_efi.c
1220 CONFIG_MTD_PARTITIONS Memory Technology Device partition table. 1227 CONFIG_MTD_PARTITIONS Memory Technology Device partition table.
1221 1228
1222 If IDE or SCSI support is enabled (CONFIG_CMD_IDE or 1229 If IDE or SCSI support is enabled (CONFIG_CMD_IDE or
1223 CONFIG_CMD_SCSI) you must configure support for at 1230 CONFIG_CMD_SCSI) you must configure support for at
1224 least one non-MTD partition type as well. 1231 least one non-MTD partition type as well.
1225 1232
1226 - IDE Reset method: 1233 - IDE Reset method:
1227 CONFIG_IDE_RESET_ROUTINE - this is defined in several 1234 CONFIG_IDE_RESET_ROUTINE - this is defined in several
1228 board configurations files but used nowhere! 1235 board configurations files but used nowhere!
1229 1236
1230 CONFIG_IDE_RESET - is this is defined, IDE Reset will 1237 CONFIG_IDE_RESET - is this is defined, IDE Reset will
1231 be performed by calling the function 1238 be performed by calling the function
1232 ide_set_reset(int reset) 1239 ide_set_reset(int reset)
1233 which has to be defined in a board specific file 1240 which has to be defined in a board specific file
1234 1241
1235 - ATAPI Support: 1242 - ATAPI Support:
1236 CONFIG_ATAPI 1243 CONFIG_ATAPI
1237 1244
1238 Set this to enable ATAPI support. 1245 Set this to enable ATAPI support.
1239 1246
1240 - LBA48 Support 1247 - LBA48 Support
1241 CONFIG_LBA48 1248 CONFIG_LBA48
1242 1249
1243 Set this to enable support for disks larger than 137GB 1250 Set this to enable support for disks larger than 137GB
1244 Also look at CONFIG_SYS_64BIT_LBA. 1251 Also look at CONFIG_SYS_64BIT_LBA.
1245 Whithout these , LBA48 support uses 32bit variables and will 'only' 1252 Whithout these , LBA48 support uses 32bit variables and will 'only'
1246 support disks up to 2.1TB. 1253 support disks up to 2.1TB.
1247 1254
1248 CONFIG_SYS_64BIT_LBA: 1255 CONFIG_SYS_64BIT_LBA:
1249 When enabled, makes the IDE subsystem use 64bit sector addresses. 1256 When enabled, makes the IDE subsystem use 64bit sector addresses.
1250 Default is 32bit. 1257 Default is 32bit.
1251 1258
1252 - SCSI Support: 1259 - SCSI Support:
1253 At the moment only there is only support for the 1260 At the moment only there is only support for the
1254 SYM53C8XX SCSI controller; define 1261 SYM53C8XX SCSI controller; define
1255 CONFIG_SCSI_SYM53C8XX to enable it. 1262 CONFIG_SCSI_SYM53C8XX to enable it.
1256 1263
1257 CONFIG_SYS_SCSI_MAX_LUN [8], CONFIG_SYS_SCSI_MAX_SCSI_ID [7] and 1264 CONFIG_SYS_SCSI_MAX_LUN [8], CONFIG_SYS_SCSI_MAX_SCSI_ID [7] and
1258 CONFIG_SYS_SCSI_MAX_DEVICE [CONFIG_SYS_SCSI_MAX_SCSI_ID * 1265 CONFIG_SYS_SCSI_MAX_DEVICE [CONFIG_SYS_SCSI_MAX_SCSI_ID *
1259 CONFIG_SYS_SCSI_MAX_LUN] can be adjusted to define the 1266 CONFIG_SYS_SCSI_MAX_LUN] can be adjusted to define the
1260 maximum numbers of LUNs, SCSI ID's and target 1267 maximum numbers of LUNs, SCSI ID's and target
1261 devices. 1268 devices.
1262 CONFIG_SYS_SCSI_SYM53C8XX_CCF to fix clock timing (80Mhz) 1269 CONFIG_SYS_SCSI_SYM53C8XX_CCF to fix clock timing (80Mhz)
1263 1270
1264 The environment variable 'scsidevs' is set to the number of 1271 The environment variable 'scsidevs' is set to the number of
1265 SCSI devices found during the last scan. 1272 SCSI devices found during the last scan.
1266 1273
1267 - NETWORK Support (PCI): 1274 - NETWORK Support (PCI):
1268 CONFIG_E1000 1275 CONFIG_E1000
1269 Support for Intel 8254x/8257x gigabit chips. 1276 Support for Intel 8254x/8257x gigabit chips.
1270 1277
1271 CONFIG_E1000_SPI 1278 CONFIG_E1000_SPI
1272 Utility code for direct access to the SPI bus on Intel 8257x. 1279 Utility code for direct access to the SPI bus on Intel 8257x.
1273 This does not do anything useful unless you set at least one 1280 This does not do anything useful unless you set at least one
1274 of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC. 1281 of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC.
1275 1282
1276 CONFIG_E1000_SPI_GENERIC 1283 CONFIG_E1000_SPI_GENERIC
1277 Allow generic access to the SPI bus on the Intel 8257x, for 1284 Allow generic access to the SPI bus on the Intel 8257x, for
1278 example with the "sspi" command. 1285 example with the "sspi" command.
1279 1286
1280 CONFIG_CMD_E1000 1287 CONFIG_CMD_E1000
1281 Management command for E1000 devices. When used on devices 1288 Management command for E1000 devices. When used on devices
1282 with SPI support you can reprogram the EEPROM from U-Boot. 1289 with SPI support you can reprogram the EEPROM from U-Boot.
1283 1290
1284 CONFIG_E1000_FALLBACK_MAC 1291 CONFIG_E1000_FALLBACK_MAC
1285 default MAC for empty EEPROM after production. 1292 default MAC for empty EEPROM after production.
1286 1293
1287 CONFIG_EEPRO100 1294 CONFIG_EEPRO100
1288 Support for Intel 82557/82559/82559ER chips. 1295 Support for Intel 82557/82559/82559ER chips.
1289 Optional CONFIG_EEPRO100_SROM_WRITE enables EEPROM 1296 Optional CONFIG_EEPRO100_SROM_WRITE enables EEPROM
1290 write routine for first time initialisation. 1297 write routine for first time initialisation.
1291 1298
1292 CONFIG_TULIP 1299 CONFIG_TULIP
1293 Support for Digital 2114x chips. 1300 Support for Digital 2114x chips.
1294 Optional CONFIG_TULIP_SELECT_MEDIA for board specific 1301 Optional CONFIG_TULIP_SELECT_MEDIA for board specific
1295 modem chip initialisation (KS8761/QS6611). 1302 modem chip initialisation (KS8761/QS6611).
1296 1303
1297 CONFIG_NATSEMI 1304 CONFIG_NATSEMI
1298 Support for National dp83815 chips. 1305 Support for National dp83815 chips.
1299 1306
1300 CONFIG_NS8382X 1307 CONFIG_NS8382X
1301 Support for National dp8382[01] gigabit chips. 1308 Support for National dp8382[01] gigabit chips.
1302 1309
1303 - NETWORK Support (other): 1310 - NETWORK Support (other):
1304 1311
1305 CONFIG_DRIVER_AT91EMAC 1312 CONFIG_DRIVER_AT91EMAC
1306 Support for AT91RM9200 EMAC. 1313 Support for AT91RM9200 EMAC.
1307 1314
1308 CONFIG_RMII 1315 CONFIG_RMII
1309 Define this to use reduced MII inteface 1316 Define this to use reduced MII inteface
1310 1317
1311 CONFIG_DRIVER_AT91EMAC_QUIET 1318 CONFIG_DRIVER_AT91EMAC_QUIET
1312 If this defined, the driver is quiet. 1319 If this defined, the driver is quiet.
1313 The driver doen't show link status messages. 1320 The driver doen't show link status messages.
1314 1321
1315 CONFIG_CALXEDA_XGMAC 1322 CONFIG_CALXEDA_XGMAC
1316 Support for the Calxeda XGMAC device 1323 Support for the Calxeda XGMAC device
1317 1324
1318 CONFIG_LAN91C96 1325 CONFIG_LAN91C96
1319 Support for SMSC's LAN91C96 chips. 1326 Support for SMSC's LAN91C96 chips.
1320 1327
1321 CONFIG_LAN91C96_BASE 1328 CONFIG_LAN91C96_BASE
1322 Define this to hold the physical address 1329 Define this to hold the physical address
1323 of the LAN91C96's I/O space 1330 of the LAN91C96's I/O space
1324 1331
1325 CONFIG_LAN91C96_USE_32_BIT 1332 CONFIG_LAN91C96_USE_32_BIT
1326 Define this to enable 32 bit addressing 1333 Define this to enable 32 bit addressing
1327 1334
1328 CONFIG_SMC91111 1335 CONFIG_SMC91111
1329 Support for SMSC's LAN91C111 chip 1336 Support for SMSC's LAN91C111 chip
1330 1337
1331 CONFIG_SMC91111_BASE 1338 CONFIG_SMC91111_BASE
1332 Define this to hold the physical address 1339 Define this to hold the physical address
1333 of the device (I/O space) 1340 of the device (I/O space)
1334 1341
1335 CONFIG_SMC_USE_32_BIT 1342 CONFIG_SMC_USE_32_BIT
1336 Define this if data bus is 32 bits 1343 Define this if data bus is 32 bits
1337 1344
1338 CONFIG_SMC_USE_IOFUNCS 1345 CONFIG_SMC_USE_IOFUNCS
1339 Define this to use i/o functions instead of macros 1346 Define this to use i/o functions instead of macros
1340 (some hardware wont work with macros) 1347 (some hardware wont work with macros)
1341 1348
1342 CONFIG_DRIVER_TI_EMAC 1349 CONFIG_DRIVER_TI_EMAC
1343 Support for davinci emac 1350 Support for davinci emac
1344 1351
1345 CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT 1352 CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT
1346 Define this if you have more then 3 PHYs. 1353 Define this if you have more then 3 PHYs.
1347 1354
1348 CONFIG_FTGMAC100 1355 CONFIG_FTGMAC100
1349 Support for Faraday's FTGMAC100 Gigabit SoC Ethernet 1356 Support for Faraday's FTGMAC100 Gigabit SoC Ethernet
1350 1357
1351 CONFIG_FTGMAC100_EGIGA 1358 CONFIG_FTGMAC100_EGIGA
1352 Define this to use GE link update with gigabit PHY. 1359 Define this to use GE link update with gigabit PHY.
1353 Define this if FTGMAC100 is connected to gigabit PHY. 1360 Define this if FTGMAC100 is connected to gigabit PHY.
1354 If your system has 10/100 PHY only, it might not occur 1361 If your system has 10/100 PHY only, it might not occur
1355 wrong behavior. Because PHY usually return timeout or 1362 wrong behavior. Because PHY usually return timeout or
1356 useless data when polling gigabit status and gigabit 1363 useless data when polling gigabit status and gigabit
1357 control registers. This behavior won't affect the 1364 control registers. This behavior won't affect the
1358 correctnessof 10/100 link speed update. 1365 correctnessof 10/100 link speed update.
1359 1366
1360 CONFIG_SMC911X 1367 CONFIG_SMC911X
1361 Support for SMSC's LAN911x and LAN921x chips 1368 Support for SMSC's LAN911x and LAN921x chips
1362 1369
1363 CONFIG_SMC911X_BASE 1370 CONFIG_SMC911X_BASE
1364 Define this to hold the physical address 1371 Define this to hold the physical address
1365 of the device (I/O space) 1372 of the device (I/O space)
1366 1373
1367 CONFIG_SMC911X_32_BIT 1374 CONFIG_SMC911X_32_BIT
1368 Define this if data bus is 32 bits 1375 Define this if data bus is 32 bits
1369 1376
1370 CONFIG_SMC911X_16_BIT 1377 CONFIG_SMC911X_16_BIT
1371 Define this if data bus is 16 bits. If your processor 1378 Define this if data bus is 16 bits. If your processor
1372 automatically converts one 32 bit word to two 16 bit 1379 automatically converts one 32 bit word to two 16 bit
1373 words you may also try CONFIG_SMC911X_32_BIT. 1380 words you may also try CONFIG_SMC911X_32_BIT.
1374 1381
1375 CONFIG_SH_ETHER 1382 CONFIG_SH_ETHER
1376 Support for Renesas on-chip Ethernet controller 1383 Support for Renesas on-chip Ethernet controller
1377 1384
1378 CONFIG_SH_ETHER_USE_PORT 1385 CONFIG_SH_ETHER_USE_PORT
1379 Define the number of ports to be used 1386 Define the number of ports to be used
1380 1387
1381 CONFIG_SH_ETHER_PHY_ADDR 1388 CONFIG_SH_ETHER_PHY_ADDR
1382 Define the ETH PHY's address 1389 Define the ETH PHY's address
1383 1390
1384 CONFIG_SH_ETHER_CACHE_WRITEBACK 1391 CONFIG_SH_ETHER_CACHE_WRITEBACK
1385 If this option is set, the driver enables cache flush. 1392 If this option is set, the driver enables cache flush.
1386 1393
1387 - PWM Support: 1394 - PWM Support:
1388 CONFIG_PWM_IMX 1395 CONFIG_PWM_IMX
1389 Support for PWM modul on the imx6. 1396 Support for PWM modul on the imx6.
1390 1397
1391 - TPM Support: 1398 - TPM Support:
1392 CONFIG_TPM 1399 CONFIG_TPM
1393 Support TPM devices. 1400 Support TPM devices.
1394 1401
1395 CONFIG_TPM_TIS_I2C 1402 CONFIG_TPM_TIS_I2C
1396 Support for i2c bus TPM devices. Only one device 1403 Support for i2c bus TPM devices. Only one device
1397 per system is supported at this time. 1404 per system is supported at this time.
1398 1405
1399 CONFIG_TPM_TIS_I2C_BUS_NUMBER 1406 CONFIG_TPM_TIS_I2C_BUS_NUMBER
1400 Define the the i2c bus number for the TPM device 1407 Define the the i2c bus number for the TPM device
1401 1408
1402 CONFIG_TPM_TIS_I2C_SLAVE_ADDRESS 1409 CONFIG_TPM_TIS_I2C_SLAVE_ADDRESS
1403 Define the TPM's address on the i2c bus 1410 Define the TPM's address on the i2c bus
1404 1411
1405 CONFIG_TPM_TIS_I2C_BURST_LIMITATION 1412 CONFIG_TPM_TIS_I2C_BURST_LIMITATION
1406 Define the burst count bytes upper limit 1413 Define the burst count bytes upper limit
1407 1414
1408 CONFIG_TPM_ATMEL_TWI 1415 CONFIG_TPM_ATMEL_TWI
1409 Support for Atmel TWI TPM device. Requires I2C support. 1416 Support for Atmel TWI TPM device. Requires I2C support.
1410 1417
1411 CONFIG_TPM_TIS_LPC 1418 CONFIG_TPM_TIS_LPC
1412 Support for generic parallel port TPM devices. Only one device 1419 Support for generic parallel port TPM devices. Only one device
1413 per system is supported at this time. 1420 per system is supported at this time.
1414 1421
1415 CONFIG_TPM_TIS_BASE_ADDRESS 1422 CONFIG_TPM_TIS_BASE_ADDRESS
1416 Base address where the generic TPM device is mapped 1423 Base address where the generic TPM device is mapped
1417 to. Contemporary x86 systems usually map it at 1424 to. Contemporary x86 systems usually map it at
1418 0xfed40000. 1425 0xfed40000.
1419 1426
1420 CONFIG_CMD_TPM 1427 CONFIG_CMD_TPM
1421 Add tpm monitor functions. 1428 Add tpm monitor functions.
1422 Requires CONFIG_TPM. If CONFIG_TPM_AUTH_SESSIONS is set, also 1429 Requires CONFIG_TPM. If CONFIG_TPM_AUTH_SESSIONS is set, also
1423 provides monitor access to authorized functions. 1430 provides monitor access to authorized functions.
1424 1431
1425 CONFIG_TPM 1432 CONFIG_TPM
1426 Define this to enable the TPM support library which provides 1433 Define this to enable the TPM support library which provides
1427 functional interfaces to some TPM commands. 1434 functional interfaces to some TPM commands.
1428 Requires support for a TPM device. 1435 Requires support for a TPM device.
1429 1436
1430 CONFIG_TPM_AUTH_SESSIONS 1437 CONFIG_TPM_AUTH_SESSIONS
1431 Define this to enable authorized functions in the TPM library. 1438 Define this to enable authorized functions in the TPM library.
1432 Requires CONFIG_TPM and CONFIG_SHA1. 1439 Requires CONFIG_TPM and CONFIG_SHA1.
1433 1440
1434 - USB Support: 1441 - USB Support:
1435 At the moment only the UHCI host controller is 1442 At the moment only the UHCI host controller is
1436 supported (PIP405, MIP405, MPC5200); define 1443 supported (PIP405, MIP405, MPC5200); define
1437 CONFIG_USB_UHCI to enable it. 1444 CONFIG_USB_UHCI to enable it.
1438 define CONFIG_USB_KEYBOARD to enable the USB Keyboard 1445 define CONFIG_USB_KEYBOARD to enable the USB Keyboard
1439 and define CONFIG_USB_STORAGE to enable the USB 1446 and define CONFIG_USB_STORAGE to enable the USB
1440 storage devices. 1447 storage devices.
1441 Note: 1448 Note:
1442 Supported are USB Keyboards and USB Floppy drives 1449 Supported are USB Keyboards and USB Floppy drives
1443 (TEAC FD-05PUB). 1450 (TEAC FD-05PUB).
1444 MPC5200 USB requires additional defines: 1451 MPC5200 USB requires additional defines:
1445 CONFIG_USB_CLOCK 1452 CONFIG_USB_CLOCK
1446 for 528 MHz Clock: 0x0001bbbb 1453 for 528 MHz Clock: 0x0001bbbb
1447 CONFIG_PSC3_USB 1454 CONFIG_PSC3_USB
1448 for USB on PSC3 1455 for USB on PSC3
1449 CONFIG_USB_CONFIG 1456 CONFIG_USB_CONFIG
1450 for differential drivers: 0x00001000 1457 for differential drivers: 0x00001000
1451 for single ended drivers: 0x00005000 1458 for single ended drivers: 0x00005000
1452 for differential drivers on PSC3: 0x00000100 1459 for differential drivers on PSC3: 0x00000100
1453 for single ended drivers on PSC3: 0x00004100 1460 for single ended drivers on PSC3: 0x00004100
1454 CONFIG_SYS_USB_EVENT_POLL 1461 CONFIG_SYS_USB_EVENT_POLL
1455 May be defined to allow interrupt polling 1462 May be defined to allow interrupt polling
1456 instead of using asynchronous interrupts 1463 instead of using asynchronous interrupts
1457 1464
1458 CONFIG_USB_EHCI_TXFIFO_THRESH enables setting of the 1465 CONFIG_USB_EHCI_TXFIFO_THRESH enables setting of the
1459 txfilltuning field in the EHCI controller on reset. 1466 txfilltuning field in the EHCI controller on reset.
1460 1467
1461 CONFIG_USB_DWC2_REG_ADDR the physical CPU address of the DWC2 1468 CONFIG_USB_DWC2_REG_ADDR the physical CPU address of the DWC2
1462 HW module registers. 1469 HW module registers.
1463 1470
1464 - USB Device: 1471 - USB Device:
1465 Define the below if you wish to use the USB console. 1472 Define the below if you wish to use the USB console.
1466 Once firmware is rebuilt from a serial console issue the 1473 Once firmware is rebuilt from a serial console issue the
1467 command "setenv stdin usbtty; setenv stdout usbtty" and 1474 command "setenv stdin usbtty; setenv stdout usbtty" and
1468 attach your USB cable. The Unix command "dmesg" should print 1475 attach your USB cable. The Unix command "dmesg" should print
1469 it has found a new device. The environment variable usbtty 1476 it has found a new device. The environment variable usbtty
1470 can be set to gserial or cdc_acm to enable your device to 1477 can be set to gserial or cdc_acm to enable your device to
1471 appear to a USB host as a Linux gserial device or a 1478 appear to a USB host as a Linux gserial device or a
1472 Common Device Class Abstract Control Model serial device. 1479 Common Device Class Abstract Control Model serial device.
1473 If you select usbtty = gserial you should be able to enumerate 1480 If you select usbtty = gserial you should be able to enumerate
1474 a Linux host by 1481 a Linux host by
1475 # modprobe usbserial vendor=0xVendorID product=0xProductID 1482 # modprobe usbserial vendor=0xVendorID product=0xProductID
1476 else if using cdc_acm, simply setting the environment 1483 else if using cdc_acm, simply setting the environment
1477 variable usbtty to be cdc_acm should suffice. The following 1484 variable usbtty to be cdc_acm should suffice. The following
1478 might be defined in YourBoardName.h 1485 might be defined in YourBoardName.h
1479 1486
1480 CONFIG_USB_DEVICE 1487 CONFIG_USB_DEVICE
1481 Define this to build a UDC device 1488 Define this to build a UDC device
1482 1489
1483 CONFIG_USB_TTY 1490 CONFIG_USB_TTY
1484 Define this to have a tty type of device available to 1491 Define this to have a tty type of device available to
1485 talk to the UDC device 1492 talk to the UDC device
1486 1493
1487 CONFIG_USBD_HS 1494 CONFIG_USBD_HS
1488 Define this to enable the high speed support for usb 1495 Define this to enable the high speed support for usb
1489 device and usbtty. If this feature is enabled, a routine 1496 device and usbtty. If this feature is enabled, a routine
1490 int is_usbd_high_speed(void) 1497 int is_usbd_high_speed(void)
1491 also needs to be defined by the driver to dynamically poll 1498 also needs to be defined by the driver to dynamically poll
1492 whether the enumeration has succeded at high speed or full 1499 whether the enumeration has succeded at high speed or full
1493 speed. 1500 speed.
1494 1501
1495 CONFIG_SYS_CONSOLE_IS_IN_ENV 1502 CONFIG_SYS_CONSOLE_IS_IN_ENV
1496 Define this if you want stdin, stdout &/or stderr to 1503 Define this if you want stdin, stdout &/or stderr to
1497 be set to usbtty. 1504 be set to usbtty.
1498 1505
1499 mpc8xx: 1506 mpc8xx:
1500 CONFIG_SYS_USB_EXTC_CLK 0xBLAH 1507 CONFIG_SYS_USB_EXTC_CLK 0xBLAH
1501 Derive USB clock from external clock "blah" 1508 Derive USB clock from external clock "blah"
1502 - CONFIG_SYS_USB_EXTC_CLK 0x02 1509 - CONFIG_SYS_USB_EXTC_CLK 0x02
1503 1510
1504 CONFIG_SYS_USB_BRG_CLK 0xBLAH 1511 CONFIG_SYS_USB_BRG_CLK 0xBLAH
1505 Derive USB clock from brgclk 1512 Derive USB clock from brgclk
1506 - CONFIG_SYS_USB_BRG_CLK 0x04 1513 - CONFIG_SYS_USB_BRG_CLK 0x04
1507 1514
1508 If you have a USB-IF assigned VendorID then you may wish to 1515 If you have a USB-IF assigned VendorID then you may wish to
1509 define your own vendor specific values either in BoardName.h 1516 define your own vendor specific values either in BoardName.h
1510 or directly in usbd_vendor_info.h. If you don't define 1517 or directly in usbd_vendor_info.h. If you don't define
1511 CONFIG_USBD_MANUFACTURER, CONFIG_USBD_PRODUCT_NAME, 1518 CONFIG_USBD_MANUFACTURER, CONFIG_USBD_PRODUCT_NAME,
1512 CONFIG_USBD_VENDORID and CONFIG_USBD_PRODUCTID, then U-Boot 1519 CONFIG_USBD_VENDORID and CONFIG_USBD_PRODUCTID, then U-Boot
1513 should pretend to be a Linux device to it's target host. 1520 should pretend to be a Linux device to it's target host.
1514 1521
1515 CONFIG_USBD_MANUFACTURER 1522 CONFIG_USBD_MANUFACTURER
1516 Define this string as the name of your company for 1523 Define this string as the name of your company for
1517 - CONFIG_USBD_MANUFACTURER "my company" 1524 - CONFIG_USBD_MANUFACTURER "my company"
1518 1525
1519 CONFIG_USBD_PRODUCT_NAME 1526 CONFIG_USBD_PRODUCT_NAME
1520 Define this string as the name of your product 1527 Define this string as the name of your product
1521 - CONFIG_USBD_PRODUCT_NAME "acme usb device" 1528 - CONFIG_USBD_PRODUCT_NAME "acme usb device"
1522 1529
1523 CONFIG_USBD_VENDORID 1530 CONFIG_USBD_VENDORID
1524 Define this as your assigned Vendor ID from the USB 1531 Define this as your assigned Vendor ID from the USB
1525 Implementors Forum. This *must* be a genuine Vendor ID 1532 Implementors Forum. This *must* be a genuine Vendor ID
1526 to avoid polluting the USB namespace. 1533 to avoid polluting the USB namespace.
1527 - CONFIG_USBD_VENDORID 0xFFFF 1534 - CONFIG_USBD_VENDORID 0xFFFF
1528 1535
1529 CONFIG_USBD_PRODUCTID 1536 CONFIG_USBD_PRODUCTID
1530 Define this as the unique Product ID 1537 Define this as the unique Product ID
1531 for your device 1538 for your device
1532 - CONFIG_USBD_PRODUCTID 0xFFFF 1539 - CONFIG_USBD_PRODUCTID 0xFFFF
1533 1540
1534 - ULPI Layer Support: 1541 - ULPI Layer Support:
1535 The ULPI (UTMI Low Pin (count) Interface) PHYs are supported via 1542 The ULPI (UTMI Low Pin (count) Interface) PHYs are supported via
1536 the generic ULPI layer. The generic layer accesses the ULPI PHY 1543 the generic ULPI layer. The generic layer accesses the ULPI PHY
1537 via the platform viewport, so you need both the genric layer and 1544 via the platform viewport, so you need both the genric layer and
1538 the viewport enabled. Currently only Chipidea/ARC based 1545 the viewport enabled. Currently only Chipidea/ARC based
1539 viewport is supported. 1546 viewport is supported.
1540 To enable the ULPI layer support, define CONFIG_USB_ULPI and 1547 To enable the ULPI layer support, define CONFIG_USB_ULPI and
1541 CONFIG_USB_ULPI_VIEWPORT in your board configuration file. 1548 CONFIG_USB_ULPI_VIEWPORT in your board configuration file.
1542 If your ULPI phy needs a different reference clock than the 1549 If your ULPI phy needs a different reference clock than the
1543 standard 24 MHz then you have to define CONFIG_ULPI_REF_CLK to 1550 standard 24 MHz then you have to define CONFIG_ULPI_REF_CLK to
1544 the appropriate value in Hz. 1551 the appropriate value in Hz.
1545 1552
1546 - MMC Support: 1553 - MMC Support:
1547 The MMC controller on the Intel PXA is supported. To 1554 The MMC controller on the Intel PXA is supported. To
1548 enable this define CONFIG_MMC. The MMC can be 1555 enable this define CONFIG_MMC. The MMC can be
1549 accessed from the boot prompt by mapping the device 1556 accessed from the boot prompt by mapping the device
1550 to physical memory similar to flash. Command line is 1557 to physical memory similar to flash. Command line is
1551 enabled with CONFIG_CMD_MMC. The MMC driver also works with 1558 enabled with CONFIG_CMD_MMC. The MMC driver also works with
1552 the FAT fs. This is enabled with CONFIG_CMD_FAT. 1559 the FAT fs. This is enabled with CONFIG_CMD_FAT.
1553 1560
1554 CONFIG_SH_MMCIF 1561 CONFIG_SH_MMCIF
1555 Support for Renesas on-chip MMCIF controller 1562 Support for Renesas on-chip MMCIF controller
1556 1563
1557 CONFIG_SH_MMCIF_ADDR 1564 CONFIG_SH_MMCIF_ADDR
1558 Define the base address of MMCIF registers 1565 Define the base address of MMCIF registers
1559 1566
1560 CONFIG_SH_MMCIF_CLK 1567 CONFIG_SH_MMCIF_CLK
1561 Define the clock frequency for MMCIF 1568 Define the clock frequency for MMCIF
1562 1569
1563 CONFIG_GENERIC_MMC 1570 CONFIG_GENERIC_MMC
1564 Enable the generic MMC driver 1571 Enable the generic MMC driver
1565 1572
1566 CONFIG_SUPPORT_EMMC_BOOT 1573 CONFIG_SUPPORT_EMMC_BOOT
1567 Enable some additional features of the eMMC boot partitions. 1574 Enable some additional features of the eMMC boot partitions.
1568 1575
1569 CONFIG_SUPPORT_EMMC_RPMB 1576 CONFIG_SUPPORT_EMMC_RPMB
1570 Enable the commands for reading, writing and programming the 1577 Enable the commands for reading, writing and programming the
1571 key for the Replay Protection Memory Block partition in eMMC. 1578 key for the Replay Protection Memory Block partition in eMMC.
1572 1579
1573 - USB Device Firmware Update (DFU) class support: 1580 - USB Device Firmware Update (DFU) class support:
1574 CONFIG_DFU_FUNCTION 1581 CONFIG_DFU_FUNCTION
1575 This enables the USB portion of the DFU USB class 1582 This enables the USB portion of the DFU USB class
1576 1583
1577 CONFIG_CMD_DFU 1584 CONFIG_CMD_DFU
1578 This enables the command "dfu" which is used to have 1585 This enables the command "dfu" which is used to have
1579 U-Boot create a DFU class device via USB. This command 1586 U-Boot create a DFU class device via USB. This command
1580 requires that the "dfu_alt_info" environment variable be 1587 requires that the "dfu_alt_info" environment variable be
1581 set and define the alt settings to expose to the host. 1588 set and define the alt settings to expose to the host.
1582 1589
1583 CONFIG_DFU_MMC 1590 CONFIG_DFU_MMC
1584 This enables support for exposing (e)MMC devices via DFU. 1591 This enables support for exposing (e)MMC devices via DFU.
1585 1592
1586 CONFIG_DFU_NAND 1593 CONFIG_DFU_NAND
1587 This enables support for exposing NAND devices via DFU. 1594 This enables support for exposing NAND devices via DFU.
1588 1595
1589 CONFIG_DFU_RAM 1596 CONFIG_DFU_RAM
1590 This enables support for exposing RAM via DFU. 1597 This enables support for exposing RAM via DFU.
1591 Note: DFU spec refer to non-volatile memory usage, but 1598 Note: DFU spec refer to non-volatile memory usage, but
1592 allow usages beyond the scope of spec - here RAM usage, 1599 allow usages beyond the scope of spec - here RAM usage,
1593 one that would help mostly the developer. 1600 one that would help mostly the developer.
1594 1601
1595 CONFIG_SYS_DFU_DATA_BUF_SIZE 1602 CONFIG_SYS_DFU_DATA_BUF_SIZE
1596 Dfu transfer uses a buffer before writing data to the 1603 Dfu transfer uses a buffer before writing data to the
1597 raw storage device. Make the size (in bytes) of this buffer 1604 raw storage device. Make the size (in bytes) of this buffer
1598 configurable. The size of this buffer is also configurable 1605 configurable. The size of this buffer is also configurable
1599 through the "dfu_bufsiz" environment variable. 1606 through the "dfu_bufsiz" environment variable.
1600 1607
1601 CONFIG_SYS_DFU_MAX_FILE_SIZE 1608 CONFIG_SYS_DFU_MAX_FILE_SIZE
1602 When updating files rather than the raw storage device, 1609 When updating files rather than the raw storage device,
1603 we use a static buffer to copy the file into and then write 1610 we use a static buffer to copy the file into and then write
1604 the buffer once we've been given the whole file. Define 1611 the buffer once we've been given the whole file. Define
1605 this to the maximum filesize (in bytes) for the buffer. 1612 this to the maximum filesize (in bytes) for the buffer.
1606 Default is 4 MiB if undefined. 1613 Default is 4 MiB if undefined.
1607 1614
1608 DFU_DEFAULT_POLL_TIMEOUT 1615 DFU_DEFAULT_POLL_TIMEOUT
1609 Poll timeout [ms], is the timeout a device can send to the 1616 Poll timeout [ms], is the timeout a device can send to the
1610 host. The host must wait for this timeout before sending 1617 host. The host must wait for this timeout before sending
1611 a subsequent DFU_GET_STATUS request to the device. 1618 a subsequent DFU_GET_STATUS request to the device.
1612 1619
1613 DFU_MANIFEST_POLL_TIMEOUT 1620 DFU_MANIFEST_POLL_TIMEOUT
1614 Poll timeout [ms], which the device sends to the host when 1621 Poll timeout [ms], which the device sends to the host when
1615 entering dfuMANIFEST state. Host waits this timeout, before 1622 entering dfuMANIFEST state. Host waits this timeout, before
1616 sending again an USB request to the device. 1623 sending again an USB request to the device.
1617 1624
1618 - USB Device Android Fastboot support: 1625 - USB Device Android Fastboot support:
1619 CONFIG_CMD_FASTBOOT 1626 CONFIG_CMD_FASTBOOT
1620 This enables the command "fastboot" which enables the Android 1627 This enables the command "fastboot" which enables the Android
1621 fastboot mode for the platform's USB device. Fastboot is a USB 1628 fastboot mode for the platform's USB device. Fastboot is a USB
1622 protocol for downloading images, flashing and device control 1629 protocol for downloading images, flashing and device control
1623 used on Android devices. 1630 used on Android devices.
1624 See doc/README.android-fastboot for more information. 1631 See doc/README.android-fastboot for more information.
1625 1632
1626 CONFIG_ANDROID_BOOT_IMAGE 1633 CONFIG_ANDROID_BOOT_IMAGE
1627 This enables support for booting images which use the Android 1634 This enables support for booting images which use the Android
1628 image format header. 1635 image format header.
1629 1636
1630 CONFIG_USB_FASTBOOT_BUF_ADDR 1637 CONFIG_USB_FASTBOOT_BUF_ADDR
1631 The fastboot protocol requires a large memory buffer for 1638 The fastboot protocol requires a large memory buffer for
1632 downloads. Define this to the starting RAM address to use for 1639 downloads. Define this to the starting RAM address to use for
1633 downloaded images. 1640 downloaded images.
1634 1641
1635 CONFIG_USB_FASTBOOT_BUF_SIZE 1642 CONFIG_USB_FASTBOOT_BUF_SIZE
1636 The fastboot protocol requires a large memory buffer for 1643 The fastboot protocol requires a large memory buffer for
1637 downloads. This buffer should be as large as possible for a 1644 downloads. This buffer should be as large as possible for a
1638 platform. Define this to the size available RAM for fastboot. 1645 platform. Define this to the size available RAM for fastboot.
1639 1646
1640 CONFIG_FASTBOOT_FLASH 1647 CONFIG_FASTBOOT_FLASH
1641 The fastboot protocol includes a "flash" command for writing 1648 The fastboot protocol includes a "flash" command for writing
1642 the downloaded image to a non-volatile storage device. Define 1649 the downloaded image to a non-volatile storage device. Define
1643 this to enable the "fastboot flash" command. 1650 this to enable the "fastboot flash" command.
1644 1651
1645 CONFIG_FASTBOOT_FLASH_MMC_DEV 1652 CONFIG_FASTBOOT_FLASH_MMC_DEV
1646 The fastboot "flash" command requires additional information 1653 The fastboot "flash" command requires additional information
1647 regarding the non-volatile storage device. Define this to 1654 regarding the non-volatile storage device. Define this to
1648 the eMMC device that fastboot should use to store the image. 1655 the eMMC device that fastboot should use to store the image.
1649 1656
1650 - Journaling Flash filesystem support: 1657 - Journaling Flash filesystem support:
1651 CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE, 1658 CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
1652 CONFIG_JFFS2_NAND_DEV 1659 CONFIG_JFFS2_NAND_DEV
1653 Define these for a default partition on a NAND device 1660 Define these for a default partition on a NAND device
1654 1661
1655 CONFIG_SYS_JFFS2_FIRST_SECTOR, 1662 CONFIG_SYS_JFFS2_FIRST_SECTOR,
1656 CONFIG_SYS_JFFS2_FIRST_BANK, CONFIG_SYS_JFFS2_NUM_BANKS 1663 CONFIG_SYS_JFFS2_FIRST_BANK, CONFIG_SYS_JFFS2_NUM_BANKS
1657 Define these for a default partition on a NOR device 1664 Define these for a default partition on a NOR device
1658 1665
1659 CONFIG_SYS_JFFS_CUSTOM_PART 1666 CONFIG_SYS_JFFS_CUSTOM_PART
1660 Define this to create an own partition. You have to provide a 1667 Define this to create an own partition. You have to provide a
1661 function struct part_info* jffs2_part_info(int part_num) 1668 function struct part_info* jffs2_part_info(int part_num)
1662 1669
1663 If you define only one JFFS2 partition you may also want to 1670 If you define only one JFFS2 partition you may also want to
1664 #define CONFIG_SYS_JFFS_SINGLE_PART 1 1671 #define CONFIG_SYS_JFFS_SINGLE_PART 1
1665 to disable the command chpart. This is the default when you 1672 to disable the command chpart. This is the default when you
1666 have not defined a custom partition 1673 have not defined a custom partition
1667 1674
1668 - FAT(File Allocation Table) filesystem write function support: 1675 - FAT(File Allocation Table) filesystem write function support:
1669 CONFIG_FAT_WRITE 1676 CONFIG_FAT_WRITE
1670 1677
1671 Define this to enable support for saving memory data as a 1678 Define this to enable support for saving memory data as a
1672 file in FAT formatted partition. 1679 file in FAT formatted partition.
1673 1680
1674 This will also enable the command "fatwrite" enabling the 1681 This will also enable the command "fatwrite" enabling the
1675 user to write files to FAT. 1682 user to write files to FAT.
1676 1683
1677 CBFS (Coreboot Filesystem) support 1684 CBFS (Coreboot Filesystem) support
1678 CONFIG_CMD_CBFS 1685 CONFIG_CMD_CBFS
1679 1686
1680 Define this to enable support for reading from a Coreboot 1687 Define this to enable support for reading from a Coreboot
1681 filesystem. Available commands are cbfsinit, cbfsinfo, cbfsls 1688 filesystem. Available commands are cbfsinit, cbfsinfo, cbfsls
1682 and cbfsload. 1689 and cbfsload.
1683 1690
1684 - FAT(File Allocation Table) filesystem cluster size: 1691 - FAT(File Allocation Table) filesystem cluster size:
1685 CONFIG_FS_FAT_MAX_CLUSTSIZE 1692 CONFIG_FS_FAT_MAX_CLUSTSIZE
1686 1693
1687 Define the max cluster size for fat operations else 1694 Define the max cluster size for fat operations else
1688 a default value of 65536 will be defined. 1695 a default value of 65536 will be defined.
1689 1696
1690 - Keyboard Support: 1697 - Keyboard Support:
1691 CONFIG_ISA_KEYBOARD 1698 CONFIG_ISA_KEYBOARD
1692 1699
1693 Define this to enable standard (PC-Style) keyboard 1700 Define this to enable standard (PC-Style) keyboard
1694 support 1701 support
1695 1702
1696 CONFIG_I8042_KBD 1703 CONFIG_I8042_KBD
1697 Standard PC keyboard driver with US (is default) and 1704 Standard PC keyboard driver with US (is default) and
1698 GERMAN key layout (switch via environment 'keymap=de') support. 1705 GERMAN key layout (switch via environment 'keymap=de') support.
1699 Export function i8042_kbd_init, i8042_tstc and i8042_getc 1706 Export function i8042_kbd_init, i8042_tstc and i8042_getc
1700 for cfb_console. Supports cursor blinking. 1707 for cfb_console. Supports cursor blinking.
1701 1708
1702 CONFIG_CROS_EC_KEYB 1709 CONFIG_CROS_EC_KEYB
1703 Enables a Chrome OS keyboard using the CROS_EC interface. 1710 Enables a Chrome OS keyboard using the CROS_EC interface.
1704 This uses CROS_EC to communicate with a second microcontroller 1711 This uses CROS_EC to communicate with a second microcontroller
1705 which provides key scans on request. 1712 which provides key scans on request.
1706 1713
1707 - Video support: 1714 - Video support:
1708 CONFIG_VIDEO 1715 CONFIG_VIDEO
1709 1716
1710 Define this to enable video support (for output to 1717 Define this to enable video support (for output to
1711 video). 1718 video).
1712 1719
1713 CONFIG_VIDEO_CT69000 1720 CONFIG_VIDEO_CT69000
1714 1721
1715 Enable Chips & Technologies 69000 Video chip 1722 Enable Chips & Technologies 69000 Video chip
1716 1723
1717 CONFIG_VIDEO_SMI_LYNXEM 1724 CONFIG_VIDEO_SMI_LYNXEM
1718 Enable Silicon Motion SMI 712/710/810 Video chip. The 1725 Enable Silicon Motion SMI 712/710/810 Video chip. The
1719 video output is selected via environment 'videoout' 1726 video output is selected via environment 'videoout'
1720 (1 = LCD and 2 = CRT). If videoout is undefined, CRT is 1727 (1 = LCD and 2 = CRT). If videoout is undefined, CRT is
1721 assumed. 1728 assumed.
1722 1729
1723 For the CT69000 and SMI_LYNXEM drivers, videomode is 1730 For the CT69000 and SMI_LYNXEM drivers, videomode is
1724 selected via environment 'videomode'. Two different ways 1731 selected via environment 'videomode'. Two different ways
1725 are possible: 1732 are possible:
1726 - "videomode=num" 'num' is a standard LiLo mode numbers. 1733 - "videomode=num" 'num' is a standard LiLo mode numbers.
1727 Following standard modes are supported (* is default): 1734 Following standard modes are supported (* is default):
1728 1735
1729 Colors 640x480 800x600 1024x768 1152x864 1280x1024 1736 Colors 640x480 800x600 1024x768 1152x864 1280x1024
1730 -------------+--------------------------------------------- 1737 -------------+---------------------------------------------
1731 8 bits | 0x301* 0x303 0x305 0x161 0x307 1738 8 bits | 0x301* 0x303 0x305 0x161 0x307
1732 15 bits | 0x310 0x313 0x316 0x162 0x319 1739 15 bits | 0x310 0x313 0x316 0x162 0x319
1733 16 bits | 0x311 0x314 0x317 0x163 0x31A 1740 16 bits | 0x311 0x314 0x317 0x163 0x31A
1734 24 bits | 0x312 0x315 0x318 ? 0x31B 1741 24 bits | 0x312 0x315 0x318 ? 0x31B
1735 -------------+--------------------------------------------- 1742 -------------+---------------------------------------------
1736 (i.e. setenv videomode 317; saveenv; reset;) 1743 (i.e. setenv videomode 317; saveenv; reset;)
1737 1744
1738 - "videomode=bootargs" all the video parameters are parsed 1745 - "videomode=bootargs" all the video parameters are parsed
1739 from the bootargs. (See drivers/video/videomodes.c) 1746 from the bootargs. (See drivers/video/videomodes.c)
1740 1747
1741 1748
1742 CONFIG_VIDEO_SED13806 1749 CONFIG_VIDEO_SED13806
1743 Enable Epson SED13806 driver. This driver supports 8bpp 1750 Enable Epson SED13806 driver. This driver supports 8bpp
1744 and 16bpp modes defined by CONFIG_VIDEO_SED13806_8BPP 1751 and 16bpp modes defined by CONFIG_VIDEO_SED13806_8BPP
1745 or CONFIG_VIDEO_SED13806_16BPP 1752 or CONFIG_VIDEO_SED13806_16BPP
1746 1753
1747 CONFIG_FSL_DIU_FB 1754 CONFIG_FSL_DIU_FB
1748 Enable the Freescale DIU video driver. Reference boards for 1755 Enable the Freescale DIU video driver. Reference boards for
1749 SOCs that have a DIU should define this macro to enable DIU 1756 SOCs that have a DIU should define this macro to enable DIU
1750 support, and should also define these other macros: 1757 support, and should also define these other macros:
1751 1758
1752 CONFIG_SYS_DIU_ADDR 1759 CONFIG_SYS_DIU_ADDR
1753 CONFIG_VIDEO 1760 CONFIG_VIDEO
1754 CONFIG_CMD_BMP 1761 CONFIG_CMD_BMP
1755 CONFIG_CFB_CONSOLE 1762 CONFIG_CFB_CONSOLE
1756 CONFIG_VIDEO_SW_CURSOR 1763 CONFIG_VIDEO_SW_CURSOR
1757 CONFIG_VGA_AS_SINGLE_DEVICE 1764 CONFIG_VGA_AS_SINGLE_DEVICE
1758 CONFIG_VIDEO_LOGO 1765 CONFIG_VIDEO_LOGO
1759 CONFIG_VIDEO_BMP_LOGO 1766 CONFIG_VIDEO_BMP_LOGO
1760 1767
1761 The DIU driver will look for the 'video-mode' environment 1768 The DIU driver will look for the 'video-mode' environment
1762 variable, and if defined, enable the DIU as a console during 1769 variable, and if defined, enable the DIU as a console during
1763 boot. See the documentation file README.video for a 1770 boot. See the documentation file README.video for a
1764 description of this variable. 1771 description of this variable.
1765 1772
1766 CONFIG_VIDEO_VGA 1773 CONFIG_VIDEO_VGA
1767 1774
1768 Enable the VGA video / BIOS for x86. The alternative if you 1775 Enable the VGA video / BIOS for x86. The alternative if you
1769 are using coreboot is to use the coreboot frame buffer 1776 are using coreboot is to use the coreboot frame buffer
1770 driver. 1777 driver.
1771 1778
1772 1779
1773 - Keyboard Support: 1780 - Keyboard Support:
1774 CONFIG_KEYBOARD 1781 CONFIG_KEYBOARD
1775 1782
1776 Define this to enable a custom keyboard support. 1783 Define this to enable a custom keyboard support.
1777 This simply calls drv_keyboard_init() which must be 1784 This simply calls drv_keyboard_init() which must be
1778 defined in your board-specific files. 1785 defined in your board-specific files.
1779 The only board using this so far is RBC823. 1786 The only board using this so far is RBC823.
1780 1787
1781 - LCD Support: CONFIG_LCD 1788 - LCD Support: CONFIG_LCD
1782 1789
1783 Define this to enable LCD support (for output to LCD 1790 Define this to enable LCD support (for output to LCD
1784 display); also select one of the supported displays 1791 display); also select one of the supported displays
1785 by defining one of these: 1792 by defining one of these:
1786 1793
1787 CONFIG_ATMEL_LCD: 1794 CONFIG_ATMEL_LCD:
1788 1795
1789 HITACHI TX09D70VM1CCA, 3.5", 240x320. 1796 HITACHI TX09D70VM1CCA, 3.5", 240x320.
1790 1797
1791 CONFIG_NEC_NL6448AC33: 1798 CONFIG_NEC_NL6448AC33:
1792 1799
1793 NEC NL6448AC33-18. Active, color, single scan. 1800 NEC NL6448AC33-18. Active, color, single scan.
1794 1801
1795 CONFIG_NEC_NL6448BC20 1802 CONFIG_NEC_NL6448BC20
1796 1803
1797 NEC NL6448BC20-08. 6.5", 640x480. 1804 NEC NL6448BC20-08. 6.5", 640x480.
1798 Active, color, single scan. 1805 Active, color, single scan.
1799 1806
1800 CONFIG_NEC_NL6448BC33_54 1807 CONFIG_NEC_NL6448BC33_54
1801 1808
1802 NEC NL6448BC33-54. 10.4", 640x480. 1809 NEC NL6448BC33-54. 10.4", 640x480.
1803 Active, color, single scan. 1810 Active, color, single scan.
1804 1811
1805 CONFIG_SHARP_16x9 1812 CONFIG_SHARP_16x9
1806 1813
1807 Sharp 320x240. Active, color, single scan. 1814 Sharp 320x240. Active, color, single scan.
1808 It isn't 16x9, and I am not sure what it is. 1815 It isn't 16x9, and I am not sure what it is.
1809 1816
1810 CONFIG_SHARP_LQ64D341 1817 CONFIG_SHARP_LQ64D341
1811 1818
1812 Sharp LQ64D341 display, 640x480. 1819 Sharp LQ64D341 display, 640x480.
1813 Active, color, single scan. 1820 Active, color, single scan.
1814 1821
1815 CONFIG_HLD1045 1822 CONFIG_HLD1045
1816 1823
1817 HLD1045 display, 640x480. 1824 HLD1045 display, 640x480.
1818 Active, color, single scan. 1825 Active, color, single scan.
1819 1826
1820 CONFIG_OPTREX_BW 1827 CONFIG_OPTREX_BW
1821 1828
1822 Optrex CBL50840-2 NF-FW 99 22 M5 1829 Optrex CBL50840-2 NF-FW 99 22 M5
1823 or 1830 or
1824 Hitachi LMG6912RPFC-00T 1831 Hitachi LMG6912RPFC-00T
1825 or 1832 or
1826 Hitachi SP14Q002 1833 Hitachi SP14Q002
1827 1834
1828 320x240. Black & white. 1835 320x240. Black & white.
1829 1836
1830 Normally display is black on white background; define 1837 Normally display is black on white background; define
1831 CONFIG_SYS_WHITE_ON_BLACK to get it inverted. 1838 CONFIG_SYS_WHITE_ON_BLACK to get it inverted.
1832 1839
1833 CONFIG_LCD_ALIGNMENT 1840 CONFIG_LCD_ALIGNMENT
1834 1841
1835 Normally the LCD is page-aligned (tyically 4KB). If this is 1842 Normally the LCD is page-aligned (tyically 4KB). If this is
1836 defined then the LCD will be aligned to this value instead. 1843 defined then the LCD will be aligned to this value instead.
1837 For ARM it is sometimes useful to use MMU_SECTION_SIZE 1844 For ARM it is sometimes useful to use MMU_SECTION_SIZE
1838 here, since it is cheaper to change data cache settings on 1845 here, since it is cheaper to change data cache settings on
1839 a per-section basis. 1846 a per-section basis.
1840 1847
1841 CONFIG_CONSOLE_SCROLL_LINES 1848 CONFIG_CONSOLE_SCROLL_LINES
1842 1849
1843 When the console need to be scrolled, this is the number of 1850 When the console need to be scrolled, this is the number of
1844 lines to scroll by. It defaults to 1. Increasing this makes 1851 lines to scroll by. It defaults to 1. Increasing this makes
1845 the console jump but can help speed up operation when scrolling 1852 the console jump but can help speed up operation when scrolling
1846 is slow. 1853 is slow.
1847 1854
1848 CONFIG_LCD_BMP_RLE8 1855 CONFIG_LCD_BMP_RLE8
1849 1856
1850 Support drawing of RLE8-compressed bitmaps on the LCD. 1857 Support drawing of RLE8-compressed bitmaps on the LCD.
1851 1858
1852 CONFIG_I2C_EDID 1859 CONFIG_I2C_EDID
1853 1860
1854 Enables an 'i2c edid' command which can read EDID 1861 Enables an 'i2c edid' command which can read EDID
1855 information over I2C from an attached LCD display. 1862 information over I2C from an attached LCD display.
1856 1863
1857 - Splash Screen Support: CONFIG_SPLASH_SCREEN 1864 - Splash Screen Support: CONFIG_SPLASH_SCREEN
1858 1865
1859 If this option is set, the environment is checked for 1866 If this option is set, the environment is checked for
1860 a variable "splashimage". If found, the usual display 1867 a variable "splashimage". If found, the usual display
1861 of logo, copyright and system information on the LCD 1868 of logo, copyright and system information on the LCD
1862 is suppressed and the BMP image at the address 1869 is suppressed and the BMP image at the address
1863 specified in "splashimage" is loaded instead. The 1870 specified in "splashimage" is loaded instead. The
1864 console is redirected to the "nulldev", too. This 1871 console is redirected to the "nulldev", too. This
1865 allows for a "silent" boot where a splash screen is 1872 allows for a "silent" boot where a splash screen is
1866 loaded very quickly after power-on. 1873 loaded very quickly after power-on.
1867 1874
1868 CONFIG_SPLASHIMAGE_GUARD 1875 CONFIG_SPLASHIMAGE_GUARD
1869 1876
1870 If this option is set, then U-Boot will prevent the environment 1877 If this option is set, then U-Boot will prevent the environment
1871 variable "splashimage" from being set to a problematic address 1878 variable "splashimage" from being set to a problematic address
1872 (see README.displaying-bmps). 1879 (see README.displaying-bmps).
1873 This option is useful for targets where, due to alignment 1880 This option is useful for targets where, due to alignment
1874 restrictions, an improperly aligned BMP image will cause a data 1881 restrictions, an improperly aligned BMP image will cause a data
1875 abort. If you think you will not have problems with unaligned 1882 abort. If you think you will not have problems with unaligned
1876 accesses (for example because your toolchain prevents them) 1883 accesses (for example because your toolchain prevents them)
1877 there is no need to set this option. 1884 there is no need to set this option.
1878 1885
1879 CONFIG_SPLASH_SCREEN_ALIGN 1886 CONFIG_SPLASH_SCREEN_ALIGN
1880 1887
1881 If this option is set the splash image can be freely positioned 1888 If this option is set the splash image can be freely positioned
1882 on the screen. Environment variable "splashpos" specifies the 1889 on the screen. Environment variable "splashpos" specifies the
1883 position as "x,y". If a positive number is given it is used as 1890 position as "x,y". If a positive number is given it is used as
1884 number of pixel from left/top. If a negative number is given it 1891 number of pixel from left/top. If a negative number is given it
1885 is used as number of pixel from right/bottom. You can also 1892 is used as number of pixel from right/bottom. You can also
1886 specify 'm' for centering the image. 1893 specify 'm' for centering the image.
1887 1894
1888 Example: 1895 Example:
1889 setenv splashpos m,m 1896 setenv splashpos m,m
1890 => image at center of screen 1897 => image at center of screen
1891 1898
1892 setenv splashpos 30,20 1899 setenv splashpos 30,20
1893 => image at x = 30 and y = 20 1900 => image at x = 30 and y = 20
1894 1901
1895 setenv splashpos -10,m 1902 setenv splashpos -10,m
1896 => vertically centered image 1903 => vertically centered image
1897 at x = dspWidth - bmpWidth - 9 1904 at x = dspWidth - bmpWidth - 9
1898 1905
1899 - Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP 1906 - Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
1900 1907
1901 If this option is set, additionally to standard BMP 1908 If this option is set, additionally to standard BMP
1902 images, gzipped BMP images can be displayed via the 1909 images, gzipped BMP images can be displayed via the
1903 splashscreen support or the bmp command. 1910 splashscreen support or the bmp command.
1904 1911
1905 - Run length encoded BMP image (RLE8) support: CONFIG_VIDEO_BMP_RLE8 1912 - Run length encoded BMP image (RLE8) support: CONFIG_VIDEO_BMP_RLE8
1906 1913
1907 If this option is set, 8-bit RLE compressed BMP images 1914 If this option is set, 8-bit RLE compressed BMP images
1908 can be displayed via the splashscreen support or the 1915 can be displayed via the splashscreen support or the
1909 bmp command. 1916 bmp command.
1910 1917
1911 - Do compresssing for memory range: 1918 - Do compresssing for memory range:
1912 CONFIG_CMD_ZIP 1919 CONFIG_CMD_ZIP
1913 1920
1914 If this option is set, it would use zlib deflate method 1921 If this option is set, it would use zlib deflate method
1915 to compress the specified memory at its best effort. 1922 to compress the specified memory at its best effort.
1916 1923
1917 - Compression support: 1924 - Compression support:
1918 CONFIG_GZIP 1925 CONFIG_GZIP
1919 1926
1920 Enabled by default to support gzip compressed images. 1927 Enabled by default to support gzip compressed images.
1921 1928
1922 CONFIG_BZIP2 1929 CONFIG_BZIP2
1923 1930
1924 If this option is set, support for bzip2 compressed 1931 If this option is set, support for bzip2 compressed
1925 images is included. If not, only uncompressed and gzip 1932 images is included. If not, only uncompressed and gzip
1926 compressed images are supported. 1933 compressed images are supported.
1927 1934
1928 NOTE: the bzip2 algorithm requires a lot of RAM, so 1935 NOTE: the bzip2 algorithm requires a lot of RAM, so
1929 the malloc area (as defined by CONFIG_SYS_MALLOC_LEN) should 1936 the malloc area (as defined by CONFIG_SYS_MALLOC_LEN) should
1930 be at least 4MB. 1937 be at least 4MB.
1931 1938
1932 CONFIG_LZMA 1939 CONFIG_LZMA
1933 1940
1934 If this option is set, support for lzma compressed 1941 If this option is set, support for lzma compressed
1935 images is included. 1942 images is included.
1936 1943
1937 Note: The LZMA algorithm adds between 2 and 4KB of code and it 1944 Note: The LZMA algorithm adds between 2 and 4KB of code and it
1938 requires an amount of dynamic memory that is given by the 1945 requires an amount of dynamic memory that is given by the
1939 formula: 1946 formula:
1940 1947
1941 (1846 + 768 << (lc + lp)) * sizeof(uint16) 1948 (1846 + 768 << (lc + lp)) * sizeof(uint16)
1942 1949
1943 Where lc and lp stand for, respectively, Literal context bits 1950 Where lc and lp stand for, respectively, Literal context bits
1944 and Literal pos bits. 1951 and Literal pos bits.
1945 1952
1946 This value is upper-bounded by 14MB in the worst case. Anyway, 1953 This value is upper-bounded by 14MB in the worst case. Anyway,
1947 for a ~4MB large kernel image, we have lc=3 and lp=0 for a 1954 for a ~4MB large kernel image, we have lc=3 and lp=0 for a
1948 total amount of (1846 + 768 << (3 + 0)) * 2 = ~41KB... that is 1955 total amount of (1846 + 768 << (3 + 0)) * 2 = ~41KB... that is
1949 a very small buffer. 1956 a very small buffer.
1950 1957
1951 Use the lzmainfo tool to determinate the lc and lp values and 1958 Use the lzmainfo tool to determinate the lc and lp values and
1952 then calculate the amount of needed dynamic memory (ensuring 1959 then calculate the amount of needed dynamic memory (ensuring
1953 the appropriate CONFIG_SYS_MALLOC_LEN value). 1960 the appropriate CONFIG_SYS_MALLOC_LEN value).
1954 1961
1955 CONFIG_LZO 1962 CONFIG_LZO
1956 1963
1957 If this option is set, support for LZO compressed images 1964 If this option is set, support for LZO compressed images
1958 is included. 1965 is included.
1959 1966
1960 - MII/PHY support: 1967 - MII/PHY support:
1961 CONFIG_PHY_ADDR 1968 CONFIG_PHY_ADDR
1962 1969
1963 The address of PHY on MII bus. 1970 The address of PHY on MII bus.
1964 1971
1965 CONFIG_PHY_CLOCK_FREQ (ppc4xx) 1972 CONFIG_PHY_CLOCK_FREQ (ppc4xx)
1966 1973
1967 The clock frequency of the MII bus 1974 The clock frequency of the MII bus
1968 1975
1969 CONFIG_PHY_GIGE 1976 CONFIG_PHY_GIGE
1970 1977
1971 If this option is set, support for speed/duplex 1978 If this option is set, support for speed/duplex
1972 detection of gigabit PHY is included. 1979 detection of gigabit PHY is included.
1973 1980
1974 CONFIG_PHY_RESET_DELAY 1981 CONFIG_PHY_RESET_DELAY
1975 1982
1976 Some PHY like Intel LXT971A need extra delay after 1983 Some PHY like Intel LXT971A need extra delay after
1977 reset before any MII register access is possible. 1984 reset before any MII register access is possible.
1978 For such PHY, set this option to the usec delay 1985 For such PHY, set this option to the usec delay
1979 required. (minimum 300usec for LXT971A) 1986 required. (minimum 300usec for LXT971A)
1980 1987
1981 CONFIG_PHY_CMD_DELAY (ppc4xx) 1988 CONFIG_PHY_CMD_DELAY (ppc4xx)
1982 1989
1983 Some PHY like Intel LXT971A need extra delay after 1990 Some PHY like Intel LXT971A need extra delay after
1984 command issued before MII status register can be read 1991 command issued before MII status register can be read
1985 1992
1986 - Ethernet address: 1993 - Ethernet address:
1987 CONFIG_ETHADDR 1994 CONFIG_ETHADDR
1988 CONFIG_ETH1ADDR 1995 CONFIG_ETH1ADDR
1989 CONFIG_ETH2ADDR 1996 CONFIG_ETH2ADDR
1990 CONFIG_ETH3ADDR 1997 CONFIG_ETH3ADDR
1991 CONFIG_ETH4ADDR 1998 CONFIG_ETH4ADDR
1992 CONFIG_ETH5ADDR 1999 CONFIG_ETH5ADDR
1993 2000
1994 Define a default value for Ethernet address to use 2001 Define a default value for Ethernet address to use
1995 for the respective Ethernet interface, in case this 2002 for the respective Ethernet interface, in case this
1996 is not determined automatically. 2003 is not determined automatically.
1997 2004
1998 - IP address: 2005 - IP address:
1999 CONFIG_IPADDR 2006 CONFIG_IPADDR
2000 2007
2001 Define a default value for the IP address to use for 2008 Define a default value for the IP address to use for
2002 the default Ethernet interface, in case this is not 2009 the default Ethernet interface, in case this is not
2003 determined through e.g. bootp. 2010 determined through e.g. bootp.
2004 (Environment variable "ipaddr") 2011 (Environment variable "ipaddr")
2005 2012
2006 - Server IP address: 2013 - Server IP address:
2007 CONFIG_SERVERIP 2014 CONFIG_SERVERIP
2008 2015
2009 Defines a default value for the IP address of a TFTP 2016 Defines a default value for the IP address of a TFTP
2010 server to contact when using the "tftboot" command. 2017 server to contact when using the "tftboot" command.
2011 (Environment variable "serverip") 2018 (Environment variable "serverip")
2012 2019
2013 CONFIG_KEEP_SERVERADDR 2020 CONFIG_KEEP_SERVERADDR
2014 2021
2015 Keeps the server's MAC address, in the env 'serveraddr' 2022 Keeps the server's MAC address, in the env 'serveraddr'
2016 for passing to bootargs (like Linux's netconsole option) 2023 for passing to bootargs (like Linux's netconsole option)
2017 2024
2018 - Gateway IP address: 2025 - Gateway IP address:
2019 CONFIG_GATEWAYIP 2026 CONFIG_GATEWAYIP
2020 2027
2021 Defines a default value for the IP address of the 2028 Defines a default value for the IP address of the
2022 default router where packets to other networks are 2029 default router where packets to other networks are
2023 sent to. 2030 sent to.
2024 (Environment variable "gatewayip") 2031 (Environment variable "gatewayip")
2025 2032
2026 - Subnet mask: 2033 - Subnet mask:
2027 CONFIG_NETMASK 2034 CONFIG_NETMASK
2028 2035
2029 Defines a default value for the subnet mask (or 2036 Defines a default value for the subnet mask (or
2030 routing prefix) which is used to determine if an IP 2037 routing prefix) which is used to determine if an IP
2031 address belongs to the local subnet or needs to be 2038 address belongs to the local subnet or needs to be
2032 forwarded through a router. 2039 forwarded through a router.
2033 (Environment variable "netmask") 2040 (Environment variable "netmask")
2034 2041
2035 - Multicast TFTP Mode: 2042 - Multicast TFTP Mode:
2036 CONFIG_MCAST_TFTP 2043 CONFIG_MCAST_TFTP
2037 2044
2038 Defines whether you want to support multicast TFTP as per 2045 Defines whether you want to support multicast TFTP as per
2039 rfc-2090; for example to work with atftp. Lets lots of targets 2046 rfc-2090; for example to work with atftp. Lets lots of targets
2040 tftp down the same boot image concurrently. Note: the Ethernet 2047 tftp down the same boot image concurrently. Note: the Ethernet
2041 driver in use must provide a function: mcast() to join/leave a 2048 driver in use must provide a function: mcast() to join/leave a
2042 multicast group. 2049 multicast group.
2043 2050
2044 - BOOTP Recovery Mode: 2051 - BOOTP Recovery Mode:
2045 CONFIG_BOOTP_RANDOM_DELAY 2052 CONFIG_BOOTP_RANDOM_DELAY
2046 2053
2047 If you have many targets in a network that try to 2054 If you have many targets in a network that try to
2048 boot using BOOTP, you may want to avoid that all 2055 boot using BOOTP, you may want to avoid that all
2049 systems send out BOOTP requests at precisely the same 2056 systems send out BOOTP requests at precisely the same
2050 moment (which would happen for instance at recovery 2057 moment (which would happen for instance at recovery
2051 from a power failure, when all systems will try to 2058 from a power failure, when all systems will try to
2052 boot, thus flooding the BOOTP server. Defining 2059 boot, thus flooding the BOOTP server. Defining
2053 CONFIG_BOOTP_RANDOM_DELAY causes a random delay to be 2060 CONFIG_BOOTP_RANDOM_DELAY causes a random delay to be
2054 inserted before sending out BOOTP requests. The 2061 inserted before sending out BOOTP requests. The
2055 following delays are inserted then: 2062 following delays are inserted then:
2056 2063
2057 1st BOOTP request: delay 0 ... 1 sec 2064 1st BOOTP request: delay 0 ... 1 sec
2058 2nd BOOTP request: delay 0 ... 2 sec 2065 2nd BOOTP request: delay 0 ... 2 sec
2059 3rd BOOTP request: delay 0 ... 4 sec 2066 3rd BOOTP request: delay 0 ... 4 sec
2060 4th and following 2067 4th and following
2061 BOOTP requests: delay 0 ... 8 sec 2068 BOOTP requests: delay 0 ... 8 sec
2062 2069
2063 CONFIG_BOOTP_ID_CACHE_SIZE 2070 CONFIG_BOOTP_ID_CACHE_SIZE
2064 2071
2065 BOOTP packets are uniquely identified using a 32-bit ID. The 2072 BOOTP packets are uniquely identified using a 32-bit ID. The
2066 server will copy the ID from client requests to responses and 2073 server will copy the ID from client requests to responses and
2067 U-Boot will use this to determine if it is the destination of 2074 U-Boot will use this to determine if it is the destination of
2068 an incoming response. Some servers will check that addresses 2075 an incoming response. Some servers will check that addresses
2069 aren't in use before handing them out (usually using an ARP 2076 aren't in use before handing them out (usually using an ARP
2070 ping) and therefore take up to a few hundred milliseconds to 2077 ping) and therefore take up to a few hundred milliseconds to
2071 respond. Network congestion may also influence the time it 2078 respond. Network congestion may also influence the time it
2072 takes for a response to make it back to the client. If that 2079 takes for a response to make it back to the client. If that
2073 time is too long, U-Boot will retransmit requests. In order 2080 time is too long, U-Boot will retransmit requests. In order
2074 to allow earlier responses to still be accepted after these 2081 to allow earlier responses to still be accepted after these
2075 retransmissions, U-Boot's BOOTP client keeps a small cache of 2082 retransmissions, U-Boot's BOOTP client keeps a small cache of
2076 IDs. The CONFIG_BOOTP_ID_CACHE_SIZE controls the size of this 2083 IDs. The CONFIG_BOOTP_ID_CACHE_SIZE controls the size of this
2077 cache. The default is to keep IDs for up to four outstanding 2084 cache. The default is to keep IDs for up to four outstanding
2078 requests. Increasing this will allow U-Boot to accept offers 2085 requests. Increasing this will allow U-Boot to accept offers
2079 from a BOOTP client in networks with unusually high latency. 2086 from a BOOTP client in networks with unusually high latency.
2080 2087
2081 - DHCP Advanced Options: 2088 - DHCP Advanced Options:
2082 You can fine tune the DHCP functionality by defining 2089 You can fine tune the DHCP functionality by defining
2083 CONFIG_BOOTP_* symbols: 2090 CONFIG_BOOTP_* symbols:
2084 2091
2085 CONFIG_BOOTP_SUBNETMASK 2092 CONFIG_BOOTP_SUBNETMASK
2086 CONFIG_BOOTP_GATEWAY 2093 CONFIG_BOOTP_GATEWAY
2087 CONFIG_BOOTP_HOSTNAME 2094 CONFIG_BOOTP_HOSTNAME
2088 CONFIG_BOOTP_NISDOMAIN 2095 CONFIG_BOOTP_NISDOMAIN
2089 CONFIG_BOOTP_BOOTPATH 2096 CONFIG_BOOTP_BOOTPATH
2090 CONFIG_BOOTP_BOOTFILESIZE 2097 CONFIG_BOOTP_BOOTFILESIZE
2091 CONFIG_BOOTP_DNS 2098 CONFIG_BOOTP_DNS
2092 CONFIG_BOOTP_DNS2 2099 CONFIG_BOOTP_DNS2
2093 CONFIG_BOOTP_SEND_HOSTNAME 2100 CONFIG_BOOTP_SEND_HOSTNAME
2094 CONFIG_BOOTP_NTPSERVER 2101 CONFIG_BOOTP_NTPSERVER
2095 CONFIG_BOOTP_TIMEOFFSET 2102 CONFIG_BOOTP_TIMEOFFSET
2096 CONFIG_BOOTP_VENDOREX 2103 CONFIG_BOOTP_VENDOREX
2097 CONFIG_BOOTP_MAY_FAIL 2104 CONFIG_BOOTP_MAY_FAIL
2098 2105
2099 CONFIG_BOOTP_SERVERIP - TFTP server will be the serverip 2106 CONFIG_BOOTP_SERVERIP - TFTP server will be the serverip
2100 environment variable, not the BOOTP server. 2107 environment variable, not the BOOTP server.
2101 2108
2102 CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found 2109 CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found
2103 after the configured retry count, the call will fail 2110 after the configured retry count, the call will fail
2104 instead of starting over. This can be used to fail over 2111 instead of starting over. This can be used to fail over
2105 to Link-local IP address configuration if the DHCP server 2112 to Link-local IP address configuration if the DHCP server
2106 is not available. 2113 is not available.
2107 2114
2108 CONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS 2115 CONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS
2109 serverip from a DHCP server, it is possible that more 2116 serverip from a DHCP server, it is possible that more
2110 than one DNS serverip is offered to the client. 2117 than one DNS serverip is offered to the client.
2111 If CONFIG_BOOTP_DNS2 is enabled, the secondary DNS 2118 If CONFIG_BOOTP_DNS2 is enabled, the secondary DNS
2112 serverip will be stored in the additional environment 2119 serverip will be stored in the additional environment
2113 variable "dnsip2". The first DNS serverip is always 2120 variable "dnsip2". The first DNS serverip is always
2114 stored in the variable "dnsip", when CONFIG_BOOTP_DNS 2121 stored in the variable "dnsip", when CONFIG_BOOTP_DNS
2115 is defined. 2122 is defined.
2116 2123
2117 CONFIG_BOOTP_SEND_HOSTNAME - Some DHCP servers are capable 2124 CONFIG_BOOTP_SEND_HOSTNAME - Some DHCP servers are capable
2118 to do a dynamic update of a DNS server. To do this, they 2125 to do a dynamic update of a DNS server. To do this, they
2119 need the hostname of the DHCP requester. 2126 need the hostname of the DHCP requester.
2120 If CONFIG_BOOTP_SEND_HOSTNAME is defined, the content 2127 If CONFIG_BOOTP_SEND_HOSTNAME is defined, the content
2121 of the "hostname" environment variable is passed as 2128 of the "hostname" environment variable is passed as
2122 option 12 to the DHCP server. 2129 option 12 to the DHCP server.
2123 2130
2124 CONFIG_BOOTP_DHCP_REQUEST_DELAY 2131 CONFIG_BOOTP_DHCP_REQUEST_DELAY
2125 2132
2126 A 32bit value in microseconds for a delay between 2133 A 32bit value in microseconds for a delay between
2127 receiving a "DHCP Offer" and sending the "DHCP Request". 2134 receiving a "DHCP Offer" and sending the "DHCP Request".
2128 This fixes a problem with certain DHCP servers that don't 2135 This fixes a problem with certain DHCP servers that don't
2129 respond 100% of the time to a "DHCP request". E.g. On an 2136 respond 100% of the time to a "DHCP request". E.g. On an
2130 AT91RM9200 processor running at 180MHz, this delay needed 2137 AT91RM9200 processor running at 180MHz, this delay needed
2131 to be *at least* 15,000 usec before a Windows Server 2003 2138 to be *at least* 15,000 usec before a Windows Server 2003
2132 DHCP server would reply 100% of the time. I recommend at 2139 DHCP server would reply 100% of the time. I recommend at
2133 least 50,000 usec to be safe. The alternative is to hope 2140 least 50,000 usec to be safe. The alternative is to hope
2134 that one of the retries will be successful but note that 2141 that one of the retries will be successful but note that
2135 the DHCP timeout and retry process takes a longer than 2142 the DHCP timeout and retry process takes a longer than
2136 this delay. 2143 this delay.
2137 2144
2138 - Link-local IP address negotiation: 2145 - Link-local IP address negotiation:
2139 Negotiate with other link-local clients on the local network 2146 Negotiate with other link-local clients on the local network
2140 for an address that doesn't require explicit configuration. 2147 for an address that doesn't require explicit configuration.
2141 This is especially useful if a DHCP server cannot be guaranteed 2148 This is especially useful if a DHCP server cannot be guaranteed
2142 to exist in all environments that the device must operate. 2149 to exist in all environments that the device must operate.
2143 2150
2144 See doc/README.link-local for more information. 2151 See doc/README.link-local for more information.
2145 2152
2146 - CDP Options: 2153 - CDP Options:
2147 CONFIG_CDP_DEVICE_ID 2154 CONFIG_CDP_DEVICE_ID
2148 2155
2149 The device id used in CDP trigger frames. 2156 The device id used in CDP trigger frames.
2150 2157
2151 CONFIG_CDP_DEVICE_ID_PREFIX 2158 CONFIG_CDP_DEVICE_ID_PREFIX
2152 2159
2153 A two character string which is prefixed to the MAC address 2160 A two character string which is prefixed to the MAC address
2154 of the device. 2161 of the device.
2155 2162
2156 CONFIG_CDP_PORT_ID 2163 CONFIG_CDP_PORT_ID
2157 2164
2158 A printf format string which contains the ascii name of 2165 A printf format string which contains the ascii name of
2159 the port. Normally is set to "eth%d" which sets 2166 the port. Normally is set to "eth%d" which sets
2160 eth0 for the first Ethernet, eth1 for the second etc. 2167 eth0 for the first Ethernet, eth1 for the second etc.
2161 2168
2162 CONFIG_CDP_CAPABILITIES 2169 CONFIG_CDP_CAPABILITIES
2163 2170
2164 A 32bit integer which indicates the device capabilities; 2171 A 32bit integer which indicates the device capabilities;
2165 0x00000010 for a normal host which does not forwards. 2172 0x00000010 for a normal host which does not forwards.
2166 2173
2167 CONFIG_CDP_VERSION 2174 CONFIG_CDP_VERSION
2168 2175
2169 An ascii string containing the version of the software. 2176 An ascii string containing the version of the software.
2170 2177
2171 CONFIG_CDP_PLATFORM 2178 CONFIG_CDP_PLATFORM
2172 2179
2173 An ascii string containing the name of the platform. 2180 An ascii string containing the name of the platform.
2174 2181
2175 CONFIG_CDP_TRIGGER 2182 CONFIG_CDP_TRIGGER
2176 2183
2177 A 32bit integer sent on the trigger. 2184 A 32bit integer sent on the trigger.
2178 2185
2179 CONFIG_CDP_POWER_CONSUMPTION 2186 CONFIG_CDP_POWER_CONSUMPTION
2180 2187
2181 A 16bit integer containing the power consumption of the 2188 A 16bit integer containing the power consumption of the
2182 device in .1 of milliwatts. 2189 device in .1 of milliwatts.
2183 2190
2184 CONFIG_CDP_APPLIANCE_VLAN_TYPE 2191 CONFIG_CDP_APPLIANCE_VLAN_TYPE
2185 2192
2186 A byte containing the id of the VLAN. 2193 A byte containing the id of the VLAN.
2187 2194
2188 - Status LED: CONFIG_STATUS_LED 2195 - Status LED: CONFIG_STATUS_LED
2189 2196
2190 Several configurations allow to display the current 2197 Several configurations allow to display the current
2191 status using a LED. For instance, the LED will blink 2198 status using a LED. For instance, the LED will blink
2192 fast while running U-Boot code, stop blinking as 2199 fast while running U-Boot code, stop blinking as
2193 soon as a reply to a BOOTP request was received, and 2200 soon as a reply to a BOOTP request was received, and
2194 start blinking slow once the Linux kernel is running 2201 start blinking slow once the Linux kernel is running
2195 (supported by a status LED driver in the Linux 2202 (supported by a status LED driver in the Linux
2196 kernel). Defining CONFIG_STATUS_LED enables this 2203 kernel). Defining CONFIG_STATUS_LED enables this
2197 feature in U-Boot. 2204 feature in U-Boot.
2198 2205
2199 Additional options: 2206 Additional options:
2200 2207
2201 CONFIG_GPIO_LED 2208 CONFIG_GPIO_LED
2202 The status LED can be connected to a GPIO pin. 2209 The status LED can be connected to a GPIO pin.
2203 In such cases, the gpio_led driver can be used as a 2210 In such cases, the gpio_led driver can be used as a
2204 status LED backend implementation. Define CONFIG_GPIO_LED 2211 status LED backend implementation. Define CONFIG_GPIO_LED
2205 to include the gpio_led driver in the U-Boot binary. 2212 to include the gpio_led driver in the U-Boot binary.
2206 2213
2207 CONFIG_GPIO_LED_INVERTED_TABLE 2214 CONFIG_GPIO_LED_INVERTED_TABLE
2208 Some GPIO connected LEDs may have inverted polarity in which 2215 Some GPIO connected LEDs may have inverted polarity in which
2209 case the GPIO high value corresponds to LED off state and 2216 case the GPIO high value corresponds to LED off state and
2210 GPIO low value corresponds to LED on state. 2217 GPIO low value corresponds to LED on state.
2211 In such cases CONFIG_GPIO_LED_INVERTED_TABLE may be defined 2218 In such cases CONFIG_GPIO_LED_INVERTED_TABLE may be defined
2212 with a list of GPIO LEDs that have inverted polarity. 2219 with a list of GPIO LEDs that have inverted polarity.
2213 2220
2214 - CAN Support: CONFIG_CAN_DRIVER 2221 - CAN Support: CONFIG_CAN_DRIVER
2215 2222
2216 Defining CONFIG_CAN_DRIVER enables CAN driver support 2223 Defining CONFIG_CAN_DRIVER enables CAN driver support
2217 on those systems that support this (optional) 2224 on those systems that support this (optional)
2218 feature, like the TQM8xxL modules. 2225 feature, like the TQM8xxL modules.
2219 2226
2220 - I2C Support: CONFIG_SYS_I2C 2227 - I2C Support: CONFIG_SYS_I2C
2221 2228
2222 This enable the NEW i2c subsystem, and will allow you to use 2229 This enable the NEW i2c subsystem, and will allow you to use
2223 i2c commands at the u-boot command line (as long as you set 2230 i2c commands at the u-boot command line (as long as you set
2224 CONFIG_CMD_I2C in CONFIG_COMMANDS) and communicate with i2c 2231 CONFIG_CMD_I2C in CONFIG_COMMANDS) and communicate with i2c
2225 based realtime clock chips or other i2c devices. See 2232 based realtime clock chips or other i2c devices. See
2226 common/cmd_i2c.c for a description of the command line 2233 common/cmd_i2c.c for a description of the command line
2227 interface. 2234 interface.
2228 2235
2229 ported i2c driver to the new framework: 2236 ported i2c driver to the new framework:
2230 - drivers/i2c/soft_i2c.c: 2237 - drivers/i2c/soft_i2c.c:
2231 - activate first bus with CONFIG_SYS_I2C_SOFT define 2238 - activate first bus with CONFIG_SYS_I2C_SOFT define
2232 CONFIG_SYS_I2C_SOFT_SPEED and CONFIG_SYS_I2C_SOFT_SLAVE 2239 CONFIG_SYS_I2C_SOFT_SPEED and CONFIG_SYS_I2C_SOFT_SLAVE
2233 for defining speed and slave address 2240 for defining speed and slave address
2234 - activate second bus with I2C_SOFT_DECLARATIONS2 define 2241 - activate second bus with I2C_SOFT_DECLARATIONS2 define
2235 CONFIG_SYS_I2C_SOFT_SPEED_2 and CONFIG_SYS_I2C_SOFT_SLAVE_2 2242 CONFIG_SYS_I2C_SOFT_SPEED_2 and CONFIG_SYS_I2C_SOFT_SLAVE_2
2236 for defining speed and slave address 2243 for defining speed and slave address
2237 - activate third bus with I2C_SOFT_DECLARATIONS3 define 2244 - activate third bus with I2C_SOFT_DECLARATIONS3 define
2238 CONFIG_SYS_I2C_SOFT_SPEED_3 and CONFIG_SYS_I2C_SOFT_SLAVE_3 2245 CONFIG_SYS_I2C_SOFT_SPEED_3 and CONFIG_SYS_I2C_SOFT_SLAVE_3
2239 for defining speed and slave address 2246 for defining speed and slave address
2240 - activate fourth bus with I2C_SOFT_DECLARATIONS4 define 2247 - activate fourth bus with I2C_SOFT_DECLARATIONS4 define
2241 CONFIG_SYS_I2C_SOFT_SPEED_4 and CONFIG_SYS_I2C_SOFT_SLAVE_4 2248 CONFIG_SYS_I2C_SOFT_SPEED_4 and CONFIG_SYS_I2C_SOFT_SLAVE_4
2242 for defining speed and slave address 2249 for defining speed and slave address
2243 2250
2244 - drivers/i2c/fsl_i2c.c: 2251 - drivers/i2c/fsl_i2c.c:
2245 - activate i2c driver with CONFIG_SYS_I2C_FSL 2252 - activate i2c driver with CONFIG_SYS_I2C_FSL
2246 define CONFIG_SYS_FSL_I2C_OFFSET for setting the register 2253 define CONFIG_SYS_FSL_I2C_OFFSET for setting the register
2247 offset CONFIG_SYS_FSL_I2C_SPEED for the i2c speed and 2254 offset CONFIG_SYS_FSL_I2C_SPEED for the i2c speed and
2248 CONFIG_SYS_FSL_I2C_SLAVE for the slave addr of the first 2255 CONFIG_SYS_FSL_I2C_SLAVE for the slave addr of the first
2249 bus. 2256 bus.
2250 - If your board supports a second fsl i2c bus, define 2257 - If your board supports a second fsl i2c bus, define
2251 CONFIG_SYS_FSL_I2C2_OFFSET for the register offset 2258 CONFIG_SYS_FSL_I2C2_OFFSET for the register offset
2252 CONFIG_SYS_FSL_I2C2_SPEED for the speed and 2259 CONFIG_SYS_FSL_I2C2_SPEED for the speed and
2253 CONFIG_SYS_FSL_I2C2_SLAVE for the slave address of the 2260 CONFIG_SYS_FSL_I2C2_SLAVE for the slave address of the
2254 second bus. 2261 second bus.
2255 2262
2256 - drivers/i2c/tegra_i2c.c: 2263 - drivers/i2c/tegra_i2c.c:
2257 - activate this driver with CONFIG_SYS_I2C_TEGRA 2264 - activate this driver with CONFIG_SYS_I2C_TEGRA
2258 - This driver adds 4 i2c buses with a fix speed from 2265 - This driver adds 4 i2c buses with a fix speed from
2259 100000 and the slave addr 0! 2266 100000 and the slave addr 0!
2260 2267
2261 - drivers/i2c/ppc4xx_i2c.c 2268 - drivers/i2c/ppc4xx_i2c.c
2262 - activate this driver with CONFIG_SYS_I2C_PPC4XX 2269 - activate this driver with CONFIG_SYS_I2C_PPC4XX
2263 - CONFIG_SYS_I2C_PPC4XX_CH0 activate hardware channel 0 2270 - CONFIG_SYS_I2C_PPC4XX_CH0 activate hardware channel 0
2264 - CONFIG_SYS_I2C_PPC4XX_CH1 activate hardware channel 1 2271 - CONFIG_SYS_I2C_PPC4XX_CH1 activate hardware channel 1
2265 2272
2266 - drivers/i2c/i2c_mxc.c 2273 - drivers/i2c/i2c_mxc.c
2267 - activate this driver with CONFIG_SYS_I2C_MXC 2274 - activate this driver with CONFIG_SYS_I2C_MXC
2268 - define speed for bus 1 with CONFIG_SYS_MXC_I2C1_SPEED 2275 - define speed for bus 1 with CONFIG_SYS_MXC_I2C1_SPEED
2269 - define slave for bus 1 with CONFIG_SYS_MXC_I2C1_SLAVE 2276 - define slave for bus 1 with CONFIG_SYS_MXC_I2C1_SLAVE
2270 - define speed for bus 2 with CONFIG_SYS_MXC_I2C2_SPEED 2277 - define speed for bus 2 with CONFIG_SYS_MXC_I2C2_SPEED
2271 - define slave for bus 2 with CONFIG_SYS_MXC_I2C2_SLAVE 2278 - define slave for bus 2 with CONFIG_SYS_MXC_I2C2_SLAVE
2272 - define speed for bus 3 with CONFIG_SYS_MXC_I2C3_SPEED 2279 - define speed for bus 3 with CONFIG_SYS_MXC_I2C3_SPEED
2273 - define slave for bus 3 with CONFIG_SYS_MXC_I2C3_SLAVE 2280 - define slave for bus 3 with CONFIG_SYS_MXC_I2C3_SLAVE
2274 If thoses defines are not set, default value is 100000 2281 If thoses defines are not set, default value is 100000
2275 for speed, and 0 for slave. 2282 for speed, and 0 for slave.
2276 2283
2277 - drivers/i2c/rcar_i2c.c: 2284 - drivers/i2c/rcar_i2c.c:
2278 - activate this driver with CONFIG_SYS_I2C_RCAR 2285 - activate this driver with CONFIG_SYS_I2C_RCAR
2279 - This driver adds 4 i2c buses 2286 - This driver adds 4 i2c buses
2280 2287
2281 - CONFIG_SYS_RCAR_I2C0_BASE for setting the register channel 0 2288 - CONFIG_SYS_RCAR_I2C0_BASE for setting the register channel 0
2282 - CONFIG_SYS_RCAR_I2C0_SPEED for for the speed channel 0 2289 - CONFIG_SYS_RCAR_I2C0_SPEED for for the speed channel 0
2283 - CONFIG_SYS_RCAR_I2C1_BASE for setting the register channel 1 2290 - CONFIG_SYS_RCAR_I2C1_BASE for setting the register channel 1
2284 - CONFIG_SYS_RCAR_I2C1_SPEED for for the speed channel 1 2291 - CONFIG_SYS_RCAR_I2C1_SPEED for for the speed channel 1
2285 - CONFIG_SYS_RCAR_I2C2_BASE for setting the register channel 2 2292 - CONFIG_SYS_RCAR_I2C2_BASE for setting the register channel 2
2286 - CONFIG_SYS_RCAR_I2C2_SPEED for for the speed channel 2 2293 - CONFIG_SYS_RCAR_I2C2_SPEED for for the speed channel 2
2287 - CONFIG_SYS_RCAR_I2C3_BASE for setting the register channel 3 2294 - CONFIG_SYS_RCAR_I2C3_BASE for setting the register channel 3
2288 - CONFIG_SYS_RCAR_I2C3_SPEED for for the speed channel 3 2295 - CONFIG_SYS_RCAR_I2C3_SPEED for for the speed channel 3
2289 - CONFIF_SYS_RCAR_I2C_NUM_CONTROLLERS for number of i2c buses 2296 - CONFIF_SYS_RCAR_I2C_NUM_CONTROLLERS for number of i2c buses
2290 2297
2291 - drivers/i2c/sh_i2c.c: 2298 - drivers/i2c/sh_i2c.c:
2292 - activate this driver with CONFIG_SYS_I2C_SH 2299 - activate this driver with CONFIG_SYS_I2C_SH
2293 - This driver adds from 2 to 5 i2c buses 2300 - This driver adds from 2 to 5 i2c buses
2294 2301
2295 - CONFIG_SYS_I2C_SH_BASE0 for setting the register channel 0 2302 - CONFIG_SYS_I2C_SH_BASE0 for setting the register channel 0
2296 - CONFIG_SYS_I2C_SH_SPEED0 for for the speed channel 0 2303 - CONFIG_SYS_I2C_SH_SPEED0 for for the speed channel 0
2297 - CONFIG_SYS_I2C_SH_BASE1 for setting the register channel 1 2304 - CONFIG_SYS_I2C_SH_BASE1 for setting the register channel 1
2298 - CONFIG_SYS_I2C_SH_SPEED1 for for the speed channel 1 2305 - CONFIG_SYS_I2C_SH_SPEED1 for for the speed channel 1
2299 - CONFIG_SYS_I2C_SH_BASE2 for setting the register channel 2 2306 - CONFIG_SYS_I2C_SH_BASE2 for setting the register channel 2
2300 - CONFIG_SYS_I2C_SH_SPEED2 for for the speed channel 2 2307 - CONFIG_SYS_I2C_SH_SPEED2 for for the speed channel 2
2301 - CONFIG_SYS_I2C_SH_BASE3 for setting the register channel 3 2308 - CONFIG_SYS_I2C_SH_BASE3 for setting the register channel 3
2302 - CONFIG_SYS_I2C_SH_SPEED3 for for the speed channel 3 2309 - CONFIG_SYS_I2C_SH_SPEED3 for for the speed channel 3
2303 - CONFIG_SYS_I2C_SH_BASE4 for setting the register channel 4 2310 - CONFIG_SYS_I2C_SH_BASE4 for setting the register channel 4
2304 - CONFIG_SYS_I2C_SH_SPEED4 for for the speed channel 4 2311 - CONFIG_SYS_I2C_SH_SPEED4 for for the speed channel 4
2305 - CONFIG_SYS_I2C_SH_BASE5 for setting the register channel 5 2312 - CONFIG_SYS_I2C_SH_BASE5 for setting the register channel 5
2306 - CONFIG_SYS_I2C_SH_SPEED5 for for the speed channel 5 2313 - CONFIG_SYS_I2C_SH_SPEED5 for for the speed channel 5
2307 - CONFIF_SYS_I2C_SH_NUM_CONTROLLERS for nummber of i2c buses 2314 - CONFIF_SYS_I2C_SH_NUM_CONTROLLERS for nummber of i2c buses
2308 2315
2309 - drivers/i2c/omap24xx_i2c.c 2316 - drivers/i2c/omap24xx_i2c.c
2310 - activate this driver with CONFIG_SYS_I2C_OMAP24XX 2317 - activate this driver with CONFIG_SYS_I2C_OMAP24XX
2311 - CONFIG_SYS_OMAP24_I2C_SPEED speed channel 0 2318 - CONFIG_SYS_OMAP24_I2C_SPEED speed channel 0
2312 - CONFIG_SYS_OMAP24_I2C_SLAVE slave addr channel 0 2319 - CONFIG_SYS_OMAP24_I2C_SLAVE slave addr channel 0
2313 - CONFIG_SYS_OMAP24_I2C_SPEED1 speed channel 1 2320 - CONFIG_SYS_OMAP24_I2C_SPEED1 speed channel 1
2314 - CONFIG_SYS_OMAP24_I2C_SLAVE1 slave addr channel 1 2321 - CONFIG_SYS_OMAP24_I2C_SLAVE1 slave addr channel 1
2315 - CONFIG_SYS_OMAP24_I2C_SPEED2 speed channel 2 2322 - CONFIG_SYS_OMAP24_I2C_SPEED2 speed channel 2
2316 - CONFIG_SYS_OMAP24_I2C_SLAVE2 slave addr channel 2 2323 - CONFIG_SYS_OMAP24_I2C_SLAVE2 slave addr channel 2
2317 - CONFIG_SYS_OMAP24_I2C_SPEED3 speed channel 3 2324 - CONFIG_SYS_OMAP24_I2C_SPEED3 speed channel 3
2318 - CONFIG_SYS_OMAP24_I2C_SLAVE3 slave addr channel 3 2325 - CONFIG_SYS_OMAP24_I2C_SLAVE3 slave addr channel 3
2319 - CONFIG_SYS_OMAP24_I2C_SPEED4 speed channel 4 2326 - CONFIG_SYS_OMAP24_I2C_SPEED4 speed channel 4
2320 - CONFIG_SYS_OMAP24_I2C_SLAVE4 slave addr channel 4 2327 - CONFIG_SYS_OMAP24_I2C_SLAVE4 slave addr channel 4
2321 2328
2322 - drivers/i2c/zynq_i2c.c 2329 - drivers/i2c/zynq_i2c.c
2323 - activate this driver with CONFIG_SYS_I2C_ZYNQ 2330 - activate this driver with CONFIG_SYS_I2C_ZYNQ
2324 - set CONFIG_SYS_I2C_ZYNQ_SPEED for speed setting 2331 - set CONFIG_SYS_I2C_ZYNQ_SPEED for speed setting
2325 - set CONFIG_SYS_I2C_ZYNQ_SLAVE for slave addr 2332 - set CONFIG_SYS_I2C_ZYNQ_SLAVE for slave addr
2326 2333
2327 - drivers/i2c/s3c24x0_i2c.c: 2334 - drivers/i2c/s3c24x0_i2c.c:
2328 - activate this driver with CONFIG_SYS_I2C_S3C24X0 2335 - activate this driver with CONFIG_SYS_I2C_S3C24X0
2329 - This driver adds i2c buses (11 for Exynos5250, Exynos5420 2336 - This driver adds i2c buses (11 for Exynos5250, Exynos5420
2330 9 i2c buses for Exynos4 and 1 for S3C24X0 SoCs from Samsung) 2337 9 i2c buses for Exynos4 and 1 for S3C24X0 SoCs from Samsung)
2331 with a fix speed from 100000 and the slave addr 0! 2338 with a fix speed from 100000 and the slave addr 0!
2332 2339
2333 - drivers/i2c/ihs_i2c.c 2340 - drivers/i2c/ihs_i2c.c
2334 - activate this driver with CONFIG_SYS_I2C_IHS 2341 - activate this driver with CONFIG_SYS_I2C_IHS
2335 - CONFIG_SYS_I2C_IHS_CH0 activate hardware channel 0 2342 - CONFIG_SYS_I2C_IHS_CH0 activate hardware channel 0
2336 - CONFIG_SYS_I2C_IHS_SPEED_0 speed channel 0 2343 - CONFIG_SYS_I2C_IHS_SPEED_0 speed channel 0
2337 - CONFIG_SYS_I2C_IHS_SLAVE_0 slave addr channel 0 2344 - CONFIG_SYS_I2C_IHS_SLAVE_0 slave addr channel 0
2338 - CONFIG_SYS_I2C_IHS_CH1 activate hardware channel 1 2345 - CONFIG_SYS_I2C_IHS_CH1 activate hardware channel 1
2339 - CONFIG_SYS_I2C_IHS_SPEED_1 speed channel 1 2346 - CONFIG_SYS_I2C_IHS_SPEED_1 speed channel 1
2340 - CONFIG_SYS_I2C_IHS_SLAVE_1 slave addr channel 1 2347 - CONFIG_SYS_I2C_IHS_SLAVE_1 slave addr channel 1
2341 - CONFIG_SYS_I2C_IHS_CH2 activate hardware channel 2 2348 - CONFIG_SYS_I2C_IHS_CH2 activate hardware channel 2
2342 - CONFIG_SYS_I2C_IHS_SPEED_2 speed channel 2 2349 - CONFIG_SYS_I2C_IHS_SPEED_2 speed channel 2
2343 - CONFIG_SYS_I2C_IHS_SLAVE_2 slave addr channel 2 2350 - CONFIG_SYS_I2C_IHS_SLAVE_2 slave addr channel 2
2344 - CONFIG_SYS_I2C_IHS_CH3 activate hardware channel 3 2351 - CONFIG_SYS_I2C_IHS_CH3 activate hardware channel 3
2345 - CONFIG_SYS_I2C_IHS_SPEED_3 speed channel 3 2352 - CONFIG_SYS_I2C_IHS_SPEED_3 speed channel 3
2346 - CONFIG_SYS_I2C_IHS_SLAVE_3 slave addr channel 3 2353 - CONFIG_SYS_I2C_IHS_SLAVE_3 slave addr channel 3
2347 2354
2348 additional defines: 2355 additional defines:
2349 2356
2350 CONFIG_SYS_NUM_I2C_BUSES 2357 CONFIG_SYS_NUM_I2C_BUSES
2351 Hold the number of i2c busses you want to use. If you 2358 Hold the number of i2c busses you want to use. If you
2352 don't use/have i2c muxes on your i2c bus, this 2359 don't use/have i2c muxes on your i2c bus, this
2353 is equal to CONFIG_SYS_NUM_I2C_ADAPTERS, and you can 2360 is equal to CONFIG_SYS_NUM_I2C_ADAPTERS, and you can
2354 omit this define. 2361 omit this define.
2355 2362
2356 CONFIG_SYS_I2C_DIRECT_BUS 2363 CONFIG_SYS_I2C_DIRECT_BUS
2357 define this, if you don't use i2c muxes on your hardware. 2364 define this, if you don't use i2c muxes on your hardware.
2358 if CONFIG_SYS_I2C_MAX_HOPS is not defined or == 0 you can 2365 if CONFIG_SYS_I2C_MAX_HOPS is not defined or == 0 you can
2359 omit this define. 2366 omit this define.
2360 2367
2361 CONFIG_SYS_I2C_MAX_HOPS 2368 CONFIG_SYS_I2C_MAX_HOPS
2362 define how many muxes are maximal consecutively connected 2369 define how many muxes are maximal consecutively connected
2363 on one i2c bus. If you not use i2c muxes, omit this 2370 on one i2c bus. If you not use i2c muxes, omit this
2364 define. 2371 define.
2365 2372
2366 CONFIG_SYS_I2C_BUSES 2373 CONFIG_SYS_I2C_BUSES
2367 hold a list of busses you want to use, only used if 2374 hold a list of busses you want to use, only used if
2368 CONFIG_SYS_I2C_DIRECT_BUS is not defined, for example 2375 CONFIG_SYS_I2C_DIRECT_BUS is not defined, for example
2369 a board with CONFIG_SYS_I2C_MAX_HOPS = 1 and 2376 a board with CONFIG_SYS_I2C_MAX_HOPS = 1 and
2370 CONFIG_SYS_NUM_I2C_BUSES = 9: 2377 CONFIG_SYS_NUM_I2C_BUSES = 9:
2371 2378
2372 CONFIG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \ 2379 CONFIG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \
2373 {0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \ 2380 {0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \
2374 {0, {{I2C_MUX_PCA9547, 0x70, 2}}}, \ 2381 {0, {{I2C_MUX_PCA9547, 0x70, 2}}}, \
2375 {0, {{I2C_MUX_PCA9547, 0x70, 3}}}, \ 2382 {0, {{I2C_MUX_PCA9547, 0x70, 3}}}, \
2376 {0, {{I2C_MUX_PCA9547, 0x70, 4}}}, \ 2383 {0, {{I2C_MUX_PCA9547, 0x70, 4}}}, \
2377 {0, {{I2C_MUX_PCA9547, 0x70, 5}}}, \ 2384 {0, {{I2C_MUX_PCA9547, 0x70, 5}}}, \
2378 {1, {I2C_NULL_HOP}}, \ 2385 {1, {I2C_NULL_HOP}}, \
2379 {1, {{I2C_MUX_PCA9544, 0x72, 1}}}, \ 2386 {1, {{I2C_MUX_PCA9544, 0x72, 1}}}, \
2380 {1, {{I2C_MUX_PCA9544, 0x72, 2}}}, \ 2387 {1, {{I2C_MUX_PCA9544, 0x72, 2}}}, \
2381 } 2388 }
2382 2389
2383 which defines 2390 which defines
2384 bus 0 on adapter 0 without a mux 2391 bus 0 on adapter 0 without a mux
2385 bus 1 on adapter 0 with a PCA9547 on address 0x70 port 1 2392 bus 1 on adapter 0 with a PCA9547 on address 0x70 port 1
2386 bus 2 on adapter 0 with a PCA9547 on address 0x70 port 2 2393 bus 2 on adapter 0 with a PCA9547 on address 0x70 port 2
2387 bus 3 on adapter 0 with a PCA9547 on address 0x70 port 3 2394 bus 3 on adapter 0 with a PCA9547 on address 0x70 port 3
2388 bus 4 on adapter 0 with a PCA9547 on address 0x70 port 4 2395 bus 4 on adapter 0 with a PCA9547 on address 0x70 port 4
2389 bus 5 on adapter 0 with a PCA9547 on address 0x70 port 5 2396 bus 5 on adapter 0 with a PCA9547 on address 0x70 port 5
2390 bus 6 on adapter 1 without a mux 2397 bus 6 on adapter 1 without a mux
2391 bus 7 on adapter 1 with a PCA9544 on address 0x72 port 1 2398 bus 7 on adapter 1 with a PCA9544 on address 0x72 port 1
2392 bus 8 on adapter 1 with a PCA9544 on address 0x72 port 2 2399 bus 8 on adapter 1 with a PCA9544 on address 0x72 port 2
2393 2400
2394 If you do not have i2c muxes on your board, omit this define. 2401 If you do not have i2c muxes on your board, omit this define.
2395 2402
2396 - Legacy I2C Support: CONFIG_HARD_I2C 2403 - Legacy I2C Support: CONFIG_HARD_I2C
2397 2404
2398 NOTE: It is intended to move drivers to CONFIG_SYS_I2C which 2405 NOTE: It is intended to move drivers to CONFIG_SYS_I2C which
2399 provides the following compelling advantages: 2406 provides the following compelling advantages:
2400 2407
2401 - more than one i2c adapter is usable 2408 - more than one i2c adapter is usable
2402 - approved multibus support 2409 - approved multibus support
2403 - better i2c mux support 2410 - better i2c mux support
2404 2411
2405 ** Please consider updating your I2C driver now. ** 2412 ** Please consider updating your I2C driver now. **
2406 2413
2407 These enable legacy I2C serial bus commands. Defining 2414 These enable legacy I2C serial bus commands. Defining
2408 CONFIG_HARD_I2C will include the appropriate I2C driver 2415 CONFIG_HARD_I2C will include the appropriate I2C driver
2409 for the selected CPU. 2416 for the selected CPU.
2410 2417
2411 This will allow you to use i2c commands at the u-boot 2418 This will allow you to use i2c commands at the u-boot
2412 command line (as long as you set CONFIG_CMD_I2C in 2419 command line (as long as you set CONFIG_CMD_I2C in
2413 CONFIG_COMMANDS) and communicate with i2c based realtime 2420 CONFIG_COMMANDS) and communicate with i2c based realtime
2414 clock chips. See common/cmd_i2c.c for a description of the 2421 clock chips. See common/cmd_i2c.c for a description of the
2415 command line interface. 2422 command line interface.
2416 2423
2417 CONFIG_HARD_I2C selects a hardware I2C controller. 2424 CONFIG_HARD_I2C selects a hardware I2C controller.
2418 2425
2419 There are several other quantities that must also be 2426 There are several other quantities that must also be
2420 defined when you define CONFIG_HARD_I2C. 2427 defined when you define CONFIG_HARD_I2C.
2421 2428
2422 In both cases you will need to define CONFIG_SYS_I2C_SPEED 2429 In both cases you will need to define CONFIG_SYS_I2C_SPEED
2423 to be the frequency (in Hz) at which you wish your i2c bus 2430 to be the frequency (in Hz) at which you wish your i2c bus
2424 to run and CONFIG_SYS_I2C_SLAVE to be the address of this node (ie 2431 to run and CONFIG_SYS_I2C_SLAVE to be the address of this node (ie
2425 the CPU's i2c node address). 2432 the CPU's i2c node address).
2426 2433
2427 Now, the u-boot i2c code for the mpc8xx 2434 Now, the u-boot i2c code for the mpc8xx
2428 (arch/powerpc/cpu/mpc8xx/i2c.c) sets the CPU up as a master node 2435 (arch/powerpc/cpu/mpc8xx/i2c.c) sets the CPU up as a master node
2429 and so its address should therefore be cleared to 0 (See, 2436 and so its address should therefore be cleared to 0 (See,
2430 eg, MPC823e User's Manual p.16-473). So, set 2437 eg, MPC823e User's Manual p.16-473). So, set
2431 CONFIG_SYS_I2C_SLAVE to 0. 2438 CONFIG_SYS_I2C_SLAVE to 0.
2432 2439
2433 CONFIG_SYS_I2C_INIT_MPC5XXX 2440 CONFIG_SYS_I2C_INIT_MPC5XXX
2434 2441
2435 When a board is reset during an i2c bus transfer 2442 When a board is reset during an i2c bus transfer
2436 chips might think that the current transfer is still 2443 chips might think that the current transfer is still
2437 in progress. Reset the slave devices by sending start 2444 in progress. Reset the slave devices by sending start
2438 commands until the slave device responds. 2445 commands until the slave device responds.
2439 2446
2440 That's all that's required for CONFIG_HARD_I2C. 2447 That's all that's required for CONFIG_HARD_I2C.
2441 2448
2442 If you use the software i2c interface (CONFIG_SYS_I2C_SOFT) 2449 If you use the software i2c interface (CONFIG_SYS_I2C_SOFT)
2443 then the following macros need to be defined (examples are 2450 then the following macros need to be defined (examples are
2444 from include/configs/lwmon.h): 2451 from include/configs/lwmon.h):
2445 2452
2446 I2C_INIT 2453 I2C_INIT
2447 2454
2448 (Optional). Any commands necessary to enable the I2C 2455 (Optional). Any commands necessary to enable the I2C
2449 controller or configure ports. 2456 controller or configure ports.
2450 2457
2451 eg: #define I2C_INIT (immr->im_cpm.cp_pbdir |= PB_SCL) 2458 eg: #define I2C_INIT (immr->im_cpm.cp_pbdir |= PB_SCL)
2452 2459
2453 I2C_PORT 2460 I2C_PORT
2454 2461
2455 (Only for MPC8260 CPU). The I/O port to use (the code 2462 (Only for MPC8260 CPU). The I/O port to use (the code
2456 assumes both bits are on the same port). Valid values 2463 assumes both bits are on the same port). Valid values
2457 are 0..3 for ports A..D. 2464 are 0..3 for ports A..D.
2458 2465
2459 I2C_ACTIVE 2466 I2C_ACTIVE
2460 2467
2461 The code necessary to make the I2C data line active 2468 The code necessary to make the I2C data line active
2462 (driven). If the data line is open collector, this 2469 (driven). If the data line is open collector, this
2463 define can be null. 2470 define can be null.
2464 2471
2465 eg: #define I2C_ACTIVE (immr->im_cpm.cp_pbdir |= PB_SDA) 2472 eg: #define I2C_ACTIVE (immr->im_cpm.cp_pbdir |= PB_SDA)
2466 2473
2467 I2C_TRISTATE 2474 I2C_TRISTATE
2468 2475
2469 The code necessary to make the I2C data line tri-stated 2476 The code necessary to make the I2C data line tri-stated
2470 (inactive). If the data line is open collector, this 2477 (inactive). If the data line is open collector, this
2471 define can be null. 2478 define can be null.
2472 2479
2473 eg: #define I2C_TRISTATE (immr->im_cpm.cp_pbdir &= ~PB_SDA) 2480 eg: #define I2C_TRISTATE (immr->im_cpm.cp_pbdir &= ~PB_SDA)
2474 2481
2475 I2C_READ 2482 I2C_READ
2476 2483
2477 Code that returns true if the I2C data line is high, 2484 Code that returns true if the I2C data line is high,
2478 false if it is low. 2485 false if it is low.
2479 2486
2480 eg: #define I2C_READ ((immr->im_cpm.cp_pbdat & PB_SDA) != 0) 2487 eg: #define I2C_READ ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
2481 2488
2482 I2C_SDA(bit) 2489 I2C_SDA(bit)
2483 2490
2484 If <bit> is true, sets the I2C data line high. If it 2491 If <bit> is true, sets the I2C data line high. If it
2485 is false, it clears it (low). 2492 is false, it clears it (low).
2486 2493
2487 eg: #define I2C_SDA(bit) \ 2494 eg: #define I2C_SDA(bit) \
2488 if(bit) immr->im_cpm.cp_pbdat |= PB_SDA; \ 2495 if(bit) immr->im_cpm.cp_pbdat |= PB_SDA; \
2489 else immr->im_cpm.cp_pbdat &= ~PB_SDA 2496 else immr->im_cpm.cp_pbdat &= ~PB_SDA
2490 2497
2491 I2C_SCL(bit) 2498 I2C_SCL(bit)
2492 2499
2493 If <bit> is true, sets the I2C clock line high. If it 2500 If <bit> is true, sets the I2C clock line high. If it
2494 is false, it clears it (low). 2501 is false, it clears it (low).
2495 2502
2496 eg: #define I2C_SCL(bit) \ 2503 eg: #define I2C_SCL(bit) \
2497 if(bit) immr->im_cpm.cp_pbdat |= PB_SCL; \ 2504 if(bit) immr->im_cpm.cp_pbdat |= PB_SCL; \
2498 else immr->im_cpm.cp_pbdat &= ~PB_SCL 2505 else immr->im_cpm.cp_pbdat &= ~PB_SCL
2499 2506
2500 I2C_DELAY 2507 I2C_DELAY
2501 2508
2502 This delay is invoked four times per clock cycle so this 2509 This delay is invoked four times per clock cycle so this
2503 controls the rate of data transfer. The data rate thus 2510 controls the rate of data transfer. The data rate thus
2504 is 1 / (I2C_DELAY * 4). Often defined to be something 2511 is 1 / (I2C_DELAY * 4). Often defined to be something
2505 like: 2512 like:
2506 2513
2507 #define I2C_DELAY udelay(2) 2514 #define I2C_DELAY udelay(2)
2508 2515
2509 CONFIG_SOFT_I2C_GPIO_SCL / CONFIG_SOFT_I2C_GPIO_SDA 2516 CONFIG_SOFT_I2C_GPIO_SCL / CONFIG_SOFT_I2C_GPIO_SDA
2510 2517
2511 If your arch supports the generic GPIO framework (asm/gpio.h), 2518 If your arch supports the generic GPIO framework (asm/gpio.h),
2512 then you may alternatively define the two GPIOs that are to be 2519 then you may alternatively define the two GPIOs that are to be
2513 used as SCL / SDA. Any of the previous I2C_xxx macros will 2520 used as SCL / SDA. Any of the previous I2C_xxx macros will
2514 have GPIO-based defaults assigned to them as appropriate. 2521 have GPIO-based defaults assigned to them as appropriate.
2515 2522
2516 You should define these to the GPIO value as given directly to 2523 You should define these to the GPIO value as given directly to
2517 the generic GPIO functions. 2524 the generic GPIO functions.
2518 2525
2519 CONFIG_SYS_I2C_INIT_BOARD 2526 CONFIG_SYS_I2C_INIT_BOARD
2520 2527
2521 When a board is reset during an i2c bus transfer 2528 When a board is reset during an i2c bus transfer
2522 chips might think that the current transfer is still 2529 chips might think that the current transfer is still
2523 in progress. On some boards it is possible to access 2530 in progress. On some boards it is possible to access
2524 the i2c SCLK line directly, either by using the 2531 the i2c SCLK line directly, either by using the
2525 processor pin as a GPIO or by having a second pin 2532 processor pin as a GPIO or by having a second pin
2526 connected to the bus. If this option is defined a 2533 connected to the bus. If this option is defined a
2527 custom i2c_init_board() routine in boards/xxx/board.c 2534 custom i2c_init_board() routine in boards/xxx/board.c
2528 is run early in the boot sequence. 2535 is run early in the boot sequence.
2529 2536
2530 CONFIG_SYS_I2C_BOARD_LATE_INIT 2537 CONFIG_SYS_I2C_BOARD_LATE_INIT
2531 2538
2532 An alternative to CONFIG_SYS_I2C_INIT_BOARD. If this option is 2539 An alternative to CONFIG_SYS_I2C_INIT_BOARD. If this option is
2533 defined a custom i2c_board_late_init() routine in 2540 defined a custom i2c_board_late_init() routine in
2534 boards/xxx/board.c is run AFTER the operations in i2c_init() 2541 boards/xxx/board.c is run AFTER the operations in i2c_init()
2535 is completed. This callpoint can be used to unreset i2c bus 2542 is completed. This callpoint can be used to unreset i2c bus
2536 using CPU i2c controller register accesses for CPUs whose i2c 2543 using CPU i2c controller register accesses for CPUs whose i2c
2537 controller provide such a method. It is called at the end of 2544 controller provide such a method. It is called at the end of
2538 i2c_init() to allow i2c_init operations to setup the i2c bus 2545 i2c_init() to allow i2c_init operations to setup the i2c bus
2539 controller on the CPU (e.g. setting bus speed & slave address). 2546 controller on the CPU (e.g. setting bus speed & slave address).
2540 2547
2541 CONFIG_I2CFAST (PPC405GP|PPC405EP only) 2548 CONFIG_I2CFAST (PPC405GP|PPC405EP only)
2542 2549
2543 This option enables configuration of bi_iic_fast[] flags 2550 This option enables configuration of bi_iic_fast[] flags
2544 in u-boot bd_info structure based on u-boot environment 2551 in u-boot bd_info structure based on u-boot environment
2545 variable "i2cfast". (see also i2cfast) 2552 variable "i2cfast". (see also i2cfast)
2546 2553
2547 CONFIG_I2C_MULTI_BUS 2554 CONFIG_I2C_MULTI_BUS
2548 2555
2549 This option allows the use of multiple I2C buses, each of which 2556 This option allows the use of multiple I2C buses, each of which
2550 must have a controller. At any point in time, only one bus is 2557 must have a controller. At any point in time, only one bus is
2551 active. To switch to a different bus, use the 'i2c dev' command. 2558 active. To switch to a different bus, use the 'i2c dev' command.
2552 Note that bus numbering is zero-based. 2559 Note that bus numbering is zero-based.
2553 2560
2554 CONFIG_SYS_I2C_NOPROBES 2561 CONFIG_SYS_I2C_NOPROBES
2555 2562
2556 This option specifies a list of I2C devices that will be skipped 2563 This option specifies a list of I2C devices that will be skipped
2557 when the 'i2c probe' command is issued. If CONFIG_I2C_MULTI_BUS 2564 when the 'i2c probe' command is issued. If CONFIG_I2C_MULTI_BUS
2558 is set, specify a list of bus-device pairs. Otherwise, specify 2565 is set, specify a list of bus-device pairs. Otherwise, specify
2559 a 1D array of device addresses 2566 a 1D array of device addresses
2560 2567
2561 e.g. 2568 e.g.
2562 #undef CONFIG_I2C_MULTI_BUS 2569 #undef CONFIG_I2C_MULTI_BUS
2563 #define CONFIG_SYS_I2C_NOPROBES {0x50,0x68} 2570 #define CONFIG_SYS_I2C_NOPROBES {0x50,0x68}
2564 2571
2565 will skip addresses 0x50 and 0x68 on a board with one I2C bus 2572 will skip addresses 0x50 and 0x68 on a board with one I2C bus
2566 2573
2567 #define CONFIG_I2C_MULTI_BUS 2574 #define CONFIG_I2C_MULTI_BUS
2568 #define CONFIG_SYS_I2C_MULTI_NOPROBES {{0,0x50},{0,0x68},{1,0x54}} 2575 #define CONFIG_SYS_I2C_MULTI_NOPROBES {{0,0x50},{0,0x68},{1,0x54}}
2569 2576
2570 will skip addresses 0x50 and 0x68 on bus 0 and address 0x54 on bus 1 2577 will skip addresses 0x50 and 0x68 on bus 0 and address 0x54 on bus 1
2571 2578
2572 CONFIG_SYS_SPD_BUS_NUM 2579 CONFIG_SYS_SPD_BUS_NUM
2573 2580
2574 If defined, then this indicates the I2C bus number for DDR SPD. 2581 If defined, then this indicates the I2C bus number for DDR SPD.
2575 If not defined, then U-Boot assumes that SPD is on I2C bus 0. 2582 If not defined, then U-Boot assumes that SPD is on I2C bus 0.
2576 2583
2577 CONFIG_SYS_RTC_BUS_NUM 2584 CONFIG_SYS_RTC_BUS_NUM
2578 2585
2579 If defined, then this indicates the I2C bus number for the RTC. 2586 If defined, then this indicates the I2C bus number for the RTC.
2580 If not defined, then U-Boot assumes that RTC is on I2C bus 0. 2587 If not defined, then U-Boot assumes that RTC is on I2C bus 0.
2581 2588
2582 CONFIG_SYS_DTT_BUS_NUM 2589 CONFIG_SYS_DTT_BUS_NUM
2583 2590
2584 If defined, then this indicates the I2C bus number for the DTT. 2591 If defined, then this indicates the I2C bus number for the DTT.
2585 If not defined, then U-Boot assumes that DTT is on I2C bus 0. 2592 If not defined, then U-Boot assumes that DTT is on I2C bus 0.
2586 2593
2587 CONFIG_SYS_I2C_DTT_ADDR: 2594 CONFIG_SYS_I2C_DTT_ADDR:
2588 2595
2589 If defined, specifies the I2C address of the DTT device. 2596 If defined, specifies the I2C address of the DTT device.
2590 If not defined, then U-Boot uses predefined value for 2597 If not defined, then U-Boot uses predefined value for
2591 specified DTT device. 2598 specified DTT device.
2592 2599
2593 CONFIG_SOFT_I2C_READ_REPEATED_START 2600 CONFIG_SOFT_I2C_READ_REPEATED_START
2594 2601
2595 defining this will force the i2c_read() function in 2602 defining this will force the i2c_read() function in
2596 the soft_i2c driver to perform an I2C repeated start 2603 the soft_i2c driver to perform an I2C repeated start
2597 between writing the address pointer and reading the 2604 between writing the address pointer and reading the
2598 data. If this define is omitted the default behaviour 2605 data. If this define is omitted the default behaviour
2599 of doing a stop-start sequence will be used. Most I2C 2606 of doing a stop-start sequence will be used. Most I2C
2600 devices can use either method, but some require one or 2607 devices can use either method, but some require one or
2601 the other. 2608 the other.
2602 2609
2603 - SPI Support: CONFIG_SPI 2610 - SPI Support: CONFIG_SPI
2604 2611
2605 Enables SPI driver (so far only tested with 2612 Enables SPI driver (so far only tested with
2606 SPI EEPROM, also an instance works with Crystal A/D and 2613 SPI EEPROM, also an instance works with Crystal A/D and
2607 D/As on the SACSng board) 2614 D/As on the SACSng board)
2608 2615
2609 CONFIG_SH_SPI 2616 CONFIG_SH_SPI
2610 2617
2611 Enables the driver for SPI controller on SuperH. Currently 2618 Enables the driver for SPI controller on SuperH. Currently
2612 only SH7757 is supported. 2619 only SH7757 is supported.
2613 2620
2614 CONFIG_SPI_X 2621 CONFIG_SPI_X
2615 2622
2616 Enables extended (16-bit) SPI EEPROM addressing. 2623 Enables extended (16-bit) SPI EEPROM addressing.
2617 (symmetrical to CONFIG_I2C_X) 2624 (symmetrical to CONFIG_I2C_X)
2618 2625
2619 CONFIG_SOFT_SPI 2626 CONFIG_SOFT_SPI
2620 2627
2621 Enables a software (bit-bang) SPI driver rather than 2628 Enables a software (bit-bang) SPI driver rather than
2622 using hardware support. This is a general purpose 2629 using hardware support. This is a general purpose
2623 driver that only requires three general I/O port pins 2630 driver that only requires three general I/O port pins
2624 (two outputs, one input) to function. If this is 2631 (two outputs, one input) to function. If this is
2625 defined, the board configuration must define several 2632 defined, the board configuration must define several
2626 SPI configuration items (port pins to use, etc). For 2633 SPI configuration items (port pins to use, etc). For
2627 an example, see include/configs/sacsng.h. 2634 an example, see include/configs/sacsng.h.
2628 2635
2629 CONFIG_HARD_SPI 2636 CONFIG_HARD_SPI
2630 2637
2631 Enables a hardware SPI driver for general-purpose reads 2638 Enables a hardware SPI driver for general-purpose reads
2632 and writes. As with CONFIG_SOFT_SPI, the board configuration 2639 and writes. As with CONFIG_SOFT_SPI, the board configuration
2633 must define a list of chip-select function pointers. 2640 must define a list of chip-select function pointers.
2634 Currently supported on some MPC8xxx processors. For an 2641 Currently supported on some MPC8xxx processors. For an
2635 example, see include/configs/mpc8349emds.h. 2642 example, see include/configs/mpc8349emds.h.
2636 2643
2637 CONFIG_MXC_SPI 2644 CONFIG_MXC_SPI
2638 2645
2639 Enables the driver for the SPI controllers on i.MX and MXC 2646 Enables the driver for the SPI controllers on i.MX and MXC
2640 SoCs. Currently i.MX31/35/51 are supported. 2647 SoCs. Currently i.MX31/35/51 are supported.
2641 2648
2642 CONFIG_SYS_SPI_MXC_WAIT 2649 CONFIG_SYS_SPI_MXC_WAIT
2643 Timeout for waiting until spi transfer completed. 2650 Timeout for waiting until spi transfer completed.
2644 default: (CONFIG_SYS_HZ/100) /* 10 ms */ 2651 default: (CONFIG_SYS_HZ/100) /* 10 ms */
2645 2652
2646 - FPGA Support: CONFIG_FPGA 2653 - FPGA Support: CONFIG_FPGA
2647 2654
2648 Enables FPGA subsystem. 2655 Enables FPGA subsystem.
2649 2656
2650 CONFIG_FPGA_<vendor> 2657 CONFIG_FPGA_<vendor>
2651 2658
2652 Enables support for specific chip vendors. 2659 Enables support for specific chip vendors.
2653 (ALTERA, XILINX) 2660 (ALTERA, XILINX)
2654 2661
2655 CONFIG_FPGA_<family> 2662 CONFIG_FPGA_<family>
2656 2663
2657 Enables support for FPGA family. 2664 Enables support for FPGA family.
2658 (SPARTAN2, SPARTAN3, VIRTEX2, CYCLONE2, ACEX1K, ACEX) 2665 (SPARTAN2, SPARTAN3, VIRTEX2, CYCLONE2, ACEX1K, ACEX)
2659 2666
2660 CONFIG_FPGA_COUNT 2667 CONFIG_FPGA_COUNT
2661 2668
2662 Specify the number of FPGA devices to support. 2669 Specify the number of FPGA devices to support.
2663 2670
2664 CONFIG_CMD_FPGA_LOADMK 2671 CONFIG_CMD_FPGA_LOADMK
2665 2672
2666 Enable support for fpga loadmk command 2673 Enable support for fpga loadmk command
2667 2674
2668 CONFIG_CMD_FPGA_LOADP 2675 CONFIG_CMD_FPGA_LOADP
2669 2676
2670 Enable support for fpga loadp command - load partial bitstream 2677 Enable support for fpga loadp command - load partial bitstream
2671 2678
2672 CONFIG_CMD_FPGA_LOADBP 2679 CONFIG_CMD_FPGA_LOADBP
2673 2680
2674 Enable support for fpga loadbp command - load partial bitstream 2681 Enable support for fpga loadbp command - load partial bitstream
2675 (Xilinx only) 2682 (Xilinx only)
2676 2683
2677 CONFIG_SYS_FPGA_PROG_FEEDBACK 2684 CONFIG_SYS_FPGA_PROG_FEEDBACK
2678 2685
2679 Enable printing of hash marks during FPGA configuration. 2686 Enable printing of hash marks during FPGA configuration.
2680 2687
2681 CONFIG_SYS_FPGA_CHECK_BUSY 2688 CONFIG_SYS_FPGA_CHECK_BUSY
2682 2689
2683 Enable checks on FPGA configuration interface busy 2690 Enable checks on FPGA configuration interface busy
2684 status by the configuration function. This option 2691 status by the configuration function. This option
2685 will require a board or device specific function to 2692 will require a board or device specific function to
2686 be written. 2693 be written.
2687 2694
2688 CONFIG_FPGA_DELAY 2695 CONFIG_FPGA_DELAY
2689 2696
2690 If defined, a function that provides delays in the FPGA 2697 If defined, a function that provides delays in the FPGA
2691 configuration driver. 2698 configuration driver.
2692 2699
2693 CONFIG_SYS_FPGA_CHECK_CTRLC 2700 CONFIG_SYS_FPGA_CHECK_CTRLC
2694 Allow Control-C to interrupt FPGA configuration 2701 Allow Control-C to interrupt FPGA configuration
2695 2702
2696 CONFIG_SYS_FPGA_CHECK_ERROR 2703 CONFIG_SYS_FPGA_CHECK_ERROR
2697 2704
2698 Check for configuration errors during FPGA bitfile 2705 Check for configuration errors during FPGA bitfile
2699 loading. For example, abort during Virtex II 2706 loading. For example, abort during Virtex II
2700 configuration if the INIT_B line goes low (which 2707 configuration if the INIT_B line goes low (which
2701 indicated a CRC error). 2708 indicated a CRC error).
2702 2709
2703 CONFIG_SYS_FPGA_WAIT_INIT 2710 CONFIG_SYS_FPGA_WAIT_INIT
2704 2711
2705 Maximum time to wait for the INIT_B line to deassert 2712 Maximum time to wait for the INIT_B line to deassert
2706 after PROB_B has been deasserted during a Virtex II 2713 after PROB_B has been deasserted during a Virtex II
2707 FPGA configuration sequence. The default time is 500 2714 FPGA configuration sequence. The default time is 500
2708 ms. 2715 ms.
2709 2716
2710 CONFIG_SYS_FPGA_WAIT_BUSY 2717 CONFIG_SYS_FPGA_WAIT_BUSY
2711 2718
2712 Maximum time to wait for BUSY to deassert during 2719 Maximum time to wait for BUSY to deassert during
2713 Virtex II FPGA configuration. The default is 5 ms. 2720 Virtex II FPGA configuration. The default is 5 ms.
2714 2721
2715 CONFIG_SYS_FPGA_WAIT_CONFIG 2722 CONFIG_SYS_FPGA_WAIT_CONFIG
2716 2723
2717 Time to wait after FPGA configuration. The default is 2724 Time to wait after FPGA configuration. The default is
2718 200 ms. 2725 200 ms.
2719 2726
2720 - Configuration Management: 2727 - Configuration Management:
2721 CONFIG_BUILD_TARGET 2728 CONFIG_BUILD_TARGET
2722 2729
2723 Some SoCs need special image types (e.g. U-Boot binary 2730 Some SoCs need special image types (e.g. U-Boot binary
2724 with a special header) as build targets. By defining 2731 with a special header) as build targets. By defining
2725 CONFIG_BUILD_TARGET in the SoC / board header, this 2732 CONFIG_BUILD_TARGET in the SoC / board header, this
2726 special image will be automatically built upon calling 2733 special image will be automatically built upon calling
2727 make / MAKEALL. 2734 make / MAKEALL.
2728 2735
2729 CONFIG_IDENT_STRING 2736 CONFIG_IDENT_STRING
2730 2737
2731 If defined, this string will be added to the U-Boot 2738 If defined, this string will be added to the U-Boot
2732 version information (U_BOOT_VERSION) 2739 version information (U_BOOT_VERSION)
2733 2740
2734 - Vendor Parameter Protection: 2741 - Vendor Parameter Protection:
2735 2742
2736 U-Boot considers the values of the environment 2743 U-Boot considers the values of the environment
2737 variables "serial#" (Board Serial Number) and 2744 variables "serial#" (Board Serial Number) and
2738 "ethaddr" (Ethernet Address) to be parameters that 2745 "ethaddr" (Ethernet Address) to be parameters that
2739 are set once by the board vendor / manufacturer, and 2746 are set once by the board vendor / manufacturer, and
2740 protects these variables from casual modification by 2747 protects these variables from casual modification by
2741 the user. Once set, these variables are read-only, 2748 the user. Once set, these variables are read-only,
2742 and write or delete attempts are rejected. You can 2749 and write or delete attempts are rejected. You can
2743 change this behaviour: 2750 change this behaviour:
2744 2751
2745 If CONFIG_ENV_OVERWRITE is #defined in your config 2752 If CONFIG_ENV_OVERWRITE is #defined in your config
2746 file, the write protection for vendor parameters is 2753 file, the write protection for vendor parameters is
2747 completely disabled. Anybody can change or delete 2754 completely disabled. Anybody can change or delete
2748 these parameters. 2755 these parameters.
2749 2756
2750 Alternatively, if you #define _both_ CONFIG_ETHADDR 2757 Alternatively, if you #define _both_ CONFIG_ETHADDR
2751 _and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default 2758 _and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
2752 Ethernet address is installed in the environment, 2759 Ethernet address is installed in the environment,
2753 which can be changed exactly ONCE by the user. [The 2760 which can be changed exactly ONCE by the user. [The
2754 serial# is unaffected by this, i. e. it remains 2761 serial# is unaffected by this, i. e. it remains
2755 read-only.] 2762 read-only.]
2756 2763
2757 The same can be accomplished in a more flexible way 2764 The same can be accomplished in a more flexible way
2758 for any variable by configuring the type of access 2765 for any variable by configuring the type of access
2759 to allow for those variables in the ".flags" variable 2766 to allow for those variables in the ".flags" variable
2760 or define CONFIG_ENV_FLAGS_LIST_STATIC. 2767 or define CONFIG_ENV_FLAGS_LIST_STATIC.
2761 2768
2762 - Protected RAM: 2769 - Protected RAM:
2763 CONFIG_PRAM 2770 CONFIG_PRAM
2764 2771
2765 Define this variable to enable the reservation of 2772 Define this variable to enable the reservation of
2766 "protected RAM", i. e. RAM which is not overwritten 2773 "protected RAM", i. e. RAM which is not overwritten
2767 by U-Boot. Define CONFIG_PRAM to hold the number of 2774 by U-Boot. Define CONFIG_PRAM to hold the number of
2768 kB you want to reserve for pRAM. You can overwrite 2775 kB you want to reserve for pRAM. You can overwrite
2769 this default value by defining an environment 2776 this default value by defining an environment
2770 variable "pram" to the number of kB you want to 2777 variable "pram" to the number of kB you want to
2771 reserve. Note that the board info structure will 2778 reserve. Note that the board info structure will
2772 still show the full amount of RAM. If pRAM is 2779 still show the full amount of RAM. If pRAM is
2773 reserved, a new environment variable "mem" will 2780 reserved, a new environment variable "mem" will
2774 automatically be defined to hold the amount of 2781 automatically be defined to hold the amount of
2775 remaining RAM in a form that can be passed as boot 2782 remaining RAM in a form that can be passed as boot
2776 argument to Linux, for instance like that: 2783 argument to Linux, for instance like that:
2777 2784
2778 setenv bootargs ... mem=\${mem} 2785 setenv bootargs ... mem=\${mem}
2779 saveenv 2786 saveenv
2780 2787
2781 This way you can tell Linux not to use this memory, 2788 This way you can tell Linux not to use this memory,
2782 either, which results in a memory region that will 2789 either, which results in a memory region that will
2783 not be affected by reboots. 2790 not be affected by reboots.
2784 2791
2785 *WARNING* If your board configuration uses automatic 2792 *WARNING* If your board configuration uses automatic
2786 detection of the RAM size, you must make sure that 2793 detection of the RAM size, you must make sure that
2787 this memory test is non-destructive. So far, the 2794 this memory test is non-destructive. So far, the
2788 following board configurations are known to be 2795 following board configurations are known to be
2789 "pRAM-clean": 2796 "pRAM-clean":
2790 2797
2791 IVMS8, IVML24, SPD8xx, TQM8xxL, 2798 IVMS8, IVML24, SPD8xx, TQM8xxL,
2792 HERMES, IP860, RPXlite, LWMON, 2799 HERMES, IP860, RPXlite, LWMON,
2793 FLAGADM, TQM8260 2800 FLAGADM, TQM8260
2794 2801
2795 - Access to physical memory region (> 4GB) 2802 - Access to physical memory region (> 4GB)
2796 Some basic support is provided for operations on memory not 2803 Some basic support is provided for operations on memory not
2797 normally accessible to U-Boot - e.g. some architectures 2804 normally accessible to U-Boot - e.g. some architectures
2798 support access to more than 4GB of memory on 32-bit 2805 support access to more than 4GB of memory on 32-bit
2799 machines using physical address extension or similar. 2806 machines using physical address extension or similar.
2800 Define CONFIG_PHYSMEM to access this basic support, which 2807 Define CONFIG_PHYSMEM to access this basic support, which
2801 currently only supports clearing the memory. 2808 currently only supports clearing the memory.
2802 2809
2803 - Error Recovery: 2810 - Error Recovery:
2804 CONFIG_PANIC_HANG 2811 CONFIG_PANIC_HANG
2805 2812
2806 Define this variable to stop the system in case of a 2813 Define this variable to stop the system in case of a
2807 fatal error, so that you have to reset it manually. 2814 fatal error, so that you have to reset it manually.
2808 This is probably NOT a good idea for an embedded 2815 This is probably NOT a good idea for an embedded
2809 system where you want the system to reboot 2816 system where you want the system to reboot
2810 automatically as fast as possible, but it may be 2817 automatically as fast as possible, but it may be
2811 useful during development since you can try to debug 2818 useful during development since you can try to debug
2812 the conditions that lead to the situation. 2819 the conditions that lead to the situation.
2813 2820
2814 CONFIG_NET_RETRY_COUNT 2821 CONFIG_NET_RETRY_COUNT
2815 2822
2816 This variable defines the number of retries for 2823 This variable defines the number of retries for
2817 network operations like ARP, RARP, TFTP, or BOOTP 2824 network operations like ARP, RARP, TFTP, or BOOTP
2818 before giving up the operation. If not defined, a 2825 before giving up the operation. If not defined, a
2819 default value of 5 is used. 2826 default value of 5 is used.
2820 2827
2821 CONFIG_ARP_TIMEOUT 2828 CONFIG_ARP_TIMEOUT
2822 2829
2823 Timeout waiting for an ARP reply in milliseconds. 2830 Timeout waiting for an ARP reply in milliseconds.
2824 2831
2825 CONFIG_NFS_TIMEOUT 2832 CONFIG_NFS_TIMEOUT
2826 2833
2827 Timeout in milliseconds used in NFS protocol. 2834 Timeout in milliseconds used in NFS protocol.
2828 If you encounter "ERROR: Cannot umount" in nfs command, 2835 If you encounter "ERROR: Cannot umount" in nfs command,
2829 try longer timeout such as 2836 try longer timeout such as
2830 #define CONFIG_NFS_TIMEOUT 10000UL 2837 #define CONFIG_NFS_TIMEOUT 10000UL
2831 2838
2832 - Command Interpreter: 2839 - Command Interpreter:
2833 CONFIG_AUTO_COMPLETE 2840 CONFIG_AUTO_COMPLETE
2834 2841
2835 Enable auto completion of commands using TAB. 2842 Enable auto completion of commands using TAB.
2836 2843
2837 CONFIG_SYS_HUSH_PARSER 2844 CONFIG_SYS_HUSH_PARSER
2838 2845
2839 Define this variable to enable the "hush" shell (from 2846 Define this variable to enable the "hush" shell (from
2840 Busybox) as command line interpreter, thus enabling 2847 Busybox) as command line interpreter, thus enabling
2841 powerful command line syntax like 2848 powerful command line syntax like
2842 if...then...else...fi conditionals or `&&' and '||' 2849 if...then...else...fi conditionals or `&&' and '||'
2843 constructs ("shell scripts"). 2850 constructs ("shell scripts").
2844 2851
2845 If undefined, you get the old, much simpler behaviour 2852 If undefined, you get the old, much simpler behaviour
2846 with a somewhat smaller memory footprint. 2853 with a somewhat smaller memory footprint.
2847 2854
2848 2855
2849 CONFIG_SYS_PROMPT_HUSH_PS2 2856 CONFIG_SYS_PROMPT_HUSH_PS2
2850 2857
2851 This defines the secondary prompt string, which is 2858 This defines the secondary prompt string, which is
2852 printed when the command interpreter needs more input 2859 printed when the command interpreter needs more input
2853 to complete a command. Usually "> ". 2860 to complete a command. Usually "> ".
2854 2861
2855 Note: 2862 Note:
2856 2863
2857 In the current implementation, the local variables 2864 In the current implementation, the local variables
2858 space and global environment variables space are 2865 space and global environment variables space are
2859 separated. Local variables are those you define by 2866 separated. Local variables are those you define by
2860 simply typing `name=value'. To access a local 2867 simply typing `name=value'. To access a local
2861 variable later on, you have write `$name' or 2868 variable later on, you have write `$name' or
2862 `${name}'; to execute the contents of a variable 2869 `${name}'; to execute the contents of a variable
2863 directly type `$name' at the command prompt. 2870 directly type `$name' at the command prompt.
2864 2871
2865 Global environment variables are those you use 2872 Global environment variables are those you use
2866 setenv/printenv to work with. To run a command stored 2873 setenv/printenv to work with. To run a command stored
2867 in such a variable, you need to use the run command, 2874 in such a variable, you need to use the run command,
2868 and you must not use the '$' sign to access them. 2875 and you must not use the '$' sign to access them.
2869 2876
2870 To store commands and special characters in a 2877 To store commands and special characters in a
2871 variable, please use double quotation marks 2878 variable, please use double quotation marks
2872 surrounding the whole text of the variable, instead 2879 surrounding the whole text of the variable, instead
2873 of the backslashes before semicolons and special 2880 of the backslashes before semicolons and special
2874 symbols. 2881 symbols.
2875 2882
2876 - Commandline Editing and History: 2883 - Commandline Editing and History:
2877 CONFIG_CMDLINE_EDITING 2884 CONFIG_CMDLINE_EDITING
2878 2885
2879 Enable editing and History functions for interactive 2886 Enable editing and History functions for interactive
2880 commandline input operations 2887 commandline input operations
2881 2888
2882 - Default Environment: 2889 - Default Environment:
2883 CONFIG_EXTRA_ENV_SETTINGS 2890 CONFIG_EXTRA_ENV_SETTINGS
2884 2891
2885 Define this to contain any number of null terminated 2892 Define this to contain any number of null terminated
2886 strings (variable = value pairs) that will be part of 2893 strings (variable = value pairs) that will be part of
2887 the default environment compiled into the boot image. 2894 the default environment compiled into the boot image.
2888 2895
2889 For example, place something like this in your 2896 For example, place something like this in your
2890 board's config file: 2897 board's config file:
2891 2898
2892 #define CONFIG_EXTRA_ENV_SETTINGS \ 2899 #define CONFIG_EXTRA_ENV_SETTINGS \
2893 "myvar1=value1\0" \ 2900 "myvar1=value1\0" \
2894 "myvar2=value2\0" 2901 "myvar2=value2\0"
2895 2902
2896 Warning: This method is based on knowledge about the 2903 Warning: This method is based on knowledge about the
2897 internal format how the environment is stored by the 2904 internal format how the environment is stored by the
2898 U-Boot code. This is NOT an official, exported 2905 U-Boot code. This is NOT an official, exported
2899 interface! Although it is unlikely that this format 2906 interface! Although it is unlikely that this format
2900 will change soon, there is no guarantee either. 2907 will change soon, there is no guarantee either.
2901 You better know what you are doing here. 2908 You better know what you are doing here.
2902 2909
2903 Note: overly (ab)use of the default environment is 2910 Note: overly (ab)use of the default environment is
2904 discouraged. Make sure to check other ways to preset 2911 discouraged. Make sure to check other ways to preset
2905 the environment like the "source" command or the 2912 the environment like the "source" command or the
2906 boot command first. 2913 boot command first.
2907 2914
2908 CONFIG_ENV_VARS_UBOOT_CONFIG 2915 CONFIG_ENV_VARS_UBOOT_CONFIG
2909 2916
2910 Define this in order to add variables describing the 2917 Define this in order to add variables describing the
2911 U-Boot build configuration to the default environment. 2918 U-Boot build configuration to the default environment.
2912 These will be named arch, cpu, board, vendor, and soc. 2919 These will be named arch, cpu, board, vendor, and soc.
2913 2920
2914 Enabling this option will cause the following to be defined: 2921 Enabling this option will cause the following to be defined:
2915 2922
2916 - CONFIG_SYS_ARCH 2923 - CONFIG_SYS_ARCH
2917 - CONFIG_SYS_CPU 2924 - CONFIG_SYS_CPU
2918 - CONFIG_SYS_BOARD 2925 - CONFIG_SYS_BOARD
2919 - CONFIG_SYS_VENDOR 2926 - CONFIG_SYS_VENDOR
2920 - CONFIG_SYS_SOC 2927 - CONFIG_SYS_SOC
2921 2928
2922 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG 2929 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
2923 2930
2924 Define this in order to add variables describing certain 2931 Define this in order to add variables describing certain
2925 run-time determined information about the hardware to the 2932 run-time determined information about the hardware to the
2926 environment. These will be named board_name, board_rev. 2933 environment. These will be named board_name, board_rev.
2927 2934
2928 CONFIG_DELAY_ENVIRONMENT 2935 CONFIG_DELAY_ENVIRONMENT
2929 2936
2930 Normally the environment is loaded when the board is 2937 Normally the environment is loaded when the board is
2931 intialised so that it is available to U-Boot. This inhibits 2938 intialised so that it is available to U-Boot. This inhibits
2932 that so that the environment is not available until 2939 that so that the environment is not available until
2933 explicitly loaded later by U-Boot code. With CONFIG_OF_CONTROL 2940 explicitly loaded later by U-Boot code. With CONFIG_OF_CONTROL
2934 this is instead controlled by the value of 2941 this is instead controlled by the value of
2935 /config/load-environment. 2942 /config/load-environment.
2936 2943
2937 - DataFlash Support: 2944 - DataFlash Support:
2938 CONFIG_HAS_DATAFLASH 2945 CONFIG_HAS_DATAFLASH
2939 2946
2940 Defining this option enables DataFlash features and 2947 Defining this option enables DataFlash features and
2941 allows to read/write in Dataflash via the standard 2948 allows to read/write in Dataflash via the standard
2942 commands cp, md... 2949 commands cp, md...
2943 2950
2944 - Serial Flash support 2951 - Serial Flash support
2945 CONFIG_CMD_SF 2952 CONFIG_CMD_SF
2946 2953
2947 Defining this option enables SPI flash commands 2954 Defining this option enables SPI flash commands
2948 'sf probe/read/write/erase/update'. 2955 'sf probe/read/write/erase/update'.
2949 2956
2950 Usage requires an initial 'probe' to define the serial 2957 Usage requires an initial 'probe' to define the serial
2951 flash parameters, followed by read/write/erase/update 2958 flash parameters, followed by read/write/erase/update
2952 commands. 2959 commands.
2953 2960
2954 The following defaults may be provided by the platform 2961 The following defaults may be provided by the platform
2955 to handle the common case when only a single serial 2962 to handle the common case when only a single serial
2956 flash is present on the system. 2963 flash is present on the system.
2957 2964
2958 CONFIG_SF_DEFAULT_BUS Bus identifier 2965 CONFIG_SF_DEFAULT_BUS Bus identifier
2959 CONFIG_SF_DEFAULT_CS Chip-select 2966 CONFIG_SF_DEFAULT_CS Chip-select
2960 CONFIG_SF_DEFAULT_MODE (see include/spi.h) 2967 CONFIG_SF_DEFAULT_MODE (see include/spi.h)
2961 CONFIG_SF_DEFAULT_SPEED in Hz 2968 CONFIG_SF_DEFAULT_SPEED in Hz
2962 2969
2963 CONFIG_CMD_SF_TEST 2970 CONFIG_CMD_SF_TEST
2964 2971
2965 Define this option to include a destructive SPI flash 2972 Define this option to include a destructive SPI flash
2966 test ('sf test'). 2973 test ('sf test').
2967 2974
2968 CONFIG_SPI_FLASH_BAR Ban/Extended Addr Reg 2975 CONFIG_SPI_FLASH_BAR Ban/Extended Addr Reg
2969 2976
2970 Define this option to use the Bank addr/Extended addr 2977 Define this option to use the Bank addr/Extended addr
2971 support on SPI flashes which has size > 16Mbytes. 2978 support on SPI flashes which has size > 16Mbytes.
2972 2979
2973 CONFIG_SF_DUAL_FLASH Dual flash memories 2980 CONFIG_SF_DUAL_FLASH Dual flash memories
2974 2981
2975 Define this option to use dual flash support where two flash 2982 Define this option to use dual flash support where two flash
2976 memories can be connected with a given cs line. 2983 memories can be connected with a given cs line.
2977 currently Xilinx Zynq qspi support these type of connections. 2984 currently Xilinx Zynq qspi support these type of connections.
2978 2985
2979 CONFIG_SYS_SPI_ST_ENABLE_WP_PIN 2986 CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
2980 enable the W#/Vpp signal to disable writing to the status 2987 enable the W#/Vpp signal to disable writing to the status
2981 register on ST MICRON flashes like the N25Q128. 2988 register on ST MICRON flashes like the N25Q128.
2982 The status register write enable/disable bit, combined with 2989 The status register write enable/disable bit, combined with
2983 the W#/VPP signal provides hardware data protection for the 2990 the W#/VPP signal provides hardware data protection for the
2984 device as follows: When the enable/disable bit is set to 1, 2991 device as follows: When the enable/disable bit is set to 1,
2985 and the W#/VPP signal is driven LOW, the status register 2992 and the W#/VPP signal is driven LOW, the status register
2986 nonvolatile bits become read-only and the WRITE STATUS REGISTER 2993 nonvolatile bits become read-only and the WRITE STATUS REGISTER
2987 operation will not execute. The only way to exit this 2994 operation will not execute. The only way to exit this
2988 hardware-protected mode is to drive W#/VPP HIGH. 2995 hardware-protected mode is to drive W#/VPP HIGH.
2989 2996
2990 - SystemACE Support: 2997 - SystemACE Support:
2991 CONFIG_SYSTEMACE 2998 CONFIG_SYSTEMACE
2992 2999
2993 Adding this option adds support for Xilinx SystemACE 3000 Adding this option adds support for Xilinx SystemACE
2994 chips attached via some sort of local bus. The address 3001 chips attached via some sort of local bus. The address
2995 of the chip must also be defined in the 3002 of the chip must also be defined in the
2996 CONFIG_SYS_SYSTEMACE_BASE macro. For example: 3003 CONFIG_SYS_SYSTEMACE_BASE macro. For example:
2997 3004
2998 #define CONFIG_SYSTEMACE 3005 #define CONFIG_SYSTEMACE
2999 #define CONFIG_SYS_SYSTEMACE_BASE 0xf0000000 3006 #define CONFIG_SYS_SYSTEMACE_BASE 0xf0000000
3000 3007
3001 When SystemACE support is added, the "ace" device type 3008 When SystemACE support is added, the "ace" device type
3002 becomes available to the fat commands, i.e. fatls. 3009 becomes available to the fat commands, i.e. fatls.
3003 3010
3004 - TFTP Fixed UDP Port: 3011 - TFTP Fixed UDP Port:
3005 CONFIG_TFTP_PORT 3012 CONFIG_TFTP_PORT
3006 3013
3007 If this is defined, the environment variable tftpsrcp 3014 If this is defined, the environment variable tftpsrcp
3008 is used to supply the TFTP UDP source port value. 3015 is used to supply the TFTP UDP source port value.
3009 If tftpsrcp isn't defined, the normal pseudo-random port 3016 If tftpsrcp isn't defined, the normal pseudo-random port
3010 number generator is used. 3017 number generator is used.
3011 3018
3012 Also, the environment variable tftpdstp is used to supply 3019 Also, the environment variable tftpdstp is used to supply
3013 the TFTP UDP destination port value. If tftpdstp isn't 3020 the TFTP UDP destination port value. If tftpdstp isn't
3014 defined, the normal port 69 is used. 3021 defined, the normal port 69 is used.
3015 3022
3016 The purpose for tftpsrcp is to allow a TFTP server to 3023 The purpose for tftpsrcp is to allow a TFTP server to
3017 blindly start the TFTP transfer using the pre-configured 3024 blindly start the TFTP transfer using the pre-configured
3018 target IP address and UDP port. This has the effect of 3025 target IP address and UDP port. This has the effect of
3019 "punching through" the (Windows XP) firewall, allowing 3026 "punching through" the (Windows XP) firewall, allowing
3020 the remainder of the TFTP transfer to proceed normally. 3027 the remainder of the TFTP transfer to proceed normally.
3021 A better solution is to properly configure the firewall, 3028 A better solution is to properly configure the firewall,
3022 but sometimes that is not allowed. 3029 but sometimes that is not allowed.
3023 3030
3024 - Hashing support: 3031 - Hashing support:
3025 CONFIG_CMD_HASH 3032 CONFIG_CMD_HASH
3026 3033
3027 This enables a generic 'hash' command which can produce 3034 This enables a generic 'hash' command which can produce
3028 hashes / digests from a few algorithms (e.g. SHA1, SHA256). 3035 hashes / digests from a few algorithms (e.g. SHA1, SHA256).
3029 3036
3030 CONFIG_HASH_VERIFY 3037 CONFIG_HASH_VERIFY
3031 3038
3032 Enable the hash verify command (hash -v). This adds to code 3039 Enable the hash verify command (hash -v). This adds to code
3033 size a little. 3040 size a little.
3034 3041
3035 CONFIG_SHA1 - support SHA1 hashing 3042 CONFIG_SHA1 - support SHA1 hashing
3036 CONFIG_SHA256 - support SHA256 hashing 3043 CONFIG_SHA256 - support SHA256 hashing
3037 3044
3038 Note: There is also a sha1sum command, which should perhaps 3045 Note: There is also a sha1sum command, which should perhaps
3039 be deprecated in favour of 'hash sha1'. 3046 be deprecated in favour of 'hash sha1'.
3040 3047
3041 - Freescale i.MX specific commands: 3048 - Freescale i.MX specific commands:
3042 CONFIG_CMD_HDMIDETECT 3049 CONFIG_CMD_HDMIDETECT
3043 This enables 'hdmidet' command which returns true if an 3050 This enables 'hdmidet' command which returns true if an
3044 HDMI monitor is detected. This command is i.MX 6 specific. 3051 HDMI monitor is detected. This command is i.MX 6 specific.
3045 3052
3046 CONFIG_CMD_BMODE 3053 CONFIG_CMD_BMODE
3047 This enables the 'bmode' (bootmode) command for forcing 3054 This enables the 'bmode' (bootmode) command for forcing
3048 a boot from specific media. 3055 a boot from specific media.
3049 3056
3050 This is useful for forcing the ROM's usb downloader to 3057 This is useful for forcing the ROM's usb downloader to
3051 activate upon a watchdog reset which is nice when iterating 3058 activate upon a watchdog reset which is nice when iterating
3052 on U-Boot. Using the reset button or running bmode normal 3059 on U-Boot. Using the reset button or running bmode normal
3053 will set it back to normal. This command currently 3060 will set it back to normal. This command currently
3054 supports i.MX53 and i.MX6. 3061 supports i.MX53 and i.MX6.
3055 3062
3056 - Signing support: 3063 - Signing support:
3057 CONFIG_RSA 3064 CONFIG_RSA
3058 3065
3059 This enables the RSA algorithm used for FIT image verification 3066 This enables the RSA algorithm used for FIT image verification
3060 in U-Boot. See doc/uImage.FIT/signature.txt for more information. 3067 in U-Boot. See doc/uImage.FIT/signature.txt for more information.
3061 3068
3062 The signing part is build into mkimage regardless of this 3069 The signing part is build into mkimage regardless of this
3063 option. 3070 option.
3064 3071
3065 - bootcount support: 3072 - bootcount support:
3066 CONFIG_BOOTCOUNT_LIMIT 3073 CONFIG_BOOTCOUNT_LIMIT
3067 3074
3068 This enables the bootcounter support, see: 3075 This enables the bootcounter support, see:
3069 http://www.denx.de/wiki/DULG/UBootBootCountLimit 3076 http://www.denx.de/wiki/DULG/UBootBootCountLimit
3070 3077
3071 CONFIG_AT91SAM9XE 3078 CONFIG_AT91SAM9XE
3072 enable special bootcounter support on at91sam9xe based boards. 3079 enable special bootcounter support on at91sam9xe based boards.
3073 CONFIG_BLACKFIN 3080 CONFIG_BLACKFIN
3074 enable special bootcounter support on blackfin based boards. 3081 enable special bootcounter support on blackfin based boards.
3075 CONFIG_SOC_DA8XX 3082 CONFIG_SOC_DA8XX
3076 enable special bootcounter support on da850 based boards. 3083 enable special bootcounter support on da850 based boards.
3077 CONFIG_BOOTCOUNT_RAM 3084 CONFIG_BOOTCOUNT_RAM
3078 enable support for the bootcounter in RAM 3085 enable support for the bootcounter in RAM
3079 CONFIG_BOOTCOUNT_I2C 3086 CONFIG_BOOTCOUNT_I2C
3080 enable support for the bootcounter on an i2c (like RTC) device. 3087 enable support for the bootcounter on an i2c (like RTC) device.
3081 CONFIG_SYS_I2C_RTC_ADDR = i2c chip address 3088 CONFIG_SYS_I2C_RTC_ADDR = i2c chip address
3082 CONFIG_SYS_BOOTCOUNT_ADDR = i2c addr which is used for 3089 CONFIG_SYS_BOOTCOUNT_ADDR = i2c addr which is used for
3083 the bootcounter. 3090 the bootcounter.
3084 CONFIG_BOOTCOUNT_ALEN = address len 3091 CONFIG_BOOTCOUNT_ALEN = address len
3085 3092
3086 - Show boot progress: 3093 - Show boot progress:
3087 CONFIG_SHOW_BOOT_PROGRESS 3094 CONFIG_SHOW_BOOT_PROGRESS
3088 3095
3089 Defining this option allows to add some board- 3096 Defining this option allows to add some board-
3090 specific code (calling a user-provided function 3097 specific code (calling a user-provided function
3091 "show_boot_progress(int)") that enables you to show 3098 "show_boot_progress(int)") that enables you to show
3092 the system's boot progress on some display (for 3099 the system's boot progress on some display (for
3093 example, some LED's) on your board. At the moment, 3100 example, some LED's) on your board. At the moment,
3094 the following checkpoints are implemented: 3101 the following checkpoints are implemented:
3095 3102
3096 - Detailed boot stage timing 3103 - Detailed boot stage timing
3097 CONFIG_BOOTSTAGE 3104 CONFIG_BOOTSTAGE
3098 Define this option to get detailed timing of each stage 3105 Define this option to get detailed timing of each stage
3099 of the boot process. 3106 of the boot process.
3100 3107
3101 CONFIG_BOOTSTAGE_USER_COUNT 3108 CONFIG_BOOTSTAGE_USER_COUNT
3102 This is the number of available user bootstage records. 3109 This is the number of available user bootstage records.
3103 Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...) 3110 Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...)
3104 a new ID will be allocated from this stash. If you exceed 3111 a new ID will be allocated from this stash. If you exceed
3105 the limit, recording will stop. 3112 the limit, recording will stop.
3106 3113
3107 CONFIG_BOOTSTAGE_REPORT 3114 CONFIG_BOOTSTAGE_REPORT
3108 Define this to print a report before boot, similar to this: 3115 Define this to print a report before boot, similar to this:
3109 3116
3110 Timer summary in microseconds: 3117 Timer summary in microseconds:
3111 Mark Elapsed Stage 3118 Mark Elapsed Stage
3112 0 0 reset 3119 0 0 reset
3113 3,575,678 3,575,678 board_init_f start 3120 3,575,678 3,575,678 board_init_f start
3114 3,575,695 17 arch_cpu_init A9 3121 3,575,695 17 arch_cpu_init A9
3115 3,575,777 82 arch_cpu_init done 3122 3,575,777 82 arch_cpu_init done
3116 3,659,598 83,821 board_init_r start 3123 3,659,598 83,821 board_init_r start
3117 3,910,375 250,777 main_loop 3124 3,910,375 250,777 main_loop
3118 29,916,167 26,005,792 bootm_start 3125 29,916,167 26,005,792 bootm_start
3119 30,361,327 445,160 start_kernel 3126 30,361,327 445,160 start_kernel
3120 3127
3121 CONFIG_CMD_BOOTSTAGE 3128 CONFIG_CMD_BOOTSTAGE
3122 Add a 'bootstage' command which supports printing a report 3129 Add a 'bootstage' command which supports printing a report
3123 and un/stashing of bootstage data. 3130 and un/stashing of bootstage data.
3124 3131
3125 CONFIG_BOOTSTAGE_FDT 3132 CONFIG_BOOTSTAGE_FDT
3126 Stash the bootstage information in the FDT. A root 'bootstage' 3133 Stash the bootstage information in the FDT. A root 'bootstage'
3127 node is created with each bootstage id as a child. Each child 3134 node is created with each bootstage id as a child. Each child
3128 has a 'name' property and either 'mark' containing the 3135 has a 'name' property and either 'mark' containing the
3129 mark time in microsecond, or 'accum' containing the 3136 mark time in microsecond, or 'accum' containing the
3130 accumulated time for that bootstage id in microseconds. 3137 accumulated time for that bootstage id in microseconds.
3131 For example: 3138 For example:
3132 3139
3133 bootstage { 3140 bootstage {
3134 154 { 3141 154 {
3135 name = "board_init_f"; 3142 name = "board_init_f";
3136 mark = <3575678>; 3143 mark = <3575678>;
3137 }; 3144 };
3138 170 { 3145 170 {
3139 name = "lcd"; 3146 name = "lcd";
3140 accum = <33482>; 3147 accum = <33482>;
3141 }; 3148 };
3142 }; 3149 };
3143 3150
3144 Code in the Linux kernel can find this in /proc/devicetree. 3151 Code in the Linux kernel can find this in /proc/devicetree.
3145 3152
3146 Legacy uImage format: 3153 Legacy uImage format:
3147 3154
3148 Arg Where When 3155 Arg Where When
3149 1 common/cmd_bootm.c before attempting to boot an image 3156 1 common/cmd_bootm.c before attempting to boot an image
3150 -1 common/cmd_bootm.c Image header has bad magic number 3157 -1 common/cmd_bootm.c Image header has bad magic number
3151 2 common/cmd_bootm.c Image header has correct magic number 3158 2 common/cmd_bootm.c Image header has correct magic number
3152 -2 common/cmd_bootm.c Image header has bad checksum 3159 -2 common/cmd_bootm.c Image header has bad checksum
3153 3 common/cmd_bootm.c Image header has correct checksum 3160 3 common/cmd_bootm.c Image header has correct checksum
3154 -3 common/cmd_bootm.c Image data has bad checksum 3161 -3 common/cmd_bootm.c Image data has bad checksum
3155 4 common/cmd_bootm.c Image data has correct checksum 3162 4 common/cmd_bootm.c Image data has correct checksum
3156 -4 common/cmd_bootm.c Image is for unsupported architecture 3163 -4 common/cmd_bootm.c Image is for unsupported architecture
3157 5 common/cmd_bootm.c Architecture check OK 3164 5 common/cmd_bootm.c Architecture check OK
3158 -5 common/cmd_bootm.c Wrong Image Type (not kernel, multi) 3165 -5 common/cmd_bootm.c Wrong Image Type (not kernel, multi)
3159 6 common/cmd_bootm.c Image Type check OK 3166 6 common/cmd_bootm.c Image Type check OK
3160 -6 common/cmd_bootm.c gunzip uncompression error 3167 -6 common/cmd_bootm.c gunzip uncompression error
3161 -7 common/cmd_bootm.c Unimplemented compression type 3168 -7 common/cmd_bootm.c Unimplemented compression type
3162 7 common/cmd_bootm.c Uncompression OK 3169 7 common/cmd_bootm.c Uncompression OK
3163 8 common/cmd_bootm.c No uncompress/copy overwrite error 3170 8 common/cmd_bootm.c No uncompress/copy overwrite error
3164 -9 common/cmd_bootm.c Unsupported OS (not Linux, BSD, VxWorks, QNX) 3171 -9 common/cmd_bootm.c Unsupported OS (not Linux, BSD, VxWorks, QNX)
3165 3172
3166 9 common/image.c Start initial ramdisk verification 3173 9 common/image.c Start initial ramdisk verification
3167 -10 common/image.c Ramdisk header has bad magic number 3174 -10 common/image.c Ramdisk header has bad magic number
3168 -11 common/image.c Ramdisk header has bad checksum 3175 -11 common/image.c Ramdisk header has bad checksum
3169 10 common/image.c Ramdisk header is OK 3176 10 common/image.c Ramdisk header is OK
3170 -12 common/image.c Ramdisk data has bad checksum 3177 -12 common/image.c Ramdisk data has bad checksum
3171 11 common/image.c Ramdisk data has correct checksum 3178 11 common/image.c Ramdisk data has correct checksum
3172 12 common/image.c Ramdisk verification complete, start loading 3179 12 common/image.c Ramdisk verification complete, start loading
3173 -13 common/image.c Wrong Image Type (not PPC Linux ramdisk) 3180 -13 common/image.c Wrong Image Type (not PPC Linux ramdisk)
3174 13 common/image.c Start multifile image verification 3181 13 common/image.c Start multifile image verification
3175 14 common/image.c No initial ramdisk, no multifile, continue. 3182 14 common/image.c No initial ramdisk, no multifile, continue.
3176 3183
3177 15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS 3184 15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
3178 3185
3179 -30 arch/powerpc/lib/board.c Fatal error, hang the system 3186 -30 arch/powerpc/lib/board.c Fatal error, hang the system
3180 -31 post/post.c POST test failed, detected by post_output_backlog() 3187 -31 post/post.c POST test failed, detected by post_output_backlog()
3181 -32 post/post.c POST test failed, detected by post_run_single() 3188 -32 post/post.c POST test failed, detected by post_run_single()
3182 3189
3183 34 common/cmd_doc.c before loading a Image from a DOC device 3190 34 common/cmd_doc.c before loading a Image from a DOC device
3184 -35 common/cmd_doc.c Bad usage of "doc" command 3191 -35 common/cmd_doc.c Bad usage of "doc" command
3185 35 common/cmd_doc.c correct usage of "doc" command 3192 35 common/cmd_doc.c correct usage of "doc" command
3186 -36 common/cmd_doc.c No boot device 3193 -36 common/cmd_doc.c No boot device
3187 36 common/cmd_doc.c correct boot device 3194 36 common/cmd_doc.c correct boot device
3188 -37 common/cmd_doc.c Unknown Chip ID on boot device 3195 -37 common/cmd_doc.c Unknown Chip ID on boot device
3189 37 common/cmd_doc.c correct chip ID found, device available 3196 37 common/cmd_doc.c correct chip ID found, device available
3190 -38 common/cmd_doc.c Read Error on boot device 3197 -38 common/cmd_doc.c Read Error on boot device
3191 38 common/cmd_doc.c reading Image header from DOC device OK 3198 38 common/cmd_doc.c reading Image header from DOC device OK
3192 -39 common/cmd_doc.c Image header has bad magic number 3199 -39 common/cmd_doc.c Image header has bad magic number
3193 39 common/cmd_doc.c Image header has correct magic number 3200 39 common/cmd_doc.c Image header has correct magic number
3194 -40 common/cmd_doc.c Error reading Image from DOC device 3201 -40 common/cmd_doc.c Error reading Image from DOC device
3195 40 common/cmd_doc.c Image header has correct magic number 3202 40 common/cmd_doc.c Image header has correct magic number
3196 41 common/cmd_ide.c before loading a Image from a IDE device 3203 41 common/cmd_ide.c before loading a Image from a IDE device
3197 -42 common/cmd_ide.c Bad usage of "ide" command 3204 -42 common/cmd_ide.c Bad usage of "ide" command
3198 42 common/cmd_ide.c correct usage of "ide" command 3205 42 common/cmd_ide.c correct usage of "ide" command
3199 -43 common/cmd_ide.c No boot device 3206 -43 common/cmd_ide.c No boot device
3200 43 common/cmd_ide.c boot device found 3207 43 common/cmd_ide.c boot device found
3201 -44 common/cmd_ide.c Device not available 3208 -44 common/cmd_ide.c Device not available
3202 44 common/cmd_ide.c Device available 3209 44 common/cmd_ide.c Device available
3203 -45 common/cmd_ide.c wrong partition selected 3210 -45 common/cmd_ide.c wrong partition selected
3204 45 common/cmd_ide.c partition selected 3211 45 common/cmd_ide.c partition selected
3205 -46 common/cmd_ide.c Unknown partition table 3212 -46 common/cmd_ide.c Unknown partition table
3206 46 common/cmd_ide.c valid partition table found 3213 46 common/cmd_ide.c valid partition table found
3207 -47 common/cmd_ide.c Invalid partition type 3214 -47 common/cmd_ide.c Invalid partition type
3208 47 common/cmd_ide.c correct partition type 3215 47 common/cmd_ide.c correct partition type
3209 -48 common/cmd_ide.c Error reading Image Header on boot device 3216 -48 common/cmd_ide.c Error reading Image Header on boot device
3210 48 common/cmd_ide.c reading Image Header from IDE device OK 3217 48 common/cmd_ide.c reading Image Header from IDE device OK
3211 -49 common/cmd_ide.c Image header has bad magic number 3218 -49 common/cmd_ide.c Image header has bad magic number
3212 49 common/cmd_ide.c Image header has correct magic number 3219 49 common/cmd_ide.c Image header has correct magic number
3213 -50 common/cmd_ide.c Image header has bad checksum 3220 -50 common/cmd_ide.c Image header has bad checksum
3214 50 common/cmd_ide.c Image header has correct checksum 3221 50 common/cmd_ide.c Image header has correct checksum
3215 -51 common/cmd_ide.c Error reading Image from IDE device 3222 -51 common/cmd_ide.c Error reading Image from IDE device
3216 51 common/cmd_ide.c reading Image from IDE device OK 3223 51 common/cmd_ide.c reading Image from IDE device OK
3217 52 common/cmd_nand.c before loading a Image from a NAND device 3224 52 common/cmd_nand.c before loading a Image from a NAND device
3218 -53 common/cmd_nand.c Bad usage of "nand" command 3225 -53 common/cmd_nand.c Bad usage of "nand" command
3219 53 common/cmd_nand.c correct usage of "nand" command 3226 53 common/cmd_nand.c correct usage of "nand" command
3220 -54 common/cmd_nand.c No boot device 3227 -54 common/cmd_nand.c No boot device
3221 54 common/cmd_nand.c boot device found 3228 54 common/cmd_nand.c boot device found
3222 -55 common/cmd_nand.c Unknown Chip ID on boot device 3229 -55 common/cmd_nand.c Unknown Chip ID on boot device
3223 55 common/cmd_nand.c correct chip ID found, device available 3230 55 common/cmd_nand.c correct chip ID found, device available
3224 -56 common/cmd_nand.c Error reading Image Header on boot device 3231 -56 common/cmd_nand.c Error reading Image Header on boot device
3225 56 common/cmd_nand.c reading Image Header from NAND device OK 3232 56 common/cmd_nand.c reading Image Header from NAND device OK
3226 -57 common/cmd_nand.c Image header has bad magic number 3233 -57 common/cmd_nand.c Image header has bad magic number
3227 57 common/cmd_nand.c Image header has correct magic number 3234 57 common/cmd_nand.c Image header has correct magic number
3228 -58 common/cmd_nand.c Error reading Image from NAND device 3235 -58 common/cmd_nand.c Error reading Image from NAND device
3229 58 common/cmd_nand.c reading Image from NAND device OK 3236 58 common/cmd_nand.c reading Image from NAND device OK
3230 3237
3231 -60 common/env_common.c Environment has a bad CRC, using default 3238 -60 common/env_common.c Environment has a bad CRC, using default
3232 3239
3233 64 net/eth.c starting with Ethernet configuration. 3240 64 net/eth.c starting with Ethernet configuration.
3234 -64 net/eth.c no Ethernet found. 3241 -64 net/eth.c no Ethernet found.
3235 65 net/eth.c Ethernet found. 3242 65 net/eth.c Ethernet found.
3236 3243
3237 -80 common/cmd_net.c usage wrong 3244 -80 common/cmd_net.c usage wrong
3238 80 common/cmd_net.c before calling NetLoop() 3245 80 common/cmd_net.c before calling NetLoop()
3239 -81 common/cmd_net.c some error in NetLoop() occurred 3246 -81 common/cmd_net.c some error in NetLoop() occurred
3240 81 common/cmd_net.c NetLoop() back without error 3247 81 common/cmd_net.c NetLoop() back without error
3241 -82 common/cmd_net.c size == 0 (File with size 0 loaded) 3248 -82 common/cmd_net.c size == 0 (File with size 0 loaded)
3242 82 common/cmd_net.c trying automatic boot 3249 82 common/cmd_net.c trying automatic boot
3243 83 common/cmd_net.c running "source" command 3250 83 common/cmd_net.c running "source" command
3244 -83 common/cmd_net.c some error in automatic boot or "source" command 3251 -83 common/cmd_net.c some error in automatic boot or "source" command
3245 84 common/cmd_net.c end without errors 3252 84 common/cmd_net.c end without errors
3246 3253
3247 FIT uImage format: 3254 FIT uImage format:
3248 3255
3249 Arg Where When 3256 Arg Where When
3250 100 common/cmd_bootm.c Kernel FIT Image has correct format 3257 100 common/cmd_bootm.c Kernel FIT Image has correct format
3251 -100 common/cmd_bootm.c Kernel FIT Image has incorrect format 3258 -100 common/cmd_bootm.c Kernel FIT Image has incorrect format
3252 101 common/cmd_bootm.c No Kernel subimage unit name, using configuration 3259 101 common/cmd_bootm.c No Kernel subimage unit name, using configuration
3253 -101 common/cmd_bootm.c Can't get configuration for kernel subimage 3260 -101 common/cmd_bootm.c Can't get configuration for kernel subimage
3254 102 common/cmd_bootm.c Kernel unit name specified 3261 102 common/cmd_bootm.c Kernel unit name specified
3255 -103 common/cmd_bootm.c Can't get kernel subimage node offset 3262 -103 common/cmd_bootm.c Can't get kernel subimage node offset
3256 103 common/cmd_bootm.c Found configuration node 3263 103 common/cmd_bootm.c Found configuration node
3257 104 common/cmd_bootm.c Got kernel subimage node offset 3264 104 common/cmd_bootm.c Got kernel subimage node offset
3258 -104 common/cmd_bootm.c Kernel subimage hash verification failed 3265 -104 common/cmd_bootm.c Kernel subimage hash verification failed
3259 105 common/cmd_bootm.c Kernel subimage hash verification OK 3266 105 common/cmd_bootm.c Kernel subimage hash verification OK
3260 -105 common/cmd_bootm.c Kernel subimage is for unsupported architecture 3267 -105 common/cmd_bootm.c Kernel subimage is for unsupported architecture
3261 106 common/cmd_bootm.c Architecture check OK 3268 106 common/cmd_bootm.c Architecture check OK
3262 -106 common/cmd_bootm.c Kernel subimage has wrong type 3269 -106 common/cmd_bootm.c Kernel subimage has wrong type
3263 107 common/cmd_bootm.c Kernel subimage type OK 3270 107 common/cmd_bootm.c Kernel subimage type OK
3264 -107 common/cmd_bootm.c Can't get kernel subimage data/size 3271 -107 common/cmd_bootm.c Can't get kernel subimage data/size
3265 108 common/cmd_bootm.c Got kernel subimage data/size 3272 108 common/cmd_bootm.c Got kernel subimage data/size
3266 -108 common/cmd_bootm.c Wrong image type (not legacy, FIT) 3273 -108 common/cmd_bootm.c Wrong image type (not legacy, FIT)
3267 -109 common/cmd_bootm.c Can't get kernel subimage type 3274 -109 common/cmd_bootm.c Can't get kernel subimage type
3268 -110 common/cmd_bootm.c Can't get kernel subimage comp 3275 -110 common/cmd_bootm.c Can't get kernel subimage comp
3269 -111 common/cmd_bootm.c Can't get kernel subimage os 3276 -111 common/cmd_bootm.c Can't get kernel subimage os
3270 -112 common/cmd_bootm.c Can't get kernel subimage load address 3277 -112 common/cmd_bootm.c Can't get kernel subimage load address
3271 -113 common/cmd_bootm.c Image uncompress/copy overwrite error 3278 -113 common/cmd_bootm.c Image uncompress/copy overwrite error
3272 3279
3273 120 common/image.c Start initial ramdisk verification 3280 120 common/image.c Start initial ramdisk verification
3274 -120 common/image.c Ramdisk FIT image has incorrect format 3281 -120 common/image.c Ramdisk FIT image has incorrect format
3275 121 common/image.c Ramdisk FIT image has correct format 3282 121 common/image.c Ramdisk FIT image has correct format
3276 122 common/image.c No ramdisk subimage unit name, using configuration 3283 122 common/image.c No ramdisk subimage unit name, using configuration
3277 -122 common/image.c Can't get configuration for ramdisk subimage 3284 -122 common/image.c Can't get configuration for ramdisk subimage
3278 123 common/image.c Ramdisk unit name specified 3285 123 common/image.c Ramdisk unit name specified
3279 -124 common/image.c Can't get ramdisk subimage node offset 3286 -124 common/image.c Can't get ramdisk subimage node offset
3280 125 common/image.c Got ramdisk subimage node offset 3287 125 common/image.c Got ramdisk subimage node offset
3281 -125 common/image.c Ramdisk subimage hash verification failed 3288 -125 common/image.c Ramdisk subimage hash verification failed
3282 126 common/image.c Ramdisk subimage hash verification OK 3289 126 common/image.c Ramdisk subimage hash verification OK
3283 -126 common/image.c Ramdisk subimage for unsupported architecture 3290 -126 common/image.c Ramdisk subimage for unsupported architecture
3284 127 common/image.c Architecture check OK 3291 127 common/image.c Architecture check OK
3285 -127 common/image.c Can't get ramdisk subimage data/size 3292 -127 common/image.c Can't get ramdisk subimage data/size
3286 128 common/image.c Got ramdisk subimage data/size 3293 128 common/image.c Got ramdisk subimage data/size
3287 129 common/image.c Can't get ramdisk load address 3294 129 common/image.c Can't get ramdisk load address
3288 -129 common/image.c Got ramdisk load address 3295 -129 common/image.c Got ramdisk load address
3289 3296
3290 -130 common/cmd_doc.c Incorrect FIT image format 3297 -130 common/cmd_doc.c Incorrect FIT image format
3291 131 common/cmd_doc.c FIT image format OK 3298 131 common/cmd_doc.c FIT image format OK
3292 3299
3293 -140 common/cmd_ide.c Incorrect FIT image format 3300 -140 common/cmd_ide.c Incorrect FIT image format
3294 141 common/cmd_ide.c FIT image format OK 3301 141 common/cmd_ide.c FIT image format OK
3295 3302
3296 -150 common/cmd_nand.c Incorrect FIT image format 3303 -150 common/cmd_nand.c Incorrect FIT image format
3297 151 common/cmd_nand.c FIT image format OK 3304 151 common/cmd_nand.c FIT image format OK
3298 3305
3299 - legacy image format: 3306 - legacy image format:
3300 CONFIG_IMAGE_FORMAT_LEGACY 3307 CONFIG_IMAGE_FORMAT_LEGACY
3301 enables the legacy image format support in U-Boot. 3308 enables the legacy image format support in U-Boot.
3302 3309
3303 Default: 3310 Default:
3304 enabled if CONFIG_FIT_SIGNATURE is not defined. 3311 enabled if CONFIG_FIT_SIGNATURE is not defined.
3305 3312
3306 CONFIG_DISABLE_IMAGE_LEGACY 3313 CONFIG_DISABLE_IMAGE_LEGACY
3307 disable the legacy image format 3314 disable the legacy image format
3308 3315
3309 This define is introduced, as the legacy image format is 3316 This define is introduced, as the legacy image format is
3310 enabled per default for backward compatibility. 3317 enabled per default for backward compatibility.
3311 3318
3312 - FIT image support: 3319 - FIT image support:
3313 CONFIG_FIT 3320 CONFIG_FIT
3314 Enable support for the FIT uImage format. 3321 Enable support for the FIT uImage format.
3315 3322
3316 CONFIG_FIT_BEST_MATCH 3323 CONFIG_FIT_BEST_MATCH
3317 When no configuration is explicitly selected, default to the 3324 When no configuration is explicitly selected, default to the
3318 one whose fdt's compatibility field best matches that of 3325 one whose fdt's compatibility field best matches that of
3319 U-Boot itself. A match is considered "best" if it matches the 3326 U-Boot itself. A match is considered "best" if it matches the
3320 most specific compatibility entry of U-Boot's fdt's root node. 3327 most specific compatibility entry of U-Boot's fdt's root node.
3321 The order of entries in the configuration's fdt is ignored. 3328 The order of entries in the configuration's fdt is ignored.
3322 3329
3323 CONFIG_FIT_SIGNATURE 3330 CONFIG_FIT_SIGNATURE
3324 This option enables signature verification of FIT uImages, 3331 This option enables signature verification of FIT uImages,
3325 using a hash signed and verified using RSA. See 3332 using a hash signed and verified using RSA. See
3326 doc/uImage.FIT/signature.txt for more details. 3333 doc/uImage.FIT/signature.txt for more details.
3327 3334
3328 WARNING: When relying on signed FIT images with required 3335 WARNING: When relying on signed FIT images with required
3329 signature check the legacy image format is default 3336 signature check the legacy image format is default
3330 disabled. If a board need legacy image format support 3337 disabled. If a board need legacy image format support
3331 enable this through CONFIG_IMAGE_FORMAT_LEGACY 3338 enable this through CONFIG_IMAGE_FORMAT_LEGACY
3332 3339
3333 CONFIG_FIT_DISABLE_SHA256 3340 CONFIG_FIT_DISABLE_SHA256
3334 Supporting SHA256 hashes has quite an impact on binary size. 3341 Supporting SHA256 hashes has quite an impact on binary size.
3335 For constrained systems sha256 hash support can be disabled 3342 For constrained systems sha256 hash support can be disabled
3336 with this option. 3343 with this option.
3337 3344
3338 - Standalone program support: 3345 - Standalone program support:
3339 CONFIG_STANDALONE_LOAD_ADDR 3346 CONFIG_STANDALONE_LOAD_ADDR
3340 3347
3341 This option defines a board specific value for the 3348 This option defines a board specific value for the
3342 address where standalone program gets loaded, thus 3349 address where standalone program gets loaded, thus
3343 overwriting the architecture dependent default 3350 overwriting the architecture dependent default
3344 settings. 3351 settings.
3345 3352
3346 - Frame Buffer Address: 3353 - Frame Buffer Address:
3347 CONFIG_FB_ADDR 3354 CONFIG_FB_ADDR
3348 3355
3349 Define CONFIG_FB_ADDR if you want to use specific 3356 Define CONFIG_FB_ADDR if you want to use specific
3350 address for frame buffer. This is typically the case 3357 address for frame buffer. This is typically the case
3351 when using a graphics controller has separate video 3358 when using a graphics controller has separate video
3352 memory. U-Boot will then place the frame buffer at 3359 memory. U-Boot will then place the frame buffer at
3353 the given address instead of dynamically reserving it 3360 the given address instead of dynamically reserving it
3354 in system RAM by calling lcd_setmem(), which grabs 3361 in system RAM by calling lcd_setmem(), which grabs
3355 the memory for the frame buffer depending on the 3362 the memory for the frame buffer depending on the
3356 configured panel size. 3363 configured panel size.
3357 3364
3358 Please see board_init_f function. 3365 Please see board_init_f function.
3359 3366
3360 - Automatic software updates via TFTP server 3367 - Automatic software updates via TFTP server
3361 CONFIG_UPDATE_TFTP 3368 CONFIG_UPDATE_TFTP
3362 CONFIG_UPDATE_TFTP_CNT_MAX 3369 CONFIG_UPDATE_TFTP_CNT_MAX
3363 CONFIG_UPDATE_TFTP_MSEC_MAX 3370 CONFIG_UPDATE_TFTP_MSEC_MAX
3364 3371
3365 These options enable and control the auto-update feature; 3372 These options enable and control the auto-update feature;
3366 for a more detailed description refer to doc/README.update. 3373 for a more detailed description refer to doc/README.update.
3367 3374
3368 - MTD Support (mtdparts command, UBI support) 3375 - MTD Support (mtdparts command, UBI support)
3369 CONFIG_MTD_DEVICE 3376 CONFIG_MTD_DEVICE
3370 3377
3371 Adds the MTD device infrastructure from the Linux kernel. 3378 Adds the MTD device infrastructure from the Linux kernel.
3372 Needed for mtdparts command support. 3379 Needed for mtdparts command support.
3373 3380
3374 CONFIG_MTD_PARTITIONS 3381 CONFIG_MTD_PARTITIONS
3375 3382
3376 Adds the MTD partitioning infrastructure from the Linux 3383 Adds the MTD partitioning infrastructure from the Linux
3377 kernel. Needed for UBI support. 3384 kernel. Needed for UBI support.
3378 3385
3379 CONFIG_MTD_NAND_VERIFY_WRITE 3386 CONFIG_MTD_NAND_VERIFY_WRITE
3380 verify if the written data is correct reread. 3387 verify if the written data is correct reread.
3381 3388
3382 - UBI support 3389 - UBI support
3383 CONFIG_CMD_UBI 3390 CONFIG_CMD_UBI
3384 3391
3385 Adds commands for interacting with MTD partitions formatted 3392 Adds commands for interacting with MTD partitions formatted
3386 with the UBI flash translation layer 3393 with the UBI flash translation layer
3387 3394
3388 Requires also defining CONFIG_RBTREE 3395 Requires also defining CONFIG_RBTREE
3389 3396
3390 CONFIG_UBI_SILENCE_MSG 3397 CONFIG_UBI_SILENCE_MSG
3391 3398
3392 Make the verbose messages from UBI stop printing. This leaves 3399 Make the verbose messages from UBI stop printing. This leaves
3393 warnings and errors enabled. 3400 warnings and errors enabled.
3394 3401
3395 3402
3396 CONFIG_MTD_UBI_WL_THRESHOLD 3403 CONFIG_MTD_UBI_WL_THRESHOLD
3397 This parameter defines the maximum difference between the highest 3404 This parameter defines the maximum difference between the highest
3398 erase counter value and the lowest erase counter value of eraseblocks 3405 erase counter value and the lowest erase counter value of eraseblocks
3399 of UBI devices. When this threshold is exceeded, UBI starts performing 3406 of UBI devices. When this threshold is exceeded, UBI starts performing
3400 wear leveling by means of moving data from eraseblock with low erase 3407 wear leveling by means of moving data from eraseblock with low erase
3401 counter to eraseblocks with high erase counter. 3408 counter to eraseblocks with high erase counter.
3402 3409
3403 The default value should be OK for SLC NAND flashes, NOR flashes and 3410 The default value should be OK for SLC NAND flashes, NOR flashes and
3404 other flashes which have eraseblock life-cycle 100000 or more. 3411 other flashes which have eraseblock life-cycle 100000 or more.
3405 However, in case of MLC NAND flashes which typically have eraseblock 3412 However, in case of MLC NAND flashes which typically have eraseblock
3406 life-cycle less than 10000, the threshold should be lessened (e.g., 3413 life-cycle less than 10000, the threshold should be lessened (e.g.,
3407 to 128 or 256, although it does not have to be power of 2). 3414 to 128 or 256, although it does not have to be power of 2).
3408 3415
3409 default: 4096 3416 default: 4096
3410 3417
3411 CONFIG_MTD_UBI_BEB_LIMIT 3418 CONFIG_MTD_UBI_BEB_LIMIT
3412 This option specifies the maximum bad physical eraseblocks UBI 3419 This option specifies the maximum bad physical eraseblocks UBI
3413 expects on the MTD device (per 1024 eraseblocks). If the 3420 expects on the MTD device (per 1024 eraseblocks). If the
3414 underlying flash does not admit of bad eraseblocks (e.g. NOR 3421 underlying flash does not admit of bad eraseblocks (e.g. NOR
3415 flash), this value is ignored. 3422 flash), this value is ignored.
3416 3423
3417 NAND datasheets often specify the minimum and maximum NVM 3424 NAND datasheets often specify the minimum and maximum NVM
3418 (Number of Valid Blocks) for the flashes' endurance lifetime. 3425 (Number of Valid Blocks) for the flashes' endurance lifetime.
3419 The maximum expected bad eraseblocks per 1024 eraseblocks 3426 The maximum expected bad eraseblocks per 1024 eraseblocks
3420 then can be calculated as "1024 * (1 - MinNVB / MaxNVB)", 3427 then can be calculated as "1024 * (1 - MinNVB / MaxNVB)",
3421 which gives 20 for most NANDs (MaxNVB is basically the total 3428 which gives 20 for most NANDs (MaxNVB is basically the total
3422 count of eraseblocks on the chip). 3429 count of eraseblocks on the chip).
3423 3430
3424 To put it differently, if this value is 20, UBI will try to 3431 To put it differently, if this value is 20, UBI will try to
3425 reserve about 1.9% of physical eraseblocks for bad blocks 3432 reserve about 1.9% of physical eraseblocks for bad blocks
3426 handling. And that will be 1.9% of eraseblocks on the entire 3433 handling. And that will be 1.9% of eraseblocks on the entire
3427 NAND chip, not just the MTD partition UBI attaches. This means 3434 NAND chip, not just the MTD partition UBI attaches. This means
3428 that if you have, say, a NAND flash chip admits maximum 40 bad 3435 that if you have, say, a NAND flash chip admits maximum 40 bad
3429 eraseblocks, and it is split on two MTD partitions of the same 3436 eraseblocks, and it is split on two MTD partitions of the same
3430 size, UBI will reserve 40 eraseblocks when attaching a 3437 size, UBI will reserve 40 eraseblocks when attaching a
3431 partition. 3438 partition.
3432 3439
3433 default: 20 3440 default: 20
3434 3441
3435 CONFIG_MTD_UBI_FASTMAP 3442 CONFIG_MTD_UBI_FASTMAP
3436 Fastmap is a mechanism which allows attaching an UBI device 3443 Fastmap is a mechanism which allows attaching an UBI device
3437 in nearly constant time. Instead of scanning the whole MTD device it 3444 in nearly constant time. Instead of scanning the whole MTD device it
3438 only has to locate a checkpoint (called fastmap) on the device. 3445 only has to locate a checkpoint (called fastmap) on the device.
3439 The on-flash fastmap contains all information needed to attach 3446 The on-flash fastmap contains all information needed to attach
3440 the device. Using fastmap makes only sense on large devices where 3447 the device. Using fastmap makes only sense on large devices where
3441 attaching by scanning takes long. UBI will not automatically install 3448 attaching by scanning takes long. UBI will not automatically install
3442 a fastmap on old images, but you can set the UBI parameter 3449 a fastmap on old images, but you can set the UBI parameter
3443 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT to 1 if you want so. Please note 3450 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT to 1 if you want so. Please note
3444 that fastmap-enabled images are still usable with UBI implementations 3451 that fastmap-enabled images are still usable with UBI implementations
3445 without fastmap support. On typical flash devices the whole fastmap 3452 without fastmap support. On typical flash devices the whole fastmap
3446 fits into one PEB. UBI will reserve PEBs to hold two fastmaps. 3453 fits into one PEB. UBI will reserve PEBs to hold two fastmaps.
3447 3454
3448 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT 3455 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT
3449 Set this parameter to enable fastmap automatically on images 3456 Set this parameter to enable fastmap automatically on images
3450 without a fastmap. 3457 without a fastmap.
3451 default: 0 3458 default: 0
3452 3459
3453 - UBIFS support 3460 - UBIFS support
3454 CONFIG_CMD_UBIFS 3461 CONFIG_CMD_UBIFS
3455 3462
3456 Adds commands for interacting with UBI volumes formatted as 3463 Adds commands for interacting with UBI volumes formatted as
3457 UBIFS. UBIFS is read-only in u-boot. 3464 UBIFS. UBIFS is read-only in u-boot.
3458 3465
3459 Requires UBI support as well as CONFIG_LZO 3466 Requires UBI support as well as CONFIG_LZO
3460 3467
3461 CONFIG_UBIFS_SILENCE_MSG 3468 CONFIG_UBIFS_SILENCE_MSG
3462 3469
3463 Make the verbose messages from UBIFS stop printing. This leaves 3470 Make the verbose messages from UBIFS stop printing. This leaves
3464 warnings and errors enabled. 3471 warnings and errors enabled.
3465 3472
3466 - SPL framework 3473 - SPL framework
3467 CONFIG_SPL 3474 CONFIG_SPL
3468 Enable building of SPL globally. 3475 Enable building of SPL globally.
3469 3476
3470 CONFIG_SPL_LDSCRIPT 3477 CONFIG_SPL_LDSCRIPT
3471 LDSCRIPT for linking the SPL binary. 3478 LDSCRIPT for linking the SPL binary.
3472 3479
3473 CONFIG_SPL_MAX_FOOTPRINT 3480 CONFIG_SPL_MAX_FOOTPRINT
3474 Maximum size in memory allocated to the SPL, BSS included. 3481 Maximum size in memory allocated to the SPL, BSS included.
3475 When defined, the linker checks that the actual memory 3482 When defined, the linker checks that the actual memory
3476 used by SPL from _start to __bss_end does not exceed it. 3483 used by SPL from _start to __bss_end does not exceed it.
3477 CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE 3484 CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE
3478 must not be both defined at the same time. 3485 must not be both defined at the same time.
3479 3486
3480 CONFIG_SPL_MAX_SIZE 3487 CONFIG_SPL_MAX_SIZE
3481 Maximum size of the SPL image (text, data, rodata, and 3488 Maximum size of the SPL image (text, data, rodata, and
3482 linker lists sections), BSS excluded. 3489 linker lists sections), BSS excluded.
3483 When defined, the linker checks that the actual size does 3490 When defined, the linker checks that the actual size does
3484 not exceed it. 3491 not exceed it.
3485 3492
3486 CONFIG_SPL_TEXT_BASE 3493 CONFIG_SPL_TEXT_BASE
3487 TEXT_BASE for linking the SPL binary. 3494 TEXT_BASE for linking the SPL binary.
3488 3495
3489 CONFIG_SPL_RELOC_TEXT_BASE 3496 CONFIG_SPL_RELOC_TEXT_BASE
3490 Address to relocate to. If unspecified, this is equal to 3497 Address to relocate to. If unspecified, this is equal to
3491 CONFIG_SPL_TEXT_BASE (i.e. no relocation is done). 3498 CONFIG_SPL_TEXT_BASE (i.e. no relocation is done).
3492 3499
3493 CONFIG_SPL_BSS_START_ADDR 3500 CONFIG_SPL_BSS_START_ADDR
3494 Link address for the BSS within the SPL binary. 3501 Link address for the BSS within the SPL binary.
3495 3502
3496 CONFIG_SPL_BSS_MAX_SIZE 3503 CONFIG_SPL_BSS_MAX_SIZE
3497 Maximum size in memory allocated to the SPL BSS. 3504 Maximum size in memory allocated to the SPL BSS.
3498 When defined, the linker checks that the actual memory used 3505 When defined, the linker checks that the actual memory used
3499 by SPL from __bss_start to __bss_end does not exceed it. 3506 by SPL from __bss_start to __bss_end does not exceed it.
3500 CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE 3507 CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE
3501 must not be both defined at the same time. 3508 must not be both defined at the same time.
3502 3509
3503 CONFIG_SPL_STACK 3510 CONFIG_SPL_STACK
3504 Adress of the start of the stack SPL will use 3511 Adress of the start of the stack SPL will use
3505 3512
3506 CONFIG_SPL_RELOC_STACK 3513 CONFIG_SPL_RELOC_STACK
3507 Adress of the start of the stack SPL will use after 3514 Adress of the start of the stack SPL will use after
3508 relocation. If unspecified, this is equal to 3515 relocation. If unspecified, this is equal to
3509 CONFIG_SPL_STACK. 3516 CONFIG_SPL_STACK.
3510 3517
3511 CONFIG_SYS_SPL_MALLOC_START 3518 CONFIG_SYS_SPL_MALLOC_START
3512 Starting address of the malloc pool used in SPL. 3519 Starting address of the malloc pool used in SPL.
3513 3520
3514 CONFIG_SYS_SPL_MALLOC_SIZE 3521 CONFIG_SYS_SPL_MALLOC_SIZE
3515 The size of the malloc pool used in SPL. 3522 The size of the malloc pool used in SPL.
3516 3523
3517 CONFIG_SPL_FRAMEWORK 3524 CONFIG_SPL_FRAMEWORK
3518 Enable the SPL framework under common/. This framework 3525 Enable the SPL framework under common/. This framework
3519 supports MMC, NAND and YMODEM loading of U-Boot and NAND 3526 supports MMC, NAND and YMODEM loading of U-Boot and NAND
3520 NAND loading of the Linux Kernel. 3527 NAND loading of the Linux Kernel.
3521 3528
3522 CONFIG_SPL_OS_BOOT 3529 CONFIG_SPL_OS_BOOT
3523 Enable booting directly to an OS from SPL. 3530 Enable booting directly to an OS from SPL.
3524 See also: doc/README.falcon 3531 See also: doc/README.falcon
3525 3532
3526 CONFIG_SPL_DISPLAY_PRINT 3533 CONFIG_SPL_DISPLAY_PRINT
3527 For ARM, enable an optional function to print more information 3534 For ARM, enable an optional function to print more information
3528 about the running system. 3535 about the running system.
3529 3536
3530 CONFIG_SPL_INIT_MINIMAL 3537 CONFIG_SPL_INIT_MINIMAL
3531 Arch init code should be built for a very small image 3538 Arch init code should be built for a very small image
3532 3539
3533 CONFIG_SPL_LIBCOMMON_SUPPORT 3540 CONFIG_SPL_LIBCOMMON_SUPPORT
3534 Support for common/libcommon.o in SPL binary 3541 Support for common/libcommon.o in SPL binary
3535 3542
3536 CONFIG_SPL_LIBDISK_SUPPORT 3543 CONFIG_SPL_LIBDISK_SUPPORT
3537 Support for disk/libdisk.o in SPL binary 3544 Support for disk/libdisk.o in SPL binary
3538 3545
3539 CONFIG_SPL_I2C_SUPPORT 3546 CONFIG_SPL_I2C_SUPPORT
3540 Support for drivers/i2c/libi2c.o in SPL binary 3547 Support for drivers/i2c/libi2c.o in SPL binary
3541 3548
3542 CONFIG_SPL_GPIO_SUPPORT 3549 CONFIG_SPL_GPIO_SUPPORT
3543 Support for drivers/gpio/libgpio.o in SPL binary 3550 Support for drivers/gpio/libgpio.o in SPL binary
3544 3551
3545 CONFIG_SPL_MMC_SUPPORT 3552 CONFIG_SPL_MMC_SUPPORT
3546 Support for drivers/mmc/libmmc.o in SPL binary 3553 Support for drivers/mmc/libmmc.o in SPL binary
3547 3554
3548 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR, 3555 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR,
3549 CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS, 3556 CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS,
3550 CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION 3557 CONFIG_SYS_MMC_SD_FS_BOOT_PARTITION
3551 Address, size and partition on the MMC to load U-Boot from 3558 Address, size and partition on the MMC to load U-Boot from
3552 when the MMC is being used in raw mode. 3559 when the MMC is being used in raw mode.
3553 3560
3554 CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 3561 CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
3555 Sector to load kernel uImage from when MMC is being 3562 Sector to load kernel uImage from when MMC is being
3556 used in raw mode (for Falcon mode) 3563 used in raw mode (for Falcon mode)
3557 3564
3558 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR, 3565 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR,
3559 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 3566 CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS
3560 Sector and number of sectors to load kernel argument 3567 Sector and number of sectors to load kernel argument
3561 parameters from when MMC is being used in raw mode 3568 parameters from when MMC is being used in raw mode
3562 (for falcon mode) 3569 (for falcon mode)
3563 3570
3564 CONFIG_SPL_FAT_SUPPORT 3571 CONFIG_SPL_FAT_SUPPORT
3565 Support for fs/fat/libfat.o in SPL binary 3572 Support for fs/fat/libfat.o in SPL binary
3566 3573
3567 CONFIG_SPL_EXT_SUPPORT 3574 CONFIG_SPL_EXT_SUPPORT
3568 Support for EXT filesystem in SPL binary 3575 Support for EXT filesystem in SPL binary
3569 3576
3570 CONFIG_SPL_FS_LOAD_PAYLOAD_NAME 3577 CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
3571 Filename to read to load U-Boot when reading from filesystem 3578 Filename to read to load U-Boot when reading from filesystem
3572 3579
3573 CONFIG_SPL_FS_LOAD_KERNEL_NAME 3580 CONFIG_SPL_FS_LOAD_KERNEL_NAME
3574 Filename to read to load kernel uImage when reading 3581 Filename to read to load kernel uImage when reading
3575 from filesystem (for Falcon mode) 3582 from filesystem (for Falcon mode)
3576 3583
3577 CONFIG_SPL_FS_LOAD_ARGS_NAME 3584 CONFIG_SPL_FS_LOAD_ARGS_NAME
3578 Filename to read to load kernel argument parameters 3585 Filename to read to load kernel argument parameters
3579 when reading from filesystem (for Falcon mode) 3586 when reading from filesystem (for Falcon mode)
3580 3587
3581 CONFIG_SPL_MPC83XX_WAIT_FOR_NAND 3588 CONFIG_SPL_MPC83XX_WAIT_FOR_NAND
3582 Set this for NAND SPL on PPC mpc83xx targets, so that 3589 Set this for NAND SPL on PPC mpc83xx targets, so that
3583 start.S waits for the rest of the SPL to load before 3590 start.S waits for the rest of the SPL to load before
3584 continuing (the hardware starts execution after just 3591 continuing (the hardware starts execution after just
3585 loading the first page rather than the full 4K). 3592 loading the first page rather than the full 4K).
3586 3593
3587 CONFIG_SPL_SKIP_RELOCATE 3594 CONFIG_SPL_SKIP_RELOCATE
3588 Avoid SPL relocation 3595 Avoid SPL relocation
3589 3596
3590 CONFIG_SPL_NAND_BASE 3597 CONFIG_SPL_NAND_BASE
3591 Include nand_base.c in the SPL. Requires 3598 Include nand_base.c in the SPL. Requires
3592 CONFIG_SPL_NAND_DRIVERS. 3599 CONFIG_SPL_NAND_DRIVERS.
3593 3600
3594 CONFIG_SPL_NAND_DRIVERS 3601 CONFIG_SPL_NAND_DRIVERS
3595 SPL uses normal NAND drivers, not minimal drivers. 3602 SPL uses normal NAND drivers, not minimal drivers.
3596 3603
3597 CONFIG_SPL_NAND_ECC 3604 CONFIG_SPL_NAND_ECC
3598 Include standard software ECC in the SPL 3605 Include standard software ECC in the SPL
3599 3606
3600 CONFIG_SPL_NAND_SIMPLE 3607 CONFIG_SPL_NAND_SIMPLE
3601 Support for NAND boot using simple NAND drivers that 3608 Support for NAND boot using simple NAND drivers that
3602 expose the cmd_ctrl() interface. 3609 expose the cmd_ctrl() interface.
3603 3610
3604 CONFIG_SPL_MTD_SUPPORT 3611 CONFIG_SPL_MTD_SUPPORT
3605 Support for the MTD subsystem within SPL. Useful for 3612 Support for the MTD subsystem within SPL. Useful for
3606 environment on NAND support within SPL. 3613 environment on NAND support within SPL.
3607 3614
3608 CONFIG_SPL_NAND_RAW_ONLY 3615 CONFIG_SPL_NAND_RAW_ONLY
3609 Support to boot only raw u-boot.bin images. Use this only 3616 Support to boot only raw u-boot.bin images. Use this only
3610 if you need to save space. 3617 if you need to save space.
3611 3618
3612 CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT 3619 CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
3613 Set for the SPL on PPC mpc8xxx targets, support for 3620 Set for the SPL on PPC mpc8xxx targets, support for
3614 drivers/ddr/fsl/libddr.o in SPL binary. 3621 drivers/ddr/fsl/libddr.o in SPL binary.
3615 3622
3616 CONFIG_SPL_COMMON_INIT_DDR 3623 CONFIG_SPL_COMMON_INIT_DDR
3617 Set for common ddr init with serial presence detect in 3624 Set for common ddr init with serial presence detect in
3618 SPL binary. 3625 SPL binary.
3619 3626
3620 CONFIG_SYS_NAND_5_ADDR_CYCLE, CONFIG_SYS_NAND_PAGE_COUNT, 3627 CONFIG_SYS_NAND_5_ADDR_CYCLE, CONFIG_SYS_NAND_PAGE_COUNT,
3621 CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE, 3628 CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE,
3622 CONFIG_SYS_NAND_BLOCK_SIZE, CONFIG_SYS_NAND_BAD_BLOCK_POS, 3629 CONFIG_SYS_NAND_BLOCK_SIZE, CONFIG_SYS_NAND_BAD_BLOCK_POS,
3623 CONFIG_SYS_NAND_ECCPOS, CONFIG_SYS_NAND_ECCSIZE, 3630 CONFIG_SYS_NAND_ECCPOS, CONFIG_SYS_NAND_ECCSIZE,
3624 CONFIG_SYS_NAND_ECCBYTES 3631 CONFIG_SYS_NAND_ECCBYTES
3625 Defines the size and behavior of the NAND that SPL uses 3632 Defines the size and behavior of the NAND that SPL uses
3626 to read U-Boot 3633 to read U-Boot
3627 3634
3628 CONFIG_SPL_NAND_BOOT 3635 CONFIG_SPL_NAND_BOOT
3629 Add support NAND boot 3636 Add support NAND boot
3630 3637
3631 CONFIG_SYS_NAND_U_BOOT_OFFS 3638 CONFIG_SYS_NAND_U_BOOT_OFFS
3632 Location in NAND to read U-Boot from 3639 Location in NAND to read U-Boot from
3633 3640
3634 CONFIG_SYS_NAND_U_BOOT_DST 3641 CONFIG_SYS_NAND_U_BOOT_DST
3635 Location in memory to load U-Boot to 3642 Location in memory to load U-Boot to
3636 3643
3637 CONFIG_SYS_NAND_U_BOOT_SIZE 3644 CONFIG_SYS_NAND_U_BOOT_SIZE
3638 Size of image to load 3645 Size of image to load
3639 3646
3640 CONFIG_SYS_NAND_U_BOOT_START 3647 CONFIG_SYS_NAND_U_BOOT_START
3641 Entry point in loaded image to jump to 3648 Entry point in loaded image to jump to
3642 3649
3643 CONFIG_SYS_NAND_HW_ECC_OOBFIRST 3650 CONFIG_SYS_NAND_HW_ECC_OOBFIRST
3644 Define this if you need to first read the OOB and then the 3651 Define this if you need to first read the OOB and then the
3645 data. This is used for example on davinci plattforms. 3652 data. This is used for example on davinci plattforms.
3646 3653
3647 CONFIG_SPL_OMAP3_ID_NAND 3654 CONFIG_SPL_OMAP3_ID_NAND
3648 Support for an OMAP3-specific set of functions to return the 3655 Support for an OMAP3-specific set of functions to return the
3649 ID and MFR of the first attached NAND chip, if present. 3656 ID and MFR of the first attached NAND chip, if present.
3650 3657
3651 CONFIG_SPL_SERIAL_SUPPORT 3658 CONFIG_SPL_SERIAL_SUPPORT
3652 Support for drivers/serial/libserial.o in SPL binary 3659 Support for drivers/serial/libserial.o in SPL binary
3653 3660
3654 CONFIG_SPL_SPI_FLASH_SUPPORT 3661 CONFIG_SPL_SPI_FLASH_SUPPORT
3655 Support for drivers/mtd/spi/libspi_flash.o in SPL binary 3662 Support for drivers/mtd/spi/libspi_flash.o in SPL binary
3656 3663
3657 CONFIG_SPL_SPI_SUPPORT 3664 CONFIG_SPL_SPI_SUPPORT
3658 Support for drivers/spi/libspi.o in SPL binary 3665 Support for drivers/spi/libspi.o in SPL binary
3659 3666
3660 CONFIG_SPL_RAM_DEVICE 3667 CONFIG_SPL_RAM_DEVICE
3661 Support for running image already present in ram, in SPL binary 3668 Support for running image already present in ram, in SPL binary
3662 3669
3663 CONFIG_SPL_LIBGENERIC_SUPPORT 3670 CONFIG_SPL_LIBGENERIC_SUPPORT
3664 Support for lib/libgeneric.o in SPL binary 3671 Support for lib/libgeneric.o in SPL binary
3665 3672
3666 CONFIG_SPL_ENV_SUPPORT 3673 CONFIG_SPL_ENV_SUPPORT
3667 Support for the environment operating in SPL binary 3674 Support for the environment operating in SPL binary
3668 3675
3669 CONFIG_SPL_NET_SUPPORT 3676 CONFIG_SPL_NET_SUPPORT
3670 Support for the net/libnet.o in SPL binary. 3677 Support for the net/libnet.o in SPL binary.
3671 It conflicts with SPL env from storage medium specified by 3678 It conflicts with SPL env from storage medium specified by
3672 CONFIG_ENV_IS_xxx but CONFIG_ENV_IS_NOWHERE 3679 CONFIG_ENV_IS_xxx but CONFIG_ENV_IS_NOWHERE
3673 3680
3674 CONFIG_SPL_PAD_TO 3681 CONFIG_SPL_PAD_TO
3675 Image offset to which the SPL should be padded before appending 3682 Image offset to which the SPL should be padded before appending
3676 the SPL payload. By default, this is defined as 3683 the SPL payload. By default, this is defined as
3677 CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined. 3684 CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined.
3678 CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL 3685 CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL
3679 payload without any padding, or >= CONFIG_SPL_MAX_SIZE. 3686 payload without any padding, or >= CONFIG_SPL_MAX_SIZE.
3680 3687
3681 CONFIG_SPL_TARGET 3688 CONFIG_SPL_TARGET
3682 Final target image containing SPL and payload. Some SPLs 3689 Final target image containing SPL and payload. Some SPLs
3683 use an arch-specific makefile fragment instead, for 3690 use an arch-specific makefile fragment instead, for
3684 example if more than one image needs to be produced. 3691 example if more than one image needs to be produced.
3685 3692
3686 CONFIG_FIT_SPL_PRINT 3693 CONFIG_FIT_SPL_PRINT
3687 Printing information about a FIT image adds quite a bit of 3694 Printing information about a FIT image adds quite a bit of
3688 code to SPL. So this is normally disabled in SPL. Use this 3695 code to SPL. So this is normally disabled in SPL. Use this
3689 option to re-enable it. This will affect the output of the 3696 option to re-enable it. This will affect the output of the
3690 bootm command when booting a FIT image. 3697 bootm command when booting a FIT image.
3691 3698
3692 - TPL framework 3699 - TPL framework
3693 CONFIG_TPL 3700 CONFIG_TPL
3694 Enable building of TPL globally. 3701 Enable building of TPL globally.
3695 3702
3696 CONFIG_TPL_PAD_TO 3703 CONFIG_TPL_PAD_TO
3697 Image offset to which the TPL should be padded before appending 3704 Image offset to which the TPL should be padded before appending
3698 the TPL payload. By default, this is defined as 3705 the TPL payload. By default, this is defined as
3699 CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined. 3706 CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined.
3700 CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL 3707 CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL
3701 payload without any padding, or >= CONFIG_SPL_MAX_SIZE. 3708 payload without any padding, or >= CONFIG_SPL_MAX_SIZE.
3702 3709
3703 Modem Support: 3710 Modem Support:
3704 -------------- 3711 --------------
3705 3712
3706 [so far only for SMDK2400 boards] 3713 [so far only for SMDK2400 boards]
3707 3714
3708 - Modem support enable: 3715 - Modem support enable:
3709 CONFIG_MODEM_SUPPORT 3716 CONFIG_MODEM_SUPPORT
3710 3717
3711 - RTS/CTS Flow control enable: 3718 - RTS/CTS Flow control enable:
3712 CONFIG_HWFLOW 3719 CONFIG_HWFLOW
3713 3720
3714 - Modem debug support: 3721 - Modem debug support:
3715 CONFIG_MODEM_SUPPORT_DEBUG 3722 CONFIG_MODEM_SUPPORT_DEBUG
3716 3723
3717 Enables debugging stuff (char screen[1024], dbg()) 3724 Enables debugging stuff (char screen[1024], dbg())
3718 for modem support. Useful only with BDI2000. 3725 for modem support. Useful only with BDI2000.
3719 3726
3720 - Interrupt support (PPC): 3727 - Interrupt support (PPC):
3721 3728
3722 There are common interrupt_init() and timer_interrupt() 3729 There are common interrupt_init() and timer_interrupt()
3723 for all PPC archs. interrupt_init() calls interrupt_init_cpu() 3730 for all PPC archs. interrupt_init() calls interrupt_init_cpu()
3724 for CPU specific initialization. interrupt_init_cpu() 3731 for CPU specific initialization. interrupt_init_cpu()
3725 should set decrementer_count to appropriate value. If 3732 should set decrementer_count to appropriate value. If
3726 CPU resets decrementer automatically after interrupt 3733 CPU resets decrementer automatically after interrupt
3727 (ppc4xx) it should set decrementer_count to zero. 3734 (ppc4xx) it should set decrementer_count to zero.
3728 timer_interrupt() calls timer_interrupt_cpu() for CPU 3735 timer_interrupt() calls timer_interrupt_cpu() for CPU
3729 specific handling. If board has watchdog / status_led 3736 specific handling. If board has watchdog / status_led
3730 / other_activity_monitor it works automatically from 3737 / other_activity_monitor it works automatically from
3731 general timer_interrupt(). 3738 general timer_interrupt().
3732 3739
3733 - General: 3740 - General:
3734 3741
3735 In the target system modem support is enabled when a 3742 In the target system modem support is enabled when a
3736 specific key (key combination) is pressed during 3743 specific key (key combination) is pressed during
3737 power-on. Otherwise U-Boot will boot normally 3744 power-on. Otherwise U-Boot will boot normally
3738 (autoboot). The key_pressed() function is called from 3745 (autoboot). The key_pressed() function is called from
3739 board_init(). Currently key_pressed() is a dummy 3746 board_init(). Currently key_pressed() is a dummy
3740 function, returning 1 and thus enabling modem 3747 function, returning 1 and thus enabling modem
3741 initialization. 3748 initialization.
3742 3749
3743 If there are no modem init strings in the 3750 If there are no modem init strings in the
3744 environment, U-Boot proceed to autoboot; the 3751 environment, U-Boot proceed to autoboot; the
3745 previous output (banner, info printfs) will be 3752 previous output (banner, info printfs) will be
3746 suppressed, though. 3753 suppressed, though.
3747 3754
3748 See also: doc/README.Modem 3755 See also: doc/README.Modem
3749 3756
3750 Board initialization settings: 3757 Board initialization settings:
3751 ------------------------------ 3758 ------------------------------
3752 3759
3753 During Initialization u-boot calls a number of board specific functions 3760 During Initialization u-boot calls a number of board specific functions
3754 to allow the preparation of board specific prerequisites, e.g. pin setup 3761 to allow the preparation of board specific prerequisites, e.g. pin setup
3755 before drivers are initialized. To enable these callbacks the 3762 before drivers are initialized. To enable these callbacks the
3756 following configuration macros have to be defined. Currently this is 3763 following configuration macros have to be defined. Currently this is
3757 architecture specific, so please check arch/your_architecture/lib/board.c 3764 architecture specific, so please check arch/your_architecture/lib/board.c
3758 typically in board_init_f() and board_init_r(). 3765 typically in board_init_f() and board_init_r().
3759 3766
3760 - CONFIG_BOARD_EARLY_INIT_F: Call board_early_init_f() 3767 - CONFIG_BOARD_EARLY_INIT_F: Call board_early_init_f()
3761 - CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r() 3768 - CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()
3762 - CONFIG_BOARD_LATE_INIT: Call board_late_init() 3769 - CONFIG_BOARD_LATE_INIT: Call board_late_init()
3763 - CONFIG_BOARD_POSTCLK_INIT: Call board_postclk_init() 3770 - CONFIG_BOARD_POSTCLK_INIT: Call board_postclk_init()
3764 3771
3765 Configuration Settings: 3772 Configuration Settings:
3766 ----------------------- 3773 -----------------------
3767 3774
3768 - CONFIG_SYS_SUPPORT_64BIT_DATA: Defined automatically if compiled as 64-bit. 3775 - CONFIG_SYS_SUPPORT_64BIT_DATA: Defined automatically if compiled as 64-bit.
3769 Optionally it can be defined to support 64-bit memory commands. 3776 Optionally it can be defined to support 64-bit memory commands.
3770 3777
3771 - CONFIG_SYS_LONGHELP: Defined when you want long help messages included; 3778 - CONFIG_SYS_LONGHELP: Defined when you want long help messages included;
3772 undefine this when you're short of memory. 3779 undefine this when you're short of memory.
3773 3780
3774 - CONFIG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default 3781 - CONFIG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default
3775 width of the commands listed in the 'help' command output. 3782 width of the commands listed in the 'help' command output.
3776 3783
3777 - CONFIG_SYS_PROMPT: This is what U-Boot prints on the console to 3784 - CONFIG_SYS_PROMPT: This is what U-Boot prints on the console to
3778 prompt for user input. 3785 prompt for user input.
3779 3786
3780 - CONFIG_SYS_CBSIZE: Buffer size for input from the Console 3787 - CONFIG_SYS_CBSIZE: Buffer size for input from the Console
3781 3788
3782 - CONFIG_SYS_PBSIZE: Buffer size for Console output 3789 - CONFIG_SYS_PBSIZE: Buffer size for Console output
3783 3790
3784 - CONFIG_SYS_MAXARGS: max. Number of arguments accepted for monitor commands 3791 - CONFIG_SYS_MAXARGS: max. Number of arguments accepted for monitor commands
3785 3792
3786 - CONFIG_SYS_BARGSIZE: Buffer size for Boot Arguments which are passed to 3793 - CONFIG_SYS_BARGSIZE: Buffer size for Boot Arguments which are passed to
3787 the application (usually a Linux kernel) when it is 3794 the application (usually a Linux kernel) when it is
3788 booted 3795 booted
3789 3796
3790 - CONFIG_SYS_BAUDRATE_TABLE: 3797 - CONFIG_SYS_BAUDRATE_TABLE:
3791 List of legal baudrate settings for this board. 3798 List of legal baudrate settings for this board.
3792 3799
3793 - CONFIG_SYS_CONSOLE_INFO_QUIET 3800 - CONFIG_SYS_CONSOLE_INFO_QUIET
3794 Suppress display of console information at boot. 3801 Suppress display of console information at boot.
3795 3802
3796 - CONFIG_SYS_CONSOLE_IS_IN_ENV 3803 - CONFIG_SYS_CONSOLE_IS_IN_ENV
3797 If the board specific function 3804 If the board specific function
3798 extern int overwrite_console (void); 3805 extern int overwrite_console (void);
3799 returns 1, the stdin, stderr and stdout are switched to the 3806 returns 1, the stdin, stderr and stdout are switched to the
3800 serial port, else the settings in the environment are used. 3807 serial port, else the settings in the environment are used.
3801 3808
3802 - CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE 3809 - CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
3803 Enable the call to overwrite_console(). 3810 Enable the call to overwrite_console().
3804 3811
3805 - CONFIG_SYS_CONSOLE_ENV_OVERWRITE 3812 - CONFIG_SYS_CONSOLE_ENV_OVERWRITE
3806 Enable overwrite of previous console environment settings. 3813 Enable overwrite of previous console environment settings.
3807 3814
3808 - CONFIG_SYS_MEMTEST_START, CONFIG_SYS_MEMTEST_END: 3815 - CONFIG_SYS_MEMTEST_START, CONFIG_SYS_MEMTEST_END:
3809 Begin and End addresses of the area used by the 3816 Begin and End addresses of the area used by the
3810 simple memory test. 3817 simple memory test.
3811 3818
3812 - CONFIG_SYS_ALT_MEMTEST: 3819 - CONFIG_SYS_ALT_MEMTEST:
3813 Enable an alternate, more extensive memory test. 3820 Enable an alternate, more extensive memory test.
3814 3821
3815 - CONFIG_SYS_MEMTEST_SCRATCH: 3822 - CONFIG_SYS_MEMTEST_SCRATCH:
3816 Scratch address used by the alternate memory test 3823 Scratch address used by the alternate memory test
3817 You only need to set this if address zero isn't writeable 3824 You only need to set this if address zero isn't writeable
3818 3825
3819 - CONFIG_SYS_MEM_TOP_HIDE (PPC only): 3826 - CONFIG_SYS_MEM_TOP_HIDE (PPC only):
3820 If CONFIG_SYS_MEM_TOP_HIDE is defined in the board config header, 3827 If CONFIG_SYS_MEM_TOP_HIDE is defined in the board config header,
3821 this specified memory area will get subtracted from the top 3828 this specified memory area will get subtracted from the top
3822 (end) of RAM and won't get "touched" at all by U-Boot. By 3829 (end) of RAM and won't get "touched" at all by U-Boot. By
3823 fixing up gd->ram_size the Linux kernel should gets passed 3830 fixing up gd->ram_size the Linux kernel should gets passed
3824 the now "corrected" memory size and won't touch it either. 3831 the now "corrected" memory size and won't touch it either.
3825 This should work for arch/ppc and arch/powerpc. Only Linux 3832 This should work for arch/ppc and arch/powerpc. Only Linux
3826 board ports in arch/powerpc with bootwrapper support that 3833 board ports in arch/powerpc with bootwrapper support that
3827 recalculate the memory size from the SDRAM controller setup 3834 recalculate the memory size from the SDRAM controller setup
3828 will have to get fixed in Linux additionally. 3835 will have to get fixed in Linux additionally.
3829 3836
3830 This option can be used as a workaround for the 440EPx/GRx 3837 This option can be used as a workaround for the 440EPx/GRx
3831 CHIP 11 errata where the last 256 bytes in SDRAM shouldn't 3838 CHIP 11 errata where the last 256 bytes in SDRAM shouldn't
3832 be touched. 3839 be touched.
3833 3840
3834 WARNING: Please make sure that this value is a multiple of 3841 WARNING: Please make sure that this value is a multiple of
3835 the Linux page size (normally 4k). If this is not the case, 3842 the Linux page size (normally 4k). If this is not the case,
3836 then the end address of the Linux memory will be located at a 3843 then the end address of the Linux memory will be located at a
3837 non page size aligned address and this could cause major 3844 non page size aligned address and this could cause major
3838 problems. 3845 problems.
3839 3846
3840 - CONFIG_SYS_LOADS_BAUD_CHANGE: 3847 - CONFIG_SYS_LOADS_BAUD_CHANGE:
3841 Enable temporary baudrate change while serial download 3848 Enable temporary baudrate change while serial download
3842 3849
3843 - CONFIG_SYS_SDRAM_BASE: 3850 - CONFIG_SYS_SDRAM_BASE:
3844 Physical start address of SDRAM. _Must_ be 0 here. 3851 Physical start address of SDRAM. _Must_ be 0 here.
3845 3852
3846 - CONFIG_SYS_MBIO_BASE: 3853 - CONFIG_SYS_MBIO_BASE:
3847 Physical start address of Motherboard I/O (if using a 3854 Physical start address of Motherboard I/O (if using a
3848 Cogent motherboard) 3855 Cogent motherboard)
3849 3856
3850 - CONFIG_SYS_FLASH_BASE: 3857 - CONFIG_SYS_FLASH_BASE:
3851 Physical start address of Flash memory. 3858 Physical start address of Flash memory.
3852 3859
3853 - CONFIG_SYS_MONITOR_BASE: 3860 - CONFIG_SYS_MONITOR_BASE:
3854 Physical start address of boot monitor code (set by 3861 Physical start address of boot monitor code (set by
3855 make config files to be same as the text base address 3862 make config files to be same as the text base address
3856 (CONFIG_SYS_TEXT_BASE) used when linking) - same as 3863 (CONFIG_SYS_TEXT_BASE) used when linking) - same as
3857 CONFIG_SYS_FLASH_BASE when booting from flash. 3864 CONFIG_SYS_FLASH_BASE when booting from flash.
3858 3865
3859 - CONFIG_SYS_MONITOR_LEN: 3866 - CONFIG_SYS_MONITOR_LEN:
3860 Size of memory reserved for monitor code, used to 3867 Size of memory reserved for monitor code, used to
3861 determine _at_compile_time_ (!) if the environment is 3868 determine _at_compile_time_ (!) if the environment is
3862 embedded within the U-Boot image, or in a separate 3869 embedded within the U-Boot image, or in a separate
3863 flash sector. 3870 flash sector.
3864 3871
3865 - CONFIG_SYS_MALLOC_LEN: 3872 - CONFIG_SYS_MALLOC_LEN:
3866 Size of DRAM reserved for malloc() use. 3873 Size of DRAM reserved for malloc() use.
3867 3874
3868 - CONFIG_SYS_MALLOC_F_LEN 3875 - CONFIG_SYS_MALLOC_F_LEN
3869 Size of the malloc() pool for use before relocation. If 3876 Size of the malloc() pool for use before relocation. If
3870 this is defined, then a very simple malloc() implementation 3877 this is defined, then a very simple malloc() implementation
3871 will become available before relocation. The address is just 3878 will become available before relocation. The address is just
3872 below the global data, and the stack is moved down to make 3879 below the global data, and the stack is moved down to make
3873 space. 3880 space.
3874 3881
3875 This feature allocates regions with increasing addresses 3882 This feature allocates regions with increasing addresses
3876 within the region. calloc() is supported, but realloc() 3883 within the region. calloc() is supported, but realloc()
3877 is not available. free() is supported but does nothing. 3884 is not available. free() is supported but does nothing.
3878 The memory will be freed (or in fact just forgotton) when 3885 The memory will be freed (or in fact just forgotton) when
3879 U-Boot relocates itself. 3886 U-Boot relocates itself.
3880 3887
3881 Pre-relocation malloc() is only supported on ARM and sandbox 3888 Pre-relocation malloc() is only supported on ARM and sandbox
3882 at present but is fairly easy to enable for other archs. 3889 at present but is fairly easy to enable for other archs.
3883 3890
3884 - CONFIG_SYS_BOOTM_LEN: 3891 - CONFIG_SYS_BOOTM_LEN:
3885 Normally compressed uImages are limited to an 3892 Normally compressed uImages are limited to an
3886 uncompressed size of 8 MBytes. If this is not enough, 3893 uncompressed size of 8 MBytes. If this is not enough,
3887 you can define CONFIG_SYS_BOOTM_LEN in your board config file 3894 you can define CONFIG_SYS_BOOTM_LEN in your board config file
3888 to adjust this setting to your needs. 3895 to adjust this setting to your needs.
3889 3896
3890 - CONFIG_SYS_BOOTMAPSZ: 3897 - CONFIG_SYS_BOOTMAPSZ:
3891 Maximum size of memory mapped by the startup code of 3898 Maximum size of memory mapped by the startup code of
3892 the Linux kernel; all data that must be processed by 3899 the Linux kernel; all data that must be processed by
3893 the Linux kernel (bd_info, boot arguments, FDT blob if 3900 the Linux kernel (bd_info, boot arguments, FDT blob if
3894 used) must be put below this limit, unless "bootm_low" 3901 used) must be put below this limit, unless "bootm_low"
3895 environment variable is defined and non-zero. In such case 3902 environment variable is defined and non-zero. In such case
3896 all data for the Linux kernel must be between "bootm_low" 3903 all data for the Linux kernel must be between "bootm_low"
3897 and "bootm_low" + CONFIG_SYS_BOOTMAPSZ. The environment 3904 and "bootm_low" + CONFIG_SYS_BOOTMAPSZ. The environment
3898 variable "bootm_mapsize" will override the value of 3905 variable "bootm_mapsize" will override the value of
3899 CONFIG_SYS_BOOTMAPSZ. If CONFIG_SYS_BOOTMAPSZ is undefined, 3906 CONFIG_SYS_BOOTMAPSZ. If CONFIG_SYS_BOOTMAPSZ is undefined,
3900 then the value in "bootm_size" will be used instead. 3907 then the value in "bootm_size" will be used instead.
3901 3908
3902 - CONFIG_SYS_BOOT_RAMDISK_HIGH: 3909 - CONFIG_SYS_BOOT_RAMDISK_HIGH:
3903 Enable initrd_high functionality. If defined then the 3910 Enable initrd_high functionality. If defined then the
3904 initrd_high feature is enabled and the bootm ramdisk subcommand 3911 initrd_high feature is enabled and the bootm ramdisk subcommand
3905 is enabled. 3912 is enabled.
3906 3913
3907 - CONFIG_SYS_BOOT_GET_CMDLINE: 3914 - CONFIG_SYS_BOOT_GET_CMDLINE:
3908 Enables allocating and saving kernel cmdline in space between 3915 Enables allocating and saving kernel cmdline in space between
3909 "bootm_low" and "bootm_low" + BOOTMAPSZ. 3916 "bootm_low" and "bootm_low" + BOOTMAPSZ.
3910 3917
3911 - CONFIG_SYS_BOOT_GET_KBD: 3918 - CONFIG_SYS_BOOT_GET_KBD:
3912 Enables allocating and saving a kernel copy of the bd_info in 3919 Enables allocating and saving a kernel copy of the bd_info in
3913 space between "bootm_low" and "bootm_low" + BOOTMAPSZ. 3920 space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
3914 3921
3915 - CONFIG_SYS_MAX_FLASH_BANKS: 3922 - CONFIG_SYS_MAX_FLASH_BANKS:
3916 Max number of Flash memory banks 3923 Max number of Flash memory banks
3917 3924
3918 - CONFIG_SYS_MAX_FLASH_SECT: 3925 - CONFIG_SYS_MAX_FLASH_SECT:
3919 Max number of sectors on a Flash chip 3926 Max number of sectors on a Flash chip
3920 3927
3921 - CONFIG_SYS_FLASH_ERASE_TOUT: 3928 - CONFIG_SYS_FLASH_ERASE_TOUT:
3922 Timeout for Flash erase operations (in ms) 3929 Timeout for Flash erase operations (in ms)
3923 3930
3924 - CONFIG_SYS_FLASH_WRITE_TOUT: 3931 - CONFIG_SYS_FLASH_WRITE_TOUT:
3925 Timeout for Flash write operations (in ms) 3932 Timeout for Flash write operations (in ms)
3926 3933
3927 - CONFIG_SYS_FLASH_LOCK_TOUT 3934 - CONFIG_SYS_FLASH_LOCK_TOUT
3928 Timeout for Flash set sector lock bit operation (in ms) 3935 Timeout for Flash set sector lock bit operation (in ms)
3929 3936
3930 - CONFIG_SYS_FLASH_UNLOCK_TOUT 3937 - CONFIG_SYS_FLASH_UNLOCK_TOUT
3931 Timeout for Flash clear lock bits operation (in ms) 3938 Timeout for Flash clear lock bits operation (in ms)
3932 3939
3933 - CONFIG_SYS_FLASH_PROTECTION 3940 - CONFIG_SYS_FLASH_PROTECTION
3934 If defined, hardware flash sectors protection is used 3941 If defined, hardware flash sectors protection is used
3935 instead of U-Boot software protection. 3942 instead of U-Boot software protection.
3936 3943
3937 - CONFIG_SYS_DIRECT_FLASH_TFTP: 3944 - CONFIG_SYS_DIRECT_FLASH_TFTP:
3938 3945
3939 Enable TFTP transfers directly to flash memory; 3946 Enable TFTP transfers directly to flash memory;
3940 without this option such a download has to be 3947 without this option such a download has to be
3941 performed in two steps: (1) download to RAM, and (2) 3948 performed in two steps: (1) download to RAM, and (2)
3942 copy from RAM to flash. 3949 copy from RAM to flash.
3943 3950
3944 The two-step approach is usually more reliable, since 3951 The two-step approach is usually more reliable, since
3945 you can check if the download worked before you erase 3952 you can check if the download worked before you erase
3946 the flash, but in some situations (when system RAM is 3953 the flash, but in some situations (when system RAM is
3947 too limited to allow for a temporary copy of the 3954 too limited to allow for a temporary copy of the
3948 downloaded image) this option may be very useful. 3955 downloaded image) this option may be very useful.
3949 3956
3950 - CONFIG_SYS_FLASH_CFI: 3957 - CONFIG_SYS_FLASH_CFI:
3951 Define if the flash driver uses extra elements in the 3958 Define if the flash driver uses extra elements in the
3952 common flash structure for storing flash geometry. 3959 common flash structure for storing flash geometry.
3953 3960
3954 - CONFIG_FLASH_CFI_DRIVER 3961 - CONFIG_FLASH_CFI_DRIVER
3955 This option also enables the building of the cfi_flash driver 3962 This option also enables the building of the cfi_flash driver
3956 in the drivers directory 3963 in the drivers directory
3957 3964
3958 - CONFIG_FLASH_CFI_MTD 3965 - CONFIG_FLASH_CFI_MTD
3959 This option enables the building of the cfi_mtd driver 3966 This option enables the building of the cfi_mtd driver
3960 in the drivers directory. The driver exports CFI flash 3967 in the drivers directory. The driver exports CFI flash
3961 to the MTD layer. 3968 to the MTD layer.
3962 3969
3963 - CONFIG_SYS_FLASH_USE_BUFFER_WRITE 3970 - CONFIG_SYS_FLASH_USE_BUFFER_WRITE
3964 Use buffered writes to flash. 3971 Use buffered writes to flash.
3965 3972
3966 - CONFIG_FLASH_SPANSION_S29WS_N 3973 - CONFIG_FLASH_SPANSION_S29WS_N
3967 s29ws-n MirrorBit flash has non-standard addresses for buffered 3974 s29ws-n MirrorBit flash has non-standard addresses for buffered
3968 write commands. 3975 write commands.
3969 3976
3970 - CONFIG_SYS_FLASH_QUIET_TEST 3977 - CONFIG_SYS_FLASH_QUIET_TEST
3971 If this option is defined, the common CFI flash doesn't 3978 If this option is defined, the common CFI flash doesn't
3972 print it's warning upon not recognized FLASH banks. This 3979 print it's warning upon not recognized FLASH banks. This
3973 is useful, if some of the configured banks are only 3980 is useful, if some of the configured banks are only
3974 optionally available. 3981 optionally available.
3975 3982
3976 - CONFIG_FLASH_SHOW_PROGRESS 3983 - CONFIG_FLASH_SHOW_PROGRESS
3977 If defined (must be an integer), print out countdown 3984 If defined (must be an integer), print out countdown
3978 digits and dots. Recommended value: 45 (9..1) for 80 3985 digits and dots. Recommended value: 45 (9..1) for 80
3979 column displays, 15 (3..1) for 40 column displays. 3986 column displays, 15 (3..1) for 40 column displays.
3980 3987
3981 - CONFIG_FLASH_VERIFY 3988 - CONFIG_FLASH_VERIFY
3982 If defined, the content of the flash (destination) is compared 3989 If defined, the content of the flash (destination) is compared
3983 against the source after the write operation. An error message 3990 against the source after the write operation. An error message
3984 will be printed when the contents are not identical. 3991 will be printed when the contents are not identical.
3985 Please note that this option is useless in nearly all cases, 3992 Please note that this option is useless in nearly all cases,
3986 since such flash programming errors usually are detected earlier 3993 since such flash programming errors usually are detected earlier
3987 while unprotecting/erasing/programming. Please only enable 3994 while unprotecting/erasing/programming. Please only enable
3988 this option if you really know what you are doing. 3995 this option if you really know what you are doing.
3989 3996
3990 - CONFIG_SYS_RX_ETH_BUFFER: 3997 - CONFIG_SYS_RX_ETH_BUFFER:
3991 Defines the number of Ethernet receive buffers. On some 3998 Defines the number of Ethernet receive buffers. On some
3992 Ethernet controllers it is recommended to set this value 3999 Ethernet controllers it is recommended to set this value
3993 to 8 or even higher (EEPRO100 or 405 EMAC), since all 4000 to 8 or even higher (EEPRO100 or 405 EMAC), since all
3994 buffers can be full shortly after enabling the interface 4001 buffers can be full shortly after enabling the interface
3995 on high Ethernet traffic. 4002 on high Ethernet traffic.
3996 Defaults to 4 if not defined. 4003 Defaults to 4 if not defined.
3997 4004
3998 - CONFIG_ENV_MAX_ENTRIES 4005 - CONFIG_ENV_MAX_ENTRIES
3999 4006
4000 Maximum number of entries in the hash table that is used 4007 Maximum number of entries in the hash table that is used
4001 internally to store the environment settings. The default 4008 internally to store the environment settings. The default
4002 setting is supposed to be generous and should work in most 4009 setting is supposed to be generous and should work in most
4003 cases. This setting can be used to tune behaviour; see 4010 cases. This setting can be used to tune behaviour; see
4004 lib/hashtable.c for details. 4011 lib/hashtable.c for details.
4005 4012
4006 - CONFIG_ENV_FLAGS_LIST_DEFAULT 4013 - CONFIG_ENV_FLAGS_LIST_DEFAULT
4007 - CONFIG_ENV_FLAGS_LIST_STATIC 4014 - CONFIG_ENV_FLAGS_LIST_STATIC
4008 Enable validation of the values given to environment variables when 4015 Enable validation of the values given to environment variables when
4009 calling env set. Variables can be restricted to only decimal, 4016 calling env set. Variables can be restricted to only decimal,
4010 hexadecimal, or boolean. If CONFIG_CMD_NET is also defined, 4017 hexadecimal, or boolean. If CONFIG_CMD_NET is also defined,
4011 the variables can also be restricted to IP address or MAC address. 4018 the variables can also be restricted to IP address or MAC address.
4012 4019
4013 The format of the list is: 4020 The format of the list is:
4014 type_attribute = [s|d|x|b|i|m] 4021 type_attribute = [s|d|x|b|i|m]
4015 access_atribute = [a|r|o|c] 4022 access_atribute = [a|r|o|c]
4016 attributes = type_attribute[access_atribute] 4023 attributes = type_attribute[access_atribute]
4017 entry = variable_name[:attributes] 4024 entry = variable_name[:attributes]
4018 list = entry[,list] 4025 list = entry[,list]
4019 4026
4020 The type attributes are: 4027 The type attributes are:
4021 s - String (default) 4028 s - String (default)
4022 d - Decimal 4029 d - Decimal
4023 x - Hexadecimal 4030 x - Hexadecimal
4024 b - Boolean ([1yYtT|0nNfF]) 4031 b - Boolean ([1yYtT|0nNfF])
4025 i - IP address 4032 i - IP address
4026 m - MAC address 4033 m - MAC address
4027 4034
4028 The access attributes are: 4035 The access attributes are:
4029 a - Any (default) 4036 a - Any (default)
4030 r - Read-only 4037 r - Read-only
4031 o - Write-once 4038 o - Write-once
4032 c - Change-default 4039 c - Change-default
4033 4040
4034 - CONFIG_ENV_FLAGS_LIST_DEFAULT 4041 - CONFIG_ENV_FLAGS_LIST_DEFAULT
4035 Define this to a list (string) to define the ".flags" 4042 Define this to a list (string) to define the ".flags"
4036 envirnoment variable in the default or embedded environment. 4043 envirnoment variable in the default or embedded environment.
4037 4044
4038 - CONFIG_ENV_FLAGS_LIST_STATIC 4045 - CONFIG_ENV_FLAGS_LIST_STATIC
4039 Define this to a list (string) to define validation that 4046 Define this to a list (string) to define validation that
4040 should be done if an entry is not found in the ".flags" 4047 should be done if an entry is not found in the ".flags"
4041 environment variable. To override a setting in the static 4048 environment variable. To override a setting in the static
4042 list, simply add an entry for the same variable name to the 4049 list, simply add an entry for the same variable name to the
4043 ".flags" variable. 4050 ".flags" variable.
4044 4051
4045 - CONFIG_ENV_ACCESS_IGNORE_FORCE 4052 - CONFIG_ENV_ACCESS_IGNORE_FORCE
4046 If defined, don't allow the -f switch to env set override variable 4053 If defined, don't allow the -f switch to env set override variable
4047 access flags. 4054 access flags.
4048 4055
4049 - CONFIG_SYS_GENERIC_BOARD 4056 - CONFIG_SYS_GENERIC_BOARD
4050 This selects the architecture-generic board system instead of the 4057 This selects the architecture-generic board system instead of the
4051 architecture-specific board files. It is intended to move boards 4058 architecture-specific board files. It is intended to move boards
4052 to this new framework over time. Defining this will disable the 4059 to this new framework over time. Defining this will disable the
4053 arch/foo/lib/board.c file and use common/board_f.c and 4060 arch/foo/lib/board.c file and use common/board_f.c and
4054 common/board_r.c instead. To use this option your architecture 4061 common/board_r.c instead. To use this option your architecture
4055 must support it (i.e. must define __HAVE_ARCH_GENERIC_BOARD in 4062 must support it (i.e. must define __HAVE_ARCH_GENERIC_BOARD in
4056 its config.mk file). If you find problems enabling this option on 4063 its config.mk file). If you find problems enabling this option on
4057 your board please report the problem and send patches! 4064 your board please report the problem and send patches!
4058 4065
4059 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only) 4066 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
4060 This is set by OMAP boards for the max time that reset should 4067 This is set by OMAP boards for the max time that reset should
4061 be asserted. See doc/README.omap-reset-time for details on how 4068 be asserted. See doc/README.omap-reset-time for details on how
4062 the value can be calulated on a given board. 4069 the value can be calulated on a given board.
4063 4070
4064 - CONFIG_USE_STDINT 4071 - CONFIG_USE_STDINT
4065 If stdint.h is available with your toolchain you can define this 4072 If stdint.h is available with your toolchain you can define this
4066 option to enable it. You can provide option 'USE_STDINT=1' when 4073 option to enable it. You can provide option 'USE_STDINT=1' when
4067 building U-Boot to enable this. 4074 building U-Boot to enable this.
4068 4075
4069 The following definitions that deal with the placement and management 4076 The following definitions that deal with the placement and management
4070 of environment data (variable area); in general, we support the 4077 of environment data (variable area); in general, we support the
4071 following configurations: 4078 following configurations:
4072 4079
4073 - CONFIG_BUILD_ENVCRC: 4080 - CONFIG_BUILD_ENVCRC:
4074 4081
4075 Builds up envcrc with the target environment so that external utils 4082 Builds up envcrc with the target environment so that external utils
4076 may easily extract it and embed it in final U-Boot images. 4083 may easily extract it and embed it in final U-Boot images.
4077 4084
4078 - CONFIG_ENV_IS_IN_FLASH: 4085 - CONFIG_ENV_IS_IN_FLASH:
4079 4086
4080 Define this if the environment is in flash memory. 4087 Define this if the environment is in flash memory.
4081 4088
4082 a) The environment occupies one whole flash sector, which is 4089 a) The environment occupies one whole flash sector, which is
4083 "embedded" in the text segment with the U-Boot code. This 4090 "embedded" in the text segment with the U-Boot code. This
4084 happens usually with "bottom boot sector" or "top boot 4091 happens usually with "bottom boot sector" or "top boot
4085 sector" type flash chips, which have several smaller 4092 sector" type flash chips, which have several smaller
4086 sectors at the start or the end. For instance, such a 4093 sectors at the start or the end. For instance, such a
4087 layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In 4094 layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In
4088 such a case you would place the environment in one of the 4095 such a case you would place the environment in one of the
4089 4 kB sectors - with U-Boot code before and after it. With 4096 4 kB sectors - with U-Boot code before and after it. With
4090 "top boot sector" type flash chips, you would put the 4097 "top boot sector" type flash chips, you would put the
4091 environment in one of the last sectors, leaving a gap 4098 environment in one of the last sectors, leaving a gap
4092 between U-Boot and the environment. 4099 between U-Boot and the environment.
4093 4100
4094 - CONFIG_ENV_OFFSET: 4101 - CONFIG_ENV_OFFSET:
4095 4102
4096 Offset of environment data (variable area) to the 4103 Offset of environment data (variable area) to the
4097 beginning of flash memory; for instance, with bottom boot 4104 beginning of flash memory; for instance, with bottom boot
4098 type flash chips the second sector can be used: the offset 4105 type flash chips the second sector can be used: the offset
4099 for this sector is given here. 4106 for this sector is given here.
4100 4107
4101 CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE. 4108 CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE.
4102 4109
4103 - CONFIG_ENV_ADDR: 4110 - CONFIG_ENV_ADDR:
4104 4111
4105 This is just another way to specify the start address of 4112 This is just another way to specify the start address of
4106 the flash sector containing the environment (instead of 4113 the flash sector containing the environment (instead of
4107 CONFIG_ENV_OFFSET). 4114 CONFIG_ENV_OFFSET).
4108 4115
4109 - CONFIG_ENV_SECT_SIZE: 4116 - CONFIG_ENV_SECT_SIZE:
4110 4117
4111 Size of the sector containing the environment. 4118 Size of the sector containing the environment.
4112 4119
4113 4120
4114 b) Sometimes flash chips have few, equal sized, BIG sectors. 4121 b) Sometimes flash chips have few, equal sized, BIG sectors.
4115 In such a case you don't want to spend a whole sector for 4122 In such a case you don't want to spend a whole sector for
4116 the environment. 4123 the environment.
4117 4124
4118 - CONFIG_ENV_SIZE: 4125 - CONFIG_ENV_SIZE:
4119 4126
4120 If you use this in combination with CONFIG_ENV_IS_IN_FLASH 4127 If you use this in combination with CONFIG_ENV_IS_IN_FLASH
4121 and CONFIG_ENV_SECT_SIZE, you can specify to use only a part 4128 and CONFIG_ENV_SECT_SIZE, you can specify to use only a part
4122 of this flash sector for the environment. This saves 4129 of this flash sector for the environment. This saves
4123 memory for the RAM copy of the environment. 4130 memory for the RAM copy of the environment.
4124 4131
4125 It may also save flash memory if you decide to use this 4132 It may also save flash memory if you decide to use this
4126 when your environment is "embedded" within U-Boot code, 4133 when your environment is "embedded" within U-Boot code,
4127 since then the remainder of the flash sector could be used 4134 since then the remainder of the flash sector could be used
4128 for U-Boot code. It should be pointed out that this is 4135 for U-Boot code. It should be pointed out that this is
4129 STRONGLY DISCOURAGED from a robustness point of view: 4136 STRONGLY DISCOURAGED from a robustness point of view:
4130 updating the environment in flash makes it always 4137 updating the environment in flash makes it always
4131 necessary to erase the WHOLE sector. If something goes 4138 necessary to erase the WHOLE sector. If something goes
4132 wrong before the contents has been restored from a copy in 4139 wrong before the contents has been restored from a copy in
4133 RAM, your target system will be dead. 4140 RAM, your target system will be dead.
4134 4141
4135 - CONFIG_ENV_ADDR_REDUND 4142 - CONFIG_ENV_ADDR_REDUND
4136 CONFIG_ENV_SIZE_REDUND 4143 CONFIG_ENV_SIZE_REDUND
4137 4144
4138 These settings describe a second storage area used to hold 4145 These settings describe a second storage area used to hold
4139 a redundant copy of the environment data, so that there is 4146 a redundant copy of the environment data, so that there is
4140 a valid backup copy in case there is a power failure during 4147 a valid backup copy in case there is a power failure during
4141 a "saveenv" operation. 4148 a "saveenv" operation.
4142 4149
4143 BE CAREFUL! Any changes to the flash layout, and some changes to the 4150 BE CAREFUL! Any changes to the flash layout, and some changes to the
4144 source code will make it necessary to adapt <board>/u-boot.lds* 4151 source code will make it necessary to adapt <board>/u-boot.lds*
4145 accordingly! 4152 accordingly!
4146 4153
4147 4154
4148 - CONFIG_ENV_IS_IN_NVRAM: 4155 - CONFIG_ENV_IS_IN_NVRAM:
4149 4156
4150 Define this if you have some non-volatile memory device 4157 Define this if you have some non-volatile memory device
4151 (NVRAM, battery buffered SRAM) which you want to use for the 4158 (NVRAM, battery buffered SRAM) which you want to use for the
4152 environment. 4159 environment.
4153 4160
4154 - CONFIG_ENV_ADDR: 4161 - CONFIG_ENV_ADDR:
4155 - CONFIG_ENV_SIZE: 4162 - CONFIG_ENV_SIZE:
4156 4163
4157 These two #defines are used to determine the memory area you 4164 These two #defines are used to determine the memory area you
4158 want to use for environment. It is assumed that this memory 4165 want to use for environment. It is assumed that this memory
4159 can just be read and written to, without any special 4166 can just be read and written to, without any special
4160 provision. 4167 provision.
4161 4168
4162 BE CAREFUL! The first access to the environment happens quite early 4169 BE CAREFUL! The first access to the environment happens quite early
4163 in U-Boot initalization (when we try to get the setting of for the 4170 in U-Boot initalization (when we try to get the setting of for the
4164 console baudrate). You *MUST* have mapped your NVRAM area then, or 4171 console baudrate). You *MUST* have mapped your NVRAM area then, or
4165 U-Boot will hang. 4172 U-Boot will hang.
4166 4173
4167 Please note that even with NVRAM we still use a copy of the 4174 Please note that even with NVRAM we still use a copy of the
4168 environment in RAM: we could work on NVRAM directly, but we want to 4175 environment in RAM: we could work on NVRAM directly, but we want to
4169 keep settings there always unmodified except somebody uses "saveenv" 4176 keep settings there always unmodified except somebody uses "saveenv"
4170 to save the current settings. 4177 to save the current settings.
4171 4178
4172 4179
4173 - CONFIG_ENV_IS_IN_EEPROM: 4180 - CONFIG_ENV_IS_IN_EEPROM:
4174 4181
4175 Use this if you have an EEPROM or similar serial access 4182 Use this if you have an EEPROM or similar serial access
4176 device and a driver for it. 4183 device and a driver for it.
4177 4184
4178 - CONFIG_ENV_OFFSET: 4185 - CONFIG_ENV_OFFSET:
4179 - CONFIG_ENV_SIZE: 4186 - CONFIG_ENV_SIZE:
4180 4187
4181 These two #defines specify the offset and size of the 4188 These two #defines specify the offset and size of the
4182 environment area within the total memory of your EEPROM. 4189 environment area within the total memory of your EEPROM.
4183 4190
4184 - CONFIG_SYS_I2C_EEPROM_ADDR: 4191 - CONFIG_SYS_I2C_EEPROM_ADDR:
4185 If defined, specified the chip address of the EEPROM device. 4192 If defined, specified the chip address of the EEPROM device.
4186 The default address is zero. 4193 The default address is zero.
4187 4194
4188 - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS: 4195 - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
4189 If defined, the number of bits used to address bytes in a 4196 If defined, the number of bits used to address bytes in a
4190 single page in the EEPROM device. A 64 byte page, for example 4197 single page in the EEPROM device. A 64 byte page, for example
4191 would require six bits. 4198 would require six bits.
4192 4199
4193 - CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS: 4200 - CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS:
4194 If defined, the number of milliseconds to delay between 4201 If defined, the number of milliseconds to delay between
4195 page writes. The default is zero milliseconds. 4202 page writes. The default is zero milliseconds.
4196 4203
4197 - CONFIG_SYS_I2C_EEPROM_ADDR_LEN: 4204 - CONFIG_SYS_I2C_EEPROM_ADDR_LEN:
4198 The length in bytes of the EEPROM memory array address. Note 4205 The length in bytes of the EEPROM memory array address. Note
4199 that this is NOT the chip address length! 4206 that this is NOT the chip address length!
4200 4207
4201 - CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW: 4208 - CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW:
4202 EEPROM chips that implement "address overflow" are ones 4209 EEPROM chips that implement "address overflow" are ones
4203 like Catalyst 24WC04/08/16 which has 9/10/11 bits of 4210 like Catalyst 24WC04/08/16 which has 9/10/11 bits of
4204 address and the extra bits end up in the "chip address" bit 4211 address and the extra bits end up in the "chip address" bit
4205 slots. This makes a 24WC08 (1Kbyte) chip look like four 256 4212 slots. This makes a 24WC08 (1Kbyte) chip look like four 256
4206 byte chips. 4213 byte chips.
4207 4214
4208 Note that we consider the length of the address field to 4215 Note that we consider the length of the address field to
4209 still be one byte because the extra address bits are hidden 4216 still be one byte because the extra address bits are hidden
4210 in the chip address. 4217 in the chip address.
4211 4218
4212 - CONFIG_SYS_EEPROM_SIZE: 4219 - CONFIG_SYS_EEPROM_SIZE:
4213 The size in bytes of the EEPROM device. 4220 The size in bytes of the EEPROM device.
4214 4221
4215 - CONFIG_ENV_EEPROM_IS_ON_I2C 4222 - CONFIG_ENV_EEPROM_IS_ON_I2C
4216 define this, if you have I2C and SPI activated, and your 4223 define this, if you have I2C and SPI activated, and your
4217 EEPROM, which holds the environment, is on the I2C bus. 4224 EEPROM, which holds the environment, is on the I2C bus.
4218 4225
4219 - CONFIG_I2C_ENV_EEPROM_BUS 4226 - CONFIG_I2C_ENV_EEPROM_BUS
4220 if you have an Environment on an EEPROM reached over 4227 if you have an Environment on an EEPROM reached over
4221 I2C muxes, you can define here, how to reach this 4228 I2C muxes, you can define here, how to reach this
4222 EEPROM. For example: 4229 EEPROM. For example:
4223 4230
4224 #define CONFIG_I2C_ENV_EEPROM_BUS 1 4231 #define CONFIG_I2C_ENV_EEPROM_BUS 1
4225 4232
4226 EEPROM which holds the environment, is reached over 4233 EEPROM which holds the environment, is reached over
4227 a pca9547 i2c mux with address 0x70, channel 3. 4234 a pca9547 i2c mux with address 0x70, channel 3.
4228 4235
4229 - CONFIG_ENV_IS_IN_DATAFLASH: 4236 - CONFIG_ENV_IS_IN_DATAFLASH:
4230 4237
4231 Define this if you have a DataFlash memory device which you 4238 Define this if you have a DataFlash memory device which you
4232 want to use for the environment. 4239 want to use for the environment.
4233 4240
4234 - CONFIG_ENV_OFFSET: 4241 - CONFIG_ENV_OFFSET:
4235 - CONFIG_ENV_ADDR: 4242 - CONFIG_ENV_ADDR:
4236 - CONFIG_ENV_SIZE: 4243 - CONFIG_ENV_SIZE:
4237 4244
4238 These three #defines specify the offset and size of the 4245 These three #defines specify the offset and size of the
4239 environment area within the total memory of your DataFlash placed 4246 environment area within the total memory of your DataFlash placed
4240 at the specified address. 4247 at the specified address.
4241 4248
4242 - CONFIG_ENV_IS_IN_SPI_FLASH: 4249 - CONFIG_ENV_IS_IN_SPI_FLASH:
4243 4250
4244 Define this if you have a SPI Flash memory device which you 4251 Define this if you have a SPI Flash memory device which you
4245 want to use for the environment. 4252 want to use for the environment.
4246 4253
4247 - CONFIG_ENV_OFFSET: 4254 - CONFIG_ENV_OFFSET:
4248 - CONFIG_ENV_SIZE: 4255 - CONFIG_ENV_SIZE:
4249 4256
4250 These two #defines specify the offset and size of the 4257 These two #defines specify the offset and size of the
4251 environment area within the SPI Flash. CONFIG_ENV_OFFSET must be 4258 environment area within the SPI Flash. CONFIG_ENV_OFFSET must be
4252 aligned to an erase sector boundary. 4259 aligned to an erase sector boundary.
4253 4260
4254 - CONFIG_ENV_SECT_SIZE: 4261 - CONFIG_ENV_SECT_SIZE:
4255 4262
4256 Define the SPI flash's sector size. 4263 Define the SPI flash's sector size.
4257 4264
4258 - CONFIG_ENV_OFFSET_REDUND (optional): 4265 - CONFIG_ENV_OFFSET_REDUND (optional):
4259 4266
4260 This setting describes a second storage area of CONFIG_ENV_SIZE 4267 This setting describes a second storage area of CONFIG_ENV_SIZE
4261 size used to hold a redundant copy of the environment data, so 4268 size used to hold a redundant copy of the environment data, so
4262 that there is a valid backup copy in case there is a power failure 4269 that there is a valid backup copy in case there is a power failure
4263 during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be 4270 during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be
4264 aligned to an erase sector boundary. 4271 aligned to an erase sector boundary.
4265 4272
4266 - CONFIG_ENV_SPI_BUS (optional): 4273 - CONFIG_ENV_SPI_BUS (optional):
4267 - CONFIG_ENV_SPI_CS (optional): 4274 - CONFIG_ENV_SPI_CS (optional):
4268 4275
4269 Define the SPI bus and chip select. If not defined they will be 0. 4276 Define the SPI bus and chip select. If not defined they will be 0.
4270 4277
4271 - CONFIG_ENV_SPI_MAX_HZ (optional): 4278 - CONFIG_ENV_SPI_MAX_HZ (optional):
4272 4279
4273 Define the SPI max work clock. If not defined then use 1MHz. 4280 Define the SPI max work clock. If not defined then use 1MHz.
4274 4281
4275 - CONFIG_ENV_SPI_MODE (optional): 4282 - CONFIG_ENV_SPI_MODE (optional):
4276 4283
4277 Define the SPI work mode. If not defined then use SPI_MODE_3. 4284 Define the SPI work mode. If not defined then use SPI_MODE_3.
4278 4285
4279 - CONFIG_ENV_IS_IN_REMOTE: 4286 - CONFIG_ENV_IS_IN_REMOTE:
4280 4287
4281 Define this if you have a remote memory space which you 4288 Define this if you have a remote memory space which you
4282 want to use for the local device's environment. 4289 want to use for the local device's environment.
4283 4290
4284 - CONFIG_ENV_ADDR: 4291 - CONFIG_ENV_ADDR:
4285 - CONFIG_ENV_SIZE: 4292 - CONFIG_ENV_SIZE:
4286 4293
4287 These two #defines specify the address and size of the 4294 These two #defines specify the address and size of the
4288 environment area within the remote memory space. The 4295 environment area within the remote memory space. The
4289 local device can get the environment from remote memory 4296 local device can get the environment from remote memory
4290 space by SRIO or PCIE links. 4297 space by SRIO or PCIE links.
4291 4298
4292 BE CAREFUL! For some special cases, the local device can not use 4299 BE CAREFUL! For some special cases, the local device can not use
4293 "saveenv" command. For example, the local device will get the 4300 "saveenv" command. For example, the local device will get the
4294 environment stored in a remote NOR flash by SRIO or PCIE link, 4301 environment stored in a remote NOR flash by SRIO or PCIE link,
4295 but it can not erase, write this NOR flash by SRIO or PCIE interface. 4302 but it can not erase, write this NOR flash by SRIO or PCIE interface.
4296 4303
4297 - CONFIG_ENV_IS_IN_NAND: 4304 - CONFIG_ENV_IS_IN_NAND:
4298 4305
4299 Define this if you have a NAND device which you want to use 4306 Define this if you have a NAND device which you want to use
4300 for the environment. 4307 for the environment.
4301 4308
4302 - CONFIG_ENV_OFFSET: 4309 - CONFIG_ENV_OFFSET:
4303 - CONFIG_ENV_SIZE: 4310 - CONFIG_ENV_SIZE:
4304 4311
4305 These two #defines specify the offset and size of the environment 4312 These two #defines specify the offset and size of the environment
4306 area within the first NAND device. CONFIG_ENV_OFFSET must be 4313 area within the first NAND device. CONFIG_ENV_OFFSET must be
4307 aligned to an erase block boundary. 4314 aligned to an erase block boundary.
4308 4315
4309 - CONFIG_ENV_OFFSET_REDUND (optional): 4316 - CONFIG_ENV_OFFSET_REDUND (optional):
4310 4317
4311 This setting describes a second storage area of CONFIG_ENV_SIZE 4318 This setting describes a second storage area of CONFIG_ENV_SIZE
4312 size used to hold a redundant copy of the environment data, so 4319 size used to hold a redundant copy of the environment data, so
4313 that there is a valid backup copy in case there is a power failure 4320 that there is a valid backup copy in case there is a power failure
4314 during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be 4321 during a "saveenv" operation. CONFIG_ENV_OFFSET_RENDUND must be
4315 aligned to an erase block boundary. 4322 aligned to an erase block boundary.
4316 4323
4317 - CONFIG_ENV_RANGE (optional): 4324 - CONFIG_ENV_RANGE (optional):
4318 4325
4319 Specifies the length of the region in which the environment 4326 Specifies the length of the region in which the environment
4320 can be written. This should be a multiple of the NAND device's 4327 can be written. This should be a multiple of the NAND device's
4321 block size. Specifying a range with more erase blocks than 4328 block size. Specifying a range with more erase blocks than
4322 are needed to hold CONFIG_ENV_SIZE allows bad blocks within 4329 are needed to hold CONFIG_ENV_SIZE allows bad blocks within
4323 the range to be avoided. 4330 the range to be avoided.
4324 4331
4325 - CONFIG_ENV_OFFSET_OOB (optional): 4332 - CONFIG_ENV_OFFSET_OOB (optional):
4326 4333
4327 Enables support for dynamically retrieving the offset of the 4334 Enables support for dynamically retrieving the offset of the
4328 environment from block zero's out-of-band data. The 4335 environment from block zero's out-of-band data. The
4329 "nand env.oob" command can be used to record this offset. 4336 "nand env.oob" command can be used to record this offset.
4330 Currently, CONFIG_ENV_OFFSET_REDUND is not supported when 4337 Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
4331 using CONFIG_ENV_OFFSET_OOB. 4338 using CONFIG_ENV_OFFSET_OOB.
4332 4339
4333 - CONFIG_NAND_ENV_DST 4340 - CONFIG_NAND_ENV_DST
4334 4341
4335 Defines address in RAM to which the nand_spl code should copy the 4342 Defines address in RAM to which the nand_spl code should copy the
4336 environment. If redundant environment is used, it will be copied to 4343 environment. If redundant environment is used, it will be copied to
4337 CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE. 4344 CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
4338 4345
4339 - CONFIG_ENV_IS_IN_UBI: 4346 - CONFIG_ENV_IS_IN_UBI:
4340 4347
4341 Define this if you have an UBI volume that you want to use for the 4348 Define this if you have an UBI volume that you want to use for the
4342 environment. This has the benefit of wear-leveling the environment 4349 environment. This has the benefit of wear-leveling the environment
4343 accesses, which is important on NAND. 4350 accesses, which is important on NAND.
4344 4351
4345 - CONFIG_ENV_UBI_PART: 4352 - CONFIG_ENV_UBI_PART:
4346 4353
4347 Define this to a string that is the mtd partition containing the UBI. 4354 Define this to a string that is the mtd partition containing the UBI.
4348 4355
4349 - CONFIG_ENV_UBI_VOLUME: 4356 - CONFIG_ENV_UBI_VOLUME:
4350 4357
4351 Define this to the name of the volume that you want to store the 4358 Define this to the name of the volume that you want to store the
4352 environment in. 4359 environment in.
4353 4360
4354 - CONFIG_ENV_UBI_VOLUME_REDUND: 4361 - CONFIG_ENV_UBI_VOLUME_REDUND:
4355 4362
4356 Define this to the name of another volume to store a second copy of 4363 Define this to the name of another volume to store a second copy of
4357 the environment in. This will enable redundant environments in UBI. 4364 the environment in. This will enable redundant environments in UBI.
4358 It is assumed that both volumes are in the same MTD partition. 4365 It is assumed that both volumes are in the same MTD partition.
4359 4366
4360 - CONFIG_UBI_SILENCE_MSG 4367 - CONFIG_UBI_SILENCE_MSG
4361 - CONFIG_UBIFS_SILENCE_MSG 4368 - CONFIG_UBIFS_SILENCE_MSG
4362 4369
4363 You will probably want to define these to avoid a really noisy system 4370 You will probably want to define these to avoid a really noisy system
4364 when storing the env in UBI. 4371 when storing the env in UBI.
4365 4372
4366 - CONFIG_ENV_IS_IN_FAT: 4373 - CONFIG_ENV_IS_IN_FAT:
4367 Define this if you want to use the FAT file system for the environment. 4374 Define this if you want to use the FAT file system for the environment.
4368 4375
4369 - FAT_ENV_INTERFACE: 4376 - FAT_ENV_INTERFACE:
4370 4377
4371 Define this to a string that is the name of the block device. 4378 Define this to a string that is the name of the block device.
4372 4379
4373 - FAT_ENV_DEV_AND_PART: 4380 - FAT_ENV_DEV_AND_PART:
4374 4381
4375 Define this to a string to specify the partition of the device. It can 4382 Define this to a string to specify the partition of the device. It can
4376 be as following: 4383 be as following:
4377 4384
4378 "D:P", "D:0", "D", "D:" or "D:auto" (D, P are integers. And P >= 1) 4385 "D:P", "D:0", "D", "D:" or "D:auto" (D, P are integers. And P >= 1)
4379 - "D:P": device D partition P. Error occurs if device D has no 4386 - "D:P": device D partition P. Error occurs if device D has no
4380 partition table. 4387 partition table.
4381 - "D:0": device D. 4388 - "D:0": device D.
4382 - "D" or "D:": device D partition 1 if device D has partition 4389 - "D" or "D:": device D partition 1 if device D has partition
4383 table, or the whole device D if has no partition 4390 table, or the whole device D if has no partition
4384 table. 4391 table.
4385 - "D:auto": first partition in device D with bootable flag set. 4392 - "D:auto": first partition in device D with bootable flag set.
4386 If none, first valid paratition in device D. If no 4393 If none, first valid paratition in device D. If no
4387 partition table then means device D. 4394 partition table then means device D.
4388 4395
4389 - FAT_ENV_FILE: 4396 - FAT_ENV_FILE:
4390 4397
4391 It's a string of the FAT file name. This file use to store the 4398 It's a string of the FAT file name. This file use to store the
4392 envrionment. 4399 envrionment.
4393 4400
4394 - CONFIG_FAT_WRITE: 4401 - CONFIG_FAT_WRITE:
4395 This should be defined. Otherwise it cannot save the envrionment file. 4402 This should be defined. Otherwise it cannot save the envrionment file.
4396 4403
4397 - CONFIG_ENV_IS_IN_MMC: 4404 - CONFIG_ENV_IS_IN_MMC:
4398 4405
4399 Define this if you have an MMC device which you want to use for the 4406 Define this if you have an MMC device which you want to use for the
4400 environment. 4407 environment.
4401 4408
4402 - CONFIG_SYS_MMC_ENV_DEV: 4409 - CONFIG_SYS_MMC_ENV_DEV:
4403 4410
4404 Specifies which MMC device the environment is stored in. 4411 Specifies which MMC device the environment is stored in.
4405 4412
4406 - CONFIG_SYS_MMC_ENV_PART (optional): 4413 - CONFIG_SYS_MMC_ENV_PART (optional):
4407 4414
4408 Specifies which MMC partition the environment is stored in. If not 4415 Specifies which MMC partition the environment is stored in. If not
4409 set, defaults to partition 0, the user area. Common values might be 4416 set, defaults to partition 0, the user area. Common values might be
4410 1 (first MMC boot partition), 2 (second MMC boot partition). 4417 1 (first MMC boot partition), 2 (second MMC boot partition).
4411 4418
4412 - CONFIG_ENV_OFFSET: 4419 - CONFIG_ENV_OFFSET:
4413 - CONFIG_ENV_SIZE: 4420 - CONFIG_ENV_SIZE:
4414 4421
4415 These two #defines specify the offset and size of the environment 4422 These two #defines specify the offset and size of the environment
4416 area within the specified MMC device. 4423 area within the specified MMC device.
4417 4424
4418 If offset is positive (the usual case), it is treated as relative to 4425 If offset is positive (the usual case), it is treated as relative to
4419 the start of the MMC partition. If offset is negative, it is treated 4426 the start of the MMC partition. If offset is negative, it is treated
4420 as relative to the end of the MMC partition. This can be useful if 4427 as relative to the end of the MMC partition. This can be useful if
4421 your board may be fitted with different MMC devices, which have 4428 your board may be fitted with different MMC devices, which have
4422 different sizes for the MMC partitions, and you always want the 4429 different sizes for the MMC partitions, and you always want the
4423 environment placed at the very end of the partition, to leave the 4430 environment placed at the very end of the partition, to leave the
4424 maximum possible space before it, to store other data. 4431 maximum possible space before it, to store other data.
4425 4432
4426 These two values are in units of bytes, but must be aligned to an 4433 These two values are in units of bytes, but must be aligned to an
4427 MMC sector boundary. 4434 MMC sector boundary.
4428 4435
4429 - CONFIG_ENV_OFFSET_REDUND (optional): 4436 - CONFIG_ENV_OFFSET_REDUND (optional):
4430 4437
4431 Specifies a second storage area, of CONFIG_ENV_SIZE size, used to 4438 Specifies a second storage area, of CONFIG_ENV_SIZE size, used to
4432 hold a redundant copy of the environment data. This provides a 4439 hold a redundant copy of the environment data. This provides a
4433 valid backup copy in case the other copy is corrupted, e.g. due 4440 valid backup copy in case the other copy is corrupted, e.g. due
4434 to a power failure during a "saveenv" operation. 4441 to a power failure during a "saveenv" operation.
4435 4442
4436 This value may also be positive or negative; this is handled in the 4443 This value may also be positive or negative; this is handled in the
4437 same way as CONFIG_ENV_OFFSET. 4444 same way as CONFIG_ENV_OFFSET.
4438 4445
4439 This value is also in units of bytes, but must also be aligned to 4446 This value is also in units of bytes, but must also be aligned to
4440 an MMC sector boundary. 4447 an MMC sector boundary.
4441 4448
4442 - CONFIG_ENV_SIZE_REDUND (optional): 4449 - CONFIG_ENV_SIZE_REDUND (optional):
4443 4450
4444 This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is 4451 This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is
4445 set. If this value is set, it must be set to the same value as 4452 set. If this value is set, it must be set to the same value as
4446 CONFIG_ENV_SIZE. 4453 CONFIG_ENV_SIZE.
4447 4454
4448 - CONFIG_SYS_SPI_INIT_OFFSET 4455 - CONFIG_SYS_SPI_INIT_OFFSET
4449 4456
4450 Defines offset to the initial SPI buffer area in DPRAM. The 4457 Defines offset to the initial SPI buffer area in DPRAM. The
4451 area is used at an early stage (ROM part) if the environment 4458 area is used at an early stage (ROM part) if the environment
4452 is configured to reside in the SPI EEPROM: We need a 520 byte 4459 is configured to reside in the SPI EEPROM: We need a 520 byte
4453 scratch DPRAM area. It is used between the two initialization 4460 scratch DPRAM area. It is used between the two initialization
4454 calls (spi_init_f() and spi_init_r()). A value of 0xB00 seems 4461 calls (spi_init_f() and spi_init_r()). A value of 0xB00 seems
4455 to be a good choice since it makes it far enough from the 4462 to be a good choice since it makes it far enough from the
4456 start of the data area as well as from the stack pointer. 4463 start of the data area as well as from the stack pointer.
4457 4464
4458 Please note that the environment is read-only until the monitor 4465 Please note that the environment is read-only until the monitor
4459 has been relocated to RAM and a RAM copy of the environment has been 4466 has been relocated to RAM and a RAM copy of the environment has been
4460 created; also, when using EEPROM you will have to use getenv_f() 4467 created; also, when using EEPROM you will have to use getenv_f()
4461 until then to read environment variables. 4468 until then to read environment variables.
4462 4469
4463 The environment is protected by a CRC32 checksum. Before the monitor 4470 The environment is protected by a CRC32 checksum. Before the monitor
4464 is relocated into RAM, as a result of a bad CRC you will be working 4471 is relocated into RAM, as a result of a bad CRC you will be working
4465 with the compiled-in default environment - *silently*!!! [This is 4472 with the compiled-in default environment - *silently*!!! [This is
4466 necessary, because the first environment variable we need is the 4473 necessary, because the first environment variable we need is the
4467 "baudrate" setting for the console - if we have a bad CRC, we don't 4474 "baudrate" setting for the console - if we have a bad CRC, we don't
4468 have any device yet where we could complain.] 4475 have any device yet where we could complain.]
4469 4476
4470 Note: once the monitor has been relocated, then it will complain if 4477 Note: once the monitor has been relocated, then it will complain if
4471 the default environment is used; a new CRC is computed as soon as you 4478 the default environment is used; a new CRC is computed as soon as you
4472 use the "saveenv" command to store a valid environment. 4479 use the "saveenv" command to store a valid environment.
4473 4480
4474 - CONFIG_SYS_FAULT_ECHO_LINK_DOWN: 4481 - CONFIG_SYS_FAULT_ECHO_LINK_DOWN:
4475 Echo the inverted Ethernet link state to the fault LED. 4482 Echo the inverted Ethernet link state to the fault LED.
4476 4483
4477 Note: If this option is active, then CONFIG_SYS_FAULT_MII_ADDR 4484 Note: If this option is active, then CONFIG_SYS_FAULT_MII_ADDR
4478 also needs to be defined. 4485 also needs to be defined.
4479 4486
4480 - CONFIG_SYS_FAULT_MII_ADDR: 4487 - CONFIG_SYS_FAULT_MII_ADDR:
4481 MII address of the PHY to check for the Ethernet link state. 4488 MII address of the PHY to check for the Ethernet link state.
4482 4489
4483 - CONFIG_NS16550_MIN_FUNCTIONS: 4490 - CONFIG_NS16550_MIN_FUNCTIONS:
4484 Define this if you desire to only have use of the NS16550_init 4491 Define this if you desire to only have use of the NS16550_init
4485 and NS16550_putc functions for the serial driver located at 4492 and NS16550_putc functions for the serial driver located at
4486 drivers/serial/ns16550.c. This option is useful for saving 4493 drivers/serial/ns16550.c. This option is useful for saving
4487 space for already greatly restricted images, including but not 4494 space for already greatly restricted images, including but not
4488 limited to NAND_SPL configurations. 4495 limited to NAND_SPL configurations.
4489 4496
4490 - CONFIG_DISPLAY_BOARDINFO 4497 - CONFIG_DISPLAY_BOARDINFO
4491 Display information about the board that U-Boot is running on 4498 Display information about the board that U-Boot is running on
4492 when U-Boot starts up. The board function checkboard() is called 4499 when U-Boot starts up. The board function checkboard() is called
4493 to do this. 4500 to do this.
4494 4501
4495 - CONFIG_DISPLAY_BOARDINFO_LATE 4502 - CONFIG_DISPLAY_BOARDINFO_LATE
4496 Similar to the previous option, but display this information 4503 Similar to the previous option, but display this information
4497 later, once stdio is running and output goes to the LCD, if 4504 later, once stdio is running and output goes to the LCD, if
4498 present. 4505 present.
4499 4506
4500 - CONFIG_BOARD_SIZE_LIMIT: 4507 - CONFIG_BOARD_SIZE_LIMIT:
4501 Maximum size of the U-Boot image. When defined, the 4508 Maximum size of the U-Boot image. When defined, the
4502 build system checks that the actual size does not 4509 build system checks that the actual size does not
4503 exceed it. 4510 exceed it.
4504 4511
4505 Low Level (hardware related) configuration options: 4512 Low Level (hardware related) configuration options:
4506 --------------------------------------------------- 4513 ---------------------------------------------------
4507 4514
4508 - CONFIG_SYS_CACHELINE_SIZE: 4515 - CONFIG_SYS_CACHELINE_SIZE:
4509 Cache Line Size of the CPU. 4516 Cache Line Size of the CPU.
4510 4517
4511 - CONFIG_SYS_DEFAULT_IMMR: 4518 - CONFIG_SYS_DEFAULT_IMMR:
4512 Default address of the IMMR after system reset. 4519 Default address of the IMMR after system reset.
4513 4520
4514 Needed on some 8260 systems (MPC8260ADS, PQ2FADS-ZU, 4521 Needed on some 8260 systems (MPC8260ADS, PQ2FADS-ZU,
4515 and RPXsuper) to be able to adjust the position of 4522 and RPXsuper) to be able to adjust the position of
4516 the IMMR register after a reset. 4523 the IMMR register after a reset.
4517 4524
4518 - CONFIG_SYS_CCSRBAR_DEFAULT: 4525 - CONFIG_SYS_CCSRBAR_DEFAULT:
4519 Default (power-on reset) physical address of CCSR on Freescale 4526 Default (power-on reset) physical address of CCSR on Freescale
4520 PowerPC SOCs. 4527 PowerPC SOCs.
4521 4528
4522 - CONFIG_SYS_CCSRBAR: 4529 - CONFIG_SYS_CCSRBAR:
4523 Virtual address of CCSR. On a 32-bit build, this is typically 4530 Virtual address of CCSR. On a 32-bit build, this is typically
4524 the same value as CONFIG_SYS_CCSRBAR_DEFAULT. 4531 the same value as CONFIG_SYS_CCSRBAR_DEFAULT.
4525 4532
4526 CONFIG_SYS_DEFAULT_IMMR must also be set to this value, 4533 CONFIG_SYS_DEFAULT_IMMR must also be set to this value,
4527 for cross-platform code that uses that macro instead. 4534 for cross-platform code that uses that macro instead.
4528 4535
4529 - CONFIG_SYS_CCSRBAR_PHYS: 4536 - CONFIG_SYS_CCSRBAR_PHYS:
4530 Physical address of CCSR. CCSR can be relocated to a new 4537 Physical address of CCSR. CCSR can be relocated to a new
4531 physical address, if desired. In this case, this macro should 4538 physical address, if desired. In this case, this macro should
4532 be set to that address. Otherwise, it should be set to the 4539 be set to that address. Otherwise, it should be set to the
4533 same value as CONFIG_SYS_CCSRBAR_DEFAULT. For example, CCSR 4540 same value as CONFIG_SYS_CCSRBAR_DEFAULT. For example, CCSR
4534 is typically relocated on 36-bit builds. It is recommended 4541 is typically relocated on 36-bit builds. It is recommended
4535 that this macro be defined via the _HIGH and _LOW macros: 4542 that this macro be defined via the _HIGH and _LOW macros:
4536 4543
4537 #define CONFIG_SYS_CCSRBAR_PHYS ((CONFIG_SYS_CCSRBAR_PHYS_HIGH 4544 #define CONFIG_SYS_CCSRBAR_PHYS ((CONFIG_SYS_CCSRBAR_PHYS_HIGH
4538 * 1ull) << 32 | CONFIG_SYS_CCSRBAR_PHYS_LOW) 4545 * 1ull) << 32 | CONFIG_SYS_CCSRBAR_PHYS_LOW)
4539 4546
4540 - CONFIG_SYS_CCSRBAR_PHYS_HIGH: 4547 - CONFIG_SYS_CCSRBAR_PHYS_HIGH:
4541 Bits 33-36 of CONFIG_SYS_CCSRBAR_PHYS. This value is typically 4548 Bits 33-36 of CONFIG_SYS_CCSRBAR_PHYS. This value is typically
4542 either 0 (32-bit build) or 0xF (36-bit build). This macro is 4549 either 0 (32-bit build) or 0xF (36-bit build). This macro is
4543 used in assembly code, so it must not contain typecasts or 4550 used in assembly code, so it must not contain typecasts or
4544 integer size suffixes (e.g. "ULL"). 4551 integer size suffixes (e.g. "ULL").
4545 4552
4546 - CONFIG_SYS_CCSRBAR_PHYS_LOW: 4553 - CONFIG_SYS_CCSRBAR_PHYS_LOW:
4547 Lower 32-bits of CONFIG_SYS_CCSRBAR_PHYS. This macro is 4554 Lower 32-bits of CONFIG_SYS_CCSRBAR_PHYS. This macro is
4548 used in assembly code, so it must not contain typecasts or 4555 used in assembly code, so it must not contain typecasts or
4549 integer size suffixes (e.g. "ULL"). 4556 integer size suffixes (e.g. "ULL").
4550 4557
4551 - CONFIG_SYS_CCSR_DO_NOT_RELOCATE: 4558 - CONFIG_SYS_CCSR_DO_NOT_RELOCATE:
4552 If this macro is defined, then CONFIG_SYS_CCSRBAR_PHYS will be 4559 If this macro is defined, then CONFIG_SYS_CCSRBAR_PHYS will be
4553 forced to a value that ensures that CCSR is not relocated. 4560 forced to a value that ensures that CCSR is not relocated.
4554 4561
4555 - Floppy Disk Support: 4562 - Floppy Disk Support:
4556 CONFIG_SYS_FDC_DRIVE_NUMBER 4563 CONFIG_SYS_FDC_DRIVE_NUMBER
4557 4564
4558 the default drive number (default value 0) 4565 the default drive number (default value 0)
4559 4566
4560 CONFIG_SYS_ISA_IO_STRIDE 4567 CONFIG_SYS_ISA_IO_STRIDE
4561 4568
4562 defines the spacing between FDC chipset registers 4569 defines the spacing between FDC chipset registers
4563 (default value 1) 4570 (default value 1)
4564 4571
4565 CONFIG_SYS_ISA_IO_OFFSET 4572 CONFIG_SYS_ISA_IO_OFFSET
4566 4573
4567 defines the offset of register from address. It 4574 defines the offset of register from address. It
4568 depends on which part of the data bus is connected to 4575 depends on which part of the data bus is connected to
4569 the FDC chipset. (default value 0) 4576 the FDC chipset. (default value 0)
4570 4577
4571 If CONFIG_SYS_ISA_IO_STRIDE CONFIG_SYS_ISA_IO_OFFSET and 4578 If CONFIG_SYS_ISA_IO_STRIDE CONFIG_SYS_ISA_IO_OFFSET and
4572 CONFIG_SYS_FDC_DRIVE_NUMBER are undefined, they take their 4579 CONFIG_SYS_FDC_DRIVE_NUMBER are undefined, they take their
4573 default value. 4580 default value.
4574 4581
4575 if CONFIG_SYS_FDC_HW_INIT is defined, then the function 4582 if CONFIG_SYS_FDC_HW_INIT is defined, then the function
4576 fdc_hw_init() is called at the beginning of the FDC 4583 fdc_hw_init() is called at the beginning of the FDC
4577 setup. fdc_hw_init() must be provided by the board 4584 setup. fdc_hw_init() must be provided by the board
4578 source code. It is used to make hardware dependant 4585 source code. It is used to make hardware dependant
4579 initializations. 4586 initializations.
4580 4587
4581 - CONFIG_IDE_AHB: 4588 - CONFIG_IDE_AHB:
4582 Most IDE controllers were designed to be connected with PCI 4589 Most IDE controllers were designed to be connected with PCI
4583 interface. Only few of them were designed for AHB interface. 4590 interface. Only few of them were designed for AHB interface.
4584 When software is doing ATA command and data transfer to 4591 When software is doing ATA command and data transfer to
4585 IDE devices through IDE-AHB controller, some additional 4592 IDE devices through IDE-AHB controller, some additional
4586 registers accessing to these kind of IDE-AHB controller 4593 registers accessing to these kind of IDE-AHB controller
4587 is requierd. 4594 is requierd.
4588 4595
4589 - CONFIG_SYS_IMMR: Physical address of the Internal Memory. 4596 - CONFIG_SYS_IMMR: Physical address of the Internal Memory.
4590 DO NOT CHANGE unless you know exactly what you're 4597 DO NOT CHANGE unless you know exactly what you're
4591 doing! (11-4) [MPC8xx/82xx systems only] 4598 doing! (11-4) [MPC8xx/82xx systems only]
4592 4599
4593 - CONFIG_SYS_INIT_RAM_ADDR: 4600 - CONFIG_SYS_INIT_RAM_ADDR:
4594 4601
4595 Start address of memory area that can be used for 4602 Start address of memory area that can be used for
4596 initial data and stack; please note that this must be 4603 initial data and stack; please note that this must be
4597 writable memory that is working WITHOUT special 4604 writable memory that is working WITHOUT special
4598 initialization, i. e. you CANNOT use normal RAM which 4605 initialization, i. e. you CANNOT use normal RAM which
4599 will become available only after programming the 4606 will become available only after programming the
4600 memory controller and running certain initialization 4607 memory controller and running certain initialization
4601 sequences. 4608 sequences.
4602 4609
4603 U-Boot uses the following memory types: 4610 U-Boot uses the following memory types:
4604 - MPC8xx and MPC8260: IMMR (internal memory of the CPU) 4611 - MPC8xx and MPC8260: IMMR (internal memory of the CPU)
4605 - MPC824X: data cache 4612 - MPC824X: data cache
4606 - PPC4xx: data cache 4613 - PPC4xx: data cache
4607 4614
4608 - CONFIG_SYS_GBL_DATA_OFFSET: 4615 - CONFIG_SYS_GBL_DATA_OFFSET:
4609 4616
4610 Offset of the initial data structure in the memory 4617 Offset of the initial data structure in the memory
4611 area defined by CONFIG_SYS_INIT_RAM_ADDR. Usually 4618 area defined by CONFIG_SYS_INIT_RAM_ADDR. Usually
4612 CONFIG_SYS_GBL_DATA_OFFSET is chosen such that the initial 4619 CONFIG_SYS_GBL_DATA_OFFSET is chosen such that the initial
4613 data is located at the end of the available space 4620 data is located at the end of the available space
4614 (sometimes written as (CONFIG_SYS_INIT_RAM_SIZE - 4621 (sometimes written as (CONFIG_SYS_INIT_RAM_SIZE -
4615 CONFIG_SYS_INIT_DATA_SIZE), and the initial stack is just 4622 CONFIG_SYS_INIT_DATA_SIZE), and the initial stack is just
4616 below that area (growing from (CONFIG_SYS_INIT_RAM_ADDR + 4623 below that area (growing from (CONFIG_SYS_INIT_RAM_ADDR +
4617 CONFIG_SYS_GBL_DATA_OFFSET) downward. 4624 CONFIG_SYS_GBL_DATA_OFFSET) downward.
4618 4625
4619 Note: 4626 Note:
4620 On the MPC824X (or other systems that use the data 4627 On the MPC824X (or other systems that use the data
4621 cache for initial memory) the address chosen for 4628 cache for initial memory) the address chosen for
4622 CONFIG_SYS_INIT_RAM_ADDR is basically arbitrary - it must 4629 CONFIG_SYS_INIT_RAM_ADDR is basically arbitrary - it must
4623 point to an otherwise UNUSED address space between 4630 point to an otherwise UNUSED address space between
4624 the top of RAM and the start of the PCI space. 4631 the top of RAM and the start of the PCI space.
4625 4632
4626 - CONFIG_SYS_SIUMCR: SIU Module Configuration (11-6) 4633 - CONFIG_SYS_SIUMCR: SIU Module Configuration (11-6)
4627 4634
4628 - CONFIG_SYS_SYPCR: System Protection Control (11-9) 4635 - CONFIG_SYS_SYPCR: System Protection Control (11-9)
4629 4636
4630 - CONFIG_SYS_TBSCR: Time Base Status and Control (11-26) 4637 - CONFIG_SYS_TBSCR: Time Base Status and Control (11-26)
4631 4638
4632 - CONFIG_SYS_PISCR: Periodic Interrupt Status and Control (11-31) 4639 - CONFIG_SYS_PISCR: Periodic Interrupt Status and Control (11-31)
4633 4640
4634 - CONFIG_SYS_PLPRCR: PLL, Low-Power, and Reset Control Register (15-30) 4641 - CONFIG_SYS_PLPRCR: PLL, Low-Power, and Reset Control Register (15-30)
4635 4642
4636 - CONFIG_SYS_SCCR: System Clock and reset Control Register (15-27) 4643 - CONFIG_SYS_SCCR: System Clock and reset Control Register (15-27)
4637 4644
4638 - CONFIG_SYS_OR_TIMING_SDRAM: 4645 - CONFIG_SYS_OR_TIMING_SDRAM:
4639 SDRAM timing 4646 SDRAM timing
4640 4647
4641 - CONFIG_SYS_MAMR_PTA: 4648 - CONFIG_SYS_MAMR_PTA:
4642 periodic timer for refresh 4649 periodic timer for refresh
4643 4650
4644 - CONFIG_SYS_DER: Debug Event Register (37-47) 4651 - CONFIG_SYS_DER: Debug Event Register (37-47)
4645 4652
4646 - FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CONFIG_SYS_REMAP_OR_AM, 4653 - FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CONFIG_SYS_REMAP_OR_AM,
4647 CONFIG_SYS_PRELIM_OR_AM, CONFIG_SYS_OR_TIMING_FLASH, CONFIG_SYS_OR0_REMAP, 4654 CONFIG_SYS_PRELIM_OR_AM, CONFIG_SYS_OR_TIMING_FLASH, CONFIG_SYS_OR0_REMAP,
4648 CONFIG_SYS_OR0_PRELIM, CONFIG_SYS_BR0_PRELIM, CONFIG_SYS_OR1_REMAP, CONFIG_SYS_OR1_PRELIM, 4655 CONFIG_SYS_OR0_PRELIM, CONFIG_SYS_BR0_PRELIM, CONFIG_SYS_OR1_REMAP, CONFIG_SYS_OR1_PRELIM,
4649 CONFIG_SYS_BR1_PRELIM: 4656 CONFIG_SYS_BR1_PRELIM:
4650 Memory Controller Definitions: BR0/1 and OR0/1 (FLASH) 4657 Memory Controller Definitions: BR0/1 and OR0/1 (FLASH)
4651 4658
4652 - SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE, 4659 - SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE,
4653 CONFIG_SYS_OR_TIMING_SDRAM, CONFIG_SYS_OR2_PRELIM, CONFIG_SYS_BR2_PRELIM, 4660 CONFIG_SYS_OR_TIMING_SDRAM, CONFIG_SYS_OR2_PRELIM, CONFIG_SYS_BR2_PRELIM,
4654 CONFIG_SYS_OR3_PRELIM, CONFIG_SYS_BR3_PRELIM: 4661 CONFIG_SYS_OR3_PRELIM, CONFIG_SYS_BR3_PRELIM:
4655 Memory Controller Definitions: BR2/3 and OR2/3 (SDRAM) 4662 Memory Controller Definitions: BR2/3 and OR2/3 (SDRAM)
4656 4663
4657 - CONFIG_SYS_MAMR_PTA, CONFIG_SYS_MPTPR_2BK_4K, CONFIG_SYS_MPTPR_1BK_4K, CONFIG_SYS_MPTPR_2BK_8K, 4664 - CONFIG_SYS_MAMR_PTA, CONFIG_SYS_MPTPR_2BK_4K, CONFIG_SYS_MPTPR_1BK_4K, CONFIG_SYS_MPTPR_2BK_8K,
4658 CONFIG_SYS_MPTPR_1BK_8K, CONFIG_SYS_MAMR_8COL, CONFIG_SYS_MAMR_9COL: 4665 CONFIG_SYS_MPTPR_1BK_8K, CONFIG_SYS_MAMR_8COL, CONFIG_SYS_MAMR_9COL:
4659 Machine Mode Register and Memory Periodic Timer 4666 Machine Mode Register and Memory Periodic Timer
4660 Prescaler definitions (SDRAM timing) 4667 Prescaler definitions (SDRAM timing)
4661 4668
4662 - CONFIG_SYS_I2C_UCODE_PATCH, CONFIG_SYS_I2C_DPMEM_OFFSET [0x1FC0]: 4669 - CONFIG_SYS_I2C_UCODE_PATCH, CONFIG_SYS_I2C_DPMEM_OFFSET [0x1FC0]:
4663 enable I2C microcode relocation patch (MPC8xx); 4670 enable I2C microcode relocation patch (MPC8xx);
4664 define relocation offset in DPRAM [DSP2] 4671 define relocation offset in DPRAM [DSP2]
4665 4672
4666 - CONFIG_SYS_SMC_UCODE_PATCH, CONFIG_SYS_SMC_DPMEM_OFFSET [0x1FC0]: 4673 - CONFIG_SYS_SMC_UCODE_PATCH, CONFIG_SYS_SMC_DPMEM_OFFSET [0x1FC0]:
4667 enable SMC microcode relocation patch (MPC8xx); 4674 enable SMC microcode relocation patch (MPC8xx);
4668 define relocation offset in DPRAM [SMC1] 4675 define relocation offset in DPRAM [SMC1]
4669 4676
4670 - CONFIG_SYS_SPI_UCODE_PATCH, CONFIG_SYS_SPI_DPMEM_OFFSET [0x1FC0]: 4677 - CONFIG_SYS_SPI_UCODE_PATCH, CONFIG_SYS_SPI_DPMEM_OFFSET [0x1FC0]:
4671 enable SPI microcode relocation patch (MPC8xx); 4678 enable SPI microcode relocation patch (MPC8xx);
4672 define relocation offset in DPRAM [SCC4] 4679 define relocation offset in DPRAM [SCC4]
4673 4680
4674 - CONFIG_SYS_USE_OSCCLK: 4681 - CONFIG_SYS_USE_OSCCLK:
4675 Use OSCM clock mode on MBX8xx board. Be careful, 4682 Use OSCM clock mode on MBX8xx board. Be careful,
4676 wrong setting might damage your board. Read 4683 wrong setting might damage your board. Read
4677 doc/README.MBX before setting this variable! 4684 doc/README.MBX before setting this variable!
4678 4685
4679 - CONFIG_SYS_CPM_POST_WORD_ADDR: (MPC8xx, MPC8260 only) 4686 - CONFIG_SYS_CPM_POST_WORD_ADDR: (MPC8xx, MPC8260 only)
4680 Offset of the bootmode word in DPRAM used by post 4687 Offset of the bootmode word in DPRAM used by post
4681 (Power On Self Tests). This definition overrides 4688 (Power On Self Tests). This definition overrides
4682 #define'd default value in commproc.h resp. 4689 #define'd default value in commproc.h resp.
4683 cpm_8260.h. 4690 cpm_8260.h.
4684 4691
4685 - CONFIG_SYS_PCI_SLV_MEM_LOCAL, CONFIG_SYS_PCI_SLV_MEM_BUS, CONFIG_SYS_PICMR0_MASK_ATTRIB, 4692 - CONFIG_SYS_PCI_SLV_MEM_LOCAL, CONFIG_SYS_PCI_SLV_MEM_BUS, CONFIG_SYS_PICMR0_MASK_ATTRIB,
4686 CONFIG_SYS_PCI_MSTR0_LOCAL, CONFIG_SYS_PCIMSK0_MASK, CONFIG_SYS_PCI_MSTR1_LOCAL, 4693 CONFIG_SYS_PCI_MSTR0_LOCAL, CONFIG_SYS_PCIMSK0_MASK, CONFIG_SYS_PCI_MSTR1_LOCAL,
4687 CONFIG_SYS_PCIMSK1_MASK, CONFIG_SYS_PCI_MSTR_MEM_LOCAL, CONFIG_SYS_PCI_MSTR_MEM_BUS, 4694 CONFIG_SYS_PCIMSK1_MASK, CONFIG_SYS_PCI_MSTR_MEM_LOCAL, CONFIG_SYS_PCI_MSTR_MEM_BUS,
4688 CONFIG_SYS_CPU_PCI_MEM_START, CONFIG_SYS_PCI_MSTR_MEM_SIZE, CONFIG_SYS_POCMR0_MASK_ATTRIB, 4695 CONFIG_SYS_CPU_PCI_MEM_START, CONFIG_SYS_PCI_MSTR_MEM_SIZE, CONFIG_SYS_POCMR0_MASK_ATTRIB,
4689 CONFIG_SYS_PCI_MSTR_MEMIO_LOCAL, CONFIG_SYS_PCI_MSTR_MEMIO_BUS, CPU_PCI_MEMIO_START, 4696 CONFIG_SYS_PCI_MSTR_MEMIO_LOCAL, CONFIG_SYS_PCI_MSTR_MEMIO_BUS, CPU_PCI_MEMIO_START,
4690 CONFIG_SYS_PCI_MSTR_MEMIO_SIZE, CONFIG_SYS_POCMR1_MASK_ATTRIB, CONFIG_SYS_PCI_MSTR_IO_LOCAL, 4697 CONFIG_SYS_PCI_MSTR_MEMIO_SIZE, CONFIG_SYS_POCMR1_MASK_ATTRIB, CONFIG_SYS_PCI_MSTR_IO_LOCAL,
4691 CONFIG_SYS_PCI_MSTR_IO_BUS, CONFIG_SYS_CPU_PCI_IO_START, CONFIG_SYS_PCI_MSTR_IO_SIZE, 4698 CONFIG_SYS_PCI_MSTR_IO_BUS, CONFIG_SYS_CPU_PCI_IO_START, CONFIG_SYS_PCI_MSTR_IO_SIZE,
4692 CONFIG_SYS_POCMR2_MASK_ATTRIB: (MPC826x only) 4699 CONFIG_SYS_POCMR2_MASK_ATTRIB: (MPC826x only)
4693 Overrides the default PCI memory map in arch/powerpc/cpu/mpc8260/pci.c if set. 4700 Overrides the default PCI memory map in arch/powerpc/cpu/mpc8260/pci.c if set.
4694 4701
4695 - CONFIG_PCI_DISABLE_PCIE: 4702 - CONFIG_PCI_DISABLE_PCIE:
4696 Disable PCI-Express on systems where it is supported but not 4703 Disable PCI-Express on systems where it is supported but not
4697 required. 4704 required.
4698 4705
4699 - CONFIG_PCI_ENUM_ONLY 4706 - CONFIG_PCI_ENUM_ONLY
4700 Only scan through and get the devices on the busses. 4707 Only scan through and get the devices on the busses.
4701 Don't do any setup work, presumably because someone or 4708 Don't do any setup work, presumably because someone or
4702 something has already done it, and we don't need to do it 4709 something has already done it, and we don't need to do it
4703 a second time. Useful for platforms that are pre-booted 4710 a second time. Useful for platforms that are pre-booted
4704 by coreboot or similar. 4711 by coreboot or similar.
4705 4712
4706 - CONFIG_PCI_INDIRECT_BRIDGE: 4713 - CONFIG_PCI_INDIRECT_BRIDGE:
4707 Enable support for indirect PCI bridges. 4714 Enable support for indirect PCI bridges.
4708 4715
4709 - CONFIG_SYS_SRIO: 4716 - CONFIG_SYS_SRIO:
4710 Chip has SRIO or not 4717 Chip has SRIO or not
4711 4718
4712 - CONFIG_SRIO1: 4719 - CONFIG_SRIO1:
4713 Board has SRIO 1 port available 4720 Board has SRIO 1 port available
4714 4721
4715 - CONFIG_SRIO2: 4722 - CONFIG_SRIO2:
4716 Board has SRIO 2 port available 4723 Board has SRIO 2 port available
4717 4724
4718 - CONFIG_SRIO_PCIE_BOOT_MASTER 4725 - CONFIG_SRIO_PCIE_BOOT_MASTER
4719 Board can support master function for Boot from SRIO and PCIE 4726 Board can support master function for Boot from SRIO and PCIE
4720 4727
4721 - CONFIG_SYS_SRIOn_MEM_VIRT: 4728 - CONFIG_SYS_SRIOn_MEM_VIRT:
4722 Virtual Address of SRIO port 'n' memory region 4729 Virtual Address of SRIO port 'n' memory region
4723 4730
4724 - CONFIG_SYS_SRIOn_MEM_PHYS: 4731 - CONFIG_SYS_SRIOn_MEM_PHYS:
4725 Physical Address of SRIO port 'n' memory region 4732 Physical Address of SRIO port 'n' memory region
4726 4733
4727 - CONFIG_SYS_SRIOn_MEM_SIZE: 4734 - CONFIG_SYS_SRIOn_MEM_SIZE:
4728 Size of SRIO port 'n' memory region 4735 Size of SRIO port 'n' memory region
4729 4736
4730 - CONFIG_SYS_NAND_BUSWIDTH_16BIT 4737 - CONFIG_SYS_NAND_BUSWIDTH_16BIT
4731 Defined to tell the NAND controller that the NAND chip is using 4738 Defined to tell the NAND controller that the NAND chip is using
4732 a 16 bit bus. 4739 a 16 bit bus.
4733 Not all NAND drivers use this symbol. 4740 Not all NAND drivers use this symbol.
4734 Example of drivers that use it: 4741 Example of drivers that use it:
4735 - drivers/mtd/nand/ndfc.c 4742 - drivers/mtd/nand/ndfc.c
4736 - drivers/mtd/nand/mxc_nand.c 4743 - drivers/mtd/nand/mxc_nand.c
4737 4744
4738 - CONFIG_SYS_NDFC_EBC0_CFG 4745 - CONFIG_SYS_NDFC_EBC0_CFG
4739 Sets the EBC0_CFG register for the NDFC. If not defined 4746 Sets the EBC0_CFG register for the NDFC. If not defined
4740 a default value will be used. 4747 a default value will be used.
4741 4748
4742 - CONFIG_SPD_EEPROM 4749 - CONFIG_SPD_EEPROM
4743 Get DDR timing information from an I2C EEPROM. Common 4750 Get DDR timing information from an I2C EEPROM. Common
4744 with pluggable memory modules such as SODIMMs 4751 with pluggable memory modules such as SODIMMs
4745 4752
4746 SPD_EEPROM_ADDRESS 4753 SPD_EEPROM_ADDRESS
4747 I2C address of the SPD EEPROM 4754 I2C address of the SPD EEPROM
4748 4755
4749 - CONFIG_SYS_SPD_BUS_NUM 4756 - CONFIG_SYS_SPD_BUS_NUM
4750 If SPD EEPROM is on an I2C bus other than the first 4757 If SPD EEPROM is on an I2C bus other than the first
4751 one, specify here. Note that the value must resolve 4758 one, specify here. Note that the value must resolve
4752 to something your driver can deal with. 4759 to something your driver can deal with.
4753 4760
4754 - CONFIG_SYS_DDR_RAW_TIMING 4761 - CONFIG_SYS_DDR_RAW_TIMING
4755 Get DDR timing information from other than SPD. Common with 4762 Get DDR timing information from other than SPD. Common with
4756 soldered DDR chips onboard without SPD. DDR raw timing 4763 soldered DDR chips onboard without SPD. DDR raw timing
4757 parameters are extracted from datasheet and hard-coded into 4764 parameters are extracted from datasheet and hard-coded into
4758 header files or board specific files. 4765 header files or board specific files.
4759 4766
4760 - CONFIG_FSL_DDR_INTERACTIVE 4767 - CONFIG_FSL_DDR_INTERACTIVE
4761 Enable interactive DDR debugging. See doc/README.fsl-ddr. 4768 Enable interactive DDR debugging. See doc/README.fsl-ddr.
4762 4769
4763 - CONFIG_SYS_83XX_DDR_USES_CS0 4770 - CONFIG_SYS_83XX_DDR_USES_CS0
4764 Only for 83xx systems. If specified, then DDR should 4771 Only for 83xx systems. If specified, then DDR should
4765 be configured using CS0 and CS1 instead of CS2 and CS3. 4772 be configured using CS0 and CS1 instead of CS2 and CS3.
4766 4773
4767 - CONFIG_ETHER_ON_FEC[12] 4774 - CONFIG_ETHER_ON_FEC[12]
4768 Define to enable FEC[12] on a 8xx series processor. 4775 Define to enable FEC[12] on a 8xx series processor.
4769 4776
4770 - CONFIG_FEC[12]_PHY 4777 - CONFIG_FEC[12]_PHY
4771 Define to the hardcoded PHY address which corresponds 4778 Define to the hardcoded PHY address which corresponds
4772 to the given FEC; i. e. 4779 to the given FEC; i. e.
4773 #define CONFIG_FEC1_PHY 4 4780 #define CONFIG_FEC1_PHY 4
4774 means that the PHY with address 4 is connected to FEC1 4781 means that the PHY with address 4 is connected to FEC1
4775 4782
4776 When set to -1, means to probe for first available. 4783 When set to -1, means to probe for first available.
4777 4784
4778 - CONFIG_FEC[12]_PHY_NORXERR 4785 - CONFIG_FEC[12]_PHY_NORXERR
4779 The PHY does not have a RXERR line (RMII only). 4786 The PHY does not have a RXERR line (RMII only).
4780 (so program the FEC to ignore it). 4787 (so program the FEC to ignore it).
4781 4788
4782 - CONFIG_RMII 4789 - CONFIG_RMII
4783 Enable RMII mode for all FECs. 4790 Enable RMII mode for all FECs.
4784 Note that this is a global option, we can't 4791 Note that this is a global option, we can't
4785 have one FEC in standard MII mode and another in RMII mode. 4792 have one FEC in standard MII mode and another in RMII mode.
4786 4793
4787 - CONFIG_CRC32_VERIFY 4794 - CONFIG_CRC32_VERIFY
4788 Add a verify option to the crc32 command. 4795 Add a verify option to the crc32 command.
4789 The syntax is: 4796 The syntax is:
4790 4797
4791 => crc32 -v <address> <count> <crc32> 4798 => crc32 -v <address> <count> <crc32>
4792 4799
4793 Where address/count indicate a memory area 4800 Where address/count indicate a memory area
4794 and crc32 is the correct crc32 which the 4801 and crc32 is the correct crc32 which the
4795 area should have. 4802 area should have.
4796 4803
4797 - CONFIG_LOOPW 4804 - CONFIG_LOOPW
4798 Add the "loopw" memory command. This only takes effect if 4805 Add the "loopw" memory command. This only takes effect if
4799 the memory commands are activated globally (CONFIG_CMD_MEM). 4806 the memory commands are activated globally (CONFIG_CMD_MEM).
4800 4807
4801 - CONFIG_MX_CYCLIC 4808 - CONFIG_MX_CYCLIC
4802 Add the "mdc" and "mwc" memory commands. These are cyclic 4809 Add the "mdc" and "mwc" memory commands. These are cyclic
4803 "md/mw" commands. 4810 "md/mw" commands.
4804 Examples: 4811 Examples:
4805 4812
4806 => mdc.b 10 4 500 4813 => mdc.b 10 4 500
4807 This command will print 4 bytes (10,11,12,13) each 500 ms. 4814 This command will print 4 bytes (10,11,12,13) each 500 ms.
4808 4815
4809 => mwc.l 100 12345678 10 4816 => mwc.l 100 12345678 10
4810 This command will write 12345678 to address 100 all 10 ms. 4817 This command will write 12345678 to address 100 all 10 ms.
4811 4818
4812 This only takes effect if the memory commands are activated 4819 This only takes effect if the memory commands are activated
4813 globally (CONFIG_CMD_MEM). 4820 globally (CONFIG_CMD_MEM).
4814 4821
4815 - CONFIG_SKIP_LOWLEVEL_INIT 4822 - CONFIG_SKIP_LOWLEVEL_INIT
4816 [ARM, NDS32, MIPS only] If this variable is defined, then certain 4823 [ARM, NDS32, MIPS only] If this variable is defined, then certain
4817 low level initializations (like setting up the memory 4824 low level initializations (like setting up the memory
4818 controller) are omitted and/or U-Boot does not 4825 controller) are omitted and/or U-Boot does not
4819 relocate itself into RAM. 4826 relocate itself into RAM.
4820 4827
4821 Normally this variable MUST NOT be defined. The only 4828 Normally this variable MUST NOT be defined. The only
4822 exception is when U-Boot is loaded (to RAM) by some 4829 exception is when U-Boot is loaded (to RAM) by some
4823 other boot loader or by a debugger which performs 4830 other boot loader or by a debugger which performs
4824 these initializations itself. 4831 these initializations itself.
4825 4832
4826 - CONFIG_SPL_BUILD 4833 - CONFIG_SPL_BUILD
4827 Modifies the behaviour of start.S when compiling a loader 4834 Modifies the behaviour of start.S when compiling a loader
4828 that is executed before the actual U-Boot. E.g. when 4835 that is executed before the actual U-Boot. E.g. when
4829 compiling a NAND SPL. 4836 compiling a NAND SPL.
4830 4837
4831 - CONFIG_TPL_BUILD 4838 - CONFIG_TPL_BUILD
4832 Modifies the behaviour of start.S when compiling a loader 4839 Modifies the behaviour of start.S when compiling a loader
4833 that is executed after the SPL and before the actual U-Boot. 4840 that is executed after the SPL and before the actual U-Boot.
4834 It is loaded by the SPL. 4841 It is loaded by the SPL.
4835 4842
4836 - CONFIG_SYS_MPC85XX_NO_RESETVEC 4843 - CONFIG_SYS_MPC85XX_NO_RESETVEC
4837 Only for 85xx systems. If this variable is specified, the section 4844 Only for 85xx systems. If this variable is specified, the section
4838 .resetvec is not kept and the section .bootpg is placed in the 4845 .resetvec is not kept and the section .bootpg is placed in the
4839 previous 4k of the .text section. 4846 previous 4k of the .text section.
4840 4847
4841 - CONFIG_ARCH_MAP_SYSMEM 4848 - CONFIG_ARCH_MAP_SYSMEM
4842 Generally U-Boot (and in particular the md command) uses 4849 Generally U-Boot (and in particular the md command) uses
4843 effective address. It is therefore not necessary to regard 4850 effective address. It is therefore not necessary to regard
4844 U-Boot address as virtual addresses that need to be translated 4851 U-Boot address as virtual addresses that need to be translated
4845 to physical addresses. However, sandbox requires this, since 4852 to physical addresses. However, sandbox requires this, since
4846 it maintains its own little RAM buffer which contains all 4853 it maintains its own little RAM buffer which contains all
4847 addressable memory. This option causes some memory accesses 4854 addressable memory. This option causes some memory accesses
4848 to be mapped through map_sysmem() / unmap_sysmem(). 4855 to be mapped through map_sysmem() / unmap_sysmem().
4849 4856
4850 - CONFIG_USE_ARCH_MEMCPY 4857 - CONFIG_USE_ARCH_MEMCPY
4851 CONFIG_USE_ARCH_MEMSET 4858 CONFIG_USE_ARCH_MEMSET
4852 If these options are used a optimized version of memcpy/memset will 4859 If these options are used a optimized version of memcpy/memset will
4853 be used if available. These functions may be faster under some 4860 be used if available. These functions may be faster under some
4854 conditions but may increase the binary size. 4861 conditions but may increase the binary size.
4855 4862
4856 - CONFIG_X86_RESET_VECTOR 4863 - CONFIG_X86_RESET_VECTOR
4857 If defined, the x86 reset vector code is included. This is not 4864 If defined, the x86 reset vector code is included. This is not
4858 needed when U-Boot is running from Coreboot. 4865 needed when U-Boot is running from Coreboot.
4859 4866
4860 - CONFIG_SYS_MPUCLK 4867 - CONFIG_SYS_MPUCLK
4861 Defines the MPU clock speed (in MHz). 4868 Defines the MPU clock speed (in MHz).
4862 4869
4863 NOTE : currently only supported on AM335x platforms. 4870 NOTE : currently only supported on AM335x platforms.
4864 4871
4865 - CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC: 4872 - CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC:
4866 Enables the RTC32K OSC on AM33xx based plattforms 4873 Enables the RTC32K OSC on AM33xx based plattforms
4867 4874
4868 - CONFIG_SYS_NAND_NO_SUBPAGE_WRITE 4875 - CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
4869 Option to disable subpage write in NAND driver 4876 Option to disable subpage write in NAND driver
4870 driver that uses this: 4877 driver that uses this:
4871 drivers/mtd/nand/davinci_nand.c 4878 drivers/mtd/nand/davinci_nand.c
4872 4879
4873 Freescale QE/FMAN Firmware Support: 4880 Freescale QE/FMAN Firmware Support:
4874 ----------------------------------- 4881 -----------------------------------
4875 4882
4876 The Freescale QUICCEngine (QE) and Frame Manager (FMAN) both support the 4883 The Freescale QUICCEngine (QE) and Frame Manager (FMAN) both support the
4877 loading of "firmware", which is encoded in the QE firmware binary format. 4884 loading of "firmware", which is encoded in the QE firmware binary format.
4878 This firmware often needs to be loaded during U-Boot booting, so macros 4885 This firmware often needs to be loaded during U-Boot booting, so macros
4879 are used to identify the storage device (NOR flash, SPI, etc) and the address 4886 are used to identify the storage device (NOR flash, SPI, etc) and the address
4880 within that device. 4887 within that device.
4881 4888
4882 - CONFIG_SYS_FMAN_FW_ADDR 4889 - CONFIG_SYS_FMAN_FW_ADDR
4883 The address in the storage device where the FMAN microcode is located. The 4890 The address in the storage device where the FMAN microcode is located. The
4884 meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro 4891 meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
4885 is also specified. 4892 is also specified.
4886 4893
4887 - CONFIG_SYS_QE_FW_ADDR 4894 - CONFIG_SYS_QE_FW_ADDR
4888 The address in the storage device where the QE microcode is located. The 4895 The address in the storage device where the QE microcode is located. The
4889 meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro 4896 meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
4890 is also specified. 4897 is also specified.
4891 4898
4892 - CONFIG_SYS_QE_FMAN_FW_LENGTH 4899 - CONFIG_SYS_QE_FMAN_FW_LENGTH
4893 The maximum possible size of the firmware. The firmware binary format 4900 The maximum possible size of the firmware. The firmware binary format
4894 has a field that specifies the actual size of the firmware, but it 4901 has a field that specifies the actual size of the firmware, but it
4895 might not be possible to read any part of the firmware unless some 4902 might not be possible to read any part of the firmware unless some
4896 local storage is allocated to hold the entire firmware first. 4903 local storage is allocated to hold the entire firmware first.
4897 4904
4898 - CONFIG_SYS_QE_FMAN_FW_IN_NOR 4905 - CONFIG_SYS_QE_FMAN_FW_IN_NOR
4899 Specifies that QE/FMAN firmware is located in NOR flash, mapped as 4906 Specifies that QE/FMAN firmware is located in NOR flash, mapped as
4900 normal addressable memory via the LBC. CONFIG_SYS_FMAN_FW_ADDR is the 4907 normal addressable memory via the LBC. CONFIG_SYS_FMAN_FW_ADDR is the
4901 virtual address in NOR flash. 4908 virtual address in NOR flash.
4902 4909
4903 - CONFIG_SYS_QE_FMAN_FW_IN_NAND 4910 - CONFIG_SYS_QE_FMAN_FW_IN_NAND
4904 Specifies that QE/FMAN firmware is located in NAND flash. 4911 Specifies that QE/FMAN firmware is located in NAND flash.
4905 CONFIG_SYS_FMAN_FW_ADDR is the offset within NAND flash. 4912 CONFIG_SYS_FMAN_FW_ADDR is the offset within NAND flash.
4906 4913
4907 - CONFIG_SYS_QE_FMAN_FW_IN_MMC 4914 - CONFIG_SYS_QE_FMAN_FW_IN_MMC
4908 Specifies that QE/FMAN firmware is located on the primary SD/MMC 4915 Specifies that QE/FMAN firmware is located on the primary SD/MMC
4909 device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device. 4916 device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
4910 4917
4911 - CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH 4918 - CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH
4912 Specifies that QE/FMAN firmware is located on the primary SPI 4919 Specifies that QE/FMAN firmware is located on the primary SPI
4913 device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device. 4920 device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
4914 4921
4915 - CONFIG_SYS_QE_FMAN_FW_IN_REMOTE 4922 - CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
4916 Specifies that QE/FMAN firmware is located in the remote (master) 4923 Specifies that QE/FMAN firmware is located in the remote (master)
4917 memory space. CONFIG_SYS_FMAN_FW_ADDR is a virtual address which 4924 memory space. CONFIG_SYS_FMAN_FW_ADDR is a virtual address which
4918 can be mapped from slave TLB->slave LAW->slave SRIO or PCIE outbound 4925 can be mapped from slave TLB->slave LAW->slave SRIO or PCIE outbound
4919 window->master inbound window->master LAW->the ucode address in 4926 window->master inbound window->master LAW->the ucode address in
4920 master's memory space. 4927 master's memory space.
4921 4928
4922 Freescale Layerscape Management Complex Firmware Support: 4929 Freescale Layerscape Management Complex Firmware Support:
4923 --------------------------------------------------------- 4930 ---------------------------------------------------------
4924 The Freescale Layerscape Management Complex (MC) supports the loading of 4931 The Freescale Layerscape Management Complex (MC) supports the loading of
4925 "firmware". 4932 "firmware".
4926 This firmware often needs to be loaded during U-Boot booting, so macros 4933 This firmware often needs to be loaded during U-Boot booting, so macros
4927 are used to identify the storage device (NOR flash, SPI, etc) and the address 4934 are used to identify the storage device (NOR flash, SPI, etc) and the address
4928 within that device. 4935 within that device.
4929 4936
4930 - CONFIG_FSL_MC_ENET 4937 - CONFIG_FSL_MC_ENET
4931 Enable the MC driver for Layerscape SoCs. 4938 Enable the MC driver for Layerscape SoCs.
4932 4939
4933 - CONFIG_SYS_LS_MC_FW_ADDR 4940 - CONFIG_SYS_LS_MC_FW_ADDR
4934 The address in the storage device where the firmware is located. The 4941 The address in the storage device where the firmware is located. The
4935 meaning of this address depends on which CONFIG_SYS_LS_MC_FW_IN_xxx macro 4942 meaning of this address depends on which CONFIG_SYS_LS_MC_FW_IN_xxx macro
4936 is also specified. 4943 is also specified.
4937 4944
4938 - CONFIG_SYS_LS_MC_FW_LENGTH 4945 - CONFIG_SYS_LS_MC_FW_LENGTH
4939 The maximum possible size of the firmware. The firmware binary format 4946 The maximum possible size of the firmware. The firmware binary format
4940 has a field that specifies the actual size of the firmware, but it 4947 has a field that specifies the actual size of the firmware, but it
4941 might not be possible to read any part of the firmware unless some 4948 might not be possible to read any part of the firmware unless some
4942 local storage is allocated to hold the entire firmware first. 4949 local storage is allocated to hold the entire firmware first.
4943 4950
4944 - CONFIG_SYS_LS_MC_FW_IN_NOR 4951 - CONFIG_SYS_LS_MC_FW_IN_NOR
4945 Specifies that MC firmware is located in NOR flash, mapped as 4952 Specifies that MC firmware is located in NOR flash, mapped as
4946 normal addressable memory via the LBC. CONFIG_SYS_LS_MC_FW_ADDR is the 4953 normal addressable memory via the LBC. CONFIG_SYS_LS_MC_FW_ADDR is the
4947 virtual address in NOR flash. 4954 virtual address in NOR flash.
4948 4955
4949 Building the Software: 4956 Building the Software:
4950 ====================== 4957 ======================
4951 4958
4952 Building U-Boot has been tested in several native build environments 4959 Building U-Boot has been tested in several native build environments
4953 and in many different cross environments. Of course we cannot support 4960 and in many different cross environments. Of course we cannot support
4954 all possibly existing versions of cross development tools in all 4961 all possibly existing versions of cross development tools in all
4955 (potentially obsolete) versions. In case of tool chain problems we 4962 (potentially obsolete) versions. In case of tool chain problems we
4956 recommend to use the ELDK (see http://www.denx.de/wiki/DULG/ELDK) 4963 recommend to use the ELDK (see http://www.denx.de/wiki/DULG/ELDK)
4957 which is extensively used to build and test U-Boot. 4964 which is extensively used to build and test U-Boot.
4958 4965
4959 If you are not using a native environment, it is assumed that you 4966 If you are not using a native environment, it is assumed that you
4960 have GNU cross compiling tools available in your path. In this case, 4967 have GNU cross compiling tools available in your path. In this case,
4961 you must set the environment variable CROSS_COMPILE in your shell. 4968 you must set the environment variable CROSS_COMPILE in your shell.
4962 Note that no changes to the Makefile or any other source files are 4969 Note that no changes to the Makefile or any other source files are
4963 necessary. For example using the ELDK on a 4xx CPU, please enter: 4970 necessary. For example using the ELDK on a 4xx CPU, please enter:
4964 4971
4965 $ CROSS_COMPILE=ppc_4xx- 4972 $ CROSS_COMPILE=ppc_4xx-
4966 $ export CROSS_COMPILE 4973 $ export CROSS_COMPILE
4967 4974
4968 Note: If you wish to generate Windows versions of the utilities in 4975 Note: If you wish to generate Windows versions of the utilities in
4969 the tools directory you can use the MinGW toolchain 4976 the tools directory you can use the MinGW toolchain
4970 (http://www.mingw.org). Set your HOST tools to the MinGW 4977 (http://www.mingw.org). Set your HOST tools to the MinGW
4971 toolchain and execute 'make tools'. For example: 4978 toolchain and execute 'make tools'. For example:
4972 4979
4973 $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools 4980 $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools
4974 4981
4975 Binaries such as tools/mkimage.exe will be created which can 4982 Binaries such as tools/mkimage.exe will be created which can
4976 be executed on computers running Windows. 4983 be executed on computers running Windows.
4977 4984
4978 U-Boot is intended to be simple to build. After installing the 4985 U-Boot is intended to be simple to build. After installing the
4979 sources you must configure U-Boot for one specific board type. This 4986 sources you must configure U-Boot for one specific board type. This
4980 is done by typing: 4987 is done by typing:
4981 4988
4982 make NAME_defconfig 4989 make NAME_defconfig
4983 4990
4984 where "NAME_defconfig" is the name of one of the existing configu- 4991 where "NAME_defconfig" is the name of one of the existing configu-
4985 rations; see boards.cfg for supported names. 4992 rations; see boards.cfg for supported names.
4986 4993
4987 Note: for some board special configuration names may exist; check if 4994 Note: for some board special configuration names may exist; check if
4988 additional information is available from the board vendor; for 4995 additional information is available from the board vendor; for
4989 instance, the TQM823L systems are available without (standard) 4996 instance, the TQM823L systems are available without (standard)
4990 or with LCD support. You can select such additional "features" 4997 or with LCD support. You can select such additional "features"
4991 when choosing the configuration, i. e. 4998 when choosing the configuration, i. e.
4992 4999
4993 make TQM823L_defconfig 5000 make TQM823L_defconfig
4994 - will configure for a plain TQM823L, i. e. no LCD support 5001 - will configure for a plain TQM823L, i. e. no LCD support
4995 5002
4996 make TQM823L_LCD_defconfig 5003 make TQM823L_LCD_defconfig
4997 - will configure for a TQM823L with U-Boot console on LCD 5004 - will configure for a TQM823L with U-Boot console on LCD
4998 5005
4999 etc. 5006 etc.
5000 5007
5001 5008
5002 Finally, type "make all", and you should get some working U-Boot 5009 Finally, type "make all", and you should get some working U-Boot
5003 images ready for download to / installation on your system: 5010 images ready for download to / installation on your system:
5004 5011
5005 - "u-boot.bin" is a raw binary image 5012 - "u-boot.bin" is a raw binary image
5006 - "u-boot" is an image in ELF binary format 5013 - "u-boot" is an image in ELF binary format
5007 - "u-boot.srec" is in Motorola S-Record format 5014 - "u-boot.srec" is in Motorola S-Record format
5008 5015
5009 By default the build is performed locally and the objects are saved 5016 By default the build is performed locally and the objects are saved
5010 in the source directory. One of the two methods can be used to change 5017 in the source directory. One of the two methods can be used to change
5011 this behavior and build U-Boot to some external directory: 5018 this behavior and build U-Boot to some external directory:
5012 5019
5013 1. Add O= to the make command line invocations: 5020 1. Add O= to the make command line invocations:
5014 5021
5015 make O=/tmp/build distclean 5022 make O=/tmp/build distclean
5016 make O=/tmp/build NAME_defconfig 5023 make O=/tmp/build NAME_defconfig
5017 make O=/tmp/build all 5024 make O=/tmp/build all
5018 5025
5019 2. Set environment variable KBUILD_OUTPUT to point to the desired location: 5026 2. Set environment variable KBUILD_OUTPUT to point to the desired location:
5020 5027
5021 export KBUILD_OUTPUT=/tmp/build 5028 export KBUILD_OUTPUT=/tmp/build
5022 make distclean 5029 make distclean
5023 make NAME_defconfig 5030 make NAME_defconfig
5024 make all 5031 make all
5025 5032
5026 Note that the command line "O=" setting overrides the KBUILD_OUTPUT environment 5033 Note that the command line "O=" setting overrides the KBUILD_OUTPUT environment
5027 variable. 5034 variable.
5028 5035
5029 5036
5030 Please be aware that the Makefiles assume you are using GNU make, so 5037 Please be aware that the Makefiles assume you are using GNU make, so
5031 for instance on NetBSD you might need to use "gmake" instead of 5038 for instance on NetBSD you might need to use "gmake" instead of
5032 native "make". 5039 native "make".
5033 5040
5034 5041
5035 If the system board that you have is not listed, then you will need 5042 If the system board that you have is not listed, then you will need
5036 to port U-Boot to your hardware platform. To do this, follow these 5043 to port U-Boot to your hardware platform. To do this, follow these
5037 steps: 5044 steps:
5038 5045
5039 1. Add a new configuration option for your board to the toplevel 5046 1. Add a new configuration option for your board to the toplevel
5040 "boards.cfg" file, using the existing entries as examples. 5047 "boards.cfg" file, using the existing entries as examples.
5041 Follow the instructions there to keep the boards in order. 5048 Follow the instructions there to keep the boards in order.
5042 2. Create a new directory to hold your board specific code. Add any 5049 2. Create a new directory to hold your board specific code. Add any
5043 files you need. In your board directory, you will need at least 5050 files you need. In your board directory, you will need at least
5044 the "Makefile", a "<board>.c", "flash.c" and "u-boot.lds". 5051 the "Makefile", a "<board>.c", "flash.c" and "u-boot.lds".
5045 3. Create a new configuration file "include/configs/<board>.h" for 5052 3. Create a new configuration file "include/configs/<board>.h" for
5046 your board 5053 your board
5047 3. If you're porting U-Boot to a new CPU, then also create a new 5054 3. If you're porting U-Boot to a new CPU, then also create a new
5048 directory to hold your CPU specific code. Add any files you need. 5055 directory to hold your CPU specific code. Add any files you need.
5049 4. Run "make <board>_defconfig" with your new name. 5056 4. Run "make <board>_defconfig" with your new name.
5050 5. Type "make", and you should get a working "u-boot.srec" file 5057 5. Type "make", and you should get a working "u-boot.srec" file
5051 to be installed on your target system. 5058 to be installed on your target system.
5052 6. Debug and solve any problems that might arise. 5059 6. Debug and solve any problems that might arise.
5053 [Of course, this last step is much harder than it sounds.] 5060 [Of course, this last step is much harder than it sounds.]
5054 5061
5055 5062
5056 Testing of U-Boot Modifications, Ports to New Hardware, etc.: 5063 Testing of U-Boot Modifications, Ports to New Hardware, etc.:
5057 ============================================================== 5064 ==============================================================
5058 5065
5059 If you have modified U-Boot sources (for instance added a new board 5066 If you have modified U-Boot sources (for instance added a new board
5060 or support for new devices, a new CPU, etc.) you are expected to 5067 or support for new devices, a new CPU, etc.) you are expected to
5061 provide feedback to the other developers. The feedback normally takes 5068 provide feedback to the other developers. The feedback normally takes
5062 the form of a "patch", i. e. a context diff against a certain (latest 5069 the form of a "patch", i. e. a context diff against a certain (latest
5063 official or latest in the git repository) version of U-Boot sources. 5070 official or latest in the git repository) version of U-Boot sources.
5064 5071
5065 But before you submit such a patch, please verify that your modifi- 5072 But before you submit such a patch, please verify that your modifi-
5066 cation did not break existing code. At least make sure that *ALL* of 5073 cation did not break existing code. At least make sure that *ALL* of
5067 the supported boards compile WITHOUT ANY compiler warnings. To do so, 5074 the supported boards compile WITHOUT ANY compiler warnings. To do so,
5068 just run the "MAKEALL" script, which will configure and build U-Boot 5075 just run the "MAKEALL" script, which will configure and build U-Boot
5069 for ALL supported system. Be warned, this will take a while. You can 5076 for ALL supported system. Be warned, this will take a while. You can
5070 select which (cross) compiler to use by passing a `CROSS_COMPILE' 5077 select which (cross) compiler to use by passing a `CROSS_COMPILE'
5071 environment variable to the script, i. e. to use the ELDK cross tools 5078 environment variable to the script, i. e. to use the ELDK cross tools
5072 you can type 5079 you can type
5073 5080
5074 CROSS_COMPILE=ppc_8xx- MAKEALL 5081 CROSS_COMPILE=ppc_8xx- MAKEALL
5075 5082
5076 or to build on a native PowerPC system you can type 5083 or to build on a native PowerPC system you can type
5077 5084
5078 CROSS_COMPILE=' ' MAKEALL 5085 CROSS_COMPILE=' ' MAKEALL
5079 5086
5080 When using the MAKEALL script, the default behaviour is to build 5087 When using the MAKEALL script, the default behaviour is to build
5081 U-Boot in the source directory. This location can be changed by 5088 U-Boot in the source directory. This location can be changed by
5082 setting the BUILD_DIR environment variable. Also, for each target 5089 setting the BUILD_DIR environment variable. Also, for each target
5083 built, the MAKEALL script saves two log files (<target>.ERR and 5090 built, the MAKEALL script saves two log files (<target>.ERR and
5084 <target>.MAKEALL) in the <source dir>/LOG directory. This default 5091 <target>.MAKEALL) in the <source dir>/LOG directory. This default
5085 location can be changed by setting the MAKEALL_LOGDIR environment 5092 location can be changed by setting the MAKEALL_LOGDIR environment
5086 variable. For example: 5093 variable. For example:
5087 5094
5088 export BUILD_DIR=/tmp/build 5095 export BUILD_DIR=/tmp/build
5089 export MAKEALL_LOGDIR=/tmp/log 5096 export MAKEALL_LOGDIR=/tmp/log
5090 CROSS_COMPILE=ppc_8xx- MAKEALL 5097 CROSS_COMPILE=ppc_8xx- MAKEALL
5091 5098
5092 With the above settings build objects are saved in the /tmp/build, 5099 With the above settings build objects are saved in the /tmp/build,
5093 log files are saved in the /tmp/log and the source tree remains clean 5100 log files are saved in the /tmp/log and the source tree remains clean
5094 during the whole build process. 5101 during the whole build process.
5095 5102
5096 5103
5097 See also "U-Boot Porting Guide" below. 5104 See also "U-Boot Porting Guide" below.
5098 5105
5099 5106
5100 Monitor Commands - Overview: 5107 Monitor Commands - Overview:
5101 ============================ 5108 ============================
5102 5109
5103 go - start application at address 'addr' 5110 go - start application at address 'addr'
5104 run - run commands in an environment variable 5111 run - run commands in an environment variable
5105 bootm - boot application image from memory 5112 bootm - boot application image from memory
5106 bootp - boot image via network using BootP/TFTP protocol 5113 bootp - boot image via network using BootP/TFTP protocol
5107 bootz - boot zImage from memory 5114 bootz - boot zImage from memory
5108 tftpboot- boot image via network using TFTP protocol 5115 tftpboot- boot image via network using TFTP protocol
5109 and env variables "ipaddr" and "serverip" 5116 and env variables "ipaddr" and "serverip"
5110 (and eventually "gatewayip") 5117 (and eventually "gatewayip")
5111 tftpput - upload a file via network using TFTP protocol 5118 tftpput - upload a file via network using TFTP protocol
5112 rarpboot- boot image via network using RARP/TFTP protocol 5119 rarpboot- boot image via network using RARP/TFTP protocol
5113 diskboot- boot from IDE devicebootd - boot default, i.e., run 'bootcmd' 5120 diskboot- boot from IDE devicebootd - boot default, i.e., run 'bootcmd'
5114 loads - load S-Record file over serial line 5121 loads - load S-Record file over serial line
5115 loadb - load binary file over serial line (kermit mode) 5122 loadb - load binary file over serial line (kermit mode)
5116 md - memory display 5123 md - memory display
5117 mm - memory modify (auto-incrementing) 5124 mm - memory modify (auto-incrementing)
5118 nm - memory modify (constant address) 5125 nm - memory modify (constant address)
5119 mw - memory write (fill) 5126 mw - memory write (fill)
5120 cp - memory copy 5127 cp - memory copy
5121 cmp - memory compare 5128 cmp - memory compare
5122 crc32 - checksum calculation 5129 crc32 - checksum calculation
5123 i2c - I2C sub-system 5130 i2c - I2C sub-system
5124 sspi - SPI utility commands 5131 sspi - SPI utility commands
5125 base - print or set address offset 5132 base - print or set address offset
5126 printenv- print environment variables 5133 printenv- print environment variables
5127 setenv - set environment variables 5134 setenv - set environment variables
5128 saveenv - save environment variables to persistent storage 5135 saveenv - save environment variables to persistent storage
5129 protect - enable or disable FLASH write protection 5136 protect - enable or disable FLASH write protection
5130 erase - erase FLASH memory 5137 erase - erase FLASH memory
5131 flinfo - print FLASH memory information 5138 flinfo - print FLASH memory information
5132 nand - NAND memory operations (see doc/README.nand) 5139 nand - NAND memory operations (see doc/README.nand)
5133 bdinfo - print Board Info structure 5140 bdinfo - print Board Info structure
5134 iminfo - print header information for application image 5141 iminfo - print header information for application image
5135 coninfo - print console devices and informations 5142 coninfo - print console devices and informations
5136 ide - IDE sub-system 5143 ide - IDE sub-system
5137 loop - infinite loop on address range 5144 loop - infinite loop on address range
5138 loopw - infinite write loop on address range 5145 loopw - infinite write loop on address range
5139 mtest - simple RAM test 5146 mtest - simple RAM test
5140 icache - enable or disable instruction cache 5147 icache - enable or disable instruction cache
5141 dcache - enable or disable data cache 5148 dcache - enable or disable data cache
5142 reset - Perform RESET of the CPU 5149 reset - Perform RESET of the CPU
5143 echo - echo args to console 5150 echo - echo args to console
5144 version - print monitor version 5151 version - print monitor version
5145 help - print online help 5152 help - print online help
5146 ? - alias for 'help' 5153 ? - alias for 'help'
5147 5154
5148 5155
5149 Monitor Commands - Detailed Description: 5156 Monitor Commands - Detailed Description:
5150 ======================================== 5157 ========================================
5151 5158
5152 TODO. 5159 TODO.
5153 5160
5154 For now: just type "help <command>". 5161 For now: just type "help <command>".
5155 5162
5156 5163
5157 Environment Variables: 5164 Environment Variables:
5158 ====================== 5165 ======================
5159 5166
5160 U-Boot supports user configuration using Environment Variables which 5167 U-Boot supports user configuration using Environment Variables which
5161 can be made persistent by saving to Flash memory. 5168 can be made persistent by saving to Flash memory.
5162 5169
5163 Environment Variables are set using "setenv", printed using 5170 Environment Variables are set using "setenv", printed using
5164 "printenv", and saved to Flash using "saveenv". Using "setenv" 5171 "printenv", and saved to Flash using "saveenv". Using "setenv"
5165 without a value can be used to delete a variable from the 5172 without a value can be used to delete a variable from the
5166 environment. As long as you don't save the environment you are 5173 environment. As long as you don't save the environment you are
5167 working with an in-memory copy. In case the Flash area containing the 5174 working with an in-memory copy. In case the Flash area containing the
5168 environment is erased by accident, a default environment is provided. 5175 environment is erased by accident, a default environment is provided.
5169 5176
5170 Some configuration options can be set using Environment Variables. 5177 Some configuration options can be set using Environment Variables.
5171 5178
5172 List of environment variables (most likely not complete): 5179 List of environment variables (most likely not complete):
5173 5180
5174 baudrate - see CONFIG_BAUDRATE 5181 baudrate - see CONFIG_BAUDRATE
5175 5182
5176 bootdelay - see CONFIG_BOOTDELAY 5183 bootdelay - see CONFIG_BOOTDELAY
5177 5184
5178 bootcmd - see CONFIG_BOOTCOMMAND 5185 bootcmd - see CONFIG_BOOTCOMMAND
5179 5186
5180 bootargs - Boot arguments when booting an RTOS image 5187 bootargs - Boot arguments when booting an RTOS image
5181 5188
5182 bootfile - Name of the image to load with TFTP 5189 bootfile - Name of the image to load with TFTP
5183 5190
5184 bootm_low - Memory range available for image processing in the bootm 5191 bootm_low - Memory range available for image processing in the bootm
5185 command can be restricted. This variable is given as 5192 command can be restricted. This variable is given as
5186 a hexadecimal number and defines lowest address allowed 5193 a hexadecimal number and defines lowest address allowed
5187 for use by the bootm command. See also "bootm_size" 5194 for use by the bootm command. See also "bootm_size"
5188 environment variable. Address defined by "bootm_low" is 5195 environment variable. Address defined by "bootm_low" is
5189 also the base of the initial memory mapping for the Linux 5196 also the base of the initial memory mapping for the Linux
5190 kernel -- see the description of CONFIG_SYS_BOOTMAPSZ and 5197 kernel -- see the description of CONFIG_SYS_BOOTMAPSZ and
5191 bootm_mapsize. 5198 bootm_mapsize.
5192 5199
5193 bootm_mapsize - Size of the initial memory mapping for the Linux kernel. 5200 bootm_mapsize - Size of the initial memory mapping for the Linux kernel.
5194 This variable is given as a hexadecimal number and it 5201 This variable is given as a hexadecimal number and it
5195 defines the size of the memory region starting at base 5202 defines the size of the memory region starting at base
5196 address bootm_low that is accessible by the Linux kernel 5203 address bootm_low that is accessible by the Linux kernel
5197 during early boot. If unset, CONFIG_SYS_BOOTMAPSZ is used 5204 during early boot. If unset, CONFIG_SYS_BOOTMAPSZ is used
5198 as the default value if it is defined, and bootm_size is 5205 as the default value if it is defined, and bootm_size is
5199 used otherwise. 5206 used otherwise.
5200 5207
5201 bootm_size - Memory range available for image processing in the bootm 5208 bootm_size - Memory range available for image processing in the bootm
5202 command can be restricted. This variable is given as 5209 command can be restricted. This variable is given as
5203 a hexadecimal number and defines the size of the region 5210 a hexadecimal number and defines the size of the region
5204 allowed for use by the bootm command. See also "bootm_low" 5211 allowed for use by the bootm command. See also "bootm_low"
5205 environment variable. 5212 environment variable.
5206 5213
5207 updatefile - Location of the software update file on a TFTP server, used 5214 updatefile - Location of the software update file on a TFTP server, used
5208 by the automatic software update feature. Please refer to 5215 by the automatic software update feature. Please refer to
5209 documentation in doc/README.update for more details. 5216 documentation in doc/README.update for more details.
5210 5217
5211 autoload - if set to "no" (any string beginning with 'n'), 5218 autoload - if set to "no" (any string beginning with 'n'),
5212 "bootp" will just load perform a lookup of the 5219 "bootp" will just load perform a lookup of the
5213 configuration from the BOOTP server, but not try to 5220 configuration from the BOOTP server, but not try to
5214 load any image using TFTP 5221 load any image using TFTP
5215 5222
5216 autostart - if set to "yes", an image loaded using the "bootp", 5223 autostart - if set to "yes", an image loaded using the "bootp",
5217 "rarpboot", "tftpboot" or "diskboot" commands will 5224 "rarpboot", "tftpboot" or "diskboot" commands will
5218 be automatically started (by internally calling 5225 be automatically started (by internally calling
5219 "bootm") 5226 "bootm")
5220 5227
5221 If set to "no", a standalone image passed to the 5228 If set to "no", a standalone image passed to the
5222 "bootm" command will be copied to the load address 5229 "bootm" command will be copied to the load address
5223 (and eventually uncompressed), but NOT be started. 5230 (and eventually uncompressed), but NOT be started.
5224 This can be used to load and uncompress arbitrary 5231 This can be used to load and uncompress arbitrary
5225 data. 5232 data.
5226 5233
5227 fdt_high - if set this restricts the maximum address that the 5234 fdt_high - if set this restricts the maximum address that the
5228 flattened device tree will be copied into upon boot. 5235 flattened device tree will be copied into upon boot.
5229 For example, if you have a system with 1 GB memory 5236 For example, if you have a system with 1 GB memory
5230 at physical address 0x10000000, while Linux kernel 5237 at physical address 0x10000000, while Linux kernel
5231 only recognizes the first 704 MB as low memory, you 5238 only recognizes the first 704 MB as low memory, you
5232 may need to set fdt_high as 0x3C000000 to have the 5239 may need to set fdt_high as 0x3C000000 to have the
5233 device tree blob be copied to the maximum address 5240 device tree blob be copied to the maximum address
5234 of the 704 MB low memory, so that Linux kernel can 5241 of the 704 MB low memory, so that Linux kernel can
5235 access it during the boot procedure. 5242 access it during the boot procedure.
5236 5243
5237 If this is set to the special value 0xFFFFFFFF then 5244 If this is set to the special value 0xFFFFFFFF then
5238 the fdt will not be copied at all on boot. For this 5245 the fdt will not be copied at all on boot. For this
5239 to work it must reside in writable memory, have 5246 to work it must reside in writable memory, have
5240 sufficient padding on the end of it for u-boot to 5247 sufficient padding on the end of it for u-boot to
5241 add the information it needs into it, and the memory 5248 add the information it needs into it, and the memory
5242 must be accessible by the kernel. 5249 must be accessible by the kernel.
5243 5250
5244 fdtcontroladdr- if set this is the address of the control flattened 5251 fdtcontroladdr- if set this is the address of the control flattened
5245 device tree used by U-Boot when CONFIG_OF_CONTROL is 5252 device tree used by U-Boot when CONFIG_OF_CONTROL is
5246 defined. 5253 defined.
5247 5254
5248 i2cfast - (PPC405GP|PPC405EP only) 5255 i2cfast - (PPC405GP|PPC405EP only)
5249 if set to 'y' configures Linux I2C driver for fast 5256 if set to 'y' configures Linux I2C driver for fast
5250 mode (400kHZ). This environment variable is used in 5257 mode (400kHZ). This environment variable is used in
5251 initialization code. So, for changes to be effective 5258 initialization code. So, for changes to be effective
5252 it must be saved and board must be reset. 5259 it must be saved and board must be reset.
5253 5260
5254 initrd_high - restrict positioning of initrd images: 5261 initrd_high - restrict positioning of initrd images:
5255 If this variable is not set, initrd images will be 5262 If this variable is not set, initrd images will be
5256 copied to the highest possible address in RAM; this 5263 copied to the highest possible address in RAM; this
5257 is usually what you want since it allows for 5264 is usually what you want since it allows for
5258 maximum initrd size. If for some reason you want to 5265 maximum initrd size. If for some reason you want to
5259 make sure that the initrd image is loaded below the 5266 make sure that the initrd image is loaded below the
5260 CONFIG_SYS_BOOTMAPSZ limit, you can set this environment 5267 CONFIG_SYS_BOOTMAPSZ limit, you can set this environment
5261 variable to a value of "no" or "off" or "0". 5268 variable to a value of "no" or "off" or "0".
5262 Alternatively, you can set it to a maximum upper 5269 Alternatively, you can set it to a maximum upper
5263 address to use (U-Boot will still check that it 5270 address to use (U-Boot will still check that it
5264 does not overwrite the U-Boot stack and data). 5271 does not overwrite the U-Boot stack and data).
5265 5272
5266 For instance, when you have a system with 16 MB 5273 For instance, when you have a system with 16 MB
5267 RAM, and want to reserve 4 MB from use by Linux, 5274 RAM, and want to reserve 4 MB from use by Linux,
5268 you can do this by adding "mem=12M" to the value of 5275 you can do this by adding "mem=12M" to the value of
5269 the "bootargs" variable. However, now you must make 5276 the "bootargs" variable. However, now you must make
5270 sure that the initrd image is placed in the first 5277 sure that the initrd image is placed in the first
5271 12 MB as well - this can be done with 5278 12 MB as well - this can be done with
5272 5279
5273 setenv initrd_high 00c00000 5280 setenv initrd_high 00c00000
5274 5281
5275 If you set initrd_high to 0xFFFFFFFF, this is an 5282 If you set initrd_high to 0xFFFFFFFF, this is an
5276 indication to U-Boot that all addresses are legal 5283 indication to U-Boot that all addresses are legal
5277 for the Linux kernel, including addresses in flash 5284 for the Linux kernel, including addresses in flash
5278 memory. In this case U-Boot will NOT COPY the 5285 memory. In this case U-Boot will NOT COPY the
5279 ramdisk at all. This may be useful to reduce the 5286 ramdisk at all. This may be useful to reduce the
5280 boot time on your system, but requires that this 5287 boot time on your system, but requires that this
5281 feature is supported by your Linux kernel. 5288 feature is supported by your Linux kernel.
5282 5289
5283 ipaddr - IP address; needed for tftpboot command 5290 ipaddr - IP address; needed for tftpboot command
5284 5291
5285 loadaddr - Default load address for commands like "bootp", 5292 loadaddr - Default load address for commands like "bootp",
5286 "rarpboot", "tftpboot", "loadb" or "diskboot" 5293 "rarpboot", "tftpboot", "loadb" or "diskboot"
5287 5294
5288 loads_echo - see CONFIG_LOADS_ECHO 5295 loads_echo - see CONFIG_LOADS_ECHO
5289 5296
5290 serverip - TFTP server IP address; needed for tftpboot command 5297 serverip - TFTP server IP address; needed for tftpboot command
5291 5298
5292 bootretry - see CONFIG_BOOT_RETRY_TIME 5299 bootretry - see CONFIG_BOOT_RETRY_TIME
5293 5300
5294 bootdelaykey - see CONFIG_AUTOBOOT_DELAY_STR 5301 bootdelaykey - see CONFIG_AUTOBOOT_DELAY_STR
5295 5302
5296 bootstopkey - see CONFIG_AUTOBOOT_STOP_STR 5303 bootstopkey - see CONFIG_AUTOBOOT_STOP_STR
5297 5304
5298 ethprime - controls which interface is used first. 5305 ethprime - controls which interface is used first.
5299 5306
5300 ethact - controls which interface is currently active. 5307 ethact - controls which interface is currently active.
5301 For example you can do the following 5308 For example you can do the following
5302 5309
5303 => setenv ethact FEC 5310 => setenv ethact FEC
5304 => ping 192.168.0.1 # traffic sent on FEC 5311 => ping 192.168.0.1 # traffic sent on FEC
5305 => setenv ethact SCC 5312 => setenv ethact SCC
5306 => ping 10.0.0.1 # traffic sent on SCC 5313 => ping 10.0.0.1 # traffic sent on SCC
5307 5314
5308 ethrotate - When set to "no" U-Boot does not go through all 5315 ethrotate - When set to "no" U-Boot does not go through all
5309 available network interfaces. 5316 available network interfaces.
5310 It just stays at the currently selected interface. 5317 It just stays at the currently selected interface.
5311 5318
5312 netretry - When set to "no" each network operation will 5319 netretry - When set to "no" each network operation will
5313 either succeed or fail without retrying. 5320 either succeed or fail without retrying.
5314 When set to "once" the network operation will 5321 When set to "once" the network operation will
5315 fail when all the available network interfaces 5322 fail when all the available network interfaces
5316 are tried once without success. 5323 are tried once without success.
5317 Useful on scripts which control the retry operation 5324 Useful on scripts which control the retry operation
5318 themselves. 5325 themselves.
5319 5326
5320 npe_ucode - set load address for the NPE microcode 5327 npe_ucode - set load address for the NPE microcode
5321 5328
5322 silent_linux - If set then linux will be told to boot silently, by 5329 silent_linux - If set then linux will be told to boot silently, by
5323 changing the console to be empty. If "yes" it will be 5330 changing the console to be empty. If "yes" it will be
5324 made silent. If "no" it will not be made silent. If 5331 made silent. If "no" it will not be made silent. If
5325 unset, then it will be made silent if the U-Boot console 5332 unset, then it will be made silent if the U-Boot console
5326 is silent. 5333 is silent.
5327 5334
5328 tftpsrcport - If this is set, the value is used for TFTP's 5335 tftpsrcport - If this is set, the value is used for TFTP's
5329 UDP source port. 5336 UDP source port.
5330 5337
5331 tftpdstport - If this is set, the value is used for TFTP's UDP 5338 tftpdstport - If this is set, the value is used for TFTP's UDP
5332 destination port instead of the Well Know Port 69. 5339 destination port instead of the Well Know Port 69.
5333 5340
5334 tftpblocksize - Block size to use for TFTP transfers; if not set, 5341 tftpblocksize - Block size to use for TFTP transfers; if not set,
5335 we use the TFTP server's default block size 5342 we use the TFTP server's default block size
5336 5343
5337 tftptimeout - Retransmission timeout for TFTP packets (in milli- 5344 tftptimeout - Retransmission timeout for TFTP packets (in milli-
5338 seconds, minimum value is 1000 = 1 second). Defines 5345 seconds, minimum value is 1000 = 1 second). Defines
5339 when a packet is considered to be lost so it has to 5346 when a packet is considered to be lost so it has to
5340 be retransmitted. The default is 5000 = 5 seconds. 5347 be retransmitted. The default is 5000 = 5 seconds.
5341 Lowering this value may make downloads succeed 5348 Lowering this value may make downloads succeed
5342 faster in networks with high packet loss rates or 5349 faster in networks with high packet loss rates or
5343 with unreliable TFTP servers. 5350 with unreliable TFTP servers.
5344 5351
5345 vlan - When set to a value < 4095 the traffic over 5352 vlan - When set to a value < 4095 the traffic over
5346 Ethernet is encapsulated/received over 802.1q 5353 Ethernet is encapsulated/received over 802.1q
5347 VLAN tagged frames. 5354 VLAN tagged frames.
5348 5355
5349 The following image location variables contain the location of images 5356 The following image location variables contain the location of images
5350 used in booting. The "Image" column gives the role of the image and is 5357 used in booting. The "Image" column gives the role of the image and is
5351 not an environment variable name. The other columns are environment 5358 not an environment variable name. The other columns are environment
5352 variable names. "File Name" gives the name of the file on a TFTP 5359 variable names. "File Name" gives the name of the file on a TFTP
5353 server, "RAM Address" gives the location in RAM the image will be 5360 server, "RAM Address" gives the location in RAM the image will be
5354 loaded to, and "Flash Location" gives the image's address in NOR 5361 loaded to, and "Flash Location" gives the image's address in NOR
5355 flash or offset in NAND flash. 5362 flash or offset in NAND flash.
5356 5363
5357 *Note* - these variables don't have to be defined for all boards, some 5364 *Note* - these variables don't have to be defined for all boards, some
5358 boards currenlty use other variables for these purposes, and some 5365 boards currenlty use other variables for these purposes, and some
5359 boards use these variables for other purposes. 5366 boards use these variables for other purposes.
5360 5367
5361 Image File Name RAM Address Flash Location 5368 Image File Name RAM Address Flash Location
5362 ----- --------- ----------- -------------- 5369 ----- --------- ----------- --------------
5363 u-boot u-boot u-boot_addr_r u-boot_addr 5370 u-boot u-boot u-boot_addr_r u-boot_addr
5364 Linux kernel bootfile kernel_addr_r kernel_addr 5371 Linux kernel bootfile kernel_addr_r kernel_addr
5365 device tree blob fdtfile fdt_addr_r fdt_addr 5372 device tree blob fdtfile fdt_addr_r fdt_addr
5366 ramdisk ramdiskfile ramdisk_addr_r ramdisk_addr 5373 ramdisk ramdiskfile ramdisk_addr_r ramdisk_addr
5367 5374
5368 The following environment variables may be used and automatically 5375 The following environment variables may be used and automatically
5369 updated by the network boot commands ("bootp" and "rarpboot"), 5376 updated by the network boot commands ("bootp" and "rarpboot"),
5370 depending the information provided by your boot server: 5377 depending the information provided by your boot server:
5371 5378
5372 bootfile - see above 5379 bootfile - see above
5373 dnsip - IP address of your Domain Name Server 5380 dnsip - IP address of your Domain Name Server
5374 dnsip2 - IP address of your secondary Domain Name Server 5381 dnsip2 - IP address of your secondary Domain Name Server
5375 gatewayip - IP address of the Gateway (Router) to use 5382 gatewayip - IP address of the Gateway (Router) to use
5376 hostname - Target hostname 5383 hostname - Target hostname
5377 ipaddr - see above 5384 ipaddr - see above
5378 netmask - Subnet Mask 5385 netmask - Subnet Mask
5379 rootpath - Pathname of the root filesystem on the NFS server 5386 rootpath - Pathname of the root filesystem on the NFS server
5380 serverip - see above 5387 serverip - see above
5381 5388
5382 5389
5383 There are two special Environment Variables: 5390 There are two special Environment Variables:
5384 5391
5385 serial# - contains hardware identification information such 5392 serial# - contains hardware identification information such
5386 as type string and/or serial number 5393 as type string and/or serial number
5387 ethaddr - Ethernet address 5394 ethaddr - Ethernet address
5388 5395
5389 These variables can be set only once (usually during manufacturing of 5396 These variables can be set only once (usually during manufacturing of
5390 the board). U-Boot refuses to delete or overwrite these variables 5397 the board). U-Boot refuses to delete or overwrite these variables
5391 once they have been set once. 5398 once they have been set once.
5392 5399
5393 5400
5394 Further special Environment Variables: 5401 Further special Environment Variables:
5395 5402
5396 ver - Contains the U-Boot version string as printed 5403 ver - Contains the U-Boot version string as printed
5397 with the "version" command. This variable is 5404 with the "version" command. This variable is
5398 readonly (see CONFIG_VERSION_VARIABLE). 5405 readonly (see CONFIG_VERSION_VARIABLE).
5399 5406
5400 5407
5401 Please note that changes to some configuration parameters may take 5408 Please note that changes to some configuration parameters may take
5402 only effect after the next boot (yes, that's just like Windoze :-). 5409 only effect after the next boot (yes, that's just like Windoze :-).
5403 5410
5404 5411
5405 Callback functions for environment variables: 5412 Callback functions for environment variables:
5406 --------------------------------------------- 5413 ---------------------------------------------
5407 5414
5408 For some environment variables, the behavior of u-boot needs to change 5415 For some environment variables, the behavior of u-boot needs to change
5409 when their values are changed. This functionailty allows functions to 5416 when their values are changed. This functionailty allows functions to
5410 be associated with arbitrary variables. On creation, overwrite, or 5417 be associated with arbitrary variables. On creation, overwrite, or
5411 deletion, the callback will provide the opportunity for some side 5418 deletion, the callback will provide the opportunity for some side
5412 effect to happen or for the change to be rejected. 5419 effect to happen or for the change to be rejected.
5413 5420
5414 The callbacks are named and associated with a function using the 5421 The callbacks are named and associated with a function using the
5415 U_BOOT_ENV_CALLBACK macro in your board or driver code. 5422 U_BOOT_ENV_CALLBACK macro in your board or driver code.
5416 5423
5417 These callbacks are associated with variables in one of two ways. The 5424 These callbacks are associated with variables in one of two ways. The
5418 static list can be added to by defining CONFIG_ENV_CALLBACK_LIST_STATIC 5425 static list can be added to by defining CONFIG_ENV_CALLBACK_LIST_STATIC
5419 in the board configuration to a string that defines a list of 5426 in the board configuration to a string that defines a list of
5420 associations. The list must be in the following format: 5427 associations. The list must be in the following format:
5421 5428
5422 entry = variable_name[:callback_name] 5429 entry = variable_name[:callback_name]
5423 list = entry[,list] 5430 list = entry[,list]
5424 5431
5425 If the callback name is not specified, then the callback is deleted. 5432 If the callback name is not specified, then the callback is deleted.
5426 Spaces are also allowed anywhere in the list. 5433 Spaces are also allowed anywhere in the list.
5427 5434
5428 Callbacks can also be associated by defining the ".callbacks" variable 5435 Callbacks can also be associated by defining the ".callbacks" variable
5429 with the same list format above. Any association in ".callbacks" will 5436 with the same list format above. Any association in ".callbacks" will
5430 override any association in the static list. You can define 5437 override any association in the static list. You can define
5431 CONFIG_ENV_CALLBACK_LIST_DEFAULT to a list (string) to define the 5438 CONFIG_ENV_CALLBACK_LIST_DEFAULT to a list (string) to define the
5432 ".callbacks" envirnoment variable in the default or embedded environment. 5439 ".callbacks" envirnoment variable in the default or embedded environment.
5433 5440
5434 5441
5435 Command Line Parsing: 5442 Command Line Parsing:
5436 ===================== 5443 =====================
5437 5444
5438 There are two different command line parsers available with U-Boot: 5445 There are two different command line parsers available with U-Boot:
5439 the old "simple" one, and the much more powerful "hush" shell: 5446 the old "simple" one, and the much more powerful "hush" shell:
5440 5447
5441 Old, simple command line parser: 5448 Old, simple command line parser:
5442 -------------------------------- 5449 --------------------------------
5443 5450
5444 - supports environment variables (through setenv / saveenv commands) 5451 - supports environment variables (through setenv / saveenv commands)
5445 - several commands on one line, separated by ';' 5452 - several commands on one line, separated by ';'
5446 - variable substitution using "... ${name} ..." syntax 5453 - variable substitution using "... ${name} ..." syntax
5447 - special characters ('$', ';') can be escaped by prefixing with '\', 5454 - special characters ('$', ';') can be escaped by prefixing with '\',
5448 for example: 5455 for example:
5449 setenv bootcmd bootm \${address} 5456 setenv bootcmd bootm \${address}
5450 - You can also escape text by enclosing in single apostrophes, for example: 5457 - You can also escape text by enclosing in single apostrophes, for example:
5451 setenv addip 'setenv bootargs $bootargs ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname::off' 5458 setenv addip 'setenv bootargs $bootargs ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname::off'
5452 5459
5453 Hush shell: 5460 Hush shell:
5454 ----------- 5461 -----------
5455 5462
5456 - similar to Bourne shell, with control structures like 5463 - similar to Bourne shell, with control structures like
5457 if...then...else...fi, for...do...done; while...do...done, 5464 if...then...else...fi, for...do...done; while...do...done,
5458 until...do...done, ... 5465 until...do...done, ...
5459 - supports environment ("global") variables (through setenv / saveenv 5466 - supports environment ("global") variables (through setenv / saveenv
5460 commands) and local shell variables (through standard shell syntax 5467 commands) and local shell variables (through standard shell syntax
5461 "name=value"); only environment variables can be used with "run" 5468 "name=value"); only environment variables can be used with "run"
5462 command 5469 command
5463 5470
5464 General rules: 5471 General rules:
5465 -------------- 5472 --------------
5466 5473
5467 (1) If a command line (or an environment variable executed by a "run" 5474 (1) If a command line (or an environment variable executed by a "run"
5468 command) contains several commands separated by semicolon, and 5475 command) contains several commands separated by semicolon, and
5469 one of these commands fails, then the remaining commands will be 5476 one of these commands fails, then the remaining commands will be
5470 executed anyway. 5477 executed anyway.
5471 5478
5472 (2) If you execute several variables with one call to run (i. e. 5479 (2) If you execute several variables with one call to run (i. e.
5473 calling run with a list of variables as arguments), any failing 5480 calling run with a list of variables as arguments), any failing
5474 command will cause "run" to terminate, i. e. the remaining 5481 command will cause "run" to terminate, i. e. the remaining
5475 variables are not executed. 5482 variables are not executed.
5476 5483
5477 Note for Redundant Ethernet Interfaces: 5484 Note for Redundant Ethernet Interfaces:
5478 ======================================= 5485 =======================================
5479 5486
5480 Some boards come with redundant Ethernet interfaces; U-Boot supports 5487 Some boards come with redundant Ethernet interfaces; U-Boot supports
5481 such configurations and is capable of automatic selection of a 5488 such configurations and is capable of automatic selection of a
5482 "working" interface when needed. MAC assignment works as follows: 5489 "working" interface when needed. MAC assignment works as follows:
5483 5490
5484 Network interfaces are numbered eth0, eth1, eth2, ... Corresponding 5491 Network interfaces are numbered eth0, eth1, eth2, ... Corresponding
5485 MAC addresses can be stored in the environment as "ethaddr" (=>eth0), 5492 MAC addresses can be stored in the environment as "ethaddr" (=>eth0),
5486 "eth1addr" (=>eth1), "eth2addr", ... 5493 "eth1addr" (=>eth1), "eth2addr", ...
5487 5494
5488 If the network interface stores some valid MAC address (for instance 5495 If the network interface stores some valid MAC address (for instance
5489 in SROM), this is used as default address if there is NO correspon- 5496 in SROM), this is used as default address if there is NO correspon-
5490 ding setting in the environment; if the corresponding environment 5497 ding setting in the environment; if the corresponding environment
5491 variable is set, this overrides the settings in the card; that means: 5498 variable is set, this overrides the settings in the card; that means:
5492 5499
5493 o If the SROM has a valid MAC address, and there is no address in the 5500 o If the SROM has a valid MAC address, and there is no address in the
5494 environment, the SROM's address is used. 5501 environment, the SROM's address is used.
5495 5502
5496 o If there is no valid address in the SROM, and a definition in the 5503 o If there is no valid address in the SROM, and a definition in the
5497 environment exists, then the value from the environment variable is 5504 environment exists, then the value from the environment variable is
5498 used. 5505 used.
5499 5506
5500 o If both the SROM and the environment contain a MAC address, and 5507 o If both the SROM and the environment contain a MAC address, and
5501 both addresses are the same, this MAC address is used. 5508 both addresses are the same, this MAC address is used.
5502 5509
5503 o If both the SROM and the environment contain a MAC address, and the 5510 o If both the SROM and the environment contain a MAC address, and the
5504 addresses differ, the value from the environment is used and a 5511 addresses differ, the value from the environment is used and a
5505 warning is printed. 5512 warning is printed.
5506 5513
5507 o If neither SROM nor the environment contain a MAC address, an error 5514 o If neither SROM nor the environment contain a MAC address, an error
5508 is raised. 5515 is raised.
5509 5516
5510 If Ethernet drivers implement the 'write_hwaddr' function, valid MAC addresses 5517 If Ethernet drivers implement the 'write_hwaddr' function, valid MAC addresses
5511 will be programmed into hardware as part of the initialization process. This 5518 will be programmed into hardware as part of the initialization process. This
5512 may be skipped by setting the appropriate 'ethmacskip' environment variable. 5519 may be skipped by setting the appropriate 'ethmacskip' environment variable.
5513 The naming convention is as follows: 5520 The naming convention is as follows:
5514 "ethmacskip" (=>eth0), "eth1macskip" (=>eth1) etc. 5521 "ethmacskip" (=>eth0), "eth1macskip" (=>eth1) etc.
5515 5522
5516 Image Formats: 5523 Image Formats:
5517 ============== 5524 ==============
5518 5525
5519 U-Boot is capable of booting (and performing other auxiliary operations on) 5526 U-Boot is capable of booting (and performing other auxiliary operations on)
5520 images in two formats: 5527 images in two formats:
5521 5528
5522 New uImage format (FIT) 5529 New uImage format (FIT)
5523 ----------------------- 5530 -----------------------
5524 5531
5525 Flexible and powerful format based on Flattened Image Tree -- FIT (similar 5532 Flexible and powerful format based on Flattened Image Tree -- FIT (similar
5526 to Flattened Device Tree). It allows the use of images with multiple 5533 to Flattened Device Tree). It allows the use of images with multiple
5527 components (several kernels, ramdisks, etc.), with contents protected by 5534 components (several kernels, ramdisks, etc.), with contents protected by
5528 SHA1, MD5 or CRC32. More details are found in the doc/uImage.FIT directory. 5535 SHA1, MD5 or CRC32. More details are found in the doc/uImage.FIT directory.
5529 5536
5530 5537
5531 Old uImage format 5538 Old uImage format
5532 ----------------- 5539 -----------------
5533 5540
5534 Old image format is based on binary files which can be basically anything, 5541 Old image format is based on binary files which can be basically anything,
5535 preceded by a special header; see the definitions in include/image.h for 5542 preceded by a special header; see the definitions in include/image.h for
5536 details; basically, the header defines the following image properties: 5543 details; basically, the header defines the following image properties:
5537 5544
5538 * Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD, 5545 * Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD,
5539 4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, 5546 4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,
5540 LynxOS, pSOS, QNX, RTEMS, INTEGRITY; 5547 LynxOS, pSOS, QNX, RTEMS, INTEGRITY;
5541 Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, LynxOS, 5548 Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, LynxOS,
5542 INTEGRITY). 5549 INTEGRITY).
5543 * Target CPU Architecture (Provisions for Alpha, ARM, AVR32, Intel x86, 5550 * Target CPU Architecture (Provisions for Alpha, ARM, AVR32, Intel x86,
5544 IA64, MIPS, NDS32, Nios II, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit; 5551 IA64, MIPS, NDS32, Nios II, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;
5545 Currently supported: ARM, AVR32, Intel x86, MIPS, NDS32, Nios II, PowerPC). 5552 Currently supported: ARM, AVR32, Intel x86, MIPS, NDS32, Nios II, PowerPC).
5546 * Compression Type (uncompressed, gzip, bzip2) 5553 * Compression Type (uncompressed, gzip, bzip2)
5547 * Load Address 5554 * Load Address
5548 * Entry Point 5555 * Entry Point
5549 * Image Name 5556 * Image Name
5550 * Image Timestamp 5557 * Image Timestamp
5551 5558
5552 The header is marked by a special Magic Number, and both the header 5559 The header is marked by a special Magic Number, and both the header
5553 and the data portions of the image are secured against corruption by 5560 and the data portions of the image are secured against corruption by
5554 CRC32 checksums. 5561 CRC32 checksums.
5555 5562
5556 5563
5557 Linux Support: 5564 Linux Support:
5558 ============== 5565 ==============
5559 5566
5560 Although U-Boot should support any OS or standalone application 5567 Although U-Boot should support any OS or standalone application
5561 easily, the main focus has always been on Linux during the design of 5568 easily, the main focus has always been on Linux during the design of
5562 U-Boot. 5569 U-Boot.
5563 5570
5564 U-Boot includes many features that so far have been part of some 5571 U-Boot includes many features that so far have been part of some
5565 special "boot loader" code within the Linux kernel. Also, any 5572 special "boot loader" code within the Linux kernel. Also, any
5566 "initrd" images to be used are no longer part of one big Linux image; 5573 "initrd" images to be used are no longer part of one big Linux image;
5567 instead, kernel and "initrd" are separate images. This implementation 5574 instead, kernel and "initrd" are separate images. This implementation
5568 serves several purposes: 5575 serves several purposes:
5569 5576
5570 - the same features can be used for other OS or standalone 5577 - the same features can be used for other OS or standalone
5571 applications (for instance: using compressed images to reduce the 5578 applications (for instance: using compressed images to reduce the
5572 Flash memory footprint) 5579 Flash memory footprint)
5573 5580
5574 - it becomes much easier to port new Linux kernel versions because 5581 - it becomes much easier to port new Linux kernel versions because
5575 lots of low-level, hardware dependent stuff are done by U-Boot 5582 lots of low-level, hardware dependent stuff are done by U-Boot
5576 5583
5577 - the same Linux kernel image can now be used with different "initrd" 5584 - the same Linux kernel image can now be used with different "initrd"
5578 images; of course this also means that different kernel images can 5585 images; of course this also means that different kernel images can
5579 be run with the same "initrd". This makes testing easier (you don't 5586 be run with the same "initrd". This makes testing easier (you don't
5580 have to build a new "zImage.initrd" Linux image when you just 5587 have to build a new "zImage.initrd" Linux image when you just
5581 change a file in your "initrd"). Also, a field-upgrade of the 5588 change a file in your "initrd"). Also, a field-upgrade of the
5582 software is easier now. 5589 software is easier now.
5583 5590
5584 5591
5585 Linux HOWTO: 5592 Linux HOWTO:
5586 ============ 5593 ============
5587 5594
5588 Porting Linux to U-Boot based systems: 5595 Porting Linux to U-Boot based systems:
5589 --------------------------------------- 5596 ---------------------------------------
5590 5597
5591 U-Boot cannot save you from doing all the necessary modifications to 5598 U-Boot cannot save you from doing all the necessary modifications to
5592 configure the Linux device drivers for use with your target hardware 5599 configure the Linux device drivers for use with your target hardware
5593 (no, we don't intend to provide a full virtual machine interface to 5600 (no, we don't intend to provide a full virtual machine interface to
5594 Linux :-). 5601 Linux :-).
5595 5602
5596 But now you can ignore ALL boot loader code (in arch/powerpc/mbxboot). 5603 But now you can ignore ALL boot loader code (in arch/powerpc/mbxboot).
5597 5604
5598 Just make sure your machine specific header file (for instance 5605 Just make sure your machine specific header file (for instance
5599 include/asm-ppc/tqm8xx.h) includes the same definition of the Board 5606 include/asm-ppc/tqm8xx.h) includes the same definition of the Board
5600 Information structure as we define in include/asm-<arch>/u-boot.h, 5607 Information structure as we define in include/asm-<arch>/u-boot.h,
5601 and make sure that your definition of IMAP_ADDR uses the same value 5608 and make sure that your definition of IMAP_ADDR uses the same value
5602 as your U-Boot configuration in CONFIG_SYS_IMMR. 5609 as your U-Boot configuration in CONFIG_SYS_IMMR.
5603 5610
5604 Note that U-Boot now has a driver model, a unified model for drivers. 5611 Note that U-Boot now has a driver model, a unified model for drivers.
5605 If you are adding a new driver, plumb it into driver model. If there 5612 If you are adding a new driver, plumb it into driver model. If there
5606 is no uclass available, you are encouraged to create one. See 5613 is no uclass available, you are encouraged to create one. See
5607 doc/driver-model. 5614 doc/driver-model.
5608 5615
5609 5616
5610 Configuring the Linux kernel: 5617 Configuring the Linux kernel:
5611 ----------------------------- 5618 -----------------------------
5612 5619
5613 No specific requirements for U-Boot. Make sure you have some root 5620 No specific requirements for U-Boot. Make sure you have some root
5614 device (initial ramdisk, NFS) for your target system. 5621 device (initial ramdisk, NFS) for your target system.
5615 5622
5616 5623
5617 Building a Linux Image: 5624 Building a Linux Image:
5618 ----------------------- 5625 -----------------------
5619 5626
5620 With U-Boot, "normal" build targets like "zImage" or "bzImage" are 5627 With U-Boot, "normal" build targets like "zImage" or "bzImage" are
5621 not used. If you use recent kernel source, a new build target 5628 not used. If you use recent kernel source, a new build target
5622 "uImage" will exist which automatically builds an image usable by 5629 "uImage" will exist which automatically builds an image usable by
5623 U-Boot. Most older kernels also have support for a "pImage" target, 5630 U-Boot. Most older kernels also have support for a "pImage" target,
5624 which was introduced for our predecessor project PPCBoot and uses a 5631 which was introduced for our predecessor project PPCBoot and uses a
5625 100% compatible format. 5632 100% compatible format.
5626 5633
5627 Example: 5634 Example:
5628 5635
5629 make TQM850L_defconfig 5636 make TQM850L_defconfig
5630 make oldconfig 5637 make oldconfig
5631 make dep 5638 make dep
5632 make uImage 5639 make uImage
5633 5640
5634 The "uImage" build target uses a special tool (in 'tools/mkimage') to 5641 The "uImage" build target uses a special tool (in 'tools/mkimage') to
5635 encapsulate a compressed Linux kernel image with header information, 5642 encapsulate a compressed Linux kernel image with header information,
5636 CRC32 checksum etc. for use with U-Boot. This is what we are doing: 5643 CRC32 checksum etc. for use with U-Boot. This is what we are doing:
5637 5644
5638 * build a standard "vmlinux" kernel image (in ELF binary format): 5645 * build a standard "vmlinux" kernel image (in ELF binary format):
5639 5646
5640 * convert the kernel into a raw binary image: 5647 * convert the kernel into a raw binary image:
5641 5648
5642 ${CROSS_COMPILE}-objcopy -O binary \ 5649 ${CROSS_COMPILE}-objcopy -O binary \
5643 -R .note -R .comment \ 5650 -R .note -R .comment \
5644 -S vmlinux linux.bin 5651 -S vmlinux linux.bin
5645 5652
5646 * compress the binary image: 5653 * compress the binary image:
5647 5654
5648 gzip -9 linux.bin 5655 gzip -9 linux.bin
5649 5656
5650 * package compressed binary image for U-Boot: 5657 * package compressed binary image for U-Boot:
5651 5658
5652 mkimage -A ppc -O linux -T kernel -C gzip \ 5659 mkimage -A ppc -O linux -T kernel -C gzip \
5653 -a 0 -e 0 -n "Linux Kernel Image" \ 5660 -a 0 -e 0 -n "Linux Kernel Image" \
5654 -d linux.bin.gz uImage 5661 -d linux.bin.gz uImage
5655 5662
5656 5663
5657 The "mkimage" tool can also be used to create ramdisk images for use 5664 The "mkimage" tool can also be used to create ramdisk images for use
5658 with U-Boot, either separated from the Linux kernel image, or 5665 with U-Boot, either separated from the Linux kernel image, or
5659 combined into one file. "mkimage" encapsulates the images with a 64 5666 combined into one file. "mkimage" encapsulates the images with a 64
5660 byte header containing information about target architecture, 5667 byte header containing information about target architecture,
5661 operating system, image type, compression method, entry points, time 5668 operating system, image type, compression method, entry points, time
5662 stamp, CRC32 checksums, etc. 5669 stamp, CRC32 checksums, etc.
5663 5670
5664 "mkimage" can be called in two ways: to verify existing images and 5671 "mkimage" can be called in two ways: to verify existing images and
5665 print the header information, or to build new images. 5672 print the header information, or to build new images.
5666 5673
5667 In the first form (with "-l" option) mkimage lists the information 5674 In the first form (with "-l" option) mkimage lists the information
5668 contained in the header of an existing U-Boot image; this includes 5675 contained in the header of an existing U-Boot image; this includes
5669 checksum verification: 5676 checksum verification:
5670 5677
5671 tools/mkimage -l image 5678 tools/mkimage -l image
5672 -l ==> list image header information 5679 -l ==> list image header information
5673 5680
5674 The second form (with "-d" option) is used to build a U-Boot image 5681 The second form (with "-d" option) is used to build a U-Boot image
5675 from a "data file" which is used as image payload: 5682 from a "data file" which is used as image payload:
5676 5683
5677 tools/mkimage -A arch -O os -T type -C comp -a addr -e ep \ 5684 tools/mkimage -A arch -O os -T type -C comp -a addr -e ep \
5678 -n name -d data_file image 5685 -n name -d data_file image
5679 -A ==> set architecture to 'arch' 5686 -A ==> set architecture to 'arch'
5680 -O ==> set operating system to 'os' 5687 -O ==> set operating system to 'os'
5681 -T ==> set image type to 'type' 5688 -T ==> set image type to 'type'
5682 -C ==> set compression type 'comp' 5689 -C ==> set compression type 'comp'
5683 -a ==> set load address to 'addr' (hex) 5690 -a ==> set load address to 'addr' (hex)
5684 -e ==> set entry point to 'ep' (hex) 5691 -e ==> set entry point to 'ep' (hex)
5685 -n ==> set image name to 'name' 5692 -n ==> set image name to 'name'
5686 -d ==> use image data from 'datafile' 5693 -d ==> use image data from 'datafile'
5687 5694
5688 Right now, all Linux kernels for PowerPC systems use the same load 5695 Right now, all Linux kernels for PowerPC systems use the same load
5689 address (0x00000000), but the entry point address depends on the 5696 address (0x00000000), but the entry point address depends on the
5690 kernel version: 5697 kernel version:
5691 5698
5692 - 2.2.x kernels have the entry point at 0x0000000C, 5699 - 2.2.x kernels have the entry point at 0x0000000C,
5693 - 2.3.x and later kernels have the entry point at 0x00000000. 5700 - 2.3.x and later kernels have the entry point at 0x00000000.
5694 5701
5695 So a typical call to build a U-Boot image would read: 5702 So a typical call to build a U-Boot image would read:
5696 5703
5697 -> tools/mkimage -n '2.4.4 kernel for TQM850L' \ 5704 -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
5698 > -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \ 5705 > -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \
5699 > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz \ 5706 > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz \
5700 > examples/uImage.TQM850L 5707 > examples/uImage.TQM850L
5701 Image Name: 2.4.4 kernel for TQM850L 5708 Image Name: 2.4.4 kernel for TQM850L
5702 Created: Wed Jul 19 02:34:59 2000 5709 Created: Wed Jul 19 02:34:59 2000
5703 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5710 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5704 Data Size: 335725 Bytes = 327.86 kB = 0.32 MB 5711 Data Size: 335725 Bytes = 327.86 kB = 0.32 MB
5705 Load Address: 0x00000000 5712 Load Address: 0x00000000
5706 Entry Point: 0x00000000 5713 Entry Point: 0x00000000
5707 5714
5708 To verify the contents of the image (or check for corruption): 5715 To verify the contents of the image (or check for corruption):
5709 5716
5710 -> tools/mkimage -l examples/uImage.TQM850L 5717 -> tools/mkimage -l examples/uImage.TQM850L
5711 Image Name: 2.4.4 kernel for TQM850L 5718 Image Name: 2.4.4 kernel for TQM850L
5712 Created: Wed Jul 19 02:34:59 2000 5719 Created: Wed Jul 19 02:34:59 2000
5713 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5720 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5714 Data Size: 335725 Bytes = 327.86 kB = 0.32 MB 5721 Data Size: 335725 Bytes = 327.86 kB = 0.32 MB
5715 Load Address: 0x00000000 5722 Load Address: 0x00000000
5716 Entry Point: 0x00000000 5723 Entry Point: 0x00000000
5717 5724
5718 NOTE: for embedded systems where boot time is critical you can trade 5725 NOTE: for embedded systems where boot time is critical you can trade
5719 speed for memory and install an UNCOMPRESSED image instead: this 5726 speed for memory and install an UNCOMPRESSED image instead: this
5720 needs more space in Flash, but boots much faster since it does not 5727 needs more space in Flash, but boots much faster since it does not
5721 need to be uncompressed: 5728 need to be uncompressed:
5722 5729
5723 -> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz 5730 -> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz
5724 -> tools/mkimage -n '2.4.4 kernel for TQM850L' \ 5731 -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
5725 > -A ppc -O linux -T kernel -C none -a 0 -e 0 \ 5732 > -A ppc -O linux -T kernel -C none -a 0 -e 0 \
5726 > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux \ 5733 > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux \
5727 > examples/uImage.TQM850L-uncompressed 5734 > examples/uImage.TQM850L-uncompressed
5728 Image Name: 2.4.4 kernel for TQM850L 5735 Image Name: 2.4.4 kernel for TQM850L
5729 Created: Wed Jul 19 02:34:59 2000 5736 Created: Wed Jul 19 02:34:59 2000
5730 Image Type: PowerPC Linux Kernel Image (uncompressed) 5737 Image Type: PowerPC Linux Kernel Image (uncompressed)
5731 Data Size: 792160 Bytes = 773.59 kB = 0.76 MB 5738 Data Size: 792160 Bytes = 773.59 kB = 0.76 MB
5732 Load Address: 0x00000000 5739 Load Address: 0x00000000
5733 Entry Point: 0x00000000 5740 Entry Point: 0x00000000
5734 5741
5735 5742
5736 Similar you can build U-Boot images from a 'ramdisk.image.gz' file 5743 Similar you can build U-Boot images from a 'ramdisk.image.gz' file
5737 when your kernel is intended to use an initial ramdisk: 5744 when your kernel is intended to use an initial ramdisk:
5738 5745
5739 -> tools/mkimage -n 'Simple Ramdisk Image' \ 5746 -> tools/mkimage -n 'Simple Ramdisk Image' \
5740 > -A ppc -O linux -T ramdisk -C gzip \ 5747 > -A ppc -O linux -T ramdisk -C gzip \
5741 > -d /LinuxPPC/images/SIMPLE-ramdisk.image.gz examples/simple-initrd 5748 > -d /LinuxPPC/images/SIMPLE-ramdisk.image.gz examples/simple-initrd
5742 Image Name: Simple Ramdisk Image 5749 Image Name: Simple Ramdisk Image
5743 Created: Wed Jan 12 14:01:50 2000 5750 Created: Wed Jan 12 14:01:50 2000
5744 Image Type: PowerPC Linux RAMDisk Image (gzip compressed) 5751 Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
5745 Data Size: 566530 Bytes = 553.25 kB = 0.54 MB 5752 Data Size: 566530 Bytes = 553.25 kB = 0.54 MB
5746 Load Address: 0x00000000 5753 Load Address: 0x00000000
5747 Entry Point: 0x00000000 5754 Entry Point: 0x00000000
5748 5755
5749 The "dumpimage" is a tool to disassemble images built by mkimage. Its "-i" 5756 The "dumpimage" is a tool to disassemble images built by mkimage. Its "-i"
5750 option performs the converse operation of the mkimage's second form (the "-d" 5757 option performs the converse operation of the mkimage's second form (the "-d"
5751 option). Given an image built by mkimage, the dumpimage extracts a "data file" 5758 option). Given an image built by mkimage, the dumpimage extracts a "data file"
5752 from the image: 5759 from the image:
5753 5760
5754 tools/dumpimage -i image -p position data_file 5761 tools/dumpimage -i image -p position data_file
5755 -i ==> extract from the 'image' a specific 'data_file', \ 5762 -i ==> extract from the 'image' a specific 'data_file', \
5756 indexed by 'position' 5763 indexed by 'position'
5757 5764
5758 5765
5759 Installing a Linux Image: 5766 Installing a Linux Image:
5760 ------------------------- 5767 -------------------------
5761 5768
5762 To downloading a U-Boot image over the serial (console) interface, 5769 To downloading a U-Boot image over the serial (console) interface,
5763 you must convert the image to S-Record format: 5770 you must convert the image to S-Record format:
5764 5771
5765 objcopy -I binary -O srec examples/image examples/image.srec 5772 objcopy -I binary -O srec examples/image examples/image.srec
5766 5773
5767 The 'objcopy' does not understand the information in the U-Boot 5774 The 'objcopy' does not understand the information in the U-Boot
5768 image header, so the resulting S-Record file will be relative to 5775 image header, so the resulting S-Record file will be relative to
5769 address 0x00000000. To load it to a given address, you need to 5776 address 0x00000000. To load it to a given address, you need to
5770 specify the target address as 'offset' parameter with the 'loads' 5777 specify the target address as 'offset' parameter with the 'loads'
5771 command. 5778 command.
5772 5779
5773 Example: install the image to address 0x40100000 (which on the 5780 Example: install the image to address 0x40100000 (which on the
5774 TQM8xxL is in the first Flash bank): 5781 TQM8xxL is in the first Flash bank):
5775 5782
5776 => erase 40100000 401FFFFF 5783 => erase 40100000 401FFFFF
5777 5784
5778 .......... done 5785 .......... done
5779 Erased 8 sectors 5786 Erased 8 sectors
5780 5787
5781 => loads 40100000 5788 => loads 40100000
5782 ## Ready for S-Record download ... 5789 ## Ready for S-Record download ...
5783 ~>examples/image.srec 5790 ~>examples/image.srec
5784 1 2 3 4 5 6 7 8 9 10 11 12 13 ... 5791 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
5785 ... 5792 ...
5786 15989 15990 15991 15992 5793 15989 15990 15991 15992
5787 [file transfer complete] 5794 [file transfer complete]
5788 [connected] 5795 [connected]
5789 ## Start Addr = 0x00000000 5796 ## Start Addr = 0x00000000
5790 5797
5791 5798
5792 You can check the success of the download using the 'iminfo' command; 5799 You can check the success of the download using the 'iminfo' command;
5793 this includes a checksum verification so you can be sure no data 5800 this includes a checksum verification so you can be sure no data
5794 corruption happened: 5801 corruption happened:
5795 5802
5796 => imi 40100000 5803 => imi 40100000
5797 5804
5798 ## Checking Image at 40100000 ... 5805 ## Checking Image at 40100000 ...
5799 Image Name: 2.2.13 for initrd on TQM850L 5806 Image Name: 2.2.13 for initrd on TQM850L
5800 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5807 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5801 Data Size: 335725 Bytes = 327 kB = 0 MB 5808 Data Size: 335725 Bytes = 327 kB = 0 MB
5802 Load Address: 00000000 5809 Load Address: 00000000
5803 Entry Point: 0000000c 5810 Entry Point: 0000000c
5804 Verifying Checksum ... OK 5811 Verifying Checksum ... OK
5805 5812
5806 5813
5807 Boot Linux: 5814 Boot Linux:
5808 ----------- 5815 -----------
5809 5816
5810 The "bootm" command is used to boot an application that is stored in 5817 The "bootm" command is used to boot an application that is stored in
5811 memory (RAM or Flash). In case of a Linux kernel image, the contents 5818 memory (RAM or Flash). In case of a Linux kernel image, the contents
5812 of the "bootargs" environment variable is passed to the kernel as 5819 of the "bootargs" environment variable is passed to the kernel as
5813 parameters. You can check and modify this variable using the 5820 parameters. You can check and modify this variable using the
5814 "printenv" and "setenv" commands: 5821 "printenv" and "setenv" commands:
5815 5822
5816 5823
5817 => printenv bootargs 5824 => printenv bootargs
5818 bootargs=root=/dev/ram 5825 bootargs=root=/dev/ram
5819 5826
5820 => setenv bootargs root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2 5827 => setenv bootargs root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
5821 5828
5822 => printenv bootargs 5829 => printenv bootargs
5823 bootargs=root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2 5830 bootargs=root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
5824 5831
5825 => bootm 40020000 5832 => bootm 40020000
5826 ## Booting Linux kernel at 40020000 ... 5833 ## Booting Linux kernel at 40020000 ...
5827 Image Name: 2.2.13 for NFS on TQM850L 5834 Image Name: 2.2.13 for NFS on TQM850L
5828 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5835 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5829 Data Size: 381681 Bytes = 372 kB = 0 MB 5836 Data Size: 381681 Bytes = 372 kB = 0 MB
5830 Load Address: 00000000 5837 Load Address: 00000000
5831 Entry Point: 0000000c 5838 Entry Point: 0000000c
5832 Verifying Checksum ... OK 5839 Verifying Checksum ... OK
5833 Uncompressing Kernel Image ... OK 5840 Uncompressing Kernel Image ... OK
5834 Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:35:17 MEST 2000 5841 Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:35:17 MEST 2000
5835 Boot arguments: root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2 5842 Boot arguments: root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
5836 time_init: decrementer frequency = 187500000/60 5843 time_init: decrementer frequency = 187500000/60
5837 Calibrating delay loop... 49.77 BogoMIPS 5844 Calibrating delay loop... 49.77 BogoMIPS
5838 Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000] 5845 Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]
5839 ... 5846 ...
5840 5847
5841 If you want to boot a Linux kernel with initial RAM disk, you pass 5848 If you want to boot a Linux kernel with initial RAM disk, you pass
5842 the memory addresses of both the kernel and the initrd image (PPBCOOT 5849 the memory addresses of both the kernel and the initrd image (PPBCOOT
5843 format!) to the "bootm" command: 5850 format!) to the "bootm" command:
5844 5851
5845 => imi 40100000 40200000 5852 => imi 40100000 40200000
5846 5853
5847 ## Checking Image at 40100000 ... 5854 ## Checking Image at 40100000 ...
5848 Image Name: 2.2.13 for initrd on TQM850L 5855 Image Name: 2.2.13 for initrd on TQM850L
5849 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5856 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5850 Data Size: 335725 Bytes = 327 kB = 0 MB 5857 Data Size: 335725 Bytes = 327 kB = 0 MB
5851 Load Address: 00000000 5858 Load Address: 00000000
5852 Entry Point: 0000000c 5859 Entry Point: 0000000c
5853 Verifying Checksum ... OK 5860 Verifying Checksum ... OK
5854 5861
5855 ## Checking Image at 40200000 ... 5862 ## Checking Image at 40200000 ...
5856 Image Name: Simple Ramdisk Image 5863 Image Name: Simple Ramdisk Image
5857 Image Type: PowerPC Linux RAMDisk Image (gzip compressed) 5864 Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
5858 Data Size: 566530 Bytes = 553 kB = 0 MB 5865 Data Size: 566530 Bytes = 553 kB = 0 MB
5859 Load Address: 00000000 5866 Load Address: 00000000
5860 Entry Point: 00000000 5867 Entry Point: 00000000
5861 Verifying Checksum ... OK 5868 Verifying Checksum ... OK
5862 5869
5863 => bootm 40100000 40200000 5870 => bootm 40100000 40200000
5864 ## Booting Linux kernel at 40100000 ... 5871 ## Booting Linux kernel at 40100000 ...
5865 Image Name: 2.2.13 for initrd on TQM850L 5872 Image Name: 2.2.13 for initrd on TQM850L
5866 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5873 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5867 Data Size: 335725 Bytes = 327 kB = 0 MB 5874 Data Size: 335725 Bytes = 327 kB = 0 MB
5868 Load Address: 00000000 5875 Load Address: 00000000
5869 Entry Point: 0000000c 5876 Entry Point: 0000000c
5870 Verifying Checksum ... OK 5877 Verifying Checksum ... OK
5871 Uncompressing Kernel Image ... OK 5878 Uncompressing Kernel Image ... OK
5872 ## Loading RAMDisk Image at 40200000 ... 5879 ## Loading RAMDisk Image at 40200000 ...
5873 Image Name: Simple Ramdisk Image 5880 Image Name: Simple Ramdisk Image
5874 Image Type: PowerPC Linux RAMDisk Image (gzip compressed) 5881 Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
5875 Data Size: 566530 Bytes = 553 kB = 0 MB 5882 Data Size: 566530 Bytes = 553 kB = 0 MB
5876 Load Address: 00000000 5883 Load Address: 00000000
5877 Entry Point: 00000000 5884 Entry Point: 00000000
5878 Verifying Checksum ... OK 5885 Verifying Checksum ... OK
5879 Loading Ramdisk ... OK 5886 Loading Ramdisk ... OK
5880 Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:32:08 MEST 2000 5887 Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:32:08 MEST 2000
5881 Boot arguments: root=/dev/ram 5888 Boot arguments: root=/dev/ram
5882 time_init: decrementer frequency = 187500000/60 5889 time_init: decrementer frequency = 187500000/60
5883 Calibrating delay loop... 49.77 BogoMIPS 5890 Calibrating delay loop... 49.77 BogoMIPS
5884 ... 5891 ...
5885 RAMDISK: Compressed image found at block 0 5892 RAMDISK: Compressed image found at block 0
5886 VFS: Mounted root (ext2 filesystem). 5893 VFS: Mounted root (ext2 filesystem).
5887 5894
5888 bash# 5895 bash#
5889 5896
5890 Boot Linux and pass a flat device tree: 5897 Boot Linux and pass a flat device tree:
5891 ----------- 5898 -----------
5892 5899
5893 First, U-Boot must be compiled with the appropriate defines. See the section 5900 First, U-Boot must be compiled with the appropriate defines. See the section
5894 titled "Linux Kernel Interface" above for a more in depth explanation. The 5901 titled "Linux Kernel Interface" above for a more in depth explanation. The
5895 following is an example of how to start a kernel and pass an updated 5902 following is an example of how to start a kernel and pass an updated
5896 flat device tree: 5903 flat device tree:
5897 5904
5898 => print oftaddr 5905 => print oftaddr
5899 oftaddr=0x300000 5906 oftaddr=0x300000
5900 => print oft 5907 => print oft
5901 oft=oftrees/mpc8540ads.dtb 5908 oft=oftrees/mpc8540ads.dtb
5902 => tftp $oftaddr $oft 5909 => tftp $oftaddr $oft
5903 Speed: 1000, full duplex 5910 Speed: 1000, full duplex
5904 Using TSEC0 device 5911 Using TSEC0 device
5905 TFTP from server 192.168.1.1; our IP address is 192.168.1.101 5912 TFTP from server 192.168.1.1; our IP address is 192.168.1.101
5906 Filename 'oftrees/mpc8540ads.dtb'. 5913 Filename 'oftrees/mpc8540ads.dtb'.
5907 Load address: 0x300000 5914 Load address: 0x300000
5908 Loading: # 5915 Loading: #
5909 done 5916 done
5910 Bytes transferred = 4106 (100a hex) 5917 Bytes transferred = 4106 (100a hex)
5911 => tftp $loadaddr $bootfile 5918 => tftp $loadaddr $bootfile
5912 Speed: 1000, full duplex 5919 Speed: 1000, full duplex
5913 Using TSEC0 device 5920 Using TSEC0 device
5914 TFTP from server 192.168.1.1; our IP address is 192.168.1.2 5921 TFTP from server 192.168.1.1; our IP address is 192.168.1.2
5915 Filename 'uImage'. 5922 Filename 'uImage'.
5916 Load address: 0x200000 5923 Load address: 0x200000
5917 Loading:############ 5924 Loading:############
5918 done 5925 done
5919 Bytes transferred = 1029407 (fb51f hex) 5926 Bytes transferred = 1029407 (fb51f hex)
5920 => print loadaddr 5927 => print loadaddr
5921 loadaddr=200000 5928 loadaddr=200000
5922 => print oftaddr 5929 => print oftaddr
5923 oftaddr=0x300000 5930 oftaddr=0x300000
5924 => bootm $loadaddr - $oftaddr 5931 => bootm $loadaddr - $oftaddr
5925 ## Booting image at 00200000 ... 5932 ## Booting image at 00200000 ...
5926 Image Name: Linux-2.6.17-dirty 5933 Image Name: Linux-2.6.17-dirty
5927 Image Type: PowerPC Linux Kernel Image (gzip compressed) 5934 Image Type: PowerPC Linux Kernel Image (gzip compressed)
5928 Data Size: 1029343 Bytes = 1005.2 kB 5935 Data Size: 1029343 Bytes = 1005.2 kB
5929 Load Address: 00000000 5936 Load Address: 00000000
5930 Entry Point: 00000000 5937 Entry Point: 00000000
5931 Verifying Checksum ... OK 5938 Verifying Checksum ... OK
5932 Uncompressing Kernel Image ... OK 5939 Uncompressing Kernel Image ... OK
5933 Booting using flat device tree at 0x300000 5940 Booting using flat device tree at 0x300000
5934 Using MPC85xx ADS machine description 5941 Using MPC85xx ADS machine description
5935 Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb 5942 Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
5936 [snip] 5943 [snip]
5937 5944
5938 5945
5939 More About U-Boot Image Types: 5946 More About U-Boot Image Types:
5940 ------------------------------ 5947 ------------------------------
5941 5948
5942 U-Boot supports the following image types: 5949 U-Boot supports the following image types:
5943 5950
5944 "Standalone Programs" are directly runnable in the environment 5951 "Standalone Programs" are directly runnable in the environment
5945 provided by U-Boot; it is expected that (if they behave 5952 provided by U-Boot; it is expected that (if they behave
5946 well) you can continue to work in U-Boot after return from 5953 well) you can continue to work in U-Boot after return from
5947 the Standalone Program. 5954 the Standalone Program.
5948 "OS Kernel Images" are usually images of some Embedded OS which 5955 "OS Kernel Images" are usually images of some Embedded OS which
5949 will take over control completely. Usually these programs 5956 will take over control completely. Usually these programs
5950 will install their own set of exception handlers, device 5957 will install their own set of exception handlers, device
5951 drivers, set up the MMU, etc. - this means, that you cannot 5958 drivers, set up the MMU, etc. - this means, that you cannot
5952 expect to re-enter U-Boot except by resetting the CPU. 5959 expect to re-enter U-Boot except by resetting the CPU.
5953 "RAMDisk Images" are more or less just data blocks, and their 5960 "RAMDisk Images" are more or less just data blocks, and their
5954 parameters (address, size) are passed to an OS kernel that is 5961 parameters (address, size) are passed to an OS kernel that is
5955 being started. 5962 being started.
5956 "Multi-File Images" contain several images, typically an OS 5963 "Multi-File Images" contain several images, typically an OS
5957 (Linux) kernel image and one or more data images like 5964 (Linux) kernel image and one or more data images like
5958 RAMDisks. This construct is useful for instance when you want 5965 RAMDisks. This construct is useful for instance when you want
5959 to boot over the network using BOOTP etc., where the boot 5966 to boot over the network using BOOTP etc., where the boot
5960 server provides just a single image file, but you want to get 5967 server provides just a single image file, but you want to get
5961 for instance an OS kernel and a RAMDisk image. 5968 for instance an OS kernel and a RAMDisk image.
5962 5969
5963 "Multi-File Images" start with a list of image sizes, each 5970 "Multi-File Images" start with a list of image sizes, each
5964 image size (in bytes) specified by an "uint32_t" in network 5971 image size (in bytes) specified by an "uint32_t" in network
5965 byte order. This list is terminated by an "(uint32_t)0". 5972 byte order. This list is terminated by an "(uint32_t)0".
5966 Immediately after the terminating 0 follow the images, one by 5973 Immediately after the terminating 0 follow the images, one by
5967 one, all aligned on "uint32_t" boundaries (size rounded up to 5974 one, all aligned on "uint32_t" boundaries (size rounded up to
5968 a multiple of 4 bytes). 5975 a multiple of 4 bytes).
5969 5976
5970 "Firmware Images" are binary images containing firmware (like 5977 "Firmware Images" are binary images containing firmware (like
5971 U-Boot or FPGA images) which usually will be programmed to 5978 U-Boot or FPGA images) which usually will be programmed to
5972 flash memory. 5979 flash memory.
5973 5980
5974 "Script files" are command sequences that will be executed by 5981 "Script files" are command sequences that will be executed by
5975 U-Boot's command interpreter; this feature is especially 5982 U-Boot's command interpreter; this feature is especially
5976 useful when you configure U-Boot to use a real shell (hush) 5983 useful when you configure U-Boot to use a real shell (hush)
5977 as command interpreter. 5984 as command interpreter.
5978 5985
5979 Booting the Linux zImage: 5986 Booting the Linux zImage:
5980 ------------------------- 5987 -------------------------
5981 5988
5982 On some platforms, it's possible to boot Linux zImage. This is done 5989 On some platforms, it's possible to boot Linux zImage. This is done
5983 using the "bootz" command. The syntax of "bootz" command is the same 5990 using the "bootz" command. The syntax of "bootz" command is the same
5984 as the syntax of "bootm" command. 5991 as the syntax of "bootm" command.
5985 5992
5986 Note, defining the CONFIG_SUPPORT_RAW_INITRD allows user to supply 5993 Note, defining the CONFIG_SUPPORT_RAW_INITRD allows user to supply
5987 kernel with raw initrd images. The syntax is slightly different, the 5994 kernel with raw initrd images. The syntax is slightly different, the
5988 address of the initrd must be augmented by it's size, in the following 5995 address of the initrd must be augmented by it's size, in the following
5989 format: "<initrd addres>:<initrd size>". 5996 format: "<initrd addres>:<initrd size>".
5990 5997
5991 5998
5992 Standalone HOWTO: 5999 Standalone HOWTO:
5993 ================= 6000 =================
5994 6001
5995 One of the features of U-Boot is that you can dynamically load and 6002 One of the features of U-Boot is that you can dynamically load and
5996 run "standalone" applications, which can use some resources of 6003 run "standalone" applications, which can use some resources of
5997 U-Boot like console I/O functions or interrupt services. 6004 U-Boot like console I/O functions or interrupt services.
5998 6005
5999 Two simple examples are included with the sources: 6006 Two simple examples are included with the sources:
6000 6007
6001 "Hello World" Demo: 6008 "Hello World" Demo:
6002 ------------------- 6009 -------------------
6003 6010
6004 'examples/hello_world.c' contains a small "Hello World" Demo 6011 'examples/hello_world.c' contains a small "Hello World" Demo
6005 application; it is automatically compiled when you build U-Boot. 6012 application; it is automatically compiled when you build U-Boot.
6006 It's configured to run at address 0x00040004, so you can play with it 6013 It's configured to run at address 0x00040004, so you can play with it
6007 like that: 6014 like that:
6008 6015
6009 => loads 6016 => loads
6010 ## Ready for S-Record download ... 6017 ## Ready for S-Record download ...
6011 ~>examples/hello_world.srec 6018 ~>examples/hello_world.srec
6012 1 2 3 4 5 6 7 8 9 10 11 ... 6019 1 2 3 4 5 6 7 8 9 10 11 ...
6013 [file transfer complete] 6020 [file transfer complete]
6014 [connected] 6021 [connected]
6015 ## Start Addr = 0x00040004 6022 ## Start Addr = 0x00040004
6016 6023
6017 => go 40004 Hello World! This is a test. 6024 => go 40004 Hello World! This is a test.
6018 ## Starting application at 0x00040004 ... 6025 ## Starting application at 0x00040004 ...
6019 Hello World 6026 Hello World
6020 argc = 7 6027 argc = 7
6021 argv[0] = "40004" 6028 argv[0] = "40004"
6022 argv[1] = "Hello" 6029 argv[1] = "Hello"
6023 argv[2] = "World!" 6030 argv[2] = "World!"
6024 argv[3] = "This" 6031 argv[3] = "This"
6025 argv[4] = "is" 6032 argv[4] = "is"
6026 argv[5] = "a" 6033 argv[5] = "a"
6027 argv[6] = "test." 6034 argv[6] = "test."
6028 argv[7] = "<NULL>" 6035 argv[7] = "<NULL>"
6029 Hit any key to exit ... 6036 Hit any key to exit ...
6030 6037
6031 ## Application terminated, rc = 0x0 6038 ## Application terminated, rc = 0x0
6032 6039
6033 Another example, which demonstrates how to register a CPM interrupt 6040 Another example, which demonstrates how to register a CPM interrupt
6034 handler with the U-Boot code, can be found in 'examples/timer.c'. 6041 handler with the U-Boot code, can be found in 'examples/timer.c'.
6035 Here, a CPM timer is set up to generate an interrupt every second. 6042 Here, a CPM timer is set up to generate an interrupt every second.
6036 The interrupt service routine is trivial, just printing a '.' 6043 The interrupt service routine is trivial, just printing a '.'
6037 character, but this is just a demo program. The application can be 6044 character, but this is just a demo program. The application can be
6038 controlled by the following keys: 6045 controlled by the following keys:
6039 6046
6040 ? - print current values og the CPM Timer registers 6047 ? - print current values og the CPM Timer registers
6041 b - enable interrupts and start timer 6048 b - enable interrupts and start timer
6042 e - stop timer and disable interrupts 6049 e - stop timer and disable interrupts
6043 q - quit application 6050 q - quit application
6044 6051
6045 => loads 6052 => loads
6046 ## Ready for S-Record download ... 6053 ## Ready for S-Record download ...
6047 ~>examples/timer.srec 6054 ~>examples/timer.srec
6048 1 2 3 4 5 6 7 8 9 10 11 ... 6055 1 2 3 4 5 6 7 8 9 10 11 ...
6049 [file transfer complete] 6056 [file transfer complete]
6050 [connected] 6057 [connected]
6051 ## Start Addr = 0x00040004 6058 ## Start Addr = 0x00040004
6052 6059
6053 => go 40004 6060 => go 40004
6054 ## Starting application at 0x00040004 ... 6061 ## Starting application at 0x00040004 ...
6055 TIMERS=0xfff00980 6062 TIMERS=0xfff00980
6056 Using timer 1 6063 Using timer 1
6057 tgcr @ 0xfff00980, tmr @ 0xfff00990, trr @ 0xfff00994, tcr @ 0xfff00998, tcn @ 0xfff0099c, ter @ 0xfff009b0 6064 tgcr @ 0xfff00980, tmr @ 0xfff00990, trr @ 0xfff00994, tcr @ 0xfff00998, tcn @ 0xfff0099c, ter @ 0xfff009b0
6058 6065
6059 Hit 'b': 6066 Hit 'b':
6060 [q, b, e, ?] Set interval 1000000 us 6067 [q, b, e, ?] Set interval 1000000 us
6061 Enabling timer 6068 Enabling timer
6062 Hit '?': 6069 Hit '?':
6063 [q, b, e, ?] ........ 6070 [q, b, e, ?] ........
6064 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0xef6, ter=0x0 6071 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0xef6, ter=0x0
6065 Hit '?': 6072 Hit '?':
6066 [q, b, e, ?] . 6073 [q, b, e, ?] .
6067 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x2ad4, ter=0x0 6074 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x2ad4, ter=0x0
6068 Hit '?': 6075 Hit '?':
6069 [q, b, e, ?] . 6076 [q, b, e, ?] .
6070 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x1efc, ter=0x0 6077 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x1efc, ter=0x0
6071 Hit '?': 6078 Hit '?':
6072 [q, b, e, ?] . 6079 [q, b, e, ?] .
6073 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x169d, ter=0x0 6080 tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x169d, ter=0x0
6074 Hit 'e': 6081 Hit 'e':
6075 [q, b, e, ?] ...Stopping timer 6082 [q, b, e, ?] ...Stopping timer
6076 Hit 'q': 6083 Hit 'q':
6077 [q, b, e, ?] ## Application terminated, rc = 0x0 6084 [q, b, e, ?] ## Application terminated, rc = 0x0
6078 6085
6079 6086
6080 Minicom warning: 6087 Minicom warning:
6081 ================ 6088 ================
6082 6089
6083 Over time, many people have reported problems when trying to use the 6090 Over time, many people have reported problems when trying to use the
6084 "minicom" terminal emulation program for serial download. I (wd) 6091 "minicom" terminal emulation program for serial download. I (wd)
6085 consider minicom to be broken, and recommend not to use it. Under 6092 consider minicom to be broken, and recommend not to use it. Under
6086 Unix, I recommend to use C-Kermit for general purpose use (and 6093 Unix, I recommend to use C-Kermit for general purpose use (and
6087 especially for kermit binary protocol download ("loadb" command), and 6094 especially for kermit binary protocol download ("loadb" command), and
6088 use "cu" for S-Record download ("loads" command). See 6095 use "cu" for S-Record download ("loads" command). See
6089 http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.3. 6096 http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.3.
6090 for help with kermit. 6097 for help with kermit.
6091 6098
6092 6099
6093 Nevertheless, if you absolutely want to use it try adding this 6100 Nevertheless, if you absolutely want to use it try adding this
6094 configuration to your "File transfer protocols" section: 6101 configuration to your "File transfer protocols" section:
6095 6102
6096 Name Program Name U/D FullScr IO-Red. Multi 6103 Name Program Name U/D FullScr IO-Red. Multi
6097 X kermit /usr/bin/kermit -i -l %l -s Y U Y N N 6104 X kermit /usr/bin/kermit -i -l %l -s Y U Y N N
6098 Y kermit /usr/bin/kermit -i -l %l -r N D Y N N 6105 Y kermit /usr/bin/kermit -i -l %l -r N D Y N N
6099 6106
6100 6107
6101 NetBSD Notes: 6108 NetBSD Notes:
6102 ============= 6109 =============
6103 6110
6104 Starting at version 0.9.2, U-Boot supports NetBSD both as host 6111 Starting at version 0.9.2, U-Boot supports NetBSD both as host
6105 (build U-Boot) and target system (boots NetBSD/mpc8xx). 6112 (build U-Boot) and target system (boots NetBSD/mpc8xx).
6106 6113
6107 Building requires a cross environment; it is known to work on 6114 Building requires a cross environment; it is known to work on
6108 NetBSD/i386 with the cross-powerpc-netbsd-1.3 package (you will also 6115 NetBSD/i386 with the cross-powerpc-netbsd-1.3 package (you will also
6109 need gmake since the Makefiles are not compatible with BSD make). 6116 need gmake since the Makefiles are not compatible with BSD make).
6110 Note that the cross-powerpc package does not install include files; 6117 Note that the cross-powerpc package does not install include files;
6111 attempting to build U-Boot will fail because <machine/ansi.h> is 6118 attempting to build U-Boot will fail because <machine/ansi.h> is
6112 missing. This file has to be installed and patched manually: 6119 missing. This file has to be installed and patched manually:
6113 6120
6114 # cd /usr/pkg/cross/powerpc-netbsd/include 6121 # cd /usr/pkg/cross/powerpc-netbsd/include
6115 # mkdir powerpc 6122 # mkdir powerpc
6116 # ln -s powerpc machine 6123 # ln -s powerpc machine
6117 # cp /usr/src/sys/arch/powerpc/include/ansi.h powerpc/ansi.h 6124 # cp /usr/src/sys/arch/powerpc/include/ansi.h powerpc/ansi.h
6118 # ${EDIT} powerpc/ansi.h ## must remove __va_list, _BSD_VA_LIST 6125 # ${EDIT} powerpc/ansi.h ## must remove __va_list, _BSD_VA_LIST
6119 6126
6120 Native builds *don't* work due to incompatibilities between native 6127 Native builds *don't* work due to incompatibilities between native
6121 and U-Boot include files. 6128 and U-Boot include files.
6122 6129
6123 Booting assumes that (the first part of) the image booted is a 6130 Booting assumes that (the first part of) the image booted is a
6124 stage-2 loader which in turn loads and then invokes the kernel 6131 stage-2 loader which in turn loads and then invokes the kernel
6125 proper. Loader sources will eventually appear in the NetBSD source 6132 proper. Loader sources will eventually appear in the NetBSD source
6126 tree (probably in sys/arc/mpc8xx/stand/u-boot_stage2/); in the 6133 tree (probably in sys/arc/mpc8xx/stand/u-boot_stage2/); in the
6127 meantime, see ftp://ftp.denx.de/pub/u-boot/ppcboot_stage2.tar.gz 6134 meantime, see ftp://ftp.denx.de/pub/u-boot/ppcboot_stage2.tar.gz
6128 6135
6129 6136
6130 Implementation Internals: 6137 Implementation Internals:
6131 ========================= 6138 =========================
6132 6139
6133 The following is not intended to be a complete description of every 6140 The following is not intended to be a complete description of every
6134 implementation detail. However, it should help to understand the 6141 implementation detail. However, it should help to understand the
6135 inner workings of U-Boot and make it easier to port it to custom 6142 inner workings of U-Boot and make it easier to port it to custom
6136 hardware. 6143 hardware.
6137 6144
6138 6145
6139 Initial Stack, Global Data: 6146 Initial Stack, Global Data:
6140 --------------------------- 6147 ---------------------------
6141 6148
6142 The implementation of U-Boot is complicated by the fact that U-Boot 6149 The implementation of U-Boot is complicated by the fact that U-Boot
6143 starts running out of ROM (flash memory), usually without access to 6150 starts running out of ROM (flash memory), usually without access to
6144 system RAM (because the memory controller is not initialized yet). 6151 system RAM (because the memory controller is not initialized yet).
6145 This means that we don't have writable Data or BSS segments, and BSS 6152 This means that we don't have writable Data or BSS segments, and BSS
6146 is not initialized as zero. To be able to get a C environment working 6153 is not initialized as zero. To be able to get a C environment working
6147 at all, we have to allocate at least a minimal stack. Implementation 6154 at all, we have to allocate at least a minimal stack. Implementation
6148 options for this are defined and restricted by the CPU used: Some CPU 6155 options for this are defined and restricted by the CPU used: Some CPU
6149 models provide on-chip memory (like the IMMR area on MPC8xx and 6156 models provide on-chip memory (like the IMMR area on MPC8xx and
6150 MPC826x processors), on others (parts of) the data cache can be 6157 MPC826x processors), on others (parts of) the data cache can be
6151 locked as (mis-) used as memory, etc. 6158 locked as (mis-) used as memory, etc.
6152 6159
6153 Chris Hallinan posted a good summary of these issues to the 6160 Chris Hallinan posted a good summary of these issues to the
6154 U-Boot mailing list: 6161 U-Boot mailing list:
6155 6162
6156 Subject: RE: [U-Boot-Users] RE: More On Memory Bank x (nothingness)? 6163 Subject: RE: [U-Boot-Users] RE: More On Memory Bank x (nothingness)?
6157 From: "Chris Hallinan" <clh@net1plus.com> 6164 From: "Chris Hallinan" <clh@net1plus.com>
6158 Date: Mon, 10 Feb 2003 16:43:46 -0500 (22:43 MET) 6165 Date: Mon, 10 Feb 2003 16:43:46 -0500 (22:43 MET)
6159 ... 6166 ...
6160 6167
6161 Correct me if I'm wrong, folks, but the way I understand it 6168 Correct me if I'm wrong, folks, but the way I understand it
6162 is this: Using DCACHE as initial RAM for Stack, etc, does not 6169 is this: Using DCACHE as initial RAM for Stack, etc, does not
6163 require any physical RAM backing up the cache. The cleverness 6170 require any physical RAM backing up the cache. The cleverness
6164 is that the cache is being used as a temporary supply of 6171 is that the cache is being used as a temporary supply of
6165 necessary storage before the SDRAM controller is setup. It's 6172 necessary storage before the SDRAM controller is setup. It's
6166 beyond the scope of this list to explain the details, but you 6173 beyond the scope of this list to explain the details, but you
6167 can see how this works by studying the cache architecture and 6174 can see how this works by studying the cache architecture and
6168 operation in the architecture and processor-specific manuals. 6175 operation in the architecture and processor-specific manuals.
6169 6176
6170 OCM is On Chip Memory, which I believe the 405GP has 4K. It 6177 OCM is On Chip Memory, which I believe the 405GP has 4K. It
6171 is another option for the system designer to use as an 6178 is another option for the system designer to use as an
6172 initial stack/RAM area prior to SDRAM being available. Either 6179 initial stack/RAM area prior to SDRAM being available. Either
6173 option should work for you. Using CS 4 should be fine if your 6180 option should work for you. Using CS 4 should be fine if your
6174 board designers haven't used it for something that would 6181 board designers haven't used it for something that would
6175 cause you grief during the initial boot! It is frequently not 6182 cause you grief during the initial boot! It is frequently not
6176 used. 6183 used.
6177 6184
6178 CONFIG_SYS_INIT_RAM_ADDR should be somewhere that won't interfere 6185 CONFIG_SYS_INIT_RAM_ADDR should be somewhere that won't interfere
6179 with your processor/board/system design. The default value 6186 with your processor/board/system design. The default value
6180 you will find in any recent u-boot distribution in 6187 you will find in any recent u-boot distribution in
6181 walnut.h should work for you. I'd set it to a value larger 6188 walnut.h should work for you. I'd set it to a value larger
6182 than your SDRAM module. If you have a 64MB SDRAM module, set 6189 than your SDRAM module. If you have a 64MB SDRAM module, set
6183 it above 400_0000. Just make sure your board has no resources 6190 it above 400_0000. Just make sure your board has no resources
6184 that are supposed to respond to that address! That code in 6191 that are supposed to respond to that address! That code in
6185 start.S has been around a while and should work as is when 6192 start.S has been around a while and should work as is when
6186 you get the config right. 6193 you get the config right.
6187 6194
6188 -Chris Hallinan 6195 -Chris Hallinan
6189 DS4.COM, Inc. 6196 DS4.COM, Inc.
6190 6197
6191 It is essential to remember this, since it has some impact on the C 6198 It is essential to remember this, since it has some impact on the C
6192 code for the initialization procedures: 6199 code for the initialization procedures:
6193 6200
6194 * Initialized global data (data segment) is read-only. Do not attempt 6201 * Initialized global data (data segment) is read-only. Do not attempt
6195 to write it. 6202 to write it.
6196 6203
6197 * Do not use any uninitialized global data (or implicitely initialized 6204 * Do not use any uninitialized global data (or implicitely initialized
6198 as zero data - BSS segment) at all - this is undefined, initiali- 6205 as zero data - BSS segment) at all - this is undefined, initiali-
6199 zation is performed later (when relocating to RAM). 6206 zation is performed later (when relocating to RAM).
6200 6207
6201 * Stack space is very limited. Avoid big data buffers or things like 6208 * Stack space is very limited. Avoid big data buffers or things like
6202 that. 6209 that.
6203 6210
6204 Having only the stack as writable memory limits means we cannot use 6211 Having only the stack as writable memory limits means we cannot use
6205 normal global data to share information beween the code. But it 6212 normal global data to share information beween the code. But it
6206 turned out that the implementation of U-Boot can be greatly 6213 turned out that the implementation of U-Boot can be greatly
6207 simplified by making a global data structure (gd_t) available to all 6214 simplified by making a global data structure (gd_t) available to all
6208 functions. We could pass a pointer to this data as argument to _all_ 6215 functions. We could pass a pointer to this data as argument to _all_
6209 functions, but this would bloat the code. Instead we use a feature of 6216 functions, but this would bloat the code. Instead we use a feature of
6210 the GCC compiler (Global Register Variables) to share the data: we 6217 the GCC compiler (Global Register Variables) to share the data: we
6211 place a pointer (gd) to the global data into a register which we 6218 place a pointer (gd) to the global data into a register which we
6212 reserve for this purpose. 6219 reserve for this purpose.
6213 6220
6214 When choosing a register for such a purpose we are restricted by the 6221 When choosing a register for such a purpose we are restricted by the
6215 relevant (E)ABI specifications for the current architecture, and by 6222 relevant (E)ABI specifications for the current architecture, and by
6216 GCC's implementation. 6223 GCC's implementation.
6217 6224
6218 For PowerPC, the following registers have specific use: 6225 For PowerPC, the following registers have specific use:
6219 R1: stack pointer 6226 R1: stack pointer
6220 R2: reserved for system use 6227 R2: reserved for system use
6221 R3-R4: parameter passing and return values 6228 R3-R4: parameter passing and return values
6222 R5-R10: parameter passing 6229 R5-R10: parameter passing
6223 R13: small data area pointer 6230 R13: small data area pointer
6224 R30: GOT pointer 6231 R30: GOT pointer
6225 R31: frame pointer 6232 R31: frame pointer
6226 6233
6227 (U-Boot also uses R12 as internal GOT pointer. r12 6234 (U-Boot also uses R12 as internal GOT pointer. r12
6228 is a volatile register so r12 needs to be reset when 6235 is a volatile register so r12 needs to be reset when
6229 going back and forth between asm and C) 6236 going back and forth between asm and C)
6230 6237
6231 ==> U-Boot will use R2 to hold a pointer to the global data 6238 ==> U-Boot will use R2 to hold a pointer to the global data
6232 6239
6233 Note: on PPC, we could use a static initializer (since the 6240 Note: on PPC, we could use a static initializer (since the
6234 address of the global data structure is known at compile time), 6241 address of the global data structure is known at compile time),
6235 but it turned out that reserving a register results in somewhat 6242 but it turned out that reserving a register results in somewhat
6236 smaller code - although the code savings are not that big (on 6243 smaller code - although the code savings are not that big (on
6237 average for all boards 752 bytes for the whole U-Boot image, 6244 average for all boards 752 bytes for the whole U-Boot image,
6238 624 text + 127 data). 6245 624 text + 127 data).
6239 6246
6240 On Blackfin, the normal C ABI (except for P3) is followed as documented here: 6247 On Blackfin, the normal C ABI (except for P3) is followed as documented here:
6241 http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface 6248 http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface
6242 6249
6243 ==> U-Boot will use P3 to hold a pointer to the global data 6250 ==> U-Boot will use P3 to hold a pointer to the global data
6244 6251
6245 On ARM, the following registers are used: 6252 On ARM, the following registers are used:
6246 6253
6247 R0: function argument word/integer result 6254 R0: function argument word/integer result
6248 R1-R3: function argument word 6255 R1-R3: function argument word
6249 R9: platform specific 6256 R9: platform specific
6250 R10: stack limit (used only if stack checking is enabled) 6257 R10: stack limit (used only if stack checking is enabled)
6251 R11: argument (frame) pointer 6258 R11: argument (frame) pointer
6252 R12: temporary workspace 6259 R12: temporary workspace
6253 R13: stack pointer 6260 R13: stack pointer
6254 R14: link register 6261 R14: link register
6255 R15: program counter 6262 R15: program counter
6256 6263
6257 ==> U-Boot will use R9 to hold a pointer to the global data 6264 ==> U-Boot will use R9 to hold a pointer to the global data
6258 6265
6259 Note: on ARM, only R_ARM_RELATIVE relocations are supported. 6266 Note: on ARM, only R_ARM_RELATIVE relocations are supported.
6260 6267
6261 On Nios II, the ABI is documented here: 6268 On Nios II, the ABI is documented here:
6262 http://www.altera.com/literature/hb/nios2/n2cpu_nii51016.pdf 6269 http://www.altera.com/literature/hb/nios2/n2cpu_nii51016.pdf
6263 6270
6264 ==> U-Boot will use gp to hold a pointer to the global data 6271 ==> U-Boot will use gp to hold a pointer to the global data
6265 6272
6266 Note: on Nios II, we give "-G0" option to gcc and don't use gp 6273 Note: on Nios II, we give "-G0" option to gcc and don't use gp
6267 to access small data sections, so gp is free. 6274 to access small data sections, so gp is free.
6268 6275
6269 On NDS32, the following registers are used: 6276 On NDS32, the following registers are used:
6270 6277
6271 R0-R1: argument/return 6278 R0-R1: argument/return
6272 R2-R5: argument 6279 R2-R5: argument
6273 R15: temporary register for assembler 6280 R15: temporary register for assembler
6274 R16: trampoline register 6281 R16: trampoline register
6275 R28: frame pointer (FP) 6282 R28: frame pointer (FP)
6276 R29: global pointer (GP) 6283 R29: global pointer (GP)
6277 R30: link register (LP) 6284 R30: link register (LP)
6278 R31: stack pointer (SP) 6285 R31: stack pointer (SP)
6279 PC: program counter (PC) 6286 PC: program counter (PC)
6280 6287
6281 ==> U-Boot will use R10 to hold a pointer to the global data 6288 ==> U-Boot will use R10 to hold a pointer to the global data
6282 6289
6283 NOTE: DECLARE_GLOBAL_DATA_PTR must be used with file-global scope, 6290 NOTE: DECLARE_GLOBAL_DATA_PTR must be used with file-global scope,
6284 or current versions of GCC may "optimize" the code too much. 6291 or current versions of GCC may "optimize" the code too much.
6285 6292
6286 Memory Management: 6293 Memory Management:
6287 ------------------ 6294 ------------------
6288 6295
6289 U-Boot runs in system state and uses physical addresses, i.e. the 6296 U-Boot runs in system state and uses physical addresses, i.e. the
6290 MMU is not used either for address mapping nor for memory protection. 6297 MMU is not used either for address mapping nor for memory protection.
6291 6298
6292 The available memory is mapped to fixed addresses using the memory 6299 The available memory is mapped to fixed addresses using the memory
6293 controller. In this process, a contiguous block is formed for each 6300 controller. In this process, a contiguous block is formed for each
6294 memory type (Flash, SDRAM, SRAM), even when it consists of several 6301 memory type (Flash, SDRAM, SRAM), even when it consists of several
6295 physical memory banks. 6302 physical memory banks.
6296 6303
6297 U-Boot is installed in the first 128 kB of the first Flash bank (on 6304 U-Boot is installed in the first 128 kB of the first Flash bank (on
6298 TQM8xxL modules this is the range 0x40000000 ... 0x4001FFFF). After 6305 TQM8xxL modules this is the range 0x40000000 ... 0x4001FFFF). After
6299 booting and sizing and initializing DRAM, the code relocates itself 6306 booting and sizing and initializing DRAM, the code relocates itself
6300 to the upper end of DRAM. Immediately below the U-Boot code some 6307 to the upper end of DRAM. Immediately below the U-Boot code some
6301 memory is reserved for use by malloc() [see CONFIG_SYS_MALLOC_LEN 6308 memory is reserved for use by malloc() [see CONFIG_SYS_MALLOC_LEN
6302 configuration setting]. Below that, a structure with global Board 6309 configuration setting]. Below that, a structure with global Board
6303 Info data is placed, followed by the stack (growing downward). 6310 Info data is placed, followed by the stack (growing downward).
6304 6311
6305 Additionally, some exception handler code is copied to the low 8 kB 6312 Additionally, some exception handler code is copied to the low 8 kB
6306 of DRAM (0x00000000 ... 0x00001FFF). 6313 of DRAM (0x00000000 ... 0x00001FFF).
6307 6314
6308 So a typical memory configuration with 16 MB of DRAM could look like 6315 So a typical memory configuration with 16 MB of DRAM could look like
6309 this: 6316 this:
6310 6317
6311 0x0000 0000 Exception Vector code 6318 0x0000 0000 Exception Vector code
6312 : 6319 :
6313 0x0000 1FFF 6320 0x0000 1FFF
6314 0x0000 2000 Free for Application Use 6321 0x0000 2000 Free for Application Use
6315 : 6322 :
6316 : 6323 :
6317 6324
6318 : 6325 :
6319 : 6326 :
6320 0x00FB FF20 Monitor Stack (Growing downward) 6327 0x00FB FF20 Monitor Stack (Growing downward)
6321 0x00FB FFAC Board Info Data and permanent copy of global data 6328 0x00FB FFAC Board Info Data and permanent copy of global data
6322 0x00FC 0000 Malloc Arena 6329 0x00FC 0000 Malloc Arena
6323 : 6330 :
6324 0x00FD FFFF 6331 0x00FD FFFF
6325 0x00FE 0000 RAM Copy of Monitor Code 6332 0x00FE 0000 RAM Copy of Monitor Code
6326 ... eventually: LCD or video framebuffer 6333 ... eventually: LCD or video framebuffer
6327 ... eventually: pRAM (Protected RAM - unchanged by reset) 6334 ... eventually: pRAM (Protected RAM - unchanged by reset)
6328 0x00FF FFFF [End of RAM] 6335 0x00FF FFFF [End of RAM]
6329 6336
6330 6337
6331 System Initialization: 6338 System Initialization:
6332 ---------------------- 6339 ----------------------
6333 6340
6334 In the reset configuration, U-Boot starts at the reset entry point 6341 In the reset configuration, U-Boot starts at the reset entry point
6335 (on most PowerPC systems at address 0x00000100). Because of the reset 6342 (on most PowerPC systems at address 0x00000100). Because of the reset
6336 configuration for CS0# this is a mirror of the onboard Flash memory. 6343 configuration for CS0# this is a mirror of the onboard Flash memory.
6337 To be able to re-map memory U-Boot then jumps to its link address. 6344 To be able to re-map memory U-Boot then jumps to its link address.
6338 To be able to implement the initialization code in C, a (small!) 6345 To be able to implement the initialization code in C, a (small!)
6339 initial stack is set up in the internal Dual Ported RAM (in case CPUs 6346 initial stack is set up in the internal Dual Ported RAM (in case CPUs
6340 which provide such a feature like MPC8xx or MPC8260), or in a locked 6347 which provide such a feature like MPC8xx or MPC8260), or in a locked
6341 part of the data cache. After that, U-Boot initializes the CPU core, 6348 part of the data cache. After that, U-Boot initializes the CPU core,
6342 the caches and the SIU. 6349 the caches and the SIU.
6343 6350
6344 Next, all (potentially) available memory banks are mapped using a 6351 Next, all (potentially) available memory banks are mapped using a
6345 preliminary mapping. For example, we put them on 512 MB boundaries 6352 preliminary mapping. For example, we put them on 512 MB boundaries
6346 (multiples of 0x20000000: SDRAM on 0x00000000 and 0x20000000, Flash 6353 (multiples of 0x20000000: SDRAM on 0x00000000 and 0x20000000, Flash
6347 on 0x40000000 and 0x60000000, SRAM on 0x80000000). Then UPM A is 6354 on 0x40000000 and 0x60000000, SRAM on 0x80000000). Then UPM A is
6348 programmed for SDRAM access. Using the temporary configuration, a 6355 programmed for SDRAM access. Using the temporary configuration, a
6349 simple memory test is run that determines the size of the SDRAM 6356 simple memory test is run that determines the size of the SDRAM
6350 banks. 6357 banks.
6351 6358
6352 When there is more than one SDRAM bank, and the banks are of 6359 When there is more than one SDRAM bank, and the banks are of
6353 different size, the largest is mapped first. For equal size, the first 6360 different size, the largest is mapped first. For equal size, the first
6354 bank (CS2#) is mapped first. The first mapping is always for address 6361 bank (CS2#) is mapped first. The first mapping is always for address
6355 0x00000000, with any additional banks following immediately to create 6362 0x00000000, with any additional banks following immediately to create
6356 contiguous memory starting from 0. 6363 contiguous memory starting from 0.
6357 6364
6358 Then, the monitor installs itself at the upper end of the SDRAM area 6365 Then, the monitor installs itself at the upper end of the SDRAM area
6359 and allocates memory for use by malloc() and for the global Board 6366 and allocates memory for use by malloc() and for the global Board
6360 Info data; also, the exception vector code is copied to the low RAM 6367 Info data; also, the exception vector code is copied to the low RAM
6361 pages, and the final stack is set up. 6368 pages, and the final stack is set up.
6362 6369
6363 Only after this relocation will you have a "normal" C environment; 6370 Only after this relocation will you have a "normal" C environment;
6364 until that you are restricted in several ways, mostly because you are 6371 until that you are restricted in several ways, mostly because you are
6365 running from ROM, and because the code will have to be relocated to a 6372 running from ROM, and because the code will have to be relocated to a
6366 new address in RAM. 6373 new address in RAM.
6367 6374
6368 6375
6369 U-Boot Porting Guide: 6376 U-Boot Porting Guide:
6370 ---------------------- 6377 ----------------------
6371 6378
6372 [Based on messages by Jerry Van Baren in the U-Boot-Users mailing 6379 [Based on messages by Jerry Van Baren in the U-Boot-Users mailing
6373 list, October 2002] 6380 list, October 2002]
6374 6381
6375 6382
6376 int main(int argc, char *argv[]) 6383 int main(int argc, char *argv[])
6377 { 6384 {
6378 sighandler_t no_more_time; 6385 sighandler_t no_more_time;
6379 6386
6380 signal(SIGALRM, no_more_time); 6387 signal(SIGALRM, no_more_time);
6381 alarm(PROJECT_DEADLINE - toSec (3 * WEEK)); 6388 alarm(PROJECT_DEADLINE - toSec (3 * WEEK));
6382 6389
6383 if (available_money > available_manpower) { 6390 if (available_money > available_manpower) {
6384 Pay consultant to port U-Boot; 6391 Pay consultant to port U-Boot;
6385 return 0; 6392 return 0;
6386 } 6393 }
6387 6394
6388 Download latest U-Boot source; 6395 Download latest U-Boot source;
6389 6396
6390 Subscribe to u-boot mailing list; 6397 Subscribe to u-boot mailing list;
6391 6398
6392 if (clueless) 6399 if (clueless)
6393 email("Hi, I am new to U-Boot, how do I get started?"); 6400 email("Hi, I am new to U-Boot, how do I get started?");
6394 6401
6395 while (learning) { 6402 while (learning) {
6396 Read the README file in the top level directory; 6403 Read the README file in the top level directory;
6397 Read http://www.denx.de/twiki/bin/view/DULG/Manual; 6404 Read http://www.denx.de/twiki/bin/view/DULG/Manual;
6398 Read applicable doc/*.README; 6405 Read applicable doc/*.README;
6399 Read the source, Luke; 6406 Read the source, Luke;
6400 /* find . -name "*.[chS]" | xargs grep -i <keyword> */ 6407 /* find . -name "*.[chS]" | xargs grep -i <keyword> */
6401 } 6408 }
6402 6409
6403 if (available_money > toLocalCurrency ($2500)) 6410 if (available_money > toLocalCurrency ($2500))
6404 Buy a BDI3000; 6411 Buy a BDI3000;
6405 else 6412 else
6406 Add a lot of aggravation and time; 6413 Add a lot of aggravation and time;
6407 6414
6408 if (a similar board exists) { /* hopefully... */ 6415 if (a similar board exists) { /* hopefully... */
6409 cp -a board/<similar> board/<myboard> 6416 cp -a board/<similar> board/<myboard>
6410 cp include/configs/<similar>.h include/configs/<myboard>.h 6417 cp include/configs/<similar>.h include/configs/<myboard>.h
6411 } else { 6418 } else {
6412 Create your own board support subdirectory; 6419 Create your own board support subdirectory;
6413 Create your own board include/configs/<myboard>.h file; 6420 Create your own board include/configs/<myboard>.h file;
6414 } 6421 }
6415 Edit new board/<myboard> files 6422 Edit new board/<myboard> files
6416 Edit new include/configs/<myboard>.h 6423 Edit new include/configs/<myboard>.h
6417 6424
6418 while (!accepted) { 6425 while (!accepted) {
6419 while (!running) { 6426 while (!running) {
6420 do { 6427 do {
6421 Add / modify source code; 6428 Add / modify source code;
6422 } until (compiles); 6429 } until (compiles);
6423 Debug; 6430 Debug;
6424 if (clueless) 6431 if (clueless)
6425 email("Hi, I am having problems..."); 6432 email("Hi, I am having problems...");
6426 } 6433 }
6427 Send patch file to the U-Boot email list; 6434 Send patch file to the U-Boot email list;
6428 if (reasonable critiques) 6435 if (reasonable critiques)
6429 Incorporate improvements from email list code review; 6436 Incorporate improvements from email list code review;
6430 else 6437 else
6431 Defend code as written; 6438 Defend code as written;
6432 } 6439 }
6433 6440
6434 return 0; 6441 return 0;
6435 } 6442 }
6436 6443
6437 void no_more_time (int sig) 6444 void no_more_time (int sig)
6438 { 6445 {
6439 hire_a_guru(); 6446 hire_a_guru();
6440 } 6447 }
6441 6448
6442 6449
6443 Coding Standards: 6450 Coding Standards:
6444 ----------------- 6451 -----------------
6445 6452
6446 All contributions to U-Boot should conform to the Linux kernel 6453 All contributions to U-Boot should conform to the Linux kernel
6447 coding style; see the file "Documentation/CodingStyle" and the script 6454 coding style; see the file "Documentation/CodingStyle" and the script
6448 "scripts/Lindent" in your Linux kernel source directory. 6455 "scripts/Lindent" in your Linux kernel source directory.
6449 6456
6450 Source files originating from a different project (for example the 6457 Source files originating from a different project (for example the
6451 MTD subsystem) are generally exempt from these guidelines and are not 6458 MTD subsystem) are generally exempt from these guidelines and are not
6452 reformated to ease subsequent migration to newer versions of those 6459 reformated to ease subsequent migration to newer versions of those
6453 sources. 6460 sources.
6454 6461
6455 Please note that U-Boot is implemented in C (and to some small parts in 6462 Please note that U-Boot is implemented in C (and to some small parts in
6456 Assembler); no C++ is used, so please do not use C++ style comments (//) 6463 Assembler); no C++ is used, so please do not use C++ style comments (//)
6457 in your code. 6464 in your code.
6458 6465
6459 Please also stick to the following formatting rules: 6466 Please also stick to the following formatting rules:
6460 - remove any trailing white space 6467 - remove any trailing white space
6461 - use TAB characters for indentation and vertical alignment, not spaces 6468 - use TAB characters for indentation and vertical alignment, not spaces
6462 - make sure NOT to use DOS '\r\n' line feeds 6469 - make sure NOT to use DOS '\r\n' line feeds
6463 - do not add more than 2 consecutive empty lines to source files 6470 - do not add more than 2 consecutive empty lines to source files
6464 - do not add trailing empty lines to source files 6471 - do not add trailing empty lines to source files
6465 6472
6466 Submissions which do not conform to the standards may be returned 6473 Submissions which do not conform to the standards may be returned
6467 with a request to reformat the changes. 6474 with a request to reformat the changes.
6468 6475
6469 6476
6470 Submitting Patches: 6477 Submitting Patches:
6471 ------------------- 6478 -------------------
6472 6479
6473 Since the number of patches for U-Boot is growing, we need to 6480 Since the number of patches for U-Boot is growing, we need to
6474 establish some rules. Submissions which do not conform to these rules 6481 establish some rules. Submissions which do not conform to these rules
6475 may be rejected, even when they contain important and valuable stuff. 6482 may be rejected, even when they contain important and valuable stuff.
6476 6483
6477 Please see http://www.denx.de/wiki/U-Boot/Patches for details. 6484 Please see http://www.denx.de/wiki/U-Boot/Patches for details.
6478 6485
6479 Patches shall be sent to the u-boot mailing list <u-boot@lists.denx.de>; 6486 Patches shall be sent to the u-boot mailing list <u-boot@lists.denx.de>;
6480 see http://lists.denx.de/mailman/listinfo/u-boot 6487 see http://lists.denx.de/mailman/listinfo/u-boot
6481 6488
6482 When you send a patch, please include the following information with 6489 When you send a patch, please include the following information with
6483 it: 6490 it:
6484 6491
6485 * For bug fixes: a description of the bug and how your patch fixes 6492 * For bug fixes: a description of the bug and how your patch fixes
6486 this bug. Please try to include a way of demonstrating that the 6493 this bug. Please try to include a way of demonstrating that the
6487 patch actually fixes something. 6494 patch actually fixes something.
6488 6495
6489 * For new features: a description of the feature and your 6496 * For new features: a description of the feature and your
6490 implementation. 6497 implementation.
6491 6498
6492 * A CHANGELOG entry as plaintext (separate from the patch) 6499 * A CHANGELOG entry as plaintext (separate from the patch)
6493 6500
6494 * For major contributions, your entry to the CREDITS file 6501 * For major contributions, your entry to the CREDITS file
6495 6502
6496 * When you add support for a new board, don't forget to add a 6503 * When you add support for a new board, don't forget to add a
6497 maintainer e-mail address to the boards.cfg file, too. 6504 maintainer e-mail address to the boards.cfg file, too.
6498 6505
6499 * If your patch adds new configuration options, don't forget to 6506 * If your patch adds new configuration options, don't forget to
6500 document these in the README file. 6507 document these in the README file.
6501 6508
6502 * The patch itself. If you are using git (which is *strongly* 6509 * The patch itself. If you are using git (which is *strongly*
6503 recommended) you can easily generate the patch using the 6510 recommended) you can easily generate the patch using the
6504 "git format-patch". If you then use "git send-email" to send it to 6511 "git format-patch". If you then use "git send-email" to send it to
6505 the U-Boot mailing list, you will avoid most of the common problems 6512 the U-Boot mailing list, you will avoid most of the common problems
6506 with some other mail clients. 6513 with some other mail clients.
6507 6514
6508 If you cannot use git, use "diff -purN OLD NEW". If your version of 6515 If you cannot use git, use "diff -purN OLD NEW". If your version of
6509 diff does not support these options, then get the latest version of 6516 diff does not support these options, then get the latest version of
6510 GNU diff. 6517 GNU diff.
6511 6518
6512 The current directory when running this command shall be the parent 6519 The current directory when running this command shall be the parent
6513 directory of the U-Boot source tree (i. e. please make sure that 6520 directory of the U-Boot source tree (i. e. please make sure that
6514 your patch includes sufficient directory information for the 6521 your patch includes sufficient directory information for the
6515 affected files). 6522 affected files).
6516 6523
6517 We prefer patches as plain text. MIME attachments are discouraged, 6524 We prefer patches as plain text. MIME attachments are discouraged,
6518 and compressed attachments must not be used. 6525 and compressed attachments must not be used.
6519 6526
6520 * If one logical set of modifications affects or creates several 6527 * If one logical set of modifications affects or creates several
6521 files, all these changes shall be submitted in a SINGLE patch file. 6528 files, all these changes shall be submitted in a SINGLE patch file.
6522 6529
6523 * Changesets that contain different, unrelated modifications shall be 6530 * Changesets that contain different, unrelated modifications shall be
6524 submitted as SEPARATE patches, one patch per changeset. 6531 submitted as SEPARATE patches, one patch per changeset.
6525 6532
6526 6533
6527 Notes: 6534 Notes:
6528 6535
6529 * Before sending the patch, run the MAKEALL script on your patched 6536 * Before sending the patch, run the MAKEALL script on your patched
6530 source tree and make sure that no errors or warnings are reported 6537 source tree and make sure that no errors or warnings are reported
6531 for any of the boards. 6538 for any of the boards.
6532 6539
6533 * Keep your modifications to the necessary minimum: A patch 6540 * Keep your modifications to the necessary minimum: A patch
6534 containing several unrelated changes or arbitrary reformats will be 6541 containing several unrelated changes or arbitrary reformats will be
6535 returned with a request to re-formatting / split it. 6542 returned with a request to re-formatting / split it.
6536 6543
6537 * If you modify existing code, make sure that your new code does not 6544 * If you modify existing code, make sure that your new code does not
6538 add to the memory footprint of the code ;-) Small is beautiful! 6545 add to the memory footprint of the code ;-) Small is beautiful!
6539 When adding new features, these should compile conditionally only 6546 When adding new features, these should compile conditionally only
6540 (using #ifdef), and the resulting code with the new feature 6547 (using #ifdef), and the resulting code with the new feature
6541 disabled must not need more memory than the old code without your 6548 disabled must not need more memory than the old code without your
6542 modification. 6549 modification.
6543 6550
6544 * Remember that there is a size limit of 100 kB per message on the 6551 * Remember that there is a size limit of 100 kB per message on the
6545 u-boot mailing list. Bigger patches will be moderated. If they are 6552 u-boot mailing list. Bigger patches will be moderated. If they are
6546 reasonable and not too big, they will be acknowledged. But patches 6553 reasonable and not too big, they will be acknowledged. But patches
6547 bigger than the size limit should be avoided. 6554 bigger than the size limit should be avoided.
6548 6555
1 /* 1 /*
2 * (C) Copyright 2007 2 * (C) Copyright 2007
3 * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com 3 * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
4 * Based on code written by: 4 * Based on code written by:
5 * Pantelis Antoniou <pantelis.antoniou@gmail.com> and 5 * Pantelis Antoniou <pantelis.antoniou@gmail.com> and
6 * Matthew McClintock <msm@freescale.com> 6 * Matthew McClintock <msm@freescale.com>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 #include <common.h> 11 #include <common.h>
12 #include <command.h> 12 #include <command.h>
13 #include <linux/ctype.h> 13 #include <linux/ctype.h>
14 #include <linux/types.h> 14 #include <linux/types.h>
15 #include <asm/global_data.h> 15 #include <asm/global_data.h>
16 #include <libfdt.h> 16 #include <libfdt.h>
17 #include <fdt_support.h> 17 #include <fdt_support.h>
18 #include <asm/io.h> 18 #include <asm/io.h>
19 19
20 #define MAX_LEVEL 32 /* how deeply nested we will go */ 20 #define MAX_LEVEL 32 /* how deeply nested we will go */
21 #define SCRATCHPAD 1024 /* bytes of scratchpad memory */ 21 #define SCRATCHPAD 1024 /* bytes of scratchpad memory */
22 #ifndef CONFIG_CMD_FDT_MAX_DUMP 22 #ifndef CONFIG_CMD_FDT_MAX_DUMP
23 #define CONFIG_CMD_FDT_MAX_DUMP 64 23 #define CONFIG_CMD_FDT_MAX_DUMP 64
24 #endif 24 #endif
25 25
26 /* 26 /*
27 * Global data (for the gd->bd) 27 * Global data (for the gd->bd)
28 */ 28 */
29 DECLARE_GLOBAL_DATA_PTR; 29 DECLARE_GLOBAL_DATA_PTR;
30 30
31 static int fdt_valid(struct fdt_header **blobp); 31 static int fdt_valid(struct fdt_header **blobp);
32 static int fdt_parse_prop(char *const*newval, int count, char *data, int *len); 32 static int fdt_parse_prop(char *const*newval, int count, char *data, int *len);
33 static int fdt_print(const char *pathp, char *prop, int depth); 33 static int fdt_print(const char *pathp, char *prop, int depth);
34 static int is_printable_string(const void *data, int len); 34 static int is_printable_string(const void *data, int len);
35 35
36 /* 36 /*
37 * The working_fdt points to our working flattened device tree. 37 * The working_fdt points to our working flattened device tree.
38 */ 38 */
39 struct fdt_header *working_fdt; 39 struct fdt_header *working_fdt;
40 40
41 void set_working_fdt_addr(void *addr) 41 void set_working_fdt_addr(void *addr)
42 { 42 {
43 void *buf; 43 void *buf;
44 44
45 buf = map_sysmem((ulong)addr, 0); 45 buf = map_sysmem((ulong)addr, 0);
46 working_fdt = buf; 46 working_fdt = buf;
47 setenv_addr("fdtaddr", addr); 47 setenv_addr("fdtaddr", addr);
48 } 48 }
49 49
50 /* 50 /*
51 * Get a value from the fdt and format it to be set in the environment 51 * Get a value from the fdt and format it to be set in the environment
52 */ 52 */
53 static int fdt_value_setenv(const void *nodep, int len, const char *var) 53 static int fdt_value_setenv(const void *nodep, int len, const char *var)
54 { 54 {
55 if (is_printable_string(nodep, len)) 55 if (is_printable_string(nodep, len))
56 setenv(var, (void *)nodep); 56 setenv(var, (void *)nodep);
57 else if (len == 4) { 57 else if (len == 4) {
58 char buf[11]; 58 char buf[11];
59 59
60 sprintf(buf, "0x%08X", *(uint32_t *)nodep); 60 sprintf(buf, "0x%08X", *(uint32_t *)nodep);
61 setenv(var, buf); 61 setenv(var, buf);
62 } else if (len%4 == 0 && len <= 20) { 62 } else if (len%4 == 0 && len <= 20) {
63 /* Needed to print things like sha1 hashes. */ 63 /* Needed to print things like sha1 hashes. */
64 char buf[41]; 64 char buf[41];
65 int i; 65 int i;
66 66
67 for (i = 0; i < len; i += sizeof(unsigned int)) 67 for (i = 0; i < len; i += sizeof(unsigned int))
68 sprintf(buf + (i * 2), "%08x", 68 sprintf(buf + (i * 2), "%08x",
69 *(unsigned int *)(nodep + i)); 69 *(unsigned int *)(nodep + i));
70 setenv(var, buf); 70 setenv(var, buf);
71 } else { 71 } else {
72 printf("error: unprintable value\n"); 72 printf("error: unprintable value\n");
73 return 1; 73 return 1;
74 } 74 }
75 return 0; 75 return 0;
76 } 76 }
77 77
78 /* 78 /*
79 * Flattened Device Tree command, see the help for parameter definitions. 79 * Flattened Device Tree command, see the help for parameter definitions.
80 */ 80 */
81 static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 81 static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
82 { 82 {
83 if (argc < 2) 83 if (argc < 2)
84 return CMD_RET_USAGE; 84 return CMD_RET_USAGE;
85 85
86 /* 86 /*
87 * Set the address of the fdt 87 * Set the address of the fdt
88 */ 88 */
89 if (argv[1][0] == 'a') { 89 if (argv[1][0] == 'a') {
90 unsigned long addr; 90 unsigned long addr;
91 int control = 0; 91 int control = 0;
92 struct fdt_header *blob; 92 struct fdt_header *blob;
93 /* 93 /*
94 * Set the address [and length] of the fdt. 94 * Set the address [and length] of the fdt.
95 */ 95 */
96 argc -= 2; 96 argc -= 2;
97 argv += 2; 97 argv += 2;
98 /* Temporary #ifdef - some archs don't have fdt_blob yet */ 98 /* Temporary #ifdef - some archs don't have fdt_blob yet */
99 #ifdef CONFIG_OF_CONTROL 99 #ifdef CONFIG_OF_CONTROL
100 if (argc && !strcmp(*argv, "-c")) { 100 if (argc && !strcmp(*argv, "-c")) {
101 control = 1; 101 control = 1;
102 argc--; 102 argc--;
103 argv++; 103 argv++;
104 } 104 }
105 #endif 105 #endif
106 if (argc == 0) { 106 if (argc == 0) {
107 if (control) 107 if (control)
108 blob = (struct fdt_header *)gd->fdt_blob; 108 blob = (struct fdt_header *)gd->fdt_blob;
109 else 109 else
110 blob = working_fdt; 110 blob = working_fdt;
111 if (!blob || !fdt_valid(&blob)) 111 if (!blob || !fdt_valid(&blob))
112 return 1; 112 return 1;
113 printf("The address of the fdt is %#08lx\n", 113 printf("The address of the fdt is %#08lx\n",
114 control ? (ulong)blob : 114 control ? (ulong)blob :
115 getenv_hex("fdtaddr", 0)); 115 getenv_hex("fdtaddr", 0));
116 return 0; 116 return 0;
117 } 117 }
118 118
119 addr = simple_strtoul(argv[0], NULL, 16); 119 addr = simple_strtoul(argv[0], NULL, 16);
120 blob = map_sysmem(addr, 0); 120 blob = map_sysmem(addr, 0);
121 if (!fdt_valid(&blob)) 121 if (!fdt_valid(&blob))
122 return 1; 122 return 1;
123 if (control) 123 if (control)
124 gd->fdt_blob = blob; 124 gd->fdt_blob = blob;
125 else 125 else
126 set_working_fdt_addr(blob); 126 set_working_fdt_addr(blob);
127 127
128 if (argc >= 2) { 128 if (argc >= 2) {
129 int len; 129 int len;
130 int err; 130 int err;
131 /* 131 /*
132 * Optional new length 132 * Optional new length
133 */ 133 */
134 len = simple_strtoul(argv[1], NULL, 16); 134 len = simple_strtoul(argv[1], NULL, 16);
135 if (len < fdt_totalsize(blob)) { 135 if (len < fdt_totalsize(blob)) {
136 printf ("New length %d < existing length %d, " 136 printf ("New length %d < existing length %d, "
137 "ignoring.\n", 137 "ignoring.\n",
138 len, fdt_totalsize(blob)); 138 len, fdt_totalsize(blob));
139 } else { 139 } else {
140 /* 140 /*
141 * Open in place with a new length. 141 * Open in place with a new length.
142 */ 142 */
143 err = fdt_open_into(blob, blob, len); 143 err = fdt_open_into(blob, blob, len);
144 if (err != 0) { 144 if (err != 0) {
145 printf ("libfdt fdt_open_into(): %s\n", 145 printf ("libfdt fdt_open_into(): %s\n",
146 fdt_strerror(err)); 146 fdt_strerror(err));
147 } 147 }
148 } 148 }
149 } 149 }
150 150
151 return CMD_RET_SUCCESS; 151 return CMD_RET_SUCCESS;
152 } 152 }
153 153
154 if (!working_fdt) { 154 if (!working_fdt) {
155 puts( 155 puts(
156 "No FDT memory address configured. Please configure\n" 156 "No FDT memory address configured. Please configure\n"
157 "the FDT address via \"fdt addr <address>\" command.\n" 157 "the FDT address via \"fdt addr <address>\" command.\n"
158 "Aborting!\n"); 158 "Aborting!\n");
159 return CMD_RET_FAILURE; 159 return CMD_RET_FAILURE;
160 } 160 }
161 161
162 /* 162 /*
163 * Move the working_fdt 163 * Move the working_fdt
164 */ 164 */
165 if (strncmp(argv[1], "mo", 2) == 0) { 165 if (strncmp(argv[1], "mo", 2) == 0) {
166 struct fdt_header *newaddr; 166 struct fdt_header *newaddr;
167 int len; 167 int len;
168 int err; 168 int err;
169 169
170 if (argc < 4) 170 if (argc < 4)
171 return CMD_RET_USAGE; 171 return CMD_RET_USAGE;
172 172
173 /* 173 /*
174 * Set the address and length of the fdt. 174 * Set the address and length of the fdt.
175 */ 175 */
176 working_fdt = (struct fdt_header *)simple_strtoul(argv[2], NULL, 16); 176 working_fdt = (struct fdt_header *)simple_strtoul(argv[2], NULL, 16);
177 if (!fdt_valid(&working_fdt)) 177 if (!fdt_valid(&working_fdt))
178 return 1; 178 return 1;
179 179
180 newaddr = (struct fdt_header *)simple_strtoul(argv[3],NULL,16); 180 newaddr = (struct fdt_header *)simple_strtoul(argv[3],NULL,16);
181 181
182 /* 182 /*
183 * If the user specifies a length, use that. Otherwise use the 183 * If the user specifies a length, use that. Otherwise use the
184 * current length. 184 * current length.
185 */ 185 */
186 if (argc <= 4) { 186 if (argc <= 4) {
187 len = fdt_totalsize(working_fdt); 187 len = fdt_totalsize(working_fdt);
188 } else { 188 } else {
189 len = simple_strtoul(argv[4], NULL, 16); 189 len = simple_strtoul(argv[4], NULL, 16);
190 if (len < fdt_totalsize(working_fdt)) { 190 if (len < fdt_totalsize(working_fdt)) {
191 printf ("New length 0x%X < existing length " 191 printf ("New length 0x%X < existing length "
192 "0x%X, aborting.\n", 192 "0x%X, aborting.\n",
193 len, fdt_totalsize(working_fdt)); 193 len, fdt_totalsize(working_fdt));
194 return 1; 194 return 1;
195 } 195 }
196 } 196 }
197 197
198 /* 198 /*
199 * Copy to the new location. 199 * Copy to the new location.
200 */ 200 */
201 err = fdt_open_into(working_fdt, newaddr, len); 201 err = fdt_open_into(working_fdt, newaddr, len);
202 if (err != 0) { 202 if (err != 0) {
203 printf ("libfdt fdt_open_into(): %s\n", 203 printf ("libfdt fdt_open_into(): %s\n",
204 fdt_strerror(err)); 204 fdt_strerror(err));
205 return 1; 205 return 1;
206 } 206 }
207 working_fdt = newaddr; 207 working_fdt = newaddr;
208 208
209 /* 209 /*
210 * Make a new node 210 * Make a new node
211 */ 211 */
212 } else if (strncmp(argv[1], "mk", 2) == 0) { 212 } else if (strncmp(argv[1], "mk", 2) == 0) {
213 char *pathp; /* path */ 213 char *pathp; /* path */
214 char *nodep; /* new node to add */ 214 char *nodep; /* new node to add */
215 int nodeoffset; /* node offset from libfdt */ 215 int nodeoffset; /* node offset from libfdt */
216 int err; 216 int err;
217 217
218 /* 218 /*
219 * Parameters: Node path, new node to be appended to the path. 219 * Parameters: Node path, new node to be appended to the path.
220 */ 220 */
221 if (argc < 4) 221 if (argc < 4)
222 return CMD_RET_USAGE; 222 return CMD_RET_USAGE;
223 223
224 pathp = argv[2]; 224 pathp = argv[2];
225 nodep = argv[3]; 225 nodep = argv[3];
226 226
227 nodeoffset = fdt_path_offset (working_fdt, pathp); 227 nodeoffset = fdt_path_offset (working_fdt, pathp);
228 if (nodeoffset < 0) { 228 if (nodeoffset < 0) {
229 /* 229 /*
230 * Not found or something else bad happened. 230 * Not found or something else bad happened.
231 */ 231 */
232 printf ("libfdt fdt_path_offset() returned %s\n", 232 printf ("libfdt fdt_path_offset() returned %s\n",
233 fdt_strerror(nodeoffset)); 233 fdt_strerror(nodeoffset));
234 return 1; 234 return 1;
235 } 235 }
236 err = fdt_add_subnode(working_fdt, nodeoffset, nodep); 236 err = fdt_add_subnode(working_fdt, nodeoffset, nodep);
237 if (err < 0) { 237 if (err < 0) {
238 printf ("libfdt fdt_add_subnode(): %s\n", 238 printf ("libfdt fdt_add_subnode(): %s\n",
239 fdt_strerror(err)); 239 fdt_strerror(err));
240 return 1; 240 return 1;
241 } 241 }
242 242
243 /* 243 /*
244 * Set the value of a property in the working_fdt. 244 * Set the value of a property in the working_fdt.
245 */ 245 */
246 } else if (argv[1][0] == 's') { 246 } else if (argv[1][0] == 's') {
247 char *pathp; /* path */ 247 char *pathp; /* path */
248 char *prop; /* property */ 248 char *prop; /* property */
249 int nodeoffset; /* node offset from libfdt */ 249 int nodeoffset; /* node offset from libfdt */
250 static char data[SCRATCHPAD]; /* storage for the property */ 250 static char data[SCRATCHPAD]; /* storage for the property */
251 int len; /* new length of the property */ 251 int len; /* new length of the property */
252 int ret; /* return value */ 252 int ret; /* return value */
253 253
254 /* 254 /*
255 * Parameters: Node path, property, optional value. 255 * Parameters: Node path, property, optional value.
256 */ 256 */
257 if (argc < 4) 257 if (argc < 4)
258 return CMD_RET_USAGE; 258 return CMD_RET_USAGE;
259 259
260 pathp = argv[2]; 260 pathp = argv[2];
261 prop = argv[3]; 261 prop = argv[3];
262 if (argc == 4) { 262 if (argc == 4) {
263 len = 0; 263 len = 0;
264 } else { 264 } else {
265 ret = fdt_parse_prop(&argv[4], argc - 4, data, &len); 265 ret = fdt_parse_prop(&argv[4], argc - 4, data, &len);
266 if (ret != 0) 266 if (ret != 0)
267 return ret; 267 return ret;
268 } 268 }
269 269
270 nodeoffset = fdt_path_offset (working_fdt, pathp); 270 nodeoffset = fdt_path_offset (working_fdt, pathp);
271 if (nodeoffset < 0) { 271 if (nodeoffset < 0) {
272 /* 272 /*
273 * Not found or something else bad happened. 273 * Not found or something else bad happened.
274 */ 274 */
275 printf ("libfdt fdt_path_offset() returned %s\n", 275 printf ("libfdt fdt_path_offset() returned %s\n",
276 fdt_strerror(nodeoffset)); 276 fdt_strerror(nodeoffset));
277 return 1; 277 return 1;
278 } 278 }
279 279
280 ret = fdt_setprop(working_fdt, nodeoffset, prop, data, len); 280 ret = fdt_setprop(working_fdt, nodeoffset, prop, data, len);
281 if (ret < 0) { 281 if (ret < 0) {
282 printf ("libfdt fdt_setprop(): %s\n", fdt_strerror(ret)); 282 printf ("libfdt fdt_setprop(): %s\n", fdt_strerror(ret));
283 return 1; 283 return 1;
284 } 284 }
285 285
286 /******************************************************************** 286 /********************************************************************
287 * Get the value of a property in the working_fdt. 287 * Get the value of a property in the working_fdt.
288 ********************************************************************/ 288 ********************************************************************/
289 } else if (argv[1][0] == 'g') { 289 } else if (argv[1][0] == 'g') {
290 char *subcmd; /* sub-command */ 290 char *subcmd; /* sub-command */
291 char *pathp; /* path */ 291 char *pathp; /* path */
292 char *prop; /* property */ 292 char *prop; /* property */
293 char *var; /* variable to store result */ 293 char *var; /* variable to store result */
294 int nodeoffset; /* node offset from libfdt */ 294 int nodeoffset; /* node offset from libfdt */
295 const void *nodep; /* property node pointer */ 295 const void *nodep; /* property node pointer */
296 int len = 0; /* new length of the property */ 296 int len = 0; /* new length of the property */
297 297
298 /* 298 /*
299 * Parameters: Node path, property, optional value. 299 * Parameters: Node path, property, optional value.
300 */ 300 */
301 if (argc < 5) 301 if (argc < 5)
302 return CMD_RET_USAGE; 302 return CMD_RET_USAGE;
303 303
304 subcmd = argv[2]; 304 subcmd = argv[2];
305 305
306 if (argc < 6 && subcmd[0] != 's') 306 if (argc < 6 && subcmd[0] != 's')
307 return CMD_RET_USAGE; 307 return CMD_RET_USAGE;
308 308
309 var = argv[3]; 309 var = argv[3];
310 pathp = argv[4]; 310 pathp = argv[4];
311 prop = argv[5]; 311 prop = argv[5];
312 312
313 nodeoffset = fdt_path_offset(working_fdt, pathp); 313 nodeoffset = fdt_path_offset(working_fdt, pathp);
314 if (nodeoffset < 0) { 314 if (nodeoffset < 0) {
315 /* 315 /*
316 * Not found or something else bad happened. 316 * Not found or something else bad happened.
317 */ 317 */
318 printf("libfdt fdt_path_offset() returned %s\n", 318 printf("libfdt fdt_path_offset() returned %s\n",
319 fdt_strerror(nodeoffset)); 319 fdt_strerror(nodeoffset));
320 return 1; 320 return 1;
321 } 321 }
322 322
323 if (subcmd[0] == 'n' || (subcmd[0] == 's' && argc == 5)) { 323 if (subcmd[0] == 'n' || (subcmd[0] == 's' && argc == 5)) {
324 int reqIndex = -1; 324 int reqIndex = -1;
325 int startDepth = fdt_node_depth( 325 int startDepth = fdt_node_depth(
326 working_fdt, nodeoffset); 326 working_fdt, nodeoffset);
327 int curDepth = startDepth; 327 int curDepth = startDepth;
328 int curIndex = -1; 328 int curIndex = -1;
329 int nextNodeOffset = fdt_next_node( 329 int nextNodeOffset = fdt_next_node(
330 working_fdt, nodeoffset, &curDepth); 330 working_fdt, nodeoffset, &curDepth);
331 331
332 if (subcmd[0] == 'n') 332 if (subcmd[0] == 'n')
333 reqIndex = simple_strtoul(argv[5], NULL, 16); 333 reqIndex = simple_strtoul(argv[5], NULL, 16);
334 334
335 while (curDepth > startDepth) { 335 while (curDepth > startDepth) {
336 if (curDepth == startDepth + 1) 336 if (curDepth == startDepth + 1)
337 curIndex++; 337 curIndex++;
338 if (subcmd[0] == 'n' && curIndex == reqIndex) { 338 if (subcmd[0] == 'n' && curIndex == reqIndex) {
339 const char *nodeName = fdt_get_name( 339 const char *nodeName = fdt_get_name(
340 working_fdt, nextNodeOffset, NULL); 340 working_fdt, nextNodeOffset, NULL);
341 341
342 setenv(var, (char *)nodeName); 342 setenv(var, (char *)nodeName);
343 return 0; 343 return 0;
344 } 344 }
345 nextNodeOffset = fdt_next_node( 345 nextNodeOffset = fdt_next_node(
346 working_fdt, nextNodeOffset, &curDepth); 346 working_fdt, nextNodeOffset, &curDepth);
347 if (nextNodeOffset < 0) 347 if (nextNodeOffset < 0)
348 break; 348 break;
349 } 349 }
350 if (subcmd[0] == 's') { 350 if (subcmd[0] == 's') {
351 /* get the num nodes at this level */ 351 /* get the num nodes at this level */
352 setenv_ulong(var, curIndex + 1); 352 setenv_ulong(var, curIndex + 1);
353 } else { 353 } else {
354 /* node index not found */ 354 /* node index not found */
355 printf("libfdt node not found\n"); 355 printf("libfdt node not found\n");
356 return 1; 356 return 1;
357 } 357 }
358 } else { 358 } else {
359 nodep = fdt_getprop( 359 nodep = fdt_getprop(
360 working_fdt, nodeoffset, prop, &len); 360 working_fdt, nodeoffset, prop, &len);
361 if (len == 0) { 361 if (len == 0) {
362 /* no property value */ 362 /* no property value */
363 setenv(var, ""); 363 setenv(var, "");
364 return 0; 364 return 0;
365 } else if (len > 0) { 365 } else if (len > 0) {
366 if (subcmd[0] == 'v') { 366 if (subcmd[0] == 'v') {
367 int ret; 367 int ret;
368 368
369 ret = fdt_value_setenv(nodep, len, var); 369 ret = fdt_value_setenv(nodep, len, var);
370 if (ret != 0) 370 if (ret != 0)
371 return ret; 371 return ret;
372 } else if (subcmd[0] == 'a') { 372 } else if (subcmd[0] == 'a') {
373 /* Get address */ 373 /* Get address */
374 char buf[11]; 374 char buf[11];
375 375
376 sprintf(buf, "0x%p", nodep); 376 sprintf(buf, "0x%p", nodep);
377 setenv(var, buf); 377 setenv(var, buf);
378 } else if (subcmd[0] == 's') { 378 } else if (subcmd[0] == 's') {
379 /* Get size */ 379 /* Get size */
380 char buf[11]; 380 char buf[11];
381 381
382 sprintf(buf, "0x%08X", len); 382 sprintf(buf, "0x%08X", len);
383 setenv(var, buf); 383 setenv(var, buf);
384 } else 384 } else
385 return CMD_RET_USAGE; 385 return CMD_RET_USAGE;
386 return 0; 386 return 0;
387 } else { 387 } else {
388 printf("libfdt fdt_getprop(): %s\n", 388 printf("libfdt fdt_getprop(): %s\n",
389 fdt_strerror(len)); 389 fdt_strerror(len));
390 return 1; 390 return 1;
391 } 391 }
392 } 392 }
393 393
394 /* 394 /*
395 * Print (recursive) / List (single level) 395 * Print (recursive) / List (single level)
396 */ 396 */
397 } else if ((argv[1][0] == 'p') || (argv[1][0] == 'l')) { 397 } else if ((argv[1][0] == 'p') || (argv[1][0] == 'l')) {
398 int depth = MAX_LEVEL; /* how deep to print */ 398 int depth = MAX_LEVEL; /* how deep to print */
399 char *pathp; /* path */ 399 char *pathp; /* path */
400 char *prop; /* property */ 400 char *prop; /* property */
401 int ret; /* return value */ 401 int ret; /* return value */
402 static char root[2] = "/"; 402 static char root[2] = "/";
403 403
404 /* 404 /*
405 * list is an alias for print, but limited to 1 level 405 * list is an alias for print, but limited to 1 level
406 */ 406 */
407 if (argv[1][0] == 'l') { 407 if (argv[1][0] == 'l') {
408 depth = 1; 408 depth = 1;
409 } 409 }
410 410
411 /* 411 /*
412 * Get the starting path. The root node is an oddball, 412 * Get the starting path. The root node is an oddball,
413 * the offset is zero and has no name. 413 * the offset is zero and has no name.
414 */ 414 */
415 if (argc == 2) 415 if (argc == 2)
416 pathp = root; 416 pathp = root;
417 else 417 else
418 pathp = argv[2]; 418 pathp = argv[2];
419 if (argc > 3) 419 if (argc > 3)
420 prop = argv[3]; 420 prop = argv[3];
421 else 421 else
422 prop = NULL; 422 prop = NULL;
423 423
424 ret = fdt_print(pathp, prop, depth); 424 ret = fdt_print(pathp, prop, depth);
425 if (ret != 0) 425 if (ret != 0)
426 return ret; 426 return ret;
427 427
428 /* 428 /*
429 * Remove a property/node 429 * Remove a property/node
430 */ 430 */
431 } else if (strncmp(argv[1], "rm", 2) == 0) { 431 } else if (strncmp(argv[1], "rm", 2) == 0) {
432 int nodeoffset; /* node offset from libfdt */ 432 int nodeoffset; /* node offset from libfdt */
433 int err; 433 int err;
434 434
435 /* 435 /*
436 * Get the path. The root node is an oddball, the offset 436 * Get the path. The root node is an oddball, the offset
437 * is zero and has no name. 437 * is zero and has no name.
438 */ 438 */
439 nodeoffset = fdt_path_offset (working_fdt, argv[2]); 439 nodeoffset = fdt_path_offset (working_fdt, argv[2]);
440 if (nodeoffset < 0) { 440 if (nodeoffset < 0) {
441 /* 441 /*
442 * Not found or something else bad happened. 442 * Not found or something else bad happened.
443 */ 443 */
444 printf ("libfdt fdt_path_offset() returned %s\n", 444 printf ("libfdt fdt_path_offset() returned %s\n",
445 fdt_strerror(nodeoffset)); 445 fdt_strerror(nodeoffset));
446 return 1; 446 return 1;
447 } 447 }
448 /* 448 /*
449 * Do the delete. A fourth parameter means delete a property, 449 * Do the delete. A fourth parameter means delete a property,
450 * otherwise delete the node. 450 * otherwise delete the node.
451 */ 451 */
452 if (argc > 3) { 452 if (argc > 3) {
453 err = fdt_delprop(working_fdt, nodeoffset, argv[3]); 453 err = fdt_delprop(working_fdt, nodeoffset, argv[3]);
454 if (err < 0) { 454 if (err < 0) {
455 printf("libfdt fdt_delprop(): %s\n", 455 printf("libfdt fdt_delprop(): %s\n",
456 fdt_strerror(err)); 456 fdt_strerror(err));
457 return err; 457 return err;
458 } 458 }
459 } else { 459 } else {
460 err = fdt_del_node(working_fdt, nodeoffset); 460 err = fdt_del_node(working_fdt, nodeoffset);
461 if (err < 0) { 461 if (err < 0) {
462 printf("libfdt fdt_del_node(): %s\n", 462 printf("libfdt fdt_del_node(): %s\n",
463 fdt_strerror(err)); 463 fdt_strerror(err));
464 return err; 464 return err;
465 } 465 }
466 } 466 }
467 467
468 /* 468 /*
469 * Display header info 469 * Display header info
470 */ 470 */
471 } else if (argv[1][0] == 'h') { 471 } else if (argv[1][0] == 'h') {
472 u32 version = fdt_version(working_fdt); 472 u32 version = fdt_version(working_fdt);
473 printf("magic:\t\t\t0x%x\n", fdt_magic(working_fdt)); 473 printf("magic:\t\t\t0x%x\n", fdt_magic(working_fdt));
474 printf("totalsize:\t\t0x%x (%d)\n", fdt_totalsize(working_fdt), 474 printf("totalsize:\t\t0x%x (%d)\n", fdt_totalsize(working_fdt),
475 fdt_totalsize(working_fdt)); 475 fdt_totalsize(working_fdt));
476 printf("off_dt_struct:\t\t0x%x\n", 476 printf("off_dt_struct:\t\t0x%x\n",
477 fdt_off_dt_struct(working_fdt)); 477 fdt_off_dt_struct(working_fdt));
478 printf("off_dt_strings:\t\t0x%x\n", 478 printf("off_dt_strings:\t\t0x%x\n",
479 fdt_off_dt_strings(working_fdt)); 479 fdt_off_dt_strings(working_fdt));
480 printf("off_mem_rsvmap:\t\t0x%x\n", 480 printf("off_mem_rsvmap:\t\t0x%x\n",
481 fdt_off_mem_rsvmap(working_fdt)); 481 fdt_off_mem_rsvmap(working_fdt));
482 printf("version:\t\t%d\n", version); 482 printf("version:\t\t%d\n", version);
483 printf("last_comp_version:\t%d\n", 483 printf("last_comp_version:\t%d\n",
484 fdt_last_comp_version(working_fdt)); 484 fdt_last_comp_version(working_fdt));
485 if (version >= 2) 485 if (version >= 2)
486 printf("boot_cpuid_phys:\t0x%x\n", 486 printf("boot_cpuid_phys:\t0x%x\n",
487 fdt_boot_cpuid_phys(working_fdt)); 487 fdt_boot_cpuid_phys(working_fdt));
488 if (version >= 3) 488 if (version >= 3)
489 printf("size_dt_strings:\t0x%x\n", 489 printf("size_dt_strings:\t0x%x\n",
490 fdt_size_dt_strings(working_fdt)); 490 fdt_size_dt_strings(working_fdt));
491 if (version >= 17) 491 if (version >= 17)
492 printf("size_dt_struct:\t\t0x%x\n", 492 printf("size_dt_struct:\t\t0x%x\n",
493 fdt_size_dt_struct(working_fdt)); 493 fdt_size_dt_struct(working_fdt));
494 printf("number mem_rsv:\t\t0x%x\n", 494 printf("number mem_rsv:\t\t0x%x\n",
495 fdt_num_mem_rsv(working_fdt)); 495 fdt_num_mem_rsv(working_fdt));
496 printf("\n"); 496 printf("\n");
497 497
498 /* 498 /*
499 * Set boot cpu id 499 * Set boot cpu id
500 */ 500 */
501 } else if (strncmp(argv[1], "boo", 3) == 0) { 501 } else if (strncmp(argv[1], "boo", 3) == 0) {
502 unsigned long tmp = simple_strtoul(argv[2], NULL, 16); 502 unsigned long tmp = simple_strtoul(argv[2], NULL, 16);
503 fdt_set_boot_cpuid_phys(working_fdt, tmp); 503 fdt_set_boot_cpuid_phys(working_fdt, tmp);
504 504
505 /* 505 /*
506 * memory command 506 * memory command
507 */ 507 */
508 } else if (strncmp(argv[1], "me", 2) == 0) { 508 } else if (strncmp(argv[1], "me", 2) == 0) {
509 uint64_t addr, size; 509 uint64_t addr, size;
510 int err; 510 int err;
511 addr = simple_strtoull(argv[2], NULL, 16); 511 addr = simple_strtoull(argv[2], NULL, 16);
512 size = simple_strtoull(argv[3], NULL, 16); 512 size = simple_strtoull(argv[3], NULL, 16);
513 err = fdt_fixup_memory(working_fdt, addr, size); 513 err = fdt_fixup_memory(working_fdt, addr, size);
514 if (err < 0) 514 if (err < 0)
515 return err; 515 return err;
516 516
517 /* 517 /*
518 * mem reserve commands 518 * mem reserve commands
519 */ 519 */
520 } else if (strncmp(argv[1], "rs", 2) == 0) { 520 } else if (strncmp(argv[1], "rs", 2) == 0) {
521 if (argv[2][0] == 'p') { 521 if (argv[2][0] == 'p') {
522 uint64_t addr, size; 522 uint64_t addr, size;
523 int total = fdt_num_mem_rsv(working_fdt); 523 int total = fdt_num_mem_rsv(working_fdt);
524 int j, err; 524 int j, err;
525 printf("index\t\t start\t\t size\n"); 525 printf("index\t\t start\t\t size\n");
526 printf("-------------------------------" 526 printf("-------------------------------"
527 "-----------------\n"); 527 "-----------------\n");
528 for (j = 0; j < total; j++) { 528 for (j = 0; j < total; j++) {
529 err = fdt_get_mem_rsv(working_fdt, j, &addr, &size); 529 err = fdt_get_mem_rsv(working_fdt, j, &addr, &size);
530 if (err < 0) { 530 if (err < 0) {
531 printf("libfdt fdt_get_mem_rsv(): %s\n", 531 printf("libfdt fdt_get_mem_rsv(): %s\n",
532 fdt_strerror(err)); 532 fdt_strerror(err));
533 return err; 533 return err;
534 } 534 }
535 printf(" %x\t%08x%08x\t%08x%08x\n", j, 535 printf(" %x\t%08x%08x\t%08x%08x\n", j,
536 (u32)(addr >> 32), 536 (u32)(addr >> 32),
537 (u32)(addr & 0xffffffff), 537 (u32)(addr & 0xffffffff),
538 (u32)(size >> 32), 538 (u32)(size >> 32),
539 (u32)(size & 0xffffffff)); 539 (u32)(size & 0xffffffff));
540 } 540 }
541 } else if (argv[2][0] == 'a') { 541 } else if (argv[2][0] == 'a') {
542 uint64_t addr, size; 542 uint64_t addr, size;
543 int err; 543 int err;
544 addr = simple_strtoull(argv[3], NULL, 16); 544 addr = simple_strtoull(argv[3], NULL, 16);
545 size = simple_strtoull(argv[4], NULL, 16); 545 size = simple_strtoull(argv[4], NULL, 16);
546 err = fdt_add_mem_rsv(working_fdt, addr, size); 546 err = fdt_add_mem_rsv(working_fdt, addr, size);
547 547
548 if (err < 0) { 548 if (err < 0) {
549 printf("libfdt fdt_add_mem_rsv(): %s\n", 549 printf("libfdt fdt_add_mem_rsv(): %s\n",
550 fdt_strerror(err)); 550 fdt_strerror(err));
551 return err; 551 return err;
552 } 552 }
553 } else if (argv[2][0] == 'd') { 553 } else if (argv[2][0] == 'd') {
554 unsigned long idx = simple_strtoul(argv[3], NULL, 16); 554 unsigned long idx = simple_strtoul(argv[3], NULL, 16);
555 int err = fdt_del_mem_rsv(working_fdt, idx); 555 int err = fdt_del_mem_rsv(working_fdt, idx);
556 556
557 if (err < 0) { 557 if (err < 0) {
558 printf("libfdt fdt_del_mem_rsv(): %s\n", 558 printf("libfdt fdt_del_mem_rsv(): %s\n",
559 fdt_strerror(err)); 559 fdt_strerror(err));
560 return err; 560 return err;
561 } 561 }
562 } else { 562 } else {
563 /* Unrecognized command */ 563 /* Unrecognized command */
564 return CMD_RET_USAGE; 564 return CMD_RET_USAGE;
565 } 565 }
566 } 566 }
567 #ifdef CONFIG_OF_BOARD_SETUP 567 #ifdef CONFIG_OF_BOARD_SETUP
568 /* Call the board-specific fixup routine */ 568 /* Call the board-specific fixup routine */
569 else if (strncmp(argv[1], "boa", 3) == 0) { 569 else if (strncmp(argv[1], "boa", 3) == 0) {
570 int err = ft_board_setup(working_fdt, gd->bd); 570 int err = ft_board_setup(working_fdt, gd->bd);
571 571
572 if (err) { 572 if (err) {
573 printf("Failed to update board information in FDT: %s\n", 573 printf("Failed to update board information in FDT: %s\n",
574 fdt_strerror(err)); 574 fdt_strerror(err));
575 return CMD_RET_FAILURE; 575 return CMD_RET_FAILURE;
576 } 576 }
577 } 577 }
578 #endif 578 #endif
579 #ifdef CONFIG_OF_SYSTEM_SETUP
580 /* Call the board-specific fixup routine */
581 else if (strncmp(argv[1], "sys", 3) == 0) {
582 int err = ft_system_setup(working_fdt, gd->bd);
583
584 if (err) {
585 printf("Failed to add system information to FDT: %s\n",
586 fdt_strerror(err));
587 return CMD_RET_FAILURE;
588 }
589 }
590 #endif
579 /* Create a chosen node */ 591 /* Create a chosen node */
580 else if (strncmp(argv[1], "cho", 3) == 0) { 592 else if (strncmp(argv[1], "cho", 3) == 0) {
581 unsigned long initrd_start = 0, initrd_end = 0; 593 unsigned long initrd_start = 0, initrd_end = 0;
582 594
583 if ((argc != 2) && (argc != 4)) 595 if ((argc != 2) && (argc != 4))
584 return CMD_RET_USAGE; 596 return CMD_RET_USAGE;
585 597
586 if (argc == 4) { 598 if (argc == 4) {
587 initrd_start = simple_strtoul(argv[2], NULL, 16); 599 initrd_start = simple_strtoul(argv[2], NULL, 16);
588 initrd_end = simple_strtoul(argv[3], NULL, 16); 600 initrd_end = simple_strtoul(argv[3], NULL, 16);
589 } 601 }
590 602
591 fdt_chosen(working_fdt); 603 fdt_chosen(working_fdt);
592 fdt_initrd(working_fdt, initrd_start, initrd_end); 604 fdt_initrd(working_fdt, initrd_start, initrd_end);
593 605
594 #if defined(CONFIG_FIT_SIGNATURE) 606 #if defined(CONFIG_FIT_SIGNATURE)
595 } else if (strncmp(argv[1], "che", 3) == 0) { 607 } else if (strncmp(argv[1], "che", 3) == 0) {
596 int cfg_noffset; 608 int cfg_noffset;
597 int ret; 609 int ret;
598 unsigned long addr; 610 unsigned long addr;
599 struct fdt_header *blob; 611 struct fdt_header *blob;
600 612
601 if (!working_fdt) 613 if (!working_fdt)
602 return CMD_RET_FAILURE; 614 return CMD_RET_FAILURE;
603 615
604 if (argc > 2) { 616 if (argc > 2) {
605 addr = simple_strtoul(argv[2], NULL, 16); 617 addr = simple_strtoul(argv[2], NULL, 16);
606 blob = map_sysmem(addr, 0); 618 blob = map_sysmem(addr, 0);
607 } else { 619 } else {
608 blob = (struct fdt_header *)gd->fdt_blob; 620 blob = (struct fdt_header *)gd->fdt_blob;
609 } 621 }
610 if (!fdt_valid(&blob)) 622 if (!fdt_valid(&blob))
611 return 1; 623 return 1;
612 624
613 gd->fdt_blob = blob; 625 gd->fdt_blob = blob;
614 cfg_noffset = fit_conf_get_node(working_fdt, NULL); 626 cfg_noffset = fit_conf_get_node(working_fdt, NULL);
615 if (!cfg_noffset) { 627 if (!cfg_noffset) {
616 printf("Could not find configuration node: %s\n", 628 printf("Could not find configuration node: %s\n",
617 fdt_strerror(cfg_noffset)); 629 fdt_strerror(cfg_noffset));
618 return CMD_RET_FAILURE; 630 return CMD_RET_FAILURE;
619 } 631 }
620 632
621 ret = fit_config_verify(working_fdt, cfg_noffset); 633 ret = fit_config_verify(working_fdt, cfg_noffset);
622 if (ret == 0) 634 if (ret == 0)
623 return CMD_RET_SUCCESS; 635 return CMD_RET_SUCCESS;
624 else 636 else
625 return CMD_RET_FAILURE; 637 return CMD_RET_FAILURE;
626 #endif 638 #endif
627 639
628 } 640 }
629 /* resize the fdt */ 641 /* resize the fdt */
630 else if (strncmp(argv[1], "re", 2) == 0) { 642 else if (strncmp(argv[1], "re", 2) == 0) {
631 fdt_shrink_to_minimum(working_fdt); 643 fdt_shrink_to_minimum(working_fdt);
632 } 644 }
633 else { 645 else {
634 /* Unrecognized command */ 646 /* Unrecognized command */
635 return CMD_RET_USAGE; 647 return CMD_RET_USAGE;
636 } 648 }
637 649
638 return 0; 650 return 0;
639 } 651 }
640 652
641 /****************************************************************************/ 653 /****************************************************************************/
642 654
643 /** 655 /**
644 * fdt_valid() - Check if an FDT is valid. If not, change it to NULL 656 * fdt_valid() - Check if an FDT is valid. If not, change it to NULL
645 * 657 *
646 * @blobp: Pointer to FDT pointer 658 * @blobp: Pointer to FDT pointer
647 * @return 1 if OK, 0 if bad (in which case *blobp is set to NULL) 659 * @return 1 if OK, 0 if bad (in which case *blobp is set to NULL)
648 */ 660 */
649 static int fdt_valid(struct fdt_header **blobp) 661 static int fdt_valid(struct fdt_header **blobp)
650 { 662 {
651 const void *blob = *blobp; 663 const void *blob = *blobp;
652 int err; 664 int err;
653 665
654 if (blob == NULL) { 666 if (blob == NULL) {
655 printf ("The address of the fdt is invalid (NULL).\n"); 667 printf ("The address of the fdt is invalid (NULL).\n");
656 return 0; 668 return 0;
657 } 669 }
658 670
659 err = fdt_check_header(blob); 671 err = fdt_check_header(blob);
660 if (err == 0) 672 if (err == 0)
661 return 1; /* valid */ 673 return 1; /* valid */
662 674
663 if (err < 0) { 675 if (err < 0) {
664 printf("libfdt fdt_check_header(): %s", fdt_strerror(err)); 676 printf("libfdt fdt_check_header(): %s", fdt_strerror(err));
665 /* 677 /*
666 * Be more informative on bad version. 678 * Be more informative on bad version.
667 */ 679 */
668 if (err == -FDT_ERR_BADVERSION) { 680 if (err == -FDT_ERR_BADVERSION) {
669 if (fdt_version(blob) < 681 if (fdt_version(blob) <
670 FDT_FIRST_SUPPORTED_VERSION) { 682 FDT_FIRST_SUPPORTED_VERSION) {
671 printf (" - too old, fdt %d < %d", 683 printf (" - too old, fdt %d < %d",
672 fdt_version(blob), 684 fdt_version(blob),
673 FDT_FIRST_SUPPORTED_VERSION); 685 FDT_FIRST_SUPPORTED_VERSION);
674 } 686 }
675 if (fdt_last_comp_version(blob) > 687 if (fdt_last_comp_version(blob) >
676 FDT_LAST_SUPPORTED_VERSION) { 688 FDT_LAST_SUPPORTED_VERSION) {
677 printf (" - too new, fdt %d > %d", 689 printf (" - too new, fdt %d > %d",
678 fdt_version(blob), 690 fdt_version(blob),
679 FDT_LAST_SUPPORTED_VERSION); 691 FDT_LAST_SUPPORTED_VERSION);
680 } 692 }
681 } 693 }
682 printf("\n"); 694 printf("\n");
683 *blobp = NULL; 695 *blobp = NULL;
684 return 0; 696 return 0;
685 } 697 }
686 return 1; 698 return 1;
687 } 699 }
688 700
689 /****************************************************************************/ 701 /****************************************************************************/
690 702
691 /* 703 /*
692 * Parse the user's input, partially heuristic. Valid formats: 704 * Parse the user's input, partially heuristic. Valid formats:
693 * <0x00112233 4 05> - an array of cells. Numbers follow standard 705 * <0x00112233 4 05> - an array of cells. Numbers follow standard
694 * C conventions. 706 * C conventions.
695 * [00 11 22 .. nn] - byte stream 707 * [00 11 22 .. nn] - byte stream
696 * "string" - If the the value doesn't start with "<" or "[", it is 708 * "string" - If the the value doesn't start with "<" or "[", it is
697 * treated as a string. Note that the quotes are 709 * treated as a string. Note that the quotes are
698 * stripped by the parser before we get the string. 710 * stripped by the parser before we get the string.
699 * newval: An array of strings containing the new property as specified 711 * newval: An array of strings containing the new property as specified
700 * on the command line 712 * on the command line
701 * count: The number of strings in the array 713 * count: The number of strings in the array
702 * data: A bytestream to be placed in the property 714 * data: A bytestream to be placed in the property
703 * len: The length of the resulting bytestream 715 * len: The length of the resulting bytestream
704 */ 716 */
705 static int fdt_parse_prop(char * const *newval, int count, char *data, int *len) 717 static int fdt_parse_prop(char * const *newval, int count, char *data, int *len)
706 { 718 {
707 char *cp; /* temporary char pointer */ 719 char *cp; /* temporary char pointer */
708 char *newp; /* temporary newval char pointer */ 720 char *newp; /* temporary newval char pointer */
709 unsigned long tmp; /* holds converted values */ 721 unsigned long tmp; /* holds converted values */
710 int stridx = 0; 722 int stridx = 0;
711 723
712 *len = 0; 724 *len = 0;
713 newp = newval[0]; 725 newp = newval[0];
714 726
715 /* An array of cells */ 727 /* An array of cells */
716 if (*newp == '<') { 728 if (*newp == '<') {
717 newp++; 729 newp++;
718 while ((*newp != '>') && (stridx < count)) { 730 while ((*newp != '>') && (stridx < count)) {
719 /* 731 /*
720 * Keep searching until we find that last ">" 732 * Keep searching until we find that last ">"
721 * That way users don't have to escape the spaces 733 * That way users don't have to escape the spaces
722 */ 734 */
723 if (*newp == '\0') { 735 if (*newp == '\0') {
724 newp = newval[++stridx]; 736 newp = newval[++stridx];
725 continue; 737 continue;
726 } 738 }
727 739
728 cp = newp; 740 cp = newp;
729 tmp = simple_strtoul(cp, &newp, 0); 741 tmp = simple_strtoul(cp, &newp, 0);
730 *(__be32 *)data = __cpu_to_be32(tmp); 742 *(__be32 *)data = __cpu_to_be32(tmp);
731 data += 4; 743 data += 4;
732 *len += 4; 744 *len += 4;
733 745
734 /* If the ptr didn't advance, something went wrong */ 746 /* If the ptr didn't advance, something went wrong */
735 if ((newp - cp) <= 0) { 747 if ((newp - cp) <= 0) {
736 printf("Sorry, I could not convert \"%s\"\n", 748 printf("Sorry, I could not convert \"%s\"\n",
737 cp); 749 cp);
738 return 1; 750 return 1;
739 } 751 }
740 752
741 while (*newp == ' ') 753 while (*newp == ' ')
742 newp++; 754 newp++;
743 } 755 }
744 756
745 if (*newp != '>') { 757 if (*newp != '>') {
746 printf("Unexpected character '%c'\n", *newp); 758 printf("Unexpected character '%c'\n", *newp);
747 return 1; 759 return 1;
748 } 760 }
749 } else if (*newp == '[') { 761 } else if (*newp == '[') {
750 /* 762 /*
751 * Byte stream. Convert the values. 763 * Byte stream. Convert the values.
752 */ 764 */
753 newp++; 765 newp++;
754 while ((stridx < count) && (*newp != ']')) { 766 while ((stridx < count) && (*newp != ']')) {
755 while (*newp == ' ') 767 while (*newp == ' ')
756 newp++; 768 newp++;
757 if (*newp == '\0') { 769 if (*newp == '\0') {
758 newp = newval[++stridx]; 770 newp = newval[++stridx];
759 continue; 771 continue;
760 } 772 }
761 if (!isxdigit(*newp)) 773 if (!isxdigit(*newp))
762 break; 774 break;
763 tmp = simple_strtoul(newp, &newp, 16); 775 tmp = simple_strtoul(newp, &newp, 16);
764 *data++ = tmp & 0xFF; 776 *data++ = tmp & 0xFF;
765 *len = *len + 1; 777 *len = *len + 1;
766 } 778 }
767 if (*newp != ']') { 779 if (*newp != ']') {
768 printf("Unexpected character '%c'\n", *newp); 780 printf("Unexpected character '%c'\n", *newp);
769 return 1; 781 return 1;
770 } 782 }
771 } else { 783 } else {
772 /* 784 /*
773 * Assume it is one or more strings. Copy it into our 785 * Assume it is one or more strings. Copy it into our
774 * data area for convenience (including the 786 * data area for convenience (including the
775 * terminating '\0's). 787 * terminating '\0's).
776 */ 788 */
777 while (stridx < count) { 789 while (stridx < count) {
778 size_t length = strlen(newp) + 1; 790 size_t length = strlen(newp) + 1;
779 strcpy(data, newp); 791 strcpy(data, newp);
780 data += length; 792 data += length;
781 *len += length; 793 *len += length;
782 newp = newval[++stridx]; 794 newp = newval[++stridx];
783 } 795 }
784 } 796 }
785 return 0; 797 return 0;
786 } 798 }
787 799
788 /****************************************************************************/ 800 /****************************************************************************/
789 801
790 /* 802 /*
791 * Heuristic to guess if this is a string or concatenated strings. 803 * Heuristic to guess if this is a string or concatenated strings.
792 */ 804 */
793 805
794 static int is_printable_string(const void *data, int len) 806 static int is_printable_string(const void *data, int len)
795 { 807 {
796 const char *s = data; 808 const char *s = data;
797 809
798 /* zero length is not */ 810 /* zero length is not */
799 if (len == 0) 811 if (len == 0)
800 return 0; 812 return 0;
801 813
802 /* must terminate with zero or '\n' */ 814 /* must terminate with zero or '\n' */
803 if (s[len - 1] != '\0' && s[len - 1] != '\n') 815 if (s[len - 1] != '\0' && s[len - 1] != '\n')
804 return 0; 816 return 0;
805 817
806 /* printable or a null byte (concatenated strings) */ 818 /* printable or a null byte (concatenated strings) */
807 while (((*s == '\0') || isprint(*s) || isspace(*s)) && (len > 0)) { 819 while (((*s == '\0') || isprint(*s) || isspace(*s)) && (len > 0)) {
808 /* 820 /*
809 * If we see a null, there are three possibilities: 821 * If we see a null, there are three possibilities:
810 * 1) If len == 1, it is the end of the string, printable 822 * 1) If len == 1, it is the end of the string, printable
811 * 2) Next character also a null, not printable. 823 * 2) Next character also a null, not printable.
812 * 3) Next character not a null, continue to check. 824 * 3) Next character not a null, continue to check.
813 */ 825 */
814 if (s[0] == '\0') { 826 if (s[0] == '\0') {
815 if (len == 1) 827 if (len == 1)
816 return 1; 828 return 1;
817 if (s[1] == '\0') 829 if (s[1] == '\0')
818 return 0; 830 return 0;
819 } 831 }
820 s++; 832 s++;
821 len--; 833 len--;
822 } 834 }
823 835
824 /* Not the null termination, or not done yet: not printable */ 836 /* Not the null termination, or not done yet: not printable */
825 if (*s != '\0' || (len != 0)) 837 if (*s != '\0' || (len != 0))
826 return 0; 838 return 0;
827 839
828 return 1; 840 return 1;
829 } 841 }
830 842
831 843
832 /* 844 /*
833 * Print the property in the best format, a heuristic guess. Print as 845 * Print the property in the best format, a heuristic guess. Print as
834 * a string, concatenated strings, a byte, word, double word, or (if all 846 * a string, concatenated strings, a byte, word, double word, or (if all
835 * else fails) it is printed as a stream of bytes. 847 * else fails) it is printed as a stream of bytes.
836 */ 848 */
837 static void print_data(const void *data, int len) 849 static void print_data(const void *data, int len)
838 { 850 {
839 int j; 851 int j;
840 852
841 /* no data, don't print */ 853 /* no data, don't print */
842 if (len == 0) 854 if (len == 0)
843 return; 855 return;
844 856
845 /* 857 /*
846 * It is a string, but it may have multiple strings (embedded '\0's). 858 * It is a string, but it may have multiple strings (embedded '\0's).
847 */ 859 */
848 if (is_printable_string(data, len)) { 860 if (is_printable_string(data, len)) {
849 puts("\""); 861 puts("\"");
850 j = 0; 862 j = 0;
851 while (j < len) { 863 while (j < len) {
852 if (j > 0) 864 if (j > 0)
853 puts("\", \""); 865 puts("\", \"");
854 puts(data); 866 puts(data);
855 j += strlen(data) + 1; 867 j += strlen(data) + 1;
856 data += strlen(data) + 1; 868 data += strlen(data) + 1;
857 } 869 }
858 puts("\""); 870 puts("\"");
859 return; 871 return;
860 } 872 }
861 873
862 if ((len %4) == 0) { 874 if ((len %4) == 0) {
863 if (len > CONFIG_CMD_FDT_MAX_DUMP) 875 if (len > CONFIG_CMD_FDT_MAX_DUMP)
864 printf("* 0x%p [0x%08x]", data, len); 876 printf("* 0x%p [0x%08x]", data, len);
865 else { 877 else {
866 const __be32 *p; 878 const __be32 *p;
867 879
868 printf("<"); 880 printf("<");
869 for (j = 0, p = data; j < len/4; j++) 881 for (j = 0, p = data; j < len/4; j++)
870 printf("0x%08x%s", fdt32_to_cpu(p[j]), 882 printf("0x%08x%s", fdt32_to_cpu(p[j]),
871 j < (len/4 - 1) ? " " : ""); 883 j < (len/4 - 1) ? " " : "");
872 printf(">"); 884 printf(">");
873 } 885 }
874 } else { /* anything else... hexdump */ 886 } else { /* anything else... hexdump */
875 if (len > CONFIG_CMD_FDT_MAX_DUMP) 887 if (len > CONFIG_CMD_FDT_MAX_DUMP)
876 printf("* 0x%p [0x%08x]", data, len); 888 printf("* 0x%p [0x%08x]", data, len);
877 else { 889 else {
878 const u8 *s; 890 const u8 *s;
879 891
880 printf("["); 892 printf("[");
881 for (j = 0, s = data; j < len; j++) 893 for (j = 0, s = data; j < len; j++)
882 printf("%02x%s", s[j], j < len - 1 ? " " : ""); 894 printf("%02x%s", s[j], j < len - 1 ? " " : "");
883 printf("]"); 895 printf("]");
884 } 896 }
885 } 897 }
886 } 898 }
887 899
888 /****************************************************************************/ 900 /****************************************************************************/
889 901
890 /* 902 /*
891 * Recursively print (a portion of) the working_fdt. The depth parameter 903 * Recursively print (a portion of) the working_fdt. The depth parameter
892 * determines how deeply nested the fdt is printed. 904 * determines how deeply nested the fdt is printed.
893 */ 905 */
894 static int fdt_print(const char *pathp, char *prop, int depth) 906 static int fdt_print(const char *pathp, char *prop, int depth)
895 { 907 {
896 static char tabs[MAX_LEVEL+1] = 908 static char tabs[MAX_LEVEL+1] =
897 "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" 909 "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
898 "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; 910 "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
899 const void *nodep; /* property node pointer */ 911 const void *nodep; /* property node pointer */
900 int nodeoffset; /* node offset from libfdt */ 912 int nodeoffset; /* node offset from libfdt */
901 int nextoffset; /* next node offset from libfdt */ 913 int nextoffset; /* next node offset from libfdt */
902 uint32_t tag; /* tag */ 914 uint32_t tag; /* tag */
903 int len; /* length of the property */ 915 int len; /* length of the property */
904 int level = 0; /* keep track of nesting level */ 916 int level = 0; /* keep track of nesting level */
905 const struct fdt_property *fdt_prop; 917 const struct fdt_property *fdt_prop;
906 918
907 nodeoffset = fdt_path_offset (working_fdt, pathp); 919 nodeoffset = fdt_path_offset (working_fdt, pathp);
908 if (nodeoffset < 0) { 920 if (nodeoffset < 0) {
909 /* 921 /*
910 * Not found or something else bad happened. 922 * Not found or something else bad happened.
911 */ 923 */
912 printf ("libfdt fdt_path_offset() returned %s\n", 924 printf ("libfdt fdt_path_offset() returned %s\n",
913 fdt_strerror(nodeoffset)); 925 fdt_strerror(nodeoffset));
914 return 1; 926 return 1;
915 } 927 }
916 /* 928 /*
917 * The user passed in a property as well as node path. 929 * The user passed in a property as well as node path.
918 * Print only the given property and then return. 930 * Print only the given property and then return.
919 */ 931 */
920 if (prop) { 932 if (prop) {
921 nodep = fdt_getprop (working_fdt, nodeoffset, prop, &len); 933 nodep = fdt_getprop (working_fdt, nodeoffset, prop, &len);
922 if (len == 0) { 934 if (len == 0) {
923 /* no property value */ 935 /* no property value */
924 printf("%s %s\n", pathp, prop); 936 printf("%s %s\n", pathp, prop);
925 return 0; 937 return 0;
926 } else if (len > 0) { 938 } else if (len > 0) {
927 printf("%s = ", prop); 939 printf("%s = ", prop);
928 print_data (nodep, len); 940 print_data (nodep, len);
929 printf("\n"); 941 printf("\n");
930 return 0; 942 return 0;
931 } else { 943 } else {
932 printf ("libfdt fdt_getprop(): %s\n", 944 printf ("libfdt fdt_getprop(): %s\n",
933 fdt_strerror(len)); 945 fdt_strerror(len));
934 return 1; 946 return 1;
935 } 947 }
936 } 948 }
937 949
938 /* 950 /*
939 * The user passed in a node path and no property, 951 * The user passed in a node path and no property,
940 * print the node and all subnodes. 952 * print the node and all subnodes.
941 */ 953 */
942 while(level >= 0) { 954 while(level >= 0) {
943 tag = fdt_next_tag(working_fdt, nodeoffset, &nextoffset); 955 tag = fdt_next_tag(working_fdt, nodeoffset, &nextoffset);
944 switch(tag) { 956 switch(tag) {
945 case FDT_BEGIN_NODE: 957 case FDT_BEGIN_NODE:
946 pathp = fdt_get_name(working_fdt, nodeoffset, NULL); 958 pathp = fdt_get_name(working_fdt, nodeoffset, NULL);
947 if (level <= depth) { 959 if (level <= depth) {
948 if (pathp == NULL) 960 if (pathp == NULL)
949 pathp = "/* NULL pointer error */"; 961 pathp = "/* NULL pointer error */";
950 if (*pathp == '\0') 962 if (*pathp == '\0')
951 pathp = "/"; /* root is nameless */ 963 pathp = "/"; /* root is nameless */
952 printf("%s%s {\n", 964 printf("%s%s {\n",
953 &tabs[MAX_LEVEL - level], pathp); 965 &tabs[MAX_LEVEL - level], pathp);
954 } 966 }
955 level++; 967 level++;
956 if (level >= MAX_LEVEL) { 968 if (level >= MAX_LEVEL) {
957 printf("Nested too deep, aborting.\n"); 969 printf("Nested too deep, aborting.\n");
958 return 1; 970 return 1;
959 } 971 }
960 break; 972 break;
961 case FDT_END_NODE: 973 case FDT_END_NODE:
962 level--; 974 level--;
963 if (level <= depth) 975 if (level <= depth)
964 printf("%s};\n", &tabs[MAX_LEVEL - level]); 976 printf("%s};\n", &tabs[MAX_LEVEL - level]);
965 if (level == 0) { 977 if (level == 0) {
966 level = -1; /* exit the loop */ 978 level = -1; /* exit the loop */
967 } 979 }
968 break; 980 break;
969 case FDT_PROP: 981 case FDT_PROP:
970 fdt_prop = fdt_offset_ptr(working_fdt, nodeoffset, 982 fdt_prop = fdt_offset_ptr(working_fdt, nodeoffset,
971 sizeof(*fdt_prop)); 983 sizeof(*fdt_prop));
972 pathp = fdt_string(working_fdt, 984 pathp = fdt_string(working_fdt,
973 fdt32_to_cpu(fdt_prop->nameoff)); 985 fdt32_to_cpu(fdt_prop->nameoff));
974 len = fdt32_to_cpu(fdt_prop->len); 986 len = fdt32_to_cpu(fdt_prop->len);
975 nodep = fdt_prop->data; 987 nodep = fdt_prop->data;
976 if (len < 0) { 988 if (len < 0) {
977 printf ("libfdt fdt_getprop(): %s\n", 989 printf ("libfdt fdt_getprop(): %s\n",
978 fdt_strerror(len)); 990 fdt_strerror(len));
979 return 1; 991 return 1;
980 } else if (len == 0) { 992 } else if (len == 0) {
981 /* the property has no value */ 993 /* the property has no value */
982 if (level <= depth) 994 if (level <= depth)
983 printf("%s%s;\n", 995 printf("%s%s;\n",
984 &tabs[MAX_LEVEL - level], 996 &tabs[MAX_LEVEL - level],
985 pathp); 997 pathp);
986 } else { 998 } else {
987 if (level <= depth) { 999 if (level <= depth) {
988 printf("%s%s = ", 1000 printf("%s%s = ",
989 &tabs[MAX_LEVEL - level], 1001 &tabs[MAX_LEVEL - level],
990 pathp); 1002 pathp);
991 print_data (nodep, len); 1003 print_data (nodep, len);
992 printf(";\n"); 1004 printf(";\n");
993 } 1005 }
994 } 1006 }
995 break; 1007 break;
996 case FDT_NOP: 1008 case FDT_NOP:
997 printf("%s/* NOP */\n", &tabs[MAX_LEVEL - level]); 1009 printf("%s/* NOP */\n", &tabs[MAX_LEVEL - level]);
998 break; 1010 break;
999 case FDT_END: 1011 case FDT_END:
1000 return 1; 1012 return 1;
1001 default: 1013 default:
1002 if (level <= depth) 1014 if (level <= depth)
1003 printf("Unknown tag 0x%08X\n", tag); 1015 printf("Unknown tag 0x%08X\n", tag);
1004 return 1; 1016 return 1;
1005 } 1017 }
1006 nodeoffset = nextoffset; 1018 nodeoffset = nextoffset;
1007 } 1019 }
1008 return 0; 1020 return 0;
1009 } 1021 }
1010 1022
1011 /********************************************************************/ 1023 /********************************************************************/
1012 #ifdef CONFIG_SYS_LONGHELP 1024 #ifdef CONFIG_SYS_LONGHELP
1013 static char fdt_help_text[] = 1025 static char fdt_help_text[] =
1014 "addr [-c] <addr> [<length>] - Set the [control] fdt location to <addr>\n" 1026 "addr [-c] <addr> [<length>] - Set the [control] fdt location to <addr>\n"
1015 #ifdef CONFIG_OF_BOARD_SETUP 1027 #ifdef CONFIG_OF_BOARD_SETUP
1016 "fdt boardsetup - Do board-specific set up\n" 1028 "fdt boardsetup - Do board-specific set up\n"
1029 #endif
1030 #ifdef CONFIG_OF_SYSTEM_SETUP
1031 "fdt systemsetup - Do system-specific set up\n"
1017 #endif 1032 #endif
1018 "fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active\n" 1033 "fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active\n"
1019 "fdt resize - Resize fdt to size + padding to 4k addr\n" 1034 "fdt resize - Resize fdt to size + padding to 4k addr\n"
1020 "fdt print <path> [<prop>] - Recursive print starting at <path>\n" 1035 "fdt print <path> [<prop>] - Recursive print starting at <path>\n"
1021 "fdt list <path> [<prop>] - Print one level starting at <path>\n" 1036 "fdt list <path> [<prop>] - Print one level starting at <path>\n"
1022 "fdt get value <var> <path> <prop> - Get <property> and store in <var>\n" 1037 "fdt get value <var> <path> <prop> - Get <property> and store in <var>\n"
1023 "fdt get name <var> <path> <index> - Get name of node <index> and store in <var>\n" 1038 "fdt get name <var> <path> <index> - Get name of node <index> and store in <var>\n"
1024 "fdt get addr <var> <path> <prop> - Get start address of <property> and store in <var>\n" 1039 "fdt get addr <var> <path> <prop> - Get start address of <property> and store in <var>\n"
1025 "fdt get size <var> <path> [<prop>] - Get size of [<property>] or num nodes and store in <var>\n" 1040 "fdt get size <var> <path> [<prop>] - Get size of [<property>] or num nodes and store in <var>\n"
1026 "fdt set <path> <prop> [<val>] - Set <property> [to <val>]\n" 1041 "fdt set <path> <prop> [<val>] - Set <property> [to <val>]\n"
1027 "fdt mknode <path> <node> - Create a new node after <path>\n" 1042 "fdt mknode <path> <node> - Create a new node after <path>\n"
1028 "fdt rm <path> [<prop>] - Delete the node or <property>\n" 1043 "fdt rm <path> [<prop>] - Delete the node or <property>\n"
1029 "fdt header - Display header info\n" 1044 "fdt header - Display header info\n"
1030 "fdt bootcpu <id> - Set boot cpuid\n" 1045 "fdt bootcpu <id> - Set boot cpuid\n"
1031 "fdt memory <addr> <size> - Add/Update memory node\n" 1046 "fdt memory <addr> <size> - Add/Update memory node\n"
1032 "fdt rsvmem print - Show current mem reserves\n" 1047 "fdt rsvmem print - Show current mem reserves\n"
1033 "fdt rsvmem add <addr> <size> - Add a mem reserve\n" 1048 "fdt rsvmem add <addr> <size> - Add a mem reserve\n"
1034 "fdt rsvmem delete <index> - Delete a mem reserves\n" 1049 "fdt rsvmem delete <index> - Delete a mem reserves\n"
1035 "fdt chosen [<start> <end>] - Add/update the /chosen branch in the tree\n" 1050 "fdt chosen [<start> <end>] - Add/update the /chosen branch in the tree\n"
1036 " <start>/<end> - initrd start/end addr\n" 1051 " <start>/<end> - initrd start/end addr\n"
1037 #if defined(CONFIG_FIT_SIGNATURE) 1052 #if defined(CONFIG_FIT_SIGNATURE)
1038 "fdt checksign [<addr>] - check FIT signature\n" 1053 "fdt checksign [<addr>] - check FIT signature\n"
1039 " <start> - addr of key blob\n" 1054 " <start> - addr of key blob\n"
1040 " default gd->fdt_blob\n" 1055 " default gd->fdt_blob\n"
1041 #endif 1056 #endif
1042 "NOTE: Dereference aliases by omiting the leading '/', " 1057 "NOTE: Dereference aliases by omiting the leading '/', "
1043 "e.g. fdt print ethernet0."; 1058 "e.g. fdt print ethernet0.";
1044 #endif 1059 #endif
1045 1060
1046 U_BOOT_CMD( 1061 U_BOOT_CMD(
1047 fdt, 255, 0, do_fdt, 1062 fdt, 255, 0, do_fdt,
1048 "flattened device tree utility commands", fdt_help_text 1063 "flattened device tree utility commands", fdt_help_text
1049 ); 1064 );
1050 1065
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. 2 * Copyright (c) 2013, Google Inc.
3 * 3 *
4 * (C) Copyright 2008 Semihalf 4 * (C) Copyright 2008 Semihalf
5 * 5 *
6 * (C) Copyright 2000-2006 6 * (C) Copyright 2000-2006
7 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 7 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 #include <common.h> 12 #include <common.h>
13 #include <fdt_support.h> 13 #include <fdt_support.h>
14 #include <errno.h> 14 #include <errno.h>
15 #include <image.h> 15 #include <image.h>
16 #include <libfdt.h> 16 #include <libfdt.h>
17 #include <asm/io.h> 17 #include <asm/io.h>
18 18
19 #ifndef CONFIG_SYS_FDT_PAD 19 #ifndef CONFIG_SYS_FDT_PAD
20 #define CONFIG_SYS_FDT_PAD 0x3000 20 #define CONFIG_SYS_FDT_PAD 0x3000
21 #endif 21 #endif
22 22
23 DECLARE_GLOBAL_DATA_PTR; 23 DECLARE_GLOBAL_DATA_PTR;
24 24
25 static void fdt_error(const char *msg) 25 static void fdt_error(const char *msg)
26 { 26 {
27 puts("ERROR: "); 27 puts("ERROR: ");
28 puts(msg); 28 puts(msg);
29 puts(" - must RESET the board to recover.\n"); 29 puts(" - must RESET the board to recover.\n");
30 } 30 }
31 31
32 #if defined(CONFIG_IMAGE_FORMAT_LEGACY) 32 #if defined(CONFIG_IMAGE_FORMAT_LEGACY)
33 static const image_header_t *image_get_fdt(ulong fdt_addr) 33 static const image_header_t *image_get_fdt(ulong fdt_addr)
34 { 34 {
35 const image_header_t *fdt_hdr = map_sysmem(fdt_addr, 0); 35 const image_header_t *fdt_hdr = map_sysmem(fdt_addr, 0);
36 36
37 image_print_contents(fdt_hdr); 37 image_print_contents(fdt_hdr);
38 38
39 puts(" Verifying Checksum ... "); 39 puts(" Verifying Checksum ... ");
40 if (!image_check_hcrc(fdt_hdr)) { 40 if (!image_check_hcrc(fdt_hdr)) {
41 fdt_error("fdt header checksum invalid"); 41 fdt_error("fdt header checksum invalid");
42 return NULL; 42 return NULL;
43 } 43 }
44 44
45 if (!image_check_dcrc(fdt_hdr)) { 45 if (!image_check_dcrc(fdt_hdr)) {
46 fdt_error("fdt checksum invalid"); 46 fdt_error("fdt checksum invalid");
47 return NULL; 47 return NULL;
48 } 48 }
49 puts("OK\n"); 49 puts("OK\n");
50 50
51 if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT)) { 51 if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT)) {
52 fdt_error("uImage is not a fdt"); 52 fdt_error("uImage is not a fdt");
53 return NULL; 53 return NULL;
54 } 54 }
55 if (image_get_comp(fdt_hdr) != IH_COMP_NONE) { 55 if (image_get_comp(fdt_hdr) != IH_COMP_NONE) {
56 fdt_error("uImage is compressed"); 56 fdt_error("uImage is compressed");
57 return NULL; 57 return NULL;
58 } 58 }
59 if (fdt_check_header((void *)image_get_data(fdt_hdr)) != 0) { 59 if (fdt_check_header((void *)image_get_data(fdt_hdr)) != 0) {
60 fdt_error("uImage data is not a fdt"); 60 fdt_error("uImage data is not a fdt");
61 return NULL; 61 return NULL;
62 } 62 }
63 return fdt_hdr; 63 return fdt_hdr;
64 } 64 }
65 #endif 65 #endif
66 66
67 /** 67 /**
68 * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable 68 * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
69 * @lmb: pointer to lmb handle, will be used for memory mgmt 69 * @lmb: pointer to lmb handle, will be used for memory mgmt
70 * @fdt_blob: pointer to fdt blob base address 70 * @fdt_blob: pointer to fdt blob base address
71 * 71 *
72 * Adds the memreserve regions in the dtb to the lmb block. Adding the 72 * Adds the memreserve regions in the dtb to the lmb block. Adding the
73 * memreserve regions prevents u-boot from using them to store the initrd 73 * memreserve regions prevents u-boot from using them to store the initrd
74 * or the fdt blob. 74 * or the fdt blob.
75 */ 75 */
76 void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) 76 void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
77 { 77 {
78 uint64_t addr, size; 78 uint64_t addr, size;
79 int i, total; 79 int i, total;
80 80
81 if (fdt_check_header(fdt_blob) != 0) 81 if (fdt_check_header(fdt_blob) != 0)
82 return; 82 return;
83 83
84 total = fdt_num_mem_rsv(fdt_blob); 84 total = fdt_num_mem_rsv(fdt_blob);
85 for (i = 0; i < total; i++) { 85 for (i = 0; i < total; i++) {
86 if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0) 86 if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0)
87 continue; 87 continue;
88 printf(" reserving fdt memory region: addr=%llx size=%llx\n", 88 printf(" reserving fdt memory region: addr=%llx size=%llx\n",
89 (unsigned long long)addr, (unsigned long long)size); 89 (unsigned long long)addr, (unsigned long long)size);
90 lmb_reserve(lmb, addr, size); 90 lmb_reserve(lmb, addr, size);
91 } 91 }
92 } 92 }
93 93
94 /** 94 /**
95 * boot_relocate_fdt - relocate flat device tree 95 * boot_relocate_fdt - relocate flat device tree
96 * @lmb: pointer to lmb handle, will be used for memory mgmt 96 * @lmb: pointer to lmb handle, will be used for memory mgmt
97 * @of_flat_tree: pointer to a char* variable, will hold fdt start address 97 * @of_flat_tree: pointer to a char* variable, will hold fdt start address
98 * @of_size: pointer to a ulong variable, will hold fdt length 98 * @of_size: pointer to a ulong variable, will hold fdt length
99 * 99 *
100 * boot_relocate_fdt() allocates a region of memory within the bootmap and 100 * boot_relocate_fdt() allocates a region of memory within the bootmap and
101 * relocates the of_flat_tree into that region, even if the fdt is already in 101 * relocates the of_flat_tree into that region, even if the fdt is already in
102 * the bootmap. It also expands the size of the fdt by CONFIG_SYS_FDT_PAD 102 * the bootmap. It also expands the size of the fdt by CONFIG_SYS_FDT_PAD
103 * bytes. 103 * bytes.
104 * 104 *
105 * of_flat_tree and of_size are set to final (after relocation) values 105 * of_flat_tree and of_size are set to final (after relocation) values
106 * 106 *
107 * returns: 107 * returns:
108 * 0 - success 108 * 0 - success
109 * 1 - failure 109 * 1 - failure
110 */ 110 */
111 int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size) 111 int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size)
112 { 112 {
113 void *fdt_blob = *of_flat_tree; 113 void *fdt_blob = *of_flat_tree;
114 void *of_start = NULL; 114 void *of_start = NULL;
115 char *fdt_high; 115 char *fdt_high;
116 ulong of_len = 0; 116 ulong of_len = 0;
117 int err; 117 int err;
118 int disable_relocation = 0; 118 int disable_relocation = 0;
119 119
120 /* nothing to do */ 120 /* nothing to do */
121 if (*of_size == 0) 121 if (*of_size == 0)
122 return 0; 122 return 0;
123 123
124 if (fdt_check_header(fdt_blob) != 0) { 124 if (fdt_check_header(fdt_blob) != 0) {
125 fdt_error("image is not a fdt"); 125 fdt_error("image is not a fdt");
126 goto error; 126 goto error;
127 } 127 }
128 128
129 /* position on a 4K boundary before the alloc_current */ 129 /* position on a 4K boundary before the alloc_current */
130 /* Pad the FDT by a specified amount */ 130 /* Pad the FDT by a specified amount */
131 of_len = *of_size + CONFIG_SYS_FDT_PAD; 131 of_len = *of_size + CONFIG_SYS_FDT_PAD;
132 132
133 /* If fdt_high is set use it to select the relocation address */ 133 /* If fdt_high is set use it to select the relocation address */
134 fdt_high = getenv("fdt_high"); 134 fdt_high = getenv("fdt_high");
135 if (fdt_high) { 135 if (fdt_high) {
136 void *desired_addr = (void *)simple_strtoul(fdt_high, NULL, 16); 136 void *desired_addr = (void *)simple_strtoul(fdt_high, NULL, 16);
137 137
138 if (((ulong) desired_addr) == ~0UL) { 138 if (((ulong) desired_addr) == ~0UL) {
139 /* All ones means use fdt in place */ 139 /* All ones means use fdt in place */
140 of_start = fdt_blob; 140 of_start = fdt_blob;
141 lmb_reserve(lmb, (ulong)of_start, of_len); 141 lmb_reserve(lmb, (ulong)of_start, of_len);
142 disable_relocation = 1; 142 disable_relocation = 1;
143 } else if (desired_addr) { 143 } else if (desired_addr) {
144 of_start = 144 of_start =
145 (void *)(ulong) lmb_alloc_base(lmb, of_len, 0x1000, 145 (void *)(ulong) lmb_alloc_base(lmb, of_len, 0x1000,
146 (ulong)desired_addr); 146 (ulong)desired_addr);
147 if (of_start == NULL) { 147 if (of_start == NULL) {
148 puts("Failed using fdt_high value for Device Tree"); 148 puts("Failed using fdt_high value for Device Tree");
149 goto error; 149 goto error;
150 } 150 }
151 } else { 151 } else {
152 of_start = 152 of_start =
153 (void *)(ulong) lmb_alloc(lmb, of_len, 0x1000); 153 (void *)(ulong) lmb_alloc(lmb, of_len, 0x1000);
154 } 154 }
155 } else { 155 } else {
156 of_start = 156 of_start =
157 (void *)(ulong) lmb_alloc_base(lmb, of_len, 0x1000, 157 (void *)(ulong) lmb_alloc_base(lmb, of_len, 0x1000,
158 getenv_bootm_mapsize() 158 getenv_bootm_mapsize()
159 + getenv_bootm_low()); 159 + getenv_bootm_low());
160 } 160 }
161 161
162 if (of_start == NULL) { 162 if (of_start == NULL) {
163 puts("device tree - allocation error\n"); 163 puts("device tree - allocation error\n");
164 goto error; 164 goto error;
165 } 165 }
166 166
167 if (disable_relocation) { 167 if (disable_relocation) {
168 /* 168 /*
169 * We assume there is space after the existing fdt to use 169 * We assume there is space after the existing fdt to use
170 * for padding 170 * for padding
171 */ 171 */
172 fdt_set_totalsize(of_start, of_len); 172 fdt_set_totalsize(of_start, of_len);
173 printf(" Using Device Tree in place at %p, end %p\n", 173 printf(" Using Device Tree in place at %p, end %p\n",
174 of_start, of_start + of_len - 1); 174 of_start, of_start + of_len - 1);
175 } else { 175 } else {
176 debug("## device tree at %p ... %p (len=%ld [0x%lX])\n", 176 debug("## device tree at %p ... %p (len=%ld [0x%lX])\n",
177 fdt_blob, fdt_blob + *of_size - 1, of_len, of_len); 177 fdt_blob, fdt_blob + *of_size - 1, of_len, of_len);
178 178
179 printf(" Loading Device Tree to %p, end %p ... ", 179 printf(" Loading Device Tree to %p, end %p ... ",
180 of_start, of_start + of_len - 1); 180 of_start, of_start + of_len - 1);
181 181
182 err = fdt_open_into(fdt_blob, of_start, of_len); 182 err = fdt_open_into(fdt_blob, of_start, of_len);
183 if (err != 0) { 183 if (err != 0) {
184 fdt_error("fdt move failed"); 184 fdt_error("fdt move failed");
185 goto error; 185 goto error;
186 } 186 }
187 puts("OK\n"); 187 puts("OK\n");
188 } 188 }
189 189
190 *of_flat_tree = of_start; 190 *of_flat_tree = of_start;
191 *of_size = of_len; 191 *of_size = of_len;
192 192
193 set_working_fdt_addr(*of_flat_tree); 193 set_working_fdt_addr(*of_flat_tree);
194 return 0; 194 return 0;
195 195
196 error: 196 error:
197 return 1; 197 return 1;
198 } 198 }
199 199
200 /** 200 /**
201 * boot_get_fdt - main fdt handling routine 201 * boot_get_fdt - main fdt handling routine
202 * @argc: command argument count 202 * @argc: command argument count
203 * @argv: command argument list 203 * @argv: command argument list
204 * @arch: architecture (IH_ARCH_...) 204 * @arch: architecture (IH_ARCH_...)
205 * @images: pointer to the bootm images structure 205 * @images: pointer to the bootm images structure
206 * @of_flat_tree: pointer to a char* variable, will hold fdt start address 206 * @of_flat_tree: pointer to a char* variable, will hold fdt start address
207 * @of_size: pointer to a ulong variable, will hold fdt length 207 * @of_size: pointer to a ulong variable, will hold fdt length
208 * 208 *
209 * boot_get_fdt() is responsible for finding a valid flat device tree image. 209 * boot_get_fdt() is responsible for finding a valid flat device tree image.
210 * Curently supported are the following ramdisk sources: 210 * Curently supported are the following ramdisk sources:
211 * - multicomponent kernel/ramdisk image, 211 * - multicomponent kernel/ramdisk image,
212 * - commandline provided address of decicated ramdisk image. 212 * - commandline provided address of decicated ramdisk image.
213 * 213 *
214 * returns: 214 * returns:
215 * 0, if fdt image was found and valid, or skipped 215 * 0, if fdt image was found and valid, or skipped
216 * of_flat_tree and of_size are set to fdt start address and length if 216 * of_flat_tree and of_size are set to fdt start address and length if
217 * fdt image is found and valid 217 * fdt image is found and valid
218 * 218 *
219 * 1, if fdt image is found but corrupted 219 * 1, if fdt image is found but corrupted
220 * of_flat_tree and of_size are set to 0 if no fdt exists 220 * of_flat_tree and of_size are set to 0 if no fdt exists
221 */ 221 */
222 int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, 222 int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
223 bootm_headers_t *images, char **of_flat_tree, ulong *of_size) 223 bootm_headers_t *images, char **of_flat_tree, ulong *of_size)
224 { 224 {
225 #if defined(CONFIG_IMAGE_FORMAT_LEGACY) 225 #if defined(CONFIG_IMAGE_FORMAT_LEGACY)
226 const image_header_t *fdt_hdr; 226 const image_header_t *fdt_hdr;
227 ulong load, load_end; 227 ulong load, load_end;
228 ulong image_start, image_data, image_end; 228 ulong image_start, image_data, image_end;
229 #endif 229 #endif
230 ulong fdt_addr; 230 ulong fdt_addr;
231 char *fdt_blob = NULL; 231 char *fdt_blob = NULL;
232 void *buf; 232 void *buf;
233 #if defined(CONFIG_FIT) 233 #if defined(CONFIG_FIT)
234 const char *fit_uname_config = images->fit_uname_cfg; 234 const char *fit_uname_config = images->fit_uname_cfg;
235 const char *fit_uname_fdt = NULL; 235 const char *fit_uname_fdt = NULL;
236 ulong default_addr; 236 ulong default_addr;
237 int fdt_noffset; 237 int fdt_noffset;
238 #endif 238 #endif
239 const char *select = NULL; 239 const char *select = NULL;
240 240
241 *of_flat_tree = NULL; 241 *of_flat_tree = NULL;
242 *of_size = 0; 242 *of_size = 0;
243 243
244 if (argc > 2) 244 if (argc > 2)
245 select = argv[2]; 245 select = argv[2];
246 if (select || genimg_has_config(images)) { 246 if (select || genimg_has_config(images)) {
247 #if defined(CONFIG_FIT) 247 #if defined(CONFIG_FIT)
248 if (select) { 248 if (select) {
249 /* 249 /*
250 * If the FDT blob comes from the FIT image and the 250 * If the FDT blob comes from the FIT image and the
251 * FIT image address is omitted in the command line 251 * FIT image address is omitted in the command line
252 * argument, try to use ramdisk or os FIT image 252 * argument, try to use ramdisk or os FIT image
253 * address or default load address. 253 * address or default load address.
254 */ 254 */
255 if (images->fit_uname_rd) 255 if (images->fit_uname_rd)
256 default_addr = (ulong)images->fit_hdr_rd; 256 default_addr = (ulong)images->fit_hdr_rd;
257 else if (images->fit_uname_os) 257 else if (images->fit_uname_os)
258 default_addr = (ulong)images->fit_hdr_os; 258 default_addr = (ulong)images->fit_hdr_os;
259 else 259 else
260 default_addr = load_addr; 260 default_addr = load_addr;
261 261
262 if (fit_parse_conf(select, default_addr, 262 if (fit_parse_conf(select, default_addr,
263 &fdt_addr, &fit_uname_config)) { 263 &fdt_addr, &fit_uname_config)) {
264 debug("* fdt: config '%s' from image at 0x%08lx\n", 264 debug("* fdt: config '%s' from image at 0x%08lx\n",
265 fit_uname_config, fdt_addr); 265 fit_uname_config, fdt_addr);
266 } else if (fit_parse_subimage(select, default_addr, 266 } else if (fit_parse_subimage(select, default_addr,
267 &fdt_addr, &fit_uname_fdt)) { 267 &fdt_addr, &fit_uname_fdt)) {
268 debug("* fdt: subimage '%s' from image at 0x%08lx\n", 268 debug("* fdt: subimage '%s' from image at 0x%08lx\n",
269 fit_uname_fdt, fdt_addr); 269 fit_uname_fdt, fdt_addr);
270 } else 270 } else
271 #endif 271 #endif
272 { 272 {
273 fdt_addr = simple_strtoul(select, NULL, 16); 273 fdt_addr = simple_strtoul(select, NULL, 16);
274 debug("* fdt: cmdline image address = 0x%08lx\n", 274 debug("* fdt: cmdline image address = 0x%08lx\n",
275 fdt_addr); 275 fdt_addr);
276 } 276 }
277 #if defined(CONFIG_FIT) 277 #if defined(CONFIG_FIT)
278 } else { 278 } else {
279 /* use FIT configuration provided in first bootm 279 /* use FIT configuration provided in first bootm
280 * command argument 280 * command argument
281 */ 281 */
282 fdt_addr = map_to_sysmem(images->fit_hdr_os); 282 fdt_addr = map_to_sysmem(images->fit_hdr_os);
283 fdt_noffset = fit_get_node_from_config(images, 283 fdt_noffset = fit_get_node_from_config(images,
284 FIT_FDT_PROP, 284 FIT_FDT_PROP,
285 fdt_addr); 285 fdt_addr);
286 if (fdt_noffset == -ENOLINK) 286 if (fdt_noffset == -ENOLINK)
287 return 0; 287 return 0;
288 else if (fdt_noffset < 0) 288 else if (fdt_noffset < 0)
289 return 1; 289 return 1;
290 } 290 }
291 #endif 291 #endif
292 debug("## Checking for 'FDT'/'FDT Image' at %08lx\n", 292 debug("## Checking for 'FDT'/'FDT Image' at %08lx\n",
293 fdt_addr); 293 fdt_addr);
294 294
295 /* copy from dataflash if needed */ 295 /* copy from dataflash if needed */
296 fdt_addr = genimg_get_image(fdt_addr); 296 fdt_addr = genimg_get_image(fdt_addr);
297 297
298 /* 298 /*
299 * Check if there is an FDT image at the 299 * Check if there is an FDT image at the
300 * address provided in the second bootm argument 300 * address provided in the second bootm argument
301 * check image type, for FIT images get a FIT node. 301 * check image type, for FIT images get a FIT node.
302 */ 302 */
303 buf = map_sysmem(fdt_addr, 0); 303 buf = map_sysmem(fdt_addr, 0);
304 switch (genimg_get_format(buf)) { 304 switch (genimg_get_format(buf)) {
305 #if defined(CONFIG_IMAGE_FORMAT_LEGACY) 305 #if defined(CONFIG_IMAGE_FORMAT_LEGACY)
306 case IMAGE_FORMAT_LEGACY: 306 case IMAGE_FORMAT_LEGACY:
307 /* verify fdt_addr points to a valid image header */ 307 /* verify fdt_addr points to a valid image header */
308 printf("## Flattened Device Tree from Legacy Image at %08lx\n", 308 printf("## Flattened Device Tree from Legacy Image at %08lx\n",
309 fdt_addr); 309 fdt_addr);
310 fdt_hdr = image_get_fdt(fdt_addr); 310 fdt_hdr = image_get_fdt(fdt_addr);
311 if (!fdt_hdr) 311 if (!fdt_hdr)
312 goto error; 312 goto error;
313 313
314 /* 314 /*
315 * move image data to the load address, 315 * move image data to the load address,
316 * make sure we don't overwrite initial image 316 * make sure we don't overwrite initial image
317 */ 317 */
318 image_start = (ulong)fdt_hdr; 318 image_start = (ulong)fdt_hdr;
319 image_data = (ulong)image_get_data(fdt_hdr); 319 image_data = (ulong)image_get_data(fdt_hdr);
320 image_end = image_get_image_end(fdt_hdr); 320 image_end = image_get_image_end(fdt_hdr);
321 321
322 load = image_get_load(fdt_hdr); 322 load = image_get_load(fdt_hdr);
323 load_end = load + image_get_data_size(fdt_hdr); 323 load_end = load + image_get_data_size(fdt_hdr);
324 324
325 if (load == image_start || 325 if (load == image_start ||
326 load == image_data) { 326 load == image_data) {
327 fdt_blob = (char *)image_data; 327 fdt_blob = (char *)image_data;
328 break; 328 break;
329 } 329 }
330 330
331 if ((load < image_end) && (load_end > image_start)) { 331 if ((load < image_end) && (load_end > image_start)) {
332 fdt_error("fdt overwritten"); 332 fdt_error("fdt overwritten");
333 goto error; 333 goto error;
334 } 334 }
335 335
336 debug(" Loading FDT from 0x%08lx to 0x%08lx\n", 336 debug(" Loading FDT from 0x%08lx to 0x%08lx\n",
337 image_data, load); 337 image_data, load);
338 338
339 memmove((void *)load, 339 memmove((void *)load,
340 (void *)image_data, 340 (void *)image_data,
341 image_get_data_size(fdt_hdr)); 341 image_get_data_size(fdt_hdr));
342 342
343 fdt_addr = load; 343 fdt_addr = load;
344 break; 344 break;
345 #endif 345 #endif
346 case IMAGE_FORMAT_FIT: 346 case IMAGE_FORMAT_FIT:
347 /* 347 /*
348 * This case will catch both: new uImage format 348 * This case will catch both: new uImage format
349 * (libfdt based) and raw FDT blob (also libfdt 349 * (libfdt based) and raw FDT blob (also libfdt
350 * based). 350 * based).
351 */ 351 */
352 #if defined(CONFIG_FIT) 352 #if defined(CONFIG_FIT)
353 /* check FDT blob vs FIT blob */ 353 /* check FDT blob vs FIT blob */
354 if (fit_check_format(buf)) { 354 if (fit_check_format(buf)) {
355 ulong load, len; 355 ulong load, len;
356 356
357 fdt_noffset = fit_image_load(images, 357 fdt_noffset = fit_image_load(images,
358 fdt_addr, &fit_uname_fdt, 358 fdt_addr, &fit_uname_fdt,
359 &fit_uname_config, 359 &fit_uname_config,
360 arch, IH_TYPE_FLATDT, 360 arch, IH_TYPE_FLATDT,
361 BOOTSTAGE_ID_FIT_FDT_START, 361 BOOTSTAGE_ID_FIT_FDT_START,
362 FIT_LOAD_OPTIONAL, &load, &len); 362 FIT_LOAD_OPTIONAL, &load, &len);
363 363
364 images->fit_hdr_fdt = map_sysmem(fdt_addr, 0); 364 images->fit_hdr_fdt = map_sysmem(fdt_addr, 0);
365 images->fit_uname_fdt = fit_uname_fdt; 365 images->fit_uname_fdt = fit_uname_fdt;
366 images->fit_noffset_fdt = fdt_noffset; 366 images->fit_noffset_fdt = fdt_noffset;
367 fdt_addr = load; 367 fdt_addr = load;
368 break; 368 break;
369 } else 369 } else
370 #endif 370 #endif
371 { 371 {
372 /* 372 /*
373 * FDT blob 373 * FDT blob
374 */ 374 */
375 debug("* fdt: raw FDT blob\n"); 375 debug("* fdt: raw FDT blob\n");
376 printf("## Flattened Device Tree blob at %08lx\n", 376 printf("## Flattened Device Tree blob at %08lx\n",
377 (long)fdt_addr); 377 (long)fdt_addr);
378 } 378 }
379 break; 379 break;
380 default: 380 default:
381 puts("ERROR: Did not find a cmdline Flattened Device Tree\n"); 381 puts("ERROR: Did not find a cmdline Flattened Device Tree\n");
382 goto error; 382 goto error;
383 } 383 }
384 384
385 printf(" Booting using the fdt blob at %#08lx\n", fdt_addr); 385 printf(" Booting using the fdt blob at %#08lx\n", fdt_addr);
386 fdt_blob = map_sysmem(fdt_addr, 0); 386 fdt_blob = map_sysmem(fdt_addr, 0);
387 } else if (images->legacy_hdr_valid && 387 } else if (images->legacy_hdr_valid &&
388 image_check_type(&images->legacy_hdr_os_copy, 388 image_check_type(&images->legacy_hdr_os_copy,
389 IH_TYPE_MULTI)) { 389 IH_TYPE_MULTI)) {
390 ulong fdt_data, fdt_len; 390 ulong fdt_data, fdt_len;
391 391
392 /* 392 /*
393 * Now check if we have a legacy multi-component image, 393 * Now check if we have a legacy multi-component image,
394 * get second entry data start address and len. 394 * get second entry data start address and len.
395 */ 395 */
396 printf("## Flattened Device Tree from multi component Image at %08lX\n", 396 printf("## Flattened Device Tree from multi component Image at %08lX\n",
397 (ulong)images->legacy_hdr_os); 397 (ulong)images->legacy_hdr_os);
398 398
399 image_multi_getimg(images->legacy_hdr_os, 2, &fdt_data, 399 image_multi_getimg(images->legacy_hdr_os, 2, &fdt_data,
400 &fdt_len); 400 &fdt_len);
401 if (fdt_len) { 401 if (fdt_len) {
402 fdt_blob = (char *)fdt_data; 402 fdt_blob = (char *)fdt_data;
403 printf(" Booting using the fdt at 0x%p\n", fdt_blob); 403 printf(" Booting using the fdt at 0x%p\n", fdt_blob);
404 404
405 if (fdt_check_header(fdt_blob) != 0) { 405 if (fdt_check_header(fdt_blob) != 0) {
406 fdt_error("image is not a fdt"); 406 fdt_error("image is not a fdt");
407 goto error; 407 goto error;
408 } 408 }
409 409
410 if (fdt_totalsize(fdt_blob) != fdt_len) { 410 if (fdt_totalsize(fdt_blob) != fdt_len) {
411 fdt_error("fdt size != image size"); 411 fdt_error("fdt size != image size");
412 goto error; 412 goto error;
413 } 413 }
414 } else { 414 } else {
415 debug("## No Flattened Device Tree\n"); 415 debug("## No Flattened Device Tree\n");
416 goto error; 416 goto error;
417 } 417 }
418 } else { 418 } else {
419 debug("## No Flattened Device Tree\n"); 419 debug("## No Flattened Device Tree\n");
420 goto error; 420 goto error;
421 } 421 }
422 422
423 *of_flat_tree = fdt_blob; 423 *of_flat_tree = fdt_blob;
424 *of_size = fdt_totalsize(fdt_blob); 424 *of_size = fdt_totalsize(fdt_blob);
425 debug(" of_flat_tree at 0x%08lx size 0x%08lx\n", 425 debug(" of_flat_tree at 0x%08lx size 0x%08lx\n",
426 (ulong)*of_flat_tree, *of_size); 426 (ulong)*of_flat_tree, *of_size);
427 427
428 return 0; 428 return 0;
429 429
430 error: 430 error:
431 *of_flat_tree = NULL; 431 *of_flat_tree = NULL;
432 *of_size = 0; 432 *of_size = 0;
433 return 1; 433 return 1;
434 } 434 }
435 435
436 /* 436 /*
437 * Verify the device tree. 437 * Verify the device tree.
438 * 438 *
439 * This function is called after all device tree fix-ups have been enacted, 439 * This function is called after all device tree fix-ups have been enacted,
440 * so that the final device tree can be verified. The definition of "verified" 440 * so that the final device tree can be verified. The definition of "verified"
441 * is up to the specific implementation. However, it generally means that the 441 * is up to the specific implementation. However, it generally means that the
442 * addresses of some of the devices in the device tree are compared with the 442 * addresses of some of the devices in the device tree are compared with the
443 * actual addresses at which U-Boot has placed them. 443 * actual addresses at which U-Boot has placed them.
444 * 444 *
445 * Returns 1 on success, 0 on failure. If 0 is returned, U-boot will halt the 445 * Returns 1 on success, 0 on failure. If 0 is returned, U-boot will halt the
446 * boot process. 446 * boot process.
447 */ 447 */
448 __weak int ft_verify_fdt(void *fdt) 448 __weak int ft_verify_fdt(void *fdt)
449 { 449 {
450 return 1; 450 return 1;
451 } 451 }
452 452
453 __weak int arch_fixup_fdt(void *blob) 453 __weak int arch_fixup_fdt(void *blob)
454 { 454 {
455 return 0; 455 return 0;
456 } 456 }
457 457
458 int image_setup_libfdt(bootm_headers_t *images, void *blob, 458 int image_setup_libfdt(bootm_headers_t *images, void *blob,
459 int of_size, struct lmb *lmb) 459 int of_size, struct lmb *lmb)
460 { 460 {
461 ulong *initrd_start = &images->initrd_start; 461 ulong *initrd_start = &images->initrd_start;
462 ulong *initrd_end = &images->initrd_end; 462 ulong *initrd_end = &images->initrd_end;
463 int ret = -EPERM; 463 int ret = -EPERM;
464 int fdt_ret; 464 int fdt_ret;
465 465
466 if (fdt_chosen(blob) < 0) { 466 if (fdt_chosen(blob) < 0) {
467 printf("ERROR: /chosen node create failed\n"); 467 printf("ERROR: /chosen node create failed\n");
468 goto err; 468 goto err;
469 } 469 }
470 if (arch_fixup_fdt(blob) < 0) { 470 if (arch_fixup_fdt(blob) < 0) {
471 printf("ERROR: arch-specific fdt fixup failed\n"); 471 printf("ERROR: arch-specific fdt fixup failed\n");
472 goto err; 472 goto err;
473 } 473 }
474 if (IMAGE_OF_BOARD_SETUP) { 474 if (IMAGE_OF_BOARD_SETUP) {
475 fdt_ret = ft_board_setup(blob, gd->bd); 475 fdt_ret = ft_board_setup(blob, gd->bd);
476 if (fdt_ret) { 476 if (fdt_ret) {
477 printf("ERROR: board-specific fdt fixup failed: %s\n", 477 printf("ERROR: board-specific fdt fixup failed: %s\n",
478 fdt_strerror(fdt_ret)); 478 fdt_strerror(fdt_ret));
479 goto err; 479 goto err;
480 } 480 }
481 } 481 }
482 if (IMAGE_OF_SYSTEM_SETUP) {
483 if (ft_system_setup(blob, gd->bd)) {
484 printf("ERROR: system-specific fdt fixup failed: %s\n",
485 fdt_strerror(fdt_ret));
486 goto err;
487 }
488 }
482 fdt_fixup_ethernet(blob); 489 fdt_fixup_ethernet(blob);
483 490
484 /* Delete the old LMB reservation */ 491 /* Delete the old LMB reservation */
485 lmb_free(lmb, (phys_addr_t)(u32)(uintptr_t)blob, 492 lmb_free(lmb, (phys_addr_t)(u32)(uintptr_t)blob,
486 (phys_size_t)fdt_totalsize(blob)); 493 (phys_size_t)fdt_totalsize(blob));
487 494
488 ret = fdt_shrink_to_minimum(blob); 495 ret = fdt_shrink_to_minimum(blob);
489 if (ret < 0) 496 if (ret < 0)
490 goto err; 497 goto err;
491 of_size = ret; 498 of_size = ret;
492 499
493 if (*initrd_start && *initrd_end) { 500 if (*initrd_start && *initrd_end) {
494 of_size += FDT_RAMDISK_OVERHEAD; 501 of_size += FDT_RAMDISK_OVERHEAD;
495 fdt_set_totalsize(blob, of_size); 502 fdt_set_totalsize(blob, of_size);
496 } 503 }
497 /* Create a new LMB reservation */ 504 /* Create a new LMB reservation */
498 lmb_reserve(lmb, (ulong)blob, of_size); 505 lmb_reserve(lmb, (ulong)blob, of_size);
499 506
500 fdt_initrd(blob, *initrd_start, *initrd_end); 507 fdt_initrd(blob, *initrd_start, *initrd_end);
501 if (!ft_verify_fdt(blob)) 508 if (!ft_verify_fdt(blob))
502 goto err; 509 goto err;
503 510
504 #if defined(CONFIG_SOC_KEYSTONE) 511 #if defined(CONFIG_SOC_KEYSTONE)
505 if (IMAGE_OF_BOARD_SETUP) 512 if (IMAGE_OF_BOARD_SETUP)
506 ft_board_setup_ex(blob, gd->bd); 513 ft_board_setup_ex(blob, gd->bd);
507 #endif 514 #endif
508 515
509 return 0; 516 return 0;
510 err: 517 err:
511 printf(" - must RESET the board to recover.\n\n"); 518 printf(" - must RESET the board to recover.\n\n");
512 519
513 return ret; 520 return ret;
514 } 521 }
515 522
include/fdt_support.h
1 /* 1 /*
2 * (C) Copyright 2007 2 * (C) Copyright 2007
3 * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com 3 * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
4 * 4 *
5 * SPDX-License-Identifier: GPL-2.0+ 5 * SPDX-License-Identifier: GPL-2.0+
6 */ 6 */
7 7
8 #ifndef __FDT_SUPPORT_H 8 #ifndef __FDT_SUPPORT_H
9 #define __FDT_SUPPORT_H 9 #define __FDT_SUPPORT_H
10 10
11 #ifdef CONFIG_OF_LIBFDT 11 #ifdef CONFIG_OF_LIBFDT
12 12
13 #include <libfdt.h> 13 #include <libfdt.h>
14 14
15 u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell, 15 u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell,
16 const char *prop, const u32 dflt); 16 const char *prop, const u32 dflt);
17 u32 fdt_getprop_u32_default(const void *fdt, const char *path, 17 u32 fdt_getprop_u32_default(const void *fdt, const char *path,
18 const char *prop, const u32 dflt); 18 const char *prop, const u32 dflt);
19 int fdt_chosen(void *fdt); 19 int fdt_chosen(void *fdt);
20 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end); 20 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end);
21 void do_fixup_by_path(void *fdt, const char *path, const char *prop, 21 void do_fixup_by_path(void *fdt, const char *path, const char *prop,
22 const void *val, int len, int create); 22 const void *val, int len, int create);
23 void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, 23 void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop,
24 u32 val, int create); 24 u32 val, int create);
25 25
26 static inline void do_fixup_by_path_string(void *fdt, const char *path, 26 static inline void do_fixup_by_path_string(void *fdt, const char *path,
27 const char *prop, const char *status) 27 const char *prop, const char *status)
28 { 28 {
29 do_fixup_by_path(fdt, path, prop, status, strlen(status) + 1, 1); 29 do_fixup_by_path(fdt, path, prop, status, strlen(status) + 1, 1);
30 } 30 }
31 31
32 void do_fixup_by_prop(void *fdt, 32 void do_fixup_by_prop(void *fdt,
33 const char *pname, const void *pval, int plen, 33 const char *pname, const void *pval, int plen,
34 const char *prop, const void *val, int len, 34 const char *prop, const void *val, int len,
35 int create); 35 int create);
36 void do_fixup_by_prop_u32(void *fdt, 36 void do_fixup_by_prop_u32(void *fdt,
37 const char *pname, const void *pval, int plen, 37 const char *pname, const void *pval, int plen,
38 const char *prop, u32 val, int create); 38 const char *prop, u32 val, int create);
39 void do_fixup_by_compat(void *fdt, const char *compat, 39 void do_fixup_by_compat(void *fdt, const char *compat,
40 const char *prop, const void *val, int len, int create); 40 const char *prop, const void *val, int len, int create);
41 void do_fixup_by_compat_u32(void *fdt, const char *compat, 41 void do_fixup_by_compat_u32(void *fdt, const char *compat,
42 const char *prop, u32 val, int create); 42 const char *prop, u32 val, int create);
43 int fdt_fixup_memory(void *blob, u64 start, u64 size); 43 int fdt_fixup_memory(void *blob, u64 start, u64 size);
44 int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks); 44 int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks);
45 void fdt_fixup_ethernet(void *fdt); 45 void fdt_fixup_ethernet(void *fdt);
46 int fdt_find_and_setprop(void *fdt, const char *node, const char *prop, 46 int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
47 const void *val, int len, int create); 47 const void *val, int len, int create);
48 void fdt_fixup_qe_firmware(void *fdt); 48 void fdt_fixup_qe_firmware(void *fdt);
49 49
50 #if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) 50 #if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB)
51 void fdt_fixup_dr_usb(void *blob, bd_t *bd); 51 void fdt_fixup_dr_usb(void *blob, bd_t *bd);
52 #else 52 #else
53 static inline void fdt_fixup_dr_usb(void *blob, bd_t *bd) {} 53 static inline void fdt_fixup_dr_usb(void *blob, bd_t *bd) {}
54 #endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */ 54 #endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */
55 55
56 #if defined(CONFIG_SYS_FSL_SEC_COMPAT) 56 #if defined(CONFIG_SYS_FSL_SEC_COMPAT)
57 void fdt_fixup_crypto_node(void *blob, int sec_rev); 57 void fdt_fixup_crypto_node(void *blob, int sec_rev);
58 #else 58 #else
59 static inline void fdt_fixup_crypto_node(void *blob, int sec_rev) {} 59 static inline void fdt_fixup_crypto_node(void *blob, int sec_rev) {}
60 #endif 60 #endif
61 61
62 #ifdef CONFIG_PCI 62 #ifdef CONFIG_PCI
63 #include <pci.h> 63 #include <pci.h>
64 int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose); 64 int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose);
65 #endif 65 #endif
66 66
67 int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name); 67 int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name);
68 68
69 /** 69 /**
70 * Add board-specific data to the FDT before booting the OS. 70 * Add board-specific data to the FDT before booting the OS.
71 * 71 *
72 * Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space. 72 * Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
73 * This function is called if CONFIG_OF_BOARD_SETUP is defined 73 * This function is called if CONFIG_OF_BOARD_SETUP is defined
74 * 74 *
75 * @param blob FDT blob to update 75 * @param blob FDT blob to update
76 * @param bd_t Pointer to board data 76 * @param bd_t Pointer to board data
77 * @return 0 if ok, or -FDT_ERR_... on error 77 * @return 0 if ok, or -FDT_ERR_... on error
78 */ 78 */
79 int ft_board_setup(void *blob, bd_t *bd); 79 int ft_board_setup(void *blob, bd_t *bd);
80 80
81 /* 81 /*
82 * The keystone2 SOC requires all 32 bit aliased addresses to be converted 82 * The keystone2 SOC requires all 32 bit aliased addresses to be converted
83 * to their 36 physical format. This has to happen after all fdt nodes 83 * to their 36 physical format. This has to happen after all fdt nodes
84 * are added or modified by the image_setup_libfdt(). The ft_board_setup_ex() 84 * are added or modified by the image_setup_libfdt(). The ft_board_setup_ex()
85 * called at the end of the image_setup_libfdt() is to do that convertion. 85 * called at the end of the image_setup_libfdt() is to do that convertion.
86 */ 86 */
87 void ft_board_setup_ex(void *blob, bd_t *bd); 87 void ft_board_setup_ex(void *blob, bd_t *bd);
88 void ft_cpu_setup(void *blob, bd_t *bd); 88 void ft_cpu_setup(void *blob, bd_t *bd);
89 void ft_pci_setup(void *blob, bd_t *bd); 89 void ft_pci_setup(void *blob, bd_t *bd);
90 90
91 /**
92 * Add system-specific data to the FDT before booting the OS.
93 *
94 * Use CONFIG_SYS_FDT_PAD to ensure there is sufficient space.
95 * This function is called if CONFIG_OF_SYSTEM_SETUP is defined
96 *
97 * @param blob FDT blob to update
98 * @param bd_t Pointer to board data
99 * @return 0 if ok, or -FDT_ERR_... on error
100 */
101 int ft_system_setup(void *blob, bd_t *bd);
102
91 void set_working_fdt_addr(void *addr); 103 void set_working_fdt_addr(void *addr);
92 int fdt_shrink_to_minimum(void *blob); 104 int fdt_shrink_to_minimum(void *blob);
93 int fdt_increase_size(void *fdt, int add_len); 105 int fdt_increase_size(void *fdt, int add_len);
94 106
95 int fdt_fixup_nor_flash_size(void *blob); 107 int fdt_fixup_nor_flash_size(void *blob);
96 108
97 void fdt_fixup_mtdparts(void *fdt, void *node_info, int node_info_size); 109 void fdt_fixup_mtdparts(void *fdt, void *node_info, int node_info_size);
98 void fdt_del_node_and_alias(void *blob, const char *alias); 110 void fdt_del_node_and_alias(void *blob, const char *alias);
99 u64 fdt_translate_address(void *blob, int node_offset, const __be32 *in_addr); 111 u64 fdt_translate_address(void *blob, int node_offset, const __be32 *in_addr);
100 int fdt_node_offset_by_compat_reg(void *blob, const char *compat, 112 int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
101 phys_addr_t compat_off); 113 phys_addr_t compat_off);
102 int fdt_alloc_phandle(void *blob); 114 int fdt_alloc_phandle(void *blob);
103 int fdt_set_phandle(void *fdt, int nodeoffset, uint32_t phandle); 115 int fdt_set_phandle(void *fdt, int nodeoffset, uint32_t phandle);
104 unsigned int fdt_create_phandle(void *fdt, int nodeoffset); 116 unsigned int fdt_create_phandle(void *fdt, int nodeoffset);
105 int fdt_add_edid(void *blob, const char *compat, unsigned char *buf); 117 int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
106 118
107 int fdt_verify_alias_address(void *fdt, int anode, const char *alias, 119 int fdt_verify_alias_address(void *fdt, int anode, const char *alias,
108 u64 addr); 120 u64 addr);
109 u64 fdt_get_base_address(void *fdt, int node); 121 u64 fdt_get_base_address(void *fdt, int node);
110 int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr, 122 int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
111 uint64_t *addr, uint64_t *len); 123 uint64_t *addr, uint64_t *len);
112 124
113 enum fdt_status { 125 enum fdt_status {
114 FDT_STATUS_OKAY, 126 FDT_STATUS_OKAY,
115 FDT_STATUS_DISABLED, 127 FDT_STATUS_DISABLED,
116 FDT_STATUS_FAIL, 128 FDT_STATUS_FAIL,
117 FDT_STATUS_FAIL_ERROR_CODE, 129 FDT_STATUS_FAIL_ERROR_CODE,
118 }; 130 };
119 int fdt_set_node_status(void *fdt, int nodeoffset, 131 int fdt_set_node_status(void *fdt, int nodeoffset,
120 enum fdt_status status, unsigned int error_code); 132 enum fdt_status status, unsigned int error_code);
121 static inline int fdt_status_okay(void *fdt, int nodeoffset) 133 static inline int fdt_status_okay(void *fdt, int nodeoffset)
122 { 134 {
123 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_OKAY, 0); 135 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_OKAY, 0);
124 } 136 }
125 static inline int fdt_status_disabled(void *fdt, int nodeoffset) 137 static inline int fdt_status_disabled(void *fdt, int nodeoffset)
126 { 138 {
127 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_DISABLED, 0); 139 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_DISABLED, 0);
128 } 140 }
129 static inline int fdt_status_fail(void *fdt, int nodeoffset) 141 static inline int fdt_status_fail(void *fdt, int nodeoffset)
130 { 142 {
131 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_FAIL, 0); 143 return fdt_set_node_status(fdt, nodeoffset, FDT_STATUS_FAIL, 0);
132 } 144 }
133 145
134 int fdt_set_status_by_alias(void *fdt, const char *alias, 146 int fdt_set_status_by_alias(void *fdt, const char *alias,
135 enum fdt_status status, unsigned int error_code); 147 enum fdt_status status, unsigned int error_code);
136 static inline int fdt_status_okay_by_alias(void *fdt, const char *alias) 148 static inline int fdt_status_okay_by_alias(void *fdt, const char *alias)
137 { 149 {
138 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_OKAY, 0); 150 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_OKAY, 0);
139 } 151 }
140 static inline int fdt_status_disabled_by_alias(void *fdt, const char *alias) 152 static inline int fdt_status_disabled_by_alias(void *fdt, const char *alias)
141 { 153 {
142 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_DISABLED, 0); 154 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_DISABLED, 0);
143 } 155 }
144 static inline int fdt_status_fail_by_alias(void *fdt, const char *alias) 156 static inline int fdt_status_fail_by_alias(void *fdt, const char *alias)
145 { 157 {
146 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_FAIL, 0); 158 return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_FAIL, 0);
147 } 159 }
148 160
149 /* Helper to read a big number; size is in cells (not bytes) */ 161 /* Helper to read a big number; size is in cells (not bytes) */
150 static inline u64 of_read_number(const fdt32_t *cell, int size) 162 static inline u64 of_read_number(const fdt32_t *cell, int size)
151 { 163 {
152 u64 r = 0; 164 u64 r = 0;
153 while (size--) 165 while (size--)
154 r = (r << 32) | fdt32_to_cpu(*(cell++)); 166 r = (r << 32) | fdt32_to_cpu(*(cell++));
155 return r; 167 return r;
156 } 168 }
157 169
158 void of_bus_default_count_cells(void *blob, int parentoffset, 170 void of_bus_default_count_cells(void *blob, int parentoffset,
159 int *addrc, int *sizec); 171 int *addrc, int *sizec);
160 int ft_verify_fdt(void *fdt); 172 int ft_verify_fdt(void *fdt);
161 int arch_fixup_memory_node(void *blob); 173 int arch_fixup_memory_node(void *blob);
162 174
163 #endif /* ifdef CONFIG_OF_LIBFDT */ 175 #endif /* ifdef CONFIG_OF_LIBFDT */
164 176
165 #ifdef USE_HOSTCC 177 #ifdef USE_HOSTCC
166 int fdtdec_get_int(const void *blob, int node, const char *prop_name, 178 int fdtdec_get_int(const void *blob, int node, const char *prop_name,
167 int default_val); 179 int default_val);
168 #endif 180 #endif
169 #endif /* ifndef __FDT_SUPPORT_H */ 181 #endif /* ifndef __FDT_SUPPORT_H */
170 182
1 /* 1 /*
2 * (C) Copyright 2008 Semihalf 2 * (C) Copyright 2008 Semihalf
3 * 3 *
4 * (C) Copyright 2000-2005 4 * (C) Copyright 2000-2005
5 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 5 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 ******************************************************************** 8 ********************************************************************
9 * NOTE: This header file defines an interface to U-Boot. Including 9 * NOTE: This header file defines an interface to U-Boot. Including
10 * this (unmodified) header file in another file is considered normal 10 * this (unmodified) header file in another file is considered normal
11 * use of U-Boot, and does *not* fall under the heading of "derived 11 * use of U-Boot, and does *not* fall under the heading of "derived
12 * work". 12 * work".
13 ******************************************************************** 13 ********************************************************************
14 */ 14 */
15 15
16 #ifndef __IMAGE_H__ 16 #ifndef __IMAGE_H__
17 #define __IMAGE_H__ 17 #define __IMAGE_H__
18 18
19 #include "compiler.h" 19 #include "compiler.h"
20 #include <asm/byteorder.h> 20 #include <asm/byteorder.h>
21 21
22 /* Define this to avoid #ifdefs later on */ 22 /* Define this to avoid #ifdefs later on */
23 struct lmb; 23 struct lmb;
24 24
25 #ifdef USE_HOSTCC 25 #ifdef USE_HOSTCC
26 26
27 /* new uImage format support enabled on host */ 27 /* new uImage format support enabled on host */
28 #define CONFIG_FIT 1 28 #define CONFIG_FIT 1
29 #define CONFIG_OF_LIBFDT 1 29 #define CONFIG_OF_LIBFDT 1
30 #define CONFIG_FIT_VERBOSE 1 /* enable fit_format_{error,warning}() */ 30 #define CONFIG_FIT_VERBOSE 1 /* enable fit_format_{error,warning}() */
31 31
32 #define IMAGE_ENABLE_IGNORE 0 32 #define IMAGE_ENABLE_IGNORE 0
33 #define IMAGE_INDENT_STRING "" 33 #define IMAGE_INDENT_STRING ""
34 34
35 #else 35 #else
36 36
37 #include <lmb.h> 37 #include <lmb.h>
38 #include <asm/u-boot.h> 38 #include <asm/u-boot.h>
39 #include <command.h> 39 #include <command.h>
40 40
41 /* Take notice of the 'ignore' property for hashes */ 41 /* Take notice of the 'ignore' property for hashes */
42 #define IMAGE_ENABLE_IGNORE 1 42 #define IMAGE_ENABLE_IGNORE 1
43 #define IMAGE_INDENT_STRING " " 43 #define IMAGE_INDENT_STRING " "
44 44
45 #endif /* USE_HOSTCC */ 45 #endif /* USE_HOSTCC */
46 46
47 #if defined(CONFIG_FIT) 47 #if defined(CONFIG_FIT)
48 #include <hash.h> 48 #include <hash.h>
49 #include <libfdt.h> 49 #include <libfdt.h>
50 #include <fdt_support.h> 50 #include <fdt_support.h>
51 # ifdef CONFIG_SPL_BUILD 51 # ifdef CONFIG_SPL_BUILD
52 # ifdef CONFIG_SPL_CRC32_SUPPORT 52 # ifdef CONFIG_SPL_CRC32_SUPPORT
53 # define IMAGE_ENABLE_CRC32 1 53 # define IMAGE_ENABLE_CRC32 1
54 # endif 54 # endif
55 # ifdef CONFIG_SPL_MD5_SUPPORT 55 # ifdef CONFIG_SPL_MD5_SUPPORT
56 # define IMAGE_ENABLE_MD5 1 56 # define IMAGE_ENABLE_MD5 1
57 # endif 57 # endif
58 # ifdef CONFIG_SPL_SHA1_SUPPORT 58 # ifdef CONFIG_SPL_SHA1_SUPPORT
59 # define IMAGE_ENABLE_SHA1 1 59 # define IMAGE_ENABLE_SHA1 1
60 # endif 60 # endif
61 # ifdef CONFIG_SPL_SHA256_SUPPORT 61 # ifdef CONFIG_SPL_SHA256_SUPPORT
62 # define IMAGE_ENABLE_SHA256 1 62 # define IMAGE_ENABLE_SHA256 1
63 # endif 63 # endif
64 # else 64 # else
65 # define CONFIG_CRC32 /* FIT images need CRC32 support */ 65 # define CONFIG_CRC32 /* FIT images need CRC32 support */
66 # define CONFIG_MD5 /* and MD5 */ 66 # define CONFIG_MD5 /* and MD5 */
67 # define CONFIG_SHA1 /* and SHA1 */ 67 # define CONFIG_SHA1 /* and SHA1 */
68 # define CONFIG_SHA256 /* and SHA256 */ 68 # define CONFIG_SHA256 /* and SHA256 */
69 # define IMAGE_ENABLE_CRC32 1 69 # define IMAGE_ENABLE_CRC32 1
70 # define IMAGE_ENABLE_MD5 1 70 # define IMAGE_ENABLE_MD5 1
71 # define IMAGE_ENABLE_SHA1 1 71 # define IMAGE_ENABLE_SHA1 1
72 # define IMAGE_ENABLE_SHA256 1 72 # define IMAGE_ENABLE_SHA256 1
73 # endif 73 # endif
74 74
75 #ifdef CONFIG_FIT_DISABLE_SHA256 75 #ifdef CONFIG_FIT_DISABLE_SHA256
76 #undef CONFIG_SHA256 76 #undef CONFIG_SHA256
77 #undef IMAGE_ENABLE_SHA256 77 #undef IMAGE_ENABLE_SHA256
78 #endif 78 #endif
79 79
80 #ifndef IMAGE_ENABLE_CRC32 80 #ifndef IMAGE_ENABLE_CRC32
81 #define IMAGE_ENABLE_CRC32 0 81 #define IMAGE_ENABLE_CRC32 0
82 #endif 82 #endif
83 83
84 #ifndef IMAGE_ENABLE_MD5 84 #ifndef IMAGE_ENABLE_MD5
85 #define IMAGE_ENABLE_MD5 0 85 #define IMAGE_ENABLE_MD5 0
86 #endif 86 #endif
87 87
88 #ifndef IMAGE_ENABLE_SHA1 88 #ifndef IMAGE_ENABLE_SHA1
89 #define IMAGE_ENABLE_SHA1 0 89 #define IMAGE_ENABLE_SHA1 0
90 #endif 90 #endif
91 91
92 #ifndef IMAGE_ENABLE_SHA256 92 #ifndef IMAGE_ENABLE_SHA256
93 #define IMAGE_ENABLE_SHA256 0 93 #define IMAGE_ENABLE_SHA256 0
94 #endif 94 #endif
95 95
96 #endif /* CONFIG_FIT */ 96 #endif /* CONFIG_FIT */
97 97
98 #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH 98 #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
99 # define IMAGE_ENABLE_RAMDISK_HIGH 1 99 # define IMAGE_ENABLE_RAMDISK_HIGH 1
100 #else 100 #else
101 # define IMAGE_ENABLE_RAMDISK_HIGH 0 101 # define IMAGE_ENABLE_RAMDISK_HIGH 0
102 #endif 102 #endif
103 103
104 #ifdef CONFIG_OF_LIBFDT 104 #ifdef CONFIG_OF_LIBFDT
105 # define IMAGE_ENABLE_OF_LIBFDT 1 105 # define IMAGE_ENABLE_OF_LIBFDT 1
106 #else 106 #else
107 # define IMAGE_ENABLE_OF_LIBFDT 0 107 # define IMAGE_ENABLE_OF_LIBFDT 0
108 #endif 108 #endif
109 109
110 #ifdef CONFIG_SYS_BOOT_GET_CMDLINE 110 #ifdef CONFIG_SYS_BOOT_GET_CMDLINE
111 # define IMAGE_BOOT_GET_CMDLINE 1 111 # define IMAGE_BOOT_GET_CMDLINE 1
112 #else 112 #else
113 # define IMAGE_BOOT_GET_CMDLINE 0 113 # define IMAGE_BOOT_GET_CMDLINE 0
114 #endif 114 #endif
115 115
116 #ifdef CONFIG_OF_BOARD_SETUP 116 #ifdef CONFIG_OF_BOARD_SETUP
117 # define IMAGE_OF_BOARD_SETUP 1 117 # define IMAGE_OF_BOARD_SETUP 1
118 #else 118 #else
119 # define IMAGE_OF_BOARD_SETUP 0 119 # define IMAGE_OF_BOARD_SETUP 0
120 #endif 120 #endif
121 121
122 #ifdef CONFIG_OF_SYSTEM_SETUP
123 # define IMAGE_OF_SYSTEM_SETUP 1
124 #else
125 # define IMAGE_OF_SYSTEM_SETUP 0
126 #endif
127
122 /* 128 /*
123 * Operating System Codes 129 * Operating System Codes
124 */ 130 */
125 #define IH_OS_INVALID 0 /* Invalid OS */ 131 #define IH_OS_INVALID 0 /* Invalid OS */
126 #define IH_OS_OPENBSD 1 /* OpenBSD */ 132 #define IH_OS_OPENBSD 1 /* OpenBSD */
127 #define IH_OS_NETBSD 2 /* NetBSD */ 133 #define IH_OS_NETBSD 2 /* NetBSD */
128 #define IH_OS_FREEBSD 3 /* FreeBSD */ 134 #define IH_OS_FREEBSD 3 /* FreeBSD */
129 #define IH_OS_4_4BSD 4 /* 4.4BSD */ 135 #define IH_OS_4_4BSD 4 /* 4.4BSD */
130 #define IH_OS_LINUX 5 /* Linux */ 136 #define IH_OS_LINUX 5 /* Linux */
131 #define IH_OS_SVR4 6 /* SVR4 */ 137 #define IH_OS_SVR4 6 /* SVR4 */
132 #define IH_OS_ESIX 7 /* Esix */ 138 #define IH_OS_ESIX 7 /* Esix */
133 #define IH_OS_SOLARIS 8 /* Solaris */ 139 #define IH_OS_SOLARIS 8 /* Solaris */
134 #define IH_OS_IRIX 9 /* Irix */ 140 #define IH_OS_IRIX 9 /* Irix */
135 #define IH_OS_SCO 10 /* SCO */ 141 #define IH_OS_SCO 10 /* SCO */
136 #define IH_OS_DELL 11 /* Dell */ 142 #define IH_OS_DELL 11 /* Dell */
137 #define IH_OS_NCR 12 /* NCR */ 143 #define IH_OS_NCR 12 /* NCR */
138 #define IH_OS_LYNXOS 13 /* LynxOS */ 144 #define IH_OS_LYNXOS 13 /* LynxOS */
139 #define IH_OS_VXWORKS 14 /* VxWorks */ 145 #define IH_OS_VXWORKS 14 /* VxWorks */
140 #define IH_OS_PSOS 15 /* pSOS */ 146 #define IH_OS_PSOS 15 /* pSOS */
141 #define IH_OS_QNX 16 /* QNX */ 147 #define IH_OS_QNX 16 /* QNX */
142 #define IH_OS_U_BOOT 17 /* Firmware */ 148 #define IH_OS_U_BOOT 17 /* Firmware */
143 #define IH_OS_RTEMS 18 /* RTEMS */ 149 #define IH_OS_RTEMS 18 /* RTEMS */
144 #define IH_OS_ARTOS 19 /* ARTOS */ 150 #define IH_OS_ARTOS 19 /* ARTOS */
145 #define IH_OS_UNITY 20 /* Unity OS */ 151 #define IH_OS_UNITY 20 /* Unity OS */
146 #define IH_OS_INTEGRITY 21 /* INTEGRITY */ 152 #define IH_OS_INTEGRITY 21 /* INTEGRITY */
147 #define IH_OS_OSE 22 /* OSE */ 153 #define IH_OS_OSE 22 /* OSE */
148 #define IH_OS_PLAN9 23 /* Plan 9 */ 154 #define IH_OS_PLAN9 23 /* Plan 9 */
149 155
150 /* 156 /*
151 * CPU Architecture Codes (supported by Linux) 157 * CPU Architecture Codes (supported by Linux)
152 */ 158 */
153 #define IH_ARCH_INVALID 0 /* Invalid CPU */ 159 #define IH_ARCH_INVALID 0 /* Invalid CPU */
154 #define IH_ARCH_ALPHA 1 /* Alpha */ 160 #define IH_ARCH_ALPHA 1 /* Alpha */
155 #define IH_ARCH_ARM 2 /* ARM */ 161 #define IH_ARCH_ARM 2 /* ARM */
156 #define IH_ARCH_I386 3 /* Intel x86 */ 162 #define IH_ARCH_I386 3 /* Intel x86 */
157 #define IH_ARCH_IA64 4 /* IA64 */ 163 #define IH_ARCH_IA64 4 /* IA64 */
158 #define IH_ARCH_MIPS 5 /* MIPS */ 164 #define IH_ARCH_MIPS 5 /* MIPS */
159 #define IH_ARCH_MIPS64 6 /* MIPS 64 Bit */ 165 #define IH_ARCH_MIPS64 6 /* MIPS 64 Bit */
160 #define IH_ARCH_PPC 7 /* PowerPC */ 166 #define IH_ARCH_PPC 7 /* PowerPC */
161 #define IH_ARCH_S390 8 /* IBM S390 */ 167 #define IH_ARCH_S390 8 /* IBM S390 */
162 #define IH_ARCH_SH 9 /* SuperH */ 168 #define IH_ARCH_SH 9 /* SuperH */
163 #define IH_ARCH_SPARC 10 /* Sparc */ 169 #define IH_ARCH_SPARC 10 /* Sparc */
164 #define IH_ARCH_SPARC64 11 /* Sparc 64 Bit */ 170 #define IH_ARCH_SPARC64 11 /* Sparc 64 Bit */
165 #define IH_ARCH_M68K 12 /* M68K */ 171 #define IH_ARCH_M68K 12 /* M68K */
166 #define IH_ARCH_MICROBLAZE 14 /* MicroBlaze */ 172 #define IH_ARCH_MICROBLAZE 14 /* MicroBlaze */
167 #define IH_ARCH_NIOS2 15 /* Nios-II */ 173 #define IH_ARCH_NIOS2 15 /* Nios-II */
168 #define IH_ARCH_BLACKFIN 16 /* Blackfin */ 174 #define IH_ARCH_BLACKFIN 16 /* Blackfin */
169 #define IH_ARCH_AVR32 17 /* AVR32 */ 175 #define IH_ARCH_AVR32 17 /* AVR32 */
170 #define IH_ARCH_ST200 18 /* STMicroelectronics ST200 */ 176 #define IH_ARCH_ST200 18 /* STMicroelectronics ST200 */
171 #define IH_ARCH_SANDBOX 19 /* Sandbox architecture (test only) */ 177 #define IH_ARCH_SANDBOX 19 /* Sandbox architecture (test only) */
172 #define IH_ARCH_NDS32 20 /* ANDES Technology - NDS32 */ 178 #define IH_ARCH_NDS32 20 /* ANDES Technology - NDS32 */
173 #define IH_ARCH_OPENRISC 21 /* OpenRISC 1000 */ 179 #define IH_ARCH_OPENRISC 21 /* OpenRISC 1000 */
174 #define IH_ARCH_ARM64 22 /* ARM64 */ 180 #define IH_ARCH_ARM64 22 /* ARM64 */
175 #define IH_ARCH_ARC 23 /* Synopsys DesignWare ARC */ 181 #define IH_ARCH_ARC 23 /* Synopsys DesignWare ARC */
176 #define IH_ARCH_X86_64 24 /* AMD x86_64, Intel and Via */ 182 #define IH_ARCH_X86_64 24 /* AMD x86_64, Intel and Via */
177 183
178 /* 184 /*
179 * Image Types 185 * Image Types
180 * 186 *
181 * "Standalone Programs" are directly runnable in the environment 187 * "Standalone Programs" are directly runnable in the environment
182 * provided by U-Boot; it is expected that (if they behave 188 * provided by U-Boot; it is expected that (if they behave
183 * well) you can continue to work in U-Boot after return from 189 * well) you can continue to work in U-Boot after return from
184 * the Standalone Program. 190 * the Standalone Program.
185 * "OS Kernel Images" are usually images of some Embedded OS which 191 * "OS Kernel Images" are usually images of some Embedded OS which
186 * will take over control completely. Usually these programs 192 * will take over control completely. Usually these programs
187 * will install their own set of exception handlers, device 193 * will install their own set of exception handlers, device
188 * drivers, set up the MMU, etc. - this means, that you cannot 194 * drivers, set up the MMU, etc. - this means, that you cannot
189 * expect to re-enter U-Boot except by resetting the CPU. 195 * expect to re-enter U-Boot except by resetting the CPU.
190 * "RAMDisk Images" are more or less just data blocks, and their 196 * "RAMDisk Images" are more or less just data blocks, and their
191 * parameters (address, size) are passed to an OS kernel that is 197 * parameters (address, size) are passed to an OS kernel that is
192 * being started. 198 * being started.
193 * "Multi-File Images" contain several images, typically an OS 199 * "Multi-File Images" contain several images, typically an OS
194 * (Linux) kernel image and one or more data images like 200 * (Linux) kernel image and one or more data images like
195 * RAMDisks. This construct is useful for instance when you want 201 * RAMDisks. This construct is useful for instance when you want
196 * to boot over the network using BOOTP etc., where the boot 202 * to boot over the network using BOOTP etc., where the boot
197 * server provides just a single image file, but you want to get 203 * server provides just a single image file, but you want to get
198 * for instance an OS kernel and a RAMDisk image. 204 * for instance an OS kernel and a RAMDisk image.
199 * 205 *
200 * "Multi-File Images" start with a list of image sizes, each 206 * "Multi-File Images" start with a list of image sizes, each
201 * image size (in bytes) specified by an "uint32_t" in network 207 * image size (in bytes) specified by an "uint32_t" in network
202 * byte order. This list is terminated by an "(uint32_t)0". 208 * byte order. This list is terminated by an "(uint32_t)0".
203 * Immediately after the terminating 0 follow the images, one by 209 * Immediately after the terminating 0 follow the images, one by
204 * one, all aligned on "uint32_t" boundaries (size rounded up to 210 * one, all aligned on "uint32_t" boundaries (size rounded up to
205 * a multiple of 4 bytes - except for the last file). 211 * a multiple of 4 bytes - except for the last file).
206 * 212 *
207 * "Firmware Images" are binary images containing firmware (like 213 * "Firmware Images" are binary images containing firmware (like
208 * U-Boot or FPGA images) which usually will be programmed to 214 * U-Boot or FPGA images) which usually will be programmed to
209 * flash memory. 215 * flash memory.
210 * 216 *
211 * "Script files" are command sequences that will be executed by 217 * "Script files" are command sequences that will be executed by
212 * U-Boot's command interpreter; this feature is especially 218 * U-Boot's command interpreter; this feature is especially
213 * useful when you configure U-Boot to use a real shell (hush) 219 * useful when you configure U-Boot to use a real shell (hush)
214 * as command interpreter (=> Shell Scripts). 220 * as command interpreter (=> Shell Scripts).
215 */ 221 */
216 222
217 #define IH_TYPE_INVALID 0 /* Invalid Image */ 223 #define IH_TYPE_INVALID 0 /* Invalid Image */
218 #define IH_TYPE_STANDALONE 1 /* Standalone Program */ 224 #define IH_TYPE_STANDALONE 1 /* Standalone Program */
219 #define IH_TYPE_KERNEL 2 /* OS Kernel Image */ 225 #define IH_TYPE_KERNEL 2 /* OS Kernel Image */
220 #define IH_TYPE_RAMDISK 3 /* RAMDisk Image */ 226 #define IH_TYPE_RAMDISK 3 /* RAMDisk Image */
221 #define IH_TYPE_MULTI 4 /* Multi-File Image */ 227 #define IH_TYPE_MULTI 4 /* Multi-File Image */
222 #define IH_TYPE_FIRMWARE 5 /* Firmware Image */ 228 #define IH_TYPE_FIRMWARE 5 /* Firmware Image */
223 #define IH_TYPE_SCRIPT 6 /* Script file */ 229 #define IH_TYPE_SCRIPT 6 /* Script file */
224 #define IH_TYPE_FILESYSTEM 7 /* Filesystem Image (any type) */ 230 #define IH_TYPE_FILESYSTEM 7 /* Filesystem Image (any type) */
225 #define IH_TYPE_FLATDT 8 /* Binary Flat Device Tree Blob */ 231 #define IH_TYPE_FLATDT 8 /* Binary Flat Device Tree Blob */
226 #define IH_TYPE_KWBIMAGE 9 /* Kirkwood Boot Image */ 232 #define IH_TYPE_KWBIMAGE 9 /* Kirkwood Boot Image */
227 #define IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */ 233 #define IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */
228 #define IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */ 234 #define IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */
229 #define IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */ 235 #define IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */
230 #define IH_TYPE_AISIMAGE 13 /* TI Davinci AIS Image */ 236 #define IH_TYPE_AISIMAGE 13 /* TI Davinci AIS Image */
231 #define IH_TYPE_KERNEL_NOLOAD 14 /* OS Kernel Image, can run from any load address */ 237 #define IH_TYPE_KERNEL_NOLOAD 14 /* OS Kernel Image, can run from any load address */
232 #define IH_TYPE_PBLIMAGE 15 /* Freescale PBL Boot Image */ 238 #define IH_TYPE_PBLIMAGE 15 /* Freescale PBL Boot Image */
233 #define IH_TYPE_MXSIMAGE 16 /* Freescale MXSBoot Image */ 239 #define IH_TYPE_MXSIMAGE 16 /* Freescale MXSBoot Image */
234 #define IH_TYPE_GPIMAGE 17 /* TI Keystone GPHeader Image */ 240 #define IH_TYPE_GPIMAGE 17 /* TI Keystone GPHeader Image */
235 #define IH_TYPE_ATMELIMAGE 18 /* ATMEL ROM bootable Image */ 241 #define IH_TYPE_ATMELIMAGE 18 /* ATMEL ROM bootable Image */
236 #define IH_TYPE_SOCFPGAIMAGE 19 /* Altera SOCFPGA Preloader */ 242 #define IH_TYPE_SOCFPGAIMAGE 19 /* Altera SOCFPGA Preloader */
237 #define IH_TYPE_X86_SETUP 20 /* x86 setup.bin Image */ 243 #define IH_TYPE_X86_SETUP 20 /* x86 setup.bin Image */
238 244
239 /* 245 /*
240 * Compression Types 246 * Compression Types
241 */ 247 */
242 #define IH_COMP_NONE 0 /* No Compression Used */ 248 #define IH_COMP_NONE 0 /* No Compression Used */
243 #define IH_COMP_GZIP 1 /* gzip Compression Used */ 249 #define IH_COMP_GZIP 1 /* gzip Compression Used */
244 #define IH_COMP_BZIP2 2 /* bzip2 Compression Used */ 250 #define IH_COMP_BZIP2 2 /* bzip2 Compression Used */
245 #define IH_COMP_LZMA 3 /* lzma Compression Used */ 251 #define IH_COMP_LZMA 3 /* lzma Compression Used */
246 #define IH_COMP_LZO 4 /* lzo Compression Used */ 252 #define IH_COMP_LZO 4 /* lzo Compression Used */
247 253
248 #define IH_MAGIC 0x27051956 /* Image Magic Number */ 254 #define IH_MAGIC 0x27051956 /* Image Magic Number */
249 #define IH_NMLEN 32 /* Image Name Length */ 255 #define IH_NMLEN 32 /* Image Name Length */
250 256
251 /* Reused from common.h */ 257 /* Reused from common.h */
252 #define ROUND(a, b) (((a) + (b) - 1) & ~((b) - 1)) 258 #define ROUND(a, b) (((a) + (b) - 1) & ~((b) - 1))
253 259
254 /* 260 /*
255 * Legacy format image header, 261 * Legacy format image header,
256 * all data in network byte order (aka natural aka bigendian). 262 * all data in network byte order (aka natural aka bigendian).
257 */ 263 */
258 typedef struct image_header { 264 typedef struct image_header {
259 __be32 ih_magic; /* Image Header Magic Number */ 265 __be32 ih_magic; /* Image Header Magic Number */
260 __be32 ih_hcrc; /* Image Header CRC Checksum */ 266 __be32 ih_hcrc; /* Image Header CRC Checksum */
261 __be32 ih_time; /* Image Creation Timestamp */ 267 __be32 ih_time; /* Image Creation Timestamp */
262 __be32 ih_size; /* Image Data Size */ 268 __be32 ih_size; /* Image Data Size */
263 __be32 ih_load; /* Data Load Address */ 269 __be32 ih_load; /* Data Load Address */
264 __be32 ih_ep; /* Entry Point Address */ 270 __be32 ih_ep; /* Entry Point Address */
265 __be32 ih_dcrc; /* Image Data CRC Checksum */ 271 __be32 ih_dcrc; /* Image Data CRC Checksum */
266 uint8_t ih_os; /* Operating System */ 272 uint8_t ih_os; /* Operating System */
267 uint8_t ih_arch; /* CPU architecture */ 273 uint8_t ih_arch; /* CPU architecture */
268 uint8_t ih_type; /* Image Type */ 274 uint8_t ih_type; /* Image Type */
269 uint8_t ih_comp; /* Compression Type */ 275 uint8_t ih_comp; /* Compression Type */
270 uint8_t ih_name[IH_NMLEN]; /* Image Name */ 276 uint8_t ih_name[IH_NMLEN]; /* Image Name */
271 } image_header_t; 277 } image_header_t;
272 278
273 typedef struct image_info { 279 typedef struct image_info {
274 ulong start, end; /* start/end of blob */ 280 ulong start, end; /* start/end of blob */
275 ulong image_start, image_len; /* start of image within blob, len of image */ 281 ulong image_start, image_len; /* start of image within blob, len of image */
276 ulong load; /* load addr for the image */ 282 ulong load; /* load addr for the image */
277 uint8_t comp, type, os; /* compression, type of image, os type */ 283 uint8_t comp, type, os; /* compression, type of image, os type */
278 uint8_t arch; /* CPU architecture */ 284 uint8_t arch; /* CPU architecture */
279 } image_info_t; 285 } image_info_t;
280 286
281 /* 287 /*
282 * Legacy and FIT format headers used by do_bootm() and do_bootm_<os>() 288 * Legacy and FIT format headers used by do_bootm() and do_bootm_<os>()
283 * routines. 289 * routines.
284 */ 290 */
285 typedef struct bootm_headers { 291 typedef struct bootm_headers {
286 /* 292 /*
287 * Legacy os image header, if it is a multi component image 293 * Legacy os image header, if it is a multi component image
288 * then boot_get_ramdisk() and get_fdt() will attempt to get 294 * then boot_get_ramdisk() and get_fdt() will attempt to get
289 * data from second and third component accordingly. 295 * data from second and third component accordingly.
290 */ 296 */
291 image_header_t *legacy_hdr_os; /* image header pointer */ 297 image_header_t *legacy_hdr_os; /* image header pointer */
292 image_header_t legacy_hdr_os_copy; /* header copy */ 298 image_header_t legacy_hdr_os_copy; /* header copy */
293 ulong legacy_hdr_valid; 299 ulong legacy_hdr_valid;
294 300
295 #if defined(CONFIG_FIT) 301 #if defined(CONFIG_FIT)
296 const char *fit_uname_cfg; /* configuration node unit name */ 302 const char *fit_uname_cfg; /* configuration node unit name */
297 303
298 void *fit_hdr_os; /* os FIT image header */ 304 void *fit_hdr_os; /* os FIT image header */
299 const char *fit_uname_os; /* os subimage node unit name */ 305 const char *fit_uname_os; /* os subimage node unit name */
300 int fit_noffset_os; /* os subimage node offset */ 306 int fit_noffset_os; /* os subimage node offset */
301 307
302 void *fit_hdr_rd; /* init ramdisk FIT image header */ 308 void *fit_hdr_rd; /* init ramdisk FIT image header */
303 const char *fit_uname_rd; /* init ramdisk subimage node unit name */ 309 const char *fit_uname_rd; /* init ramdisk subimage node unit name */
304 int fit_noffset_rd; /* init ramdisk subimage node offset */ 310 int fit_noffset_rd; /* init ramdisk subimage node offset */
305 311
306 void *fit_hdr_fdt; /* FDT blob FIT image header */ 312 void *fit_hdr_fdt; /* FDT blob FIT image header */
307 const char *fit_uname_fdt; /* FDT blob subimage node unit name */ 313 const char *fit_uname_fdt; /* FDT blob subimage node unit name */
308 int fit_noffset_fdt;/* FDT blob subimage node offset */ 314 int fit_noffset_fdt;/* FDT blob subimage node offset */
309 315
310 void *fit_hdr_setup; /* x86 setup FIT image header */ 316 void *fit_hdr_setup; /* x86 setup FIT image header */
311 const char *fit_uname_setup; /* x86 setup subimage node name */ 317 const char *fit_uname_setup; /* x86 setup subimage node name */
312 int fit_noffset_setup;/* x86 setup subimage node offset */ 318 int fit_noffset_setup;/* x86 setup subimage node offset */
313 #endif 319 #endif
314 320
315 #ifndef USE_HOSTCC 321 #ifndef USE_HOSTCC
316 image_info_t os; /* os image info */ 322 image_info_t os; /* os image info */
317 ulong ep; /* entry point of OS */ 323 ulong ep; /* entry point of OS */
318 324
319 ulong rd_start, rd_end;/* ramdisk start/end */ 325 ulong rd_start, rd_end;/* ramdisk start/end */
320 326
321 char *ft_addr; /* flat dev tree address */ 327 char *ft_addr; /* flat dev tree address */
322 ulong ft_len; /* length of flat device tree */ 328 ulong ft_len; /* length of flat device tree */
323 329
324 ulong initrd_start; 330 ulong initrd_start;
325 ulong initrd_end; 331 ulong initrd_end;
326 ulong cmdline_start; 332 ulong cmdline_start;
327 ulong cmdline_end; 333 ulong cmdline_end;
328 bd_t *kbd; 334 bd_t *kbd;
329 #endif 335 #endif
330 336
331 int verify; /* getenv("verify")[0] != 'n' */ 337 int verify; /* getenv("verify")[0] != 'n' */
332 338
333 #define BOOTM_STATE_START (0x00000001) 339 #define BOOTM_STATE_START (0x00000001)
334 #define BOOTM_STATE_FINDOS (0x00000002) 340 #define BOOTM_STATE_FINDOS (0x00000002)
335 #define BOOTM_STATE_FINDOTHER (0x00000004) 341 #define BOOTM_STATE_FINDOTHER (0x00000004)
336 #define BOOTM_STATE_LOADOS (0x00000008) 342 #define BOOTM_STATE_LOADOS (0x00000008)
337 #define BOOTM_STATE_RAMDISK (0x00000010) 343 #define BOOTM_STATE_RAMDISK (0x00000010)
338 #define BOOTM_STATE_FDT (0x00000020) 344 #define BOOTM_STATE_FDT (0x00000020)
339 #define BOOTM_STATE_OS_CMDLINE (0x00000040) 345 #define BOOTM_STATE_OS_CMDLINE (0x00000040)
340 #define BOOTM_STATE_OS_BD_T (0x00000080) 346 #define BOOTM_STATE_OS_BD_T (0x00000080)
341 #define BOOTM_STATE_OS_PREP (0x00000100) 347 #define BOOTM_STATE_OS_PREP (0x00000100)
342 #define BOOTM_STATE_OS_FAKE_GO (0x00000200) /* 'Almost' run the OS */ 348 #define BOOTM_STATE_OS_FAKE_GO (0x00000200) /* 'Almost' run the OS */
343 #define BOOTM_STATE_OS_GO (0x00000400) 349 #define BOOTM_STATE_OS_GO (0x00000400)
344 int state; 350 int state;
345 351
346 #ifdef CONFIG_LMB 352 #ifdef CONFIG_LMB
347 struct lmb lmb; /* for memory mgmt */ 353 struct lmb lmb; /* for memory mgmt */
348 #endif 354 #endif
349 } bootm_headers_t; 355 } bootm_headers_t;
350 356
351 extern bootm_headers_t images; 357 extern bootm_headers_t images;
352 358
353 /* 359 /*
354 * Some systems (for example LWMON) have very short watchdog periods; 360 * Some systems (for example LWMON) have very short watchdog periods;
355 * we must make sure to split long operations like memmove() or 361 * we must make sure to split long operations like memmove() or
356 * checksum calculations into reasonable chunks. 362 * checksum calculations into reasonable chunks.
357 */ 363 */
358 #ifndef CHUNKSZ 364 #ifndef CHUNKSZ
359 #define CHUNKSZ (64 * 1024) 365 #define CHUNKSZ (64 * 1024)
360 #endif 366 #endif
361 367
362 #ifndef CHUNKSZ_CRC32 368 #ifndef CHUNKSZ_CRC32
363 #define CHUNKSZ_CRC32 (64 * 1024) 369 #define CHUNKSZ_CRC32 (64 * 1024)
364 #endif 370 #endif
365 371
366 #ifndef CHUNKSZ_MD5 372 #ifndef CHUNKSZ_MD5
367 #define CHUNKSZ_MD5 (64 * 1024) 373 #define CHUNKSZ_MD5 (64 * 1024)
368 #endif 374 #endif
369 375
370 #ifndef CHUNKSZ_SHA1 376 #ifndef CHUNKSZ_SHA1
371 #define CHUNKSZ_SHA1 (64 * 1024) 377 #define CHUNKSZ_SHA1 (64 * 1024)
372 #endif 378 #endif
373 379
374 #define uimage_to_cpu(x) be32_to_cpu(x) 380 #define uimage_to_cpu(x) be32_to_cpu(x)
375 #define cpu_to_uimage(x) cpu_to_be32(x) 381 #define cpu_to_uimage(x) cpu_to_be32(x)
376 382
377 /* 383 /*
378 * Translation table for entries of a specific type; used by 384 * Translation table for entries of a specific type; used by
379 * get_table_entry_id() and get_table_entry_name(). 385 * get_table_entry_id() and get_table_entry_name().
380 */ 386 */
381 typedef struct table_entry { 387 typedef struct table_entry {
382 int id; 388 int id;
383 char *sname; /* short (input) name to find table entry */ 389 char *sname; /* short (input) name to find table entry */
384 char *lname; /* long (output) name to print for messages */ 390 char *lname; /* long (output) name to print for messages */
385 } table_entry_t; 391 } table_entry_t;
386 392
387 /* 393 /*
388 * get_table_entry_id() scans the translation table trying to find an 394 * get_table_entry_id() scans the translation table trying to find an
389 * entry that matches the given short name. If a matching entry is 395 * entry that matches the given short name. If a matching entry is
390 * found, it's id is returned to the caller. 396 * found, it's id is returned to the caller.
391 */ 397 */
392 int get_table_entry_id(const table_entry_t *table, 398 int get_table_entry_id(const table_entry_t *table,
393 const char *table_name, const char *name); 399 const char *table_name, const char *name);
394 /* 400 /*
395 * get_table_entry_name() scans the translation table trying to find 401 * get_table_entry_name() scans the translation table trying to find
396 * an entry that matches the given id. If a matching entry is found, 402 * an entry that matches the given id. If a matching entry is found,
397 * its long name is returned to the caller. 403 * its long name is returned to the caller.
398 */ 404 */
399 char *get_table_entry_name(const table_entry_t *table, char *msg, int id); 405 char *get_table_entry_name(const table_entry_t *table, char *msg, int id);
400 406
401 const char *genimg_get_os_name(uint8_t os); 407 const char *genimg_get_os_name(uint8_t os);
402 const char *genimg_get_arch_name(uint8_t arch); 408 const char *genimg_get_arch_name(uint8_t arch);
403 const char *genimg_get_type_name(uint8_t type); 409 const char *genimg_get_type_name(uint8_t type);
404 const char *genimg_get_comp_name(uint8_t comp); 410 const char *genimg_get_comp_name(uint8_t comp);
405 int genimg_get_os_id(const char *name); 411 int genimg_get_os_id(const char *name);
406 int genimg_get_arch_id(const char *name); 412 int genimg_get_arch_id(const char *name);
407 int genimg_get_type_id(const char *name); 413 int genimg_get_type_id(const char *name);
408 int genimg_get_comp_id(const char *name); 414 int genimg_get_comp_id(const char *name);
409 void genimg_print_size(uint32_t size); 415 void genimg_print_size(uint32_t size);
410 416
411 #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || \ 417 #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || \
412 defined(USE_HOSTCC) 418 defined(USE_HOSTCC)
413 #define IMAGE_ENABLE_TIMESTAMP 1 419 #define IMAGE_ENABLE_TIMESTAMP 1
414 #else 420 #else
415 #define IMAGE_ENABLE_TIMESTAMP 0 421 #define IMAGE_ENABLE_TIMESTAMP 0
416 #endif 422 #endif
417 void genimg_print_time(time_t timestamp); 423 void genimg_print_time(time_t timestamp);
418 424
419 /* What to do with a image load address ('load = <> 'in the FIT) */ 425 /* What to do with a image load address ('load = <> 'in the FIT) */
420 enum fit_load_op { 426 enum fit_load_op {
421 FIT_LOAD_IGNORED, /* Ignore load address */ 427 FIT_LOAD_IGNORED, /* Ignore load address */
422 FIT_LOAD_OPTIONAL, /* Can be provided, but optional */ 428 FIT_LOAD_OPTIONAL, /* Can be provided, but optional */
423 FIT_LOAD_OPTIONAL_NON_ZERO, /* Optional, a value of 0 is ignored */ 429 FIT_LOAD_OPTIONAL_NON_ZERO, /* Optional, a value of 0 is ignored */
424 FIT_LOAD_REQUIRED, /* Must be provided */ 430 FIT_LOAD_REQUIRED, /* Must be provided */
425 }; 431 };
426 432
427 int boot_get_setup(bootm_headers_t *images, uint8_t arch, ulong *setup_start, 433 int boot_get_setup(bootm_headers_t *images, uint8_t arch, ulong *setup_start,
428 ulong *setup_len); 434 ulong *setup_len);
429 435
430 #ifndef USE_HOSTCC 436 #ifndef USE_HOSTCC
431 /* Image format types, returned by _get_format() routine */ 437 /* Image format types, returned by _get_format() routine */
432 #define IMAGE_FORMAT_INVALID 0x00 438 #define IMAGE_FORMAT_INVALID 0x00
433 #if defined(CONFIG_IMAGE_FORMAT_LEGACY) 439 #if defined(CONFIG_IMAGE_FORMAT_LEGACY)
434 #define IMAGE_FORMAT_LEGACY 0x01 /* legacy image_header based format */ 440 #define IMAGE_FORMAT_LEGACY 0x01 /* legacy image_header based format */
435 #endif 441 #endif
436 #define IMAGE_FORMAT_FIT 0x02 /* new, libfdt based format */ 442 #define IMAGE_FORMAT_FIT 0x02 /* new, libfdt based format */
437 #define IMAGE_FORMAT_ANDROID 0x03 /* Android boot image */ 443 #define IMAGE_FORMAT_ANDROID 0x03 /* Android boot image */
438 444
439 ulong genimg_get_kernel_addr_fit(char * const img_addr, 445 ulong genimg_get_kernel_addr_fit(char * const img_addr,
440 const char **fit_uname_config, 446 const char **fit_uname_config,
441 const char **fit_uname_kernel); 447 const char **fit_uname_kernel);
442 ulong genimg_get_kernel_addr(char * const img_addr); 448 ulong genimg_get_kernel_addr(char * const img_addr);
443 int genimg_get_format(const void *img_addr); 449 int genimg_get_format(const void *img_addr);
444 int genimg_has_config(bootm_headers_t *images); 450 int genimg_has_config(bootm_headers_t *images);
445 ulong genimg_get_image(ulong img_addr); 451 ulong genimg_get_image(ulong img_addr);
446 452
447 int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, 453 int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
448 uint8_t arch, ulong *rd_start, ulong *rd_end); 454 uint8_t arch, ulong *rd_start, ulong *rd_end);
449 #endif 455 #endif
450 456
451 int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch, 457 int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch,
452 ulong *setup_start, ulong *setup_len); 458 ulong *setup_start, ulong *setup_len);
453 459
454 /** 460 /**
455 * fit_image_load() - load an image from a FIT 461 * fit_image_load() - load an image from a FIT
456 * 462 *
457 * This deals with all aspects of loading an image from a FIT, including 463 * This deals with all aspects of loading an image from a FIT, including
458 * selecting the right image based on configuration, verifying it, printing 464 * selecting the right image based on configuration, verifying it, printing
459 * out progress messages, checking the type/arch/os and optionally copying it 465 * out progress messages, checking the type/arch/os and optionally copying it
460 * to the right load address. 466 * to the right load address.
461 * 467 *
462 * The property to look up is defined by image_type. 468 * The property to look up is defined by image_type.
463 * 469 *
464 * @param images Boot images structure 470 * @param images Boot images structure
465 * @param addr Address of FIT in memory 471 * @param addr Address of FIT in memory
466 * @param fit_unamep On entry this is the requested image name 472 * @param fit_unamep On entry this is the requested image name
467 * (e.g. "kernel@1") or NULL to use the default. On exit 473 * (e.g. "kernel@1") or NULL to use the default. On exit
468 * points to the selected image name 474 * points to the selected image name
469 * @param fit_uname_configp On entry this is the requested configuration 475 * @param fit_uname_configp On entry this is the requested configuration
470 * name (e.g. "conf@1") or NULL to use the default. On 476 * name (e.g. "conf@1") or NULL to use the default. On
471 * exit points to the selected configuration name. 477 * exit points to the selected configuration name.
472 * @param arch Expected architecture (IH_ARCH_...) 478 * @param arch Expected architecture (IH_ARCH_...)
473 * @param image_type Required image type (IH_TYPE_...). If this is 479 * @param image_type Required image type (IH_TYPE_...). If this is
474 * IH_TYPE_KERNEL then we allow IH_TYPE_KERNEL_NOLOAD 480 * IH_TYPE_KERNEL then we allow IH_TYPE_KERNEL_NOLOAD
475 * also. 481 * also.
476 * @param bootstage_id ID of starting bootstage to use for progress updates. 482 * @param bootstage_id ID of starting bootstage to use for progress updates.
477 * This will be added to the BOOTSTAGE_SUB values when 483 * This will be added to the BOOTSTAGE_SUB values when
478 * calling bootstage_mark() 484 * calling bootstage_mark()
479 * @param load_op Decribes what to do with the load address 485 * @param load_op Decribes what to do with the load address
480 * @param datap Returns address of loaded image 486 * @param datap Returns address of loaded image
481 * @param lenp Returns length of loaded image 487 * @param lenp Returns length of loaded image
482 * @return node offset of image, or -ve error code on error 488 * @return node offset of image, or -ve error code on error
483 */ 489 */
484 int fit_image_load(bootm_headers_t *images, ulong addr, 490 int fit_image_load(bootm_headers_t *images, ulong addr,
485 const char **fit_unamep, const char **fit_uname_configp, 491 const char **fit_unamep, const char **fit_uname_configp,
486 int arch, int image_type, int bootstage_id, 492 int arch, int image_type, int bootstage_id,
487 enum fit_load_op load_op, ulong *datap, ulong *lenp); 493 enum fit_load_op load_op, ulong *datap, ulong *lenp);
488 494
489 #ifndef USE_HOSTCC 495 #ifndef USE_HOSTCC
490 /** 496 /**
491 * fit_get_node_from_config() - Look up an image a FIT by type 497 * fit_get_node_from_config() - Look up an image a FIT by type
492 * 498 *
493 * This looks in the selected conf@ node (images->fit_uname_cfg) for a 499 * This looks in the selected conf@ node (images->fit_uname_cfg) for a
494 * particular image type (e.g. "kernel") and then finds the image that is 500 * particular image type (e.g. "kernel") and then finds the image that is
495 * referred to. 501 * referred to.
496 * 502 *
497 * For example, for something like: 503 * For example, for something like:
498 * 504 *
499 * images { 505 * images {
500 * kernel@1 { 506 * kernel@1 {
501 * ... 507 * ...
502 * }; 508 * };
503 * }; 509 * };
504 * configurations { 510 * configurations {
505 * conf@1 { 511 * conf@1 {
506 * kernel = "kernel@1"; 512 * kernel = "kernel@1";
507 * }; 513 * };
508 * }; 514 * };
509 * 515 *
510 * the function will return the node offset of the kernel@1 node, assuming 516 * the function will return the node offset of the kernel@1 node, assuming
511 * that conf@1 is the chosen configuration. 517 * that conf@1 is the chosen configuration.
512 * 518 *
513 * @param images Boot images structure 519 * @param images Boot images structure
514 * @param prop_name Property name to look up (FIT_..._PROP) 520 * @param prop_name Property name to look up (FIT_..._PROP)
515 * @param addr Address of FIT in memory 521 * @param addr Address of FIT in memory
516 */ 522 */
517 int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name, 523 int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name,
518 ulong addr); 524 ulong addr);
519 525
520 int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, 526 int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
521 bootm_headers_t *images, 527 bootm_headers_t *images,
522 char **of_flat_tree, ulong *of_size); 528 char **of_flat_tree, ulong *of_size);
523 void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob); 529 void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob);
524 int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size); 530 int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size);
525 531
526 int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len, 532 int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len,
527 ulong *initrd_start, ulong *initrd_end); 533 ulong *initrd_start, ulong *initrd_end);
528 int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end); 534 int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end);
529 #ifdef CONFIG_SYS_BOOT_GET_KBD 535 #ifdef CONFIG_SYS_BOOT_GET_KBD
530 int boot_get_kbd(struct lmb *lmb, bd_t **kbd); 536 int boot_get_kbd(struct lmb *lmb, bd_t **kbd);
531 #endif /* CONFIG_SYS_BOOT_GET_KBD */ 537 #endif /* CONFIG_SYS_BOOT_GET_KBD */
532 #endif /* !USE_HOSTCC */ 538 #endif /* !USE_HOSTCC */
533 539
534 /*******************************************************************/ 540 /*******************************************************************/
535 /* Legacy format specific code (prefixed with image_) */ 541 /* Legacy format specific code (prefixed with image_) */
536 /*******************************************************************/ 542 /*******************************************************************/
537 static inline uint32_t image_get_header_size(void) 543 static inline uint32_t image_get_header_size(void)
538 { 544 {
539 return (sizeof(image_header_t)); 545 return (sizeof(image_header_t));
540 } 546 }
541 547
542 #define image_get_hdr_l(f) \ 548 #define image_get_hdr_l(f) \
543 static inline uint32_t image_get_##f(const image_header_t *hdr) \ 549 static inline uint32_t image_get_##f(const image_header_t *hdr) \
544 { \ 550 { \
545 return uimage_to_cpu(hdr->ih_##f); \ 551 return uimage_to_cpu(hdr->ih_##f); \
546 } 552 }
547 image_get_hdr_l(magic) /* image_get_magic */ 553 image_get_hdr_l(magic) /* image_get_magic */
548 image_get_hdr_l(hcrc) /* image_get_hcrc */ 554 image_get_hdr_l(hcrc) /* image_get_hcrc */
549 image_get_hdr_l(time) /* image_get_time */ 555 image_get_hdr_l(time) /* image_get_time */
550 image_get_hdr_l(size) /* image_get_size */ 556 image_get_hdr_l(size) /* image_get_size */
551 image_get_hdr_l(load) /* image_get_load */ 557 image_get_hdr_l(load) /* image_get_load */
552 image_get_hdr_l(ep) /* image_get_ep */ 558 image_get_hdr_l(ep) /* image_get_ep */
553 image_get_hdr_l(dcrc) /* image_get_dcrc */ 559 image_get_hdr_l(dcrc) /* image_get_dcrc */
554 560
555 #define image_get_hdr_b(f) \ 561 #define image_get_hdr_b(f) \
556 static inline uint8_t image_get_##f(const image_header_t *hdr) \ 562 static inline uint8_t image_get_##f(const image_header_t *hdr) \
557 { \ 563 { \
558 return hdr->ih_##f; \ 564 return hdr->ih_##f; \
559 } 565 }
560 image_get_hdr_b(os) /* image_get_os */ 566 image_get_hdr_b(os) /* image_get_os */
561 image_get_hdr_b(arch) /* image_get_arch */ 567 image_get_hdr_b(arch) /* image_get_arch */
562 image_get_hdr_b(type) /* image_get_type */ 568 image_get_hdr_b(type) /* image_get_type */
563 image_get_hdr_b(comp) /* image_get_comp */ 569 image_get_hdr_b(comp) /* image_get_comp */
564 570
565 static inline char *image_get_name(const image_header_t *hdr) 571 static inline char *image_get_name(const image_header_t *hdr)
566 { 572 {
567 return (char *)hdr->ih_name; 573 return (char *)hdr->ih_name;
568 } 574 }
569 575
570 static inline uint32_t image_get_data_size(const image_header_t *hdr) 576 static inline uint32_t image_get_data_size(const image_header_t *hdr)
571 { 577 {
572 return image_get_size(hdr); 578 return image_get_size(hdr);
573 } 579 }
574 580
575 /** 581 /**
576 * image_get_data - get image payload start address 582 * image_get_data - get image payload start address
577 * @hdr: image header 583 * @hdr: image header
578 * 584 *
579 * image_get_data() returns address of the image payload. For single 585 * image_get_data() returns address of the image payload. For single
580 * component images it is image data start. For multi component 586 * component images it is image data start. For multi component
581 * images it points to the null terminated table of sub-images sizes. 587 * images it points to the null terminated table of sub-images sizes.
582 * 588 *
583 * returns: 589 * returns:
584 * image payload data start address 590 * image payload data start address
585 */ 591 */
586 static inline ulong image_get_data(const image_header_t *hdr) 592 static inline ulong image_get_data(const image_header_t *hdr)
587 { 593 {
588 return ((ulong)hdr + image_get_header_size()); 594 return ((ulong)hdr + image_get_header_size());
589 } 595 }
590 596
591 static inline uint32_t image_get_image_size(const image_header_t *hdr) 597 static inline uint32_t image_get_image_size(const image_header_t *hdr)
592 { 598 {
593 return (image_get_size(hdr) + image_get_header_size()); 599 return (image_get_size(hdr) + image_get_header_size());
594 } 600 }
595 static inline ulong image_get_image_end(const image_header_t *hdr) 601 static inline ulong image_get_image_end(const image_header_t *hdr)
596 { 602 {
597 return ((ulong)hdr + image_get_image_size(hdr)); 603 return ((ulong)hdr + image_get_image_size(hdr));
598 } 604 }
599 605
600 #define image_set_hdr_l(f) \ 606 #define image_set_hdr_l(f) \
601 static inline void image_set_##f(image_header_t *hdr, uint32_t val) \ 607 static inline void image_set_##f(image_header_t *hdr, uint32_t val) \
602 { \ 608 { \
603 hdr->ih_##f = cpu_to_uimage(val); \ 609 hdr->ih_##f = cpu_to_uimage(val); \
604 } 610 }
605 image_set_hdr_l(magic) /* image_set_magic */ 611 image_set_hdr_l(magic) /* image_set_magic */
606 image_set_hdr_l(hcrc) /* image_set_hcrc */ 612 image_set_hdr_l(hcrc) /* image_set_hcrc */
607 image_set_hdr_l(time) /* image_set_time */ 613 image_set_hdr_l(time) /* image_set_time */
608 image_set_hdr_l(size) /* image_set_size */ 614 image_set_hdr_l(size) /* image_set_size */
609 image_set_hdr_l(load) /* image_set_load */ 615 image_set_hdr_l(load) /* image_set_load */
610 image_set_hdr_l(ep) /* image_set_ep */ 616 image_set_hdr_l(ep) /* image_set_ep */
611 image_set_hdr_l(dcrc) /* image_set_dcrc */ 617 image_set_hdr_l(dcrc) /* image_set_dcrc */
612 618
613 #define image_set_hdr_b(f) \ 619 #define image_set_hdr_b(f) \
614 static inline void image_set_##f(image_header_t *hdr, uint8_t val) \ 620 static inline void image_set_##f(image_header_t *hdr, uint8_t val) \
615 { \ 621 { \
616 hdr->ih_##f = val; \ 622 hdr->ih_##f = val; \
617 } 623 }
618 image_set_hdr_b(os) /* image_set_os */ 624 image_set_hdr_b(os) /* image_set_os */
619 image_set_hdr_b(arch) /* image_set_arch */ 625 image_set_hdr_b(arch) /* image_set_arch */
620 image_set_hdr_b(type) /* image_set_type */ 626 image_set_hdr_b(type) /* image_set_type */
621 image_set_hdr_b(comp) /* image_set_comp */ 627 image_set_hdr_b(comp) /* image_set_comp */
622 628
623 static inline void image_set_name(image_header_t *hdr, const char *name) 629 static inline void image_set_name(image_header_t *hdr, const char *name)
624 { 630 {
625 strncpy(image_get_name(hdr), name, IH_NMLEN); 631 strncpy(image_get_name(hdr), name, IH_NMLEN);
626 } 632 }
627 633
628 int image_check_hcrc(const image_header_t *hdr); 634 int image_check_hcrc(const image_header_t *hdr);
629 int image_check_dcrc(const image_header_t *hdr); 635 int image_check_dcrc(const image_header_t *hdr);
630 #ifndef USE_HOSTCC 636 #ifndef USE_HOSTCC
631 ulong getenv_bootm_low(void); 637 ulong getenv_bootm_low(void);
632 phys_size_t getenv_bootm_size(void); 638 phys_size_t getenv_bootm_size(void);
633 phys_size_t getenv_bootm_mapsize(void); 639 phys_size_t getenv_bootm_mapsize(void);
634 #endif 640 #endif
635 void memmove_wd(void *to, void *from, size_t len, ulong chunksz); 641 void memmove_wd(void *to, void *from, size_t len, ulong chunksz);
636 642
637 static inline int image_check_magic(const image_header_t *hdr) 643 static inline int image_check_magic(const image_header_t *hdr)
638 { 644 {
639 return (image_get_magic(hdr) == IH_MAGIC); 645 return (image_get_magic(hdr) == IH_MAGIC);
640 } 646 }
641 static inline int image_check_type(const image_header_t *hdr, uint8_t type) 647 static inline int image_check_type(const image_header_t *hdr, uint8_t type)
642 { 648 {
643 return (image_get_type(hdr) == type); 649 return (image_get_type(hdr) == type);
644 } 650 }
645 static inline int image_check_arch(const image_header_t *hdr, uint8_t arch) 651 static inline int image_check_arch(const image_header_t *hdr, uint8_t arch)
646 { 652 {
647 return (image_get_arch(hdr) == arch); 653 return (image_get_arch(hdr) == arch);
648 } 654 }
649 static inline int image_check_os(const image_header_t *hdr, uint8_t os) 655 static inline int image_check_os(const image_header_t *hdr, uint8_t os)
650 { 656 {
651 return (image_get_os(hdr) == os); 657 return (image_get_os(hdr) == os);
652 } 658 }
653 659
654 ulong image_multi_count(const image_header_t *hdr); 660 ulong image_multi_count(const image_header_t *hdr);
655 void image_multi_getimg(const image_header_t *hdr, ulong idx, 661 void image_multi_getimg(const image_header_t *hdr, ulong idx,
656 ulong *data, ulong *len); 662 ulong *data, ulong *len);
657 663
658 void image_print_contents(const void *hdr); 664 void image_print_contents(const void *hdr);
659 665
660 #ifndef USE_HOSTCC 666 #ifndef USE_HOSTCC
661 static inline int image_check_target_arch(const image_header_t *hdr) 667 static inline int image_check_target_arch(const image_header_t *hdr)
662 { 668 {
663 #ifndef IH_ARCH_DEFAULT 669 #ifndef IH_ARCH_DEFAULT
664 # error "please define IH_ARCH_DEFAULT in your arch asm/u-boot.h" 670 # error "please define IH_ARCH_DEFAULT in your arch asm/u-boot.h"
665 #endif 671 #endif
666 return image_check_arch(hdr, IH_ARCH_DEFAULT); 672 return image_check_arch(hdr, IH_ARCH_DEFAULT);
667 } 673 }
668 #endif /* USE_HOSTCC */ 674 #endif /* USE_HOSTCC */
669 675
670 /** 676 /**
671 * Set up properties in the FDT 677 * Set up properties in the FDT
672 * 678 *
673 * This sets up properties in the FDT that is to be passed to linux. 679 * This sets up properties in the FDT that is to be passed to linux.
674 * 680 *
675 * @images: Images information 681 * @images: Images information
676 * @blob: FDT to update 682 * @blob: FDT to update
677 * @of_size: Size of the FDT 683 * @of_size: Size of the FDT
678 * @lmb: Points to logical memory block structure 684 * @lmb: Points to logical memory block structure
679 * @return 0 if ok, <0 on failure 685 * @return 0 if ok, <0 on failure
680 */ 686 */
681 int image_setup_libfdt(bootm_headers_t *images, void *blob, 687 int image_setup_libfdt(bootm_headers_t *images, void *blob,
682 int of_size, struct lmb *lmb); 688 int of_size, struct lmb *lmb);
683 689
684 /** 690 /**
685 * Set up the FDT to use for booting a kernel 691 * Set up the FDT to use for booting a kernel
686 * 692 *
687 * This performs ramdisk setup, sets up the FDT if required, and adds 693 * This performs ramdisk setup, sets up the FDT if required, and adds
688 * paramters to the FDT if libfdt is available. 694 * paramters to the FDT if libfdt is available.
689 * 695 *
690 * @param images Images information 696 * @param images Images information
691 * @return 0 if ok, <0 on failure 697 * @return 0 if ok, <0 on failure
692 */ 698 */
693 int image_setup_linux(bootm_headers_t *images); 699 int image_setup_linux(bootm_headers_t *images);
694 700
695 /** 701 /**
696 * bootz_setup() - Extract stat and size of a Linux xImage 702 * bootz_setup() - Extract stat and size of a Linux xImage
697 * 703 *
698 * @image: Address of image 704 * @image: Address of image
699 * @start: Returns start address of image 705 * @start: Returns start address of image
700 * @end : Returns end address of image 706 * @end : Returns end address of image
701 * @return 0 if OK, 1 if the image was not recognised 707 * @return 0 if OK, 1 if the image was not recognised
702 */ 708 */
703 int bootz_setup(ulong image, ulong *start, ulong *end); 709 int bootz_setup(ulong image, ulong *start, ulong *end);
704 710
705 711
706 /*******************************************************************/ 712 /*******************************************************************/
707 /* New uImage format specific code (prefixed with fit_) */ 713 /* New uImage format specific code (prefixed with fit_) */
708 /*******************************************************************/ 714 /*******************************************************************/
709 #if defined(CONFIG_FIT) 715 #if defined(CONFIG_FIT)
710 716
711 #define FIT_IMAGES_PATH "/images" 717 #define FIT_IMAGES_PATH "/images"
712 #define FIT_CONFS_PATH "/configurations" 718 #define FIT_CONFS_PATH "/configurations"
713 719
714 /* hash/signature node */ 720 /* hash/signature node */
715 #define FIT_HASH_NODENAME "hash" 721 #define FIT_HASH_NODENAME "hash"
716 #define FIT_ALGO_PROP "algo" 722 #define FIT_ALGO_PROP "algo"
717 #define FIT_VALUE_PROP "value" 723 #define FIT_VALUE_PROP "value"
718 #define FIT_IGNORE_PROP "uboot-ignore" 724 #define FIT_IGNORE_PROP "uboot-ignore"
719 #define FIT_SIG_NODENAME "signature" 725 #define FIT_SIG_NODENAME "signature"
720 726
721 /* image node */ 727 /* image node */
722 #define FIT_DATA_PROP "data" 728 #define FIT_DATA_PROP "data"
723 #define FIT_TIMESTAMP_PROP "timestamp" 729 #define FIT_TIMESTAMP_PROP "timestamp"
724 #define FIT_DESC_PROP "description" 730 #define FIT_DESC_PROP "description"
725 #define FIT_ARCH_PROP "arch" 731 #define FIT_ARCH_PROP "arch"
726 #define FIT_TYPE_PROP "type" 732 #define FIT_TYPE_PROP "type"
727 #define FIT_OS_PROP "os" 733 #define FIT_OS_PROP "os"
728 #define FIT_COMP_PROP "compression" 734 #define FIT_COMP_PROP "compression"
729 #define FIT_ENTRY_PROP "entry" 735 #define FIT_ENTRY_PROP "entry"
730 #define FIT_LOAD_PROP "load" 736 #define FIT_LOAD_PROP "load"
731 737
732 /* configuration node */ 738 /* configuration node */
733 #define FIT_KERNEL_PROP "kernel" 739 #define FIT_KERNEL_PROP "kernel"
734 #define FIT_RAMDISK_PROP "ramdisk" 740 #define FIT_RAMDISK_PROP "ramdisk"
735 #define FIT_FDT_PROP "fdt" 741 #define FIT_FDT_PROP "fdt"
736 #define FIT_DEFAULT_PROP "default" 742 #define FIT_DEFAULT_PROP "default"
737 #define FIT_SETUP_PROP "setup" 743 #define FIT_SETUP_PROP "setup"
738 744
739 #define FIT_MAX_HASH_LEN HASH_MAX_DIGEST_SIZE 745 #define FIT_MAX_HASH_LEN HASH_MAX_DIGEST_SIZE
740 746
741 /* cmdline argument format parsing */ 747 /* cmdline argument format parsing */
742 int fit_parse_conf(const char *spec, ulong addr_curr, 748 int fit_parse_conf(const char *spec, ulong addr_curr,
743 ulong *addr, const char **conf_name); 749 ulong *addr, const char **conf_name);
744 int fit_parse_subimage(const char *spec, ulong addr_curr, 750 int fit_parse_subimage(const char *spec, ulong addr_curr,
745 ulong *addr, const char **image_name); 751 ulong *addr, const char **image_name);
746 752
747 void fit_print_contents(const void *fit); 753 void fit_print_contents(const void *fit);
748 void fit_image_print(const void *fit, int noffset, const char *p); 754 void fit_image_print(const void *fit, int noffset, const char *p);
749 755
750 /** 756 /**
751 * fit_get_end - get FIT image size 757 * fit_get_end - get FIT image size
752 * @fit: pointer to the FIT format image header 758 * @fit: pointer to the FIT format image header
753 * 759 *
754 * returns: 760 * returns:
755 * size of the FIT image (blob) in memory 761 * size of the FIT image (blob) in memory
756 */ 762 */
757 static inline ulong fit_get_size(const void *fit) 763 static inline ulong fit_get_size(const void *fit)
758 { 764 {
759 return fdt_totalsize(fit); 765 return fdt_totalsize(fit);
760 } 766 }
761 767
762 /** 768 /**
763 * fit_get_end - get FIT image end 769 * fit_get_end - get FIT image end
764 * @fit: pointer to the FIT format image header 770 * @fit: pointer to the FIT format image header
765 * 771 *
766 * returns: 772 * returns:
767 * end address of the FIT image (blob) in memory 773 * end address of the FIT image (blob) in memory
768 */ 774 */
769 static inline ulong fit_get_end(const void *fit) 775 static inline ulong fit_get_end(const void *fit)
770 { 776 {
771 return (ulong)fit + fdt_totalsize(fit); 777 return (ulong)fit + fdt_totalsize(fit);
772 } 778 }
773 779
774 /** 780 /**
775 * fit_get_name - get FIT node name 781 * fit_get_name - get FIT node name
776 * @fit: pointer to the FIT format image header 782 * @fit: pointer to the FIT format image header
777 * 783 *
778 * returns: 784 * returns:
779 * NULL, on error 785 * NULL, on error
780 * pointer to node name, on success 786 * pointer to node name, on success
781 */ 787 */
782 static inline const char *fit_get_name(const void *fit_hdr, 788 static inline const char *fit_get_name(const void *fit_hdr,
783 int noffset, int *len) 789 int noffset, int *len)
784 { 790 {
785 return fdt_get_name(fit_hdr, noffset, len); 791 return fdt_get_name(fit_hdr, noffset, len);
786 } 792 }
787 793
788 int fit_get_desc(const void *fit, int noffset, char **desc); 794 int fit_get_desc(const void *fit, int noffset, char **desc);
789 int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp); 795 int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp);
790 796
791 int fit_image_get_node(const void *fit, const char *image_uname); 797 int fit_image_get_node(const void *fit, const char *image_uname);
792 int fit_image_get_os(const void *fit, int noffset, uint8_t *os); 798 int fit_image_get_os(const void *fit, int noffset, uint8_t *os);
793 int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch); 799 int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch);
794 int fit_image_get_type(const void *fit, int noffset, uint8_t *type); 800 int fit_image_get_type(const void *fit, int noffset, uint8_t *type);
795 int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp); 801 int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp);
796 int fit_image_get_load(const void *fit, int noffset, ulong *load); 802 int fit_image_get_load(const void *fit, int noffset, ulong *load);
797 int fit_image_get_entry(const void *fit, int noffset, ulong *entry); 803 int fit_image_get_entry(const void *fit, int noffset, ulong *entry);
798 int fit_image_get_data(const void *fit, int noffset, 804 int fit_image_get_data(const void *fit, int noffset,
799 const void **data, size_t *size); 805 const void **data, size_t *size);
800 806
801 int fit_image_hash_get_algo(const void *fit, int noffset, char **algo); 807 int fit_image_hash_get_algo(const void *fit, int noffset, char **algo);
802 int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, 808 int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value,
803 int *value_len); 809 int *value_len);
804 810
805 int fit_set_timestamp(void *fit, int noffset, time_t timestamp); 811 int fit_set_timestamp(void *fit, int noffset, time_t timestamp);
806 812
807 /** 813 /**
808 * fit_add_verification_data() - add verification data to FIT image nodes 814 * fit_add_verification_data() - add verification data to FIT image nodes
809 * 815 *
810 * @keydir: Directory containing keys 816 * @keydir: Directory containing keys
811 * @kwydest: FDT blob to write public key information to 817 * @kwydest: FDT blob to write public key information to
812 * @fit: Pointer to the FIT format image header 818 * @fit: Pointer to the FIT format image header
813 * @comment: Comment to add to signature nodes 819 * @comment: Comment to add to signature nodes
814 * @require_keys: Mark all keys as 'required' 820 * @require_keys: Mark all keys as 'required'
815 * 821 *
816 * Adds hash values for all component images in the FIT blob. 822 * Adds hash values for all component images in the FIT blob.
817 * Hashes are calculated for all component images which have hash subnodes 823 * Hashes are calculated for all component images which have hash subnodes
818 * with algorithm property set to one of the supported hash algorithms. 824 * with algorithm property set to one of the supported hash algorithms.
819 * 825 *
820 * Also add signatures if signature nodes are present. 826 * Also add signatures if signature nodes are present.
821 * 827 *
822 * returns 828 * returns
823 * 0, on success 829 * 0, on success
824 * libfdt error code, on failure 830 * libfdt error code, on failure
825 */ 831 */
826 int fit_add_verification_data(const char *keydir, void *keydest, void *fit, 832 int fit_add_verification_data(const char *keydir, void *keydest, void *fit,
827 const char *comment, int require_keys); 833 const char *comment, int require_keys);
828 834
829 int fit_image_verify(const void *fit, int noffset); 835 int fit_image_verify(const void *fit, int noffset);
830 int fit_config_verify(const void *fit, int conf_noffset); 836 int fit_config_verify(const void *fit, int conf_noffset);
831 int fit_all_image_verify(const void *fit); 837 int fit_all_image_verify(const void *fit);
832 int fit_image_check_os(const void *fit, int noffset, uint8_t os); 838 int fit_image_check_os(const void *fit, int noffset, uint8_t os);
833 int fit_image_check_arch(const void *fit, int noffset, uint8_t arch); 839 int fit_image_check_arch(const void *fit, int noffset, uint8_t arch);
834 int fit_image_check_type(const void *fit, int noffset, uint8_t type); 840 int fit_image_check_type(const void *fit, int noffset, uint8_t type);
835 int fit_image_check_comp(const void *fit, int noffset, uint8_t comp); 841 int fit_image_check_comp(const void *fit, int noffset, uint8_t comp);
836 int fit_check_format(const void *fit); 842 int fit_check_format(const void *fit);
837 843
838 int fit_conf_find_compat(const void *fit, const void *fdt); 844 int fit_conf_find_compat(const void *fit, const void *fdt);
839 int fit_conf_get_node(const void *fit, const char *conf_uname); 845 int fit_conf_get_node(const void *fit, const char *conf_uname);
840 846
841 /** 847 /**
842 * fit_conf_get_prop_node() - Get node refered to by a configuration 848 * fit_conf_get_prop_node() - Get node refered to by a configuration
843 * @fit: FIT to check 849 * @fit: FIT to check
844 * @noffset: Offset of conf@xxx node to check 850 * @noffset: Offset of conf@xxx node to check
845 * @prop_name: Property to read from the conf node 851 * @prop_name: Property to read from the conf node
846 * 852 *
847 * The conf@ nodes contain references to other nodes, using properties 853 * The conf@ nodes contain references to other nodes, using properties
848 * like 'kernel = "kernel@1"'. Given such a property name (e.g. "kernel"), 854 * like 'kernel = "kernel@1"'. Given such a property name (e.g. "kernel"),
849 * return the offset of the node referred to (e.g. offset of node 855 * return the offset of the node referred to (e.g. offset of node
850 * "/images/kernel@1". 856 * "/images/kernel@1".
851 */ 857 */
852 int fit_conf_get_prop_node(const void *fit, int noffset, 858 int fit_conf_get_prop_node(const void *fit, int noffset,
853 const char *prop_name); 859 const char *prop_name);
854 860
855 void fit_conf_print(const void *fit, int noffset, const char *p); 861 void fit_conf_print(const void *fit, int noffset, const char *p);
856 862
857 int fit_check_ramdisk(const void *fit, int os_noffset, 863 int fit_check_ramdisk(const void *fit, int os_noffset,
858 uint8_t arch, int verify); 864 uint8_t arch, int verify);
859 865
860 int calculate_hash(const void *data, int data_len, const char *algo, 866 int calculate_hash(const void *data, int data_len, const char *algo,
861 uint8_t *value, int *value_len); 867 uint8_t *value, int *value_len);
862 868
863 /* 869 /*
864 * At present we only support signing on the host, and verification on the 870 * At present we only support signing on the host, and verification on the
865 * device 871 * device
866 */ 872 */
867 #if defined(CONFIG_FIT_SIGNATURE) 873 #if defined(CONFIG_FIT_SIGNATURE)
868 # ifdef USE_HOSTCC 874 # ifdef USE_HOSTCC
869 # define IMAGE_ENABLE_SIGN 1 875 # define IMAGE_ENABLE_SIGN 1
870 # define IMAGE_ENABLE_VERIFY 1 876 # define IMAGE_ENABLE_VERIFY 1
871 # include <openssl/evp.h> 877 # include <openssl/evp.h>
872 #else 878 #else
873 # define IMAGE_ENABLE_SIGN 0 879 # define IMAGE_ENABLE_SIGN 0
874 # define IMAGE_ENABLE_VERIFY 1 880 # define IMAGE_ENABLE_VERIFY 1
875 # endif 881 # endif
876 #else 882 #else
877 # define IMAGE_ENABLE_SIGN 0 883 # define IMAGE_ENABLE_SIGN 0
878 # define IMAGE_ENABLE_VERIFY 0 884 # define IMAGE_ENABLE_VERIFY 0
879 #endif 885 #endif
880 886
881 #ifdef USE_HOSTCC 887 #ifdef USE_HOSTCC
882 void *image_get_host_blob(void); 888 void *image_get_host_blob(void);
883 void image_set_host_blob(void *host_blob); 889 void image_set_host_blob(void *host_blob);
884 # define gd_fdt_blob() image_get_host_blob() 890 # define gd_fdt_blob() image_get_host_blob()
885 #else 891 #else
886 # define gd_fdt_blob() (gd->fdt_blob) 892 # define gd_fdt_blob() (gd->fdt_blob)
887 #endif 893 #endif
888 894
889 #ifdef CONFIG_FIT_BEST_MATCH 895 #ifdef CONFIG_FIT_BEST_MATCH
890 #define IMAGE_ENABLE_BEST_MATCH 1 896 #define IMAGE_ENABLE_BEST_MATCH 1
891 #else 897 #else
892 #define IMAGE_ENABLE_BEST_MATCH 0 898 #define IMAGE_ENABLE_BEST_MATCH 0
893 #endif 899 #endif
894 900
895 /* Information passed to the signing routines */ 901 /* Information passed to the signing routines */
896 struct image_sign_info { 902 struct image_sign_info {
897 const char *keydir; /* Directory conaining keys */ 903 const char *keydir; /* Directory conaining keys */
898 const char *keyname; /* Name of key to use */ 904 const char *keyname; /* Name of key to use */
899 void *fit; /* Pointer to FIT blob */ 905 void *fit; /* Pointer to FIT blob */
900 int node_offset; /* Offset of signature node */ 906 int node_offset; /* Offset of signature node */
901 struct image_sig_algo *algo; /* Algorithm information */ 907 struct image_sig_algo *algo; /* Algorithm information */
902 const void *fdt_blob; /* FDT containing public keys */ 908 const void *fdt_blob; /* FDT containing public keys */
903 int required_keynode; /* Node offset of key to use: -1=any */ 909 int required_keynode; /* Node offset of key to use: -1=any */
904 const char *require_keys; /* Value for 'required' property */ 910 const char *require_keys; /* Value for 'required' property */
905 }; 911 };
906 912
907 /* A part of an image, used for hashing */ 913 /* A part of an image, used for hashing */
908 struct image_region { 914 struct image_region {
909 const void *data; 915 const void *data;
910 int size; 916 int size;
911 }; 917 };
912 918
913 #if IMAGE_ENABLE_VERIFY 919 #if IMAGE_ENABLE_VERIFY
914 # include <u-boot/rsa-checksum.h> 920 # include <u-boot/rsa-checksum.h>
915 #endif 921 #endif
916 struct checksum_algo { 922 struct checksum_algo {
917 const char *name; 923 const char *name;
918 const int checksum_len; 924 const int checksum_len;
919 const int pad_len; 925 const int pad_len;
920 #if IMAGE_ENABLE_SIGN 926 #if IMAGE_ENABLE_SIGN
921 const EVP_MD *(*calculate_sign)(void); 927 const EVP_MD *(*calculate_sign)(void);
922 #endif 928 #endif
923 void (*calculate)(const struct image_region region[], 929 void (*calculate)(const struct image_region region[],
924 int region_count, uint8_t *checksum); 930 int region_count, uint8_t *checksum);
925 const uint8_t *rsa_padding; 931 const uint8_t *rsa_padding;
926 }; 932 };
927 933
928 struct image_sig_algo { 934 struct image_sig_algo {
929 const char *name; /* Name of algorithm */ 935 const char *name; /* Name of algorithm */
930 936
931 /** 937 /**
932 * sign() - calculate and return signature for given input data 938 * sign() - calculate and return signature for given input data
933 * 939 *
934 * @info: Specifies key and FIT information 940 * @info: Specifies key and FIT information
935 * @data: Pointer to the input data 941 * @data: Pointer to the input data
936 * @data_len: Data length 942 * @data_len: Data length
937 * @sigp: Set to an allocated buffer holding the signature 943 * @sigp: Set to an allocated buffer holding the signature
938 * @sig_len: Set to length of the calculated hash 944 * @sig_len: Set to length of the calculated hash
939 * 945 *
940 * This computes input data signature according to selected algorithm. 946 * This computes input data signature according to selected algorithm.
941 * Resulting signature value is placed in an allocated buffer, the 947 * Resulting signature value is placed in an allocated buffer, the
942 * pointer is returned as *sigp. The length of the calculated 948 * pointer is returned as *sigp. The length of the calculated
943 * signature is returned via the sig_len pointer argument. The caller 949 * signature is returned via the sig_len pointer argument. The caller
944 * should free *sigp. 950 * should free *sigp.
945 * 951 *
946 * @return: 0, on success, -ve on error 952 * @return: 0, on success, -ve on error
947 */ 953 */
948 int (*sign)(struct image_sign_info *info, 954 int (*sign)(struct image_sign_info *info,
949 const struct image_region region[], 955 const struct image_region region[],
950 int region_count, uint8_t **sigp, uint *sig_len); 956 int region_count, uint8_t **sigp, uint *sig_len);
951 957
952 /** 958 /**
953 * add_verify_data() - Add verification information to FDT 959 * add_verify_data() - Add verification information to FDT
954 * 960 *
955 * Add public key information to the FDT node, suitable for 961 * Add public key information to the FDT node, suitable for
956 * verification at run-time. The information added depends on the 962 * verification at run-time. The information added depends on the
957 * algorithm being used. 963 * algorithm being used.
958 * 964 *
959 * @info: Specifies key and FIT information 965 * @info: Specifies key and FIT information
960 * @keydest: Destination FDT blob for public key data 966 * @keydest: Destination FDT blob for public key data
961 * @return: 0, on success, -ve on error 967 * @return: 0, on success, -ve on error
962 */ 968 */
963 int (*add_verify_data)(struct image_sign_info *info, void *keydest); 969 int (*add_verify_data)(struct image_sign_info *info, void *keydest);
964 970
965 /** 971 /**
966 * verify() - Verify a signature against some data 972 * verify() - Verify a signature against some data
967 * 973 *
968 * @info: Specifies key and FIT information 974 * @info: Specifies key and FIT information
969 * @data: Pointer to the input data 975 * @data: Pointer to the input data
970 * @data_len: Data length 976 * @data_len: Data length
971 * @sig: Signature 977 * @sig: Signature
972 * @sig_len: Number of bytes in signature 978 * @sig_len: Number of bytes in signature
973 * @return 0 if verified, -ve on error 979 * @return 0 if verified, -ve on error
974 */ 980 */
975 int (*verify)(struct image_sign_info *info, 981 int (*verify)(struct image_sign_info *info,
976 const struct image_region region[], int region_count, 982 const struct image_region region[], int region_count,
977 uint8_t *sig, uint sig_len); 983 uint8_t *sig, uint sig_len);
978 984
979 /* pointer to checksum algorithm */ 985 /* pointer to checksum algorithm */
980 struct checksum_algo *checksum; 986 struct checksum_algo *checksum;
981 }; 987 };
982 988
983 /** 989 /**
984 * image_get_sig_algo() - Look up a signature algortihm 990 * image_get_sig_algo() - Look up a signature algortihm
985 * 991 *
986 * @param name Name of algorithm 992 * @param name Name of algorithm
987 * @return pointer to algorithm information, or NULL if not found 993 * @return pointer to algorithm information, or NULL if not found
988 */ 994 */
989 struct image_sig_algo *image_get_sig_algo(const char *name); 995 struct image_sig_algo *image_get_sig_algo(const char *name);
990 996
991 /** 997 /**
992 * fit_image_verify_required_sigs() - Verify signatures marked as 'required' 998 * fit_image_verify_required_sigs() - Verify signatures marked as 'required'
993 * 999 *
994 * @fit: FIT to check 1000 * @fit: FIT to check
995 * @image_noffset: Offset of image node to check 1001 * @image_noffset: Offset of image node to check
996 * @data: Image data to check 1002 * @data: Image data to check
997 * @size: Size of image data 1003 * @size: Size of image data
998 * @sig_blob: FDT containing public keys 1004 * @sig_blob: FDT containing public keys
999 * @no_sigsp: Returns 1 if no signatures were required, and 1005 * @no_sigsp: Returns 1 if no signatures were required, and
1000 * therefore nothing was checked. The caller may wish 1006 * therefore nothing was checked. The caller may wish
1001 * to fall back to other mechanisms, or refuse to 1007 * to fall back to other mechanisms, or refuse to
1002 * boot. 1008 * boot.
1003 * @return 0 if all verified ok, <0 on error 1009 * @return 0 if all verified ok, <0 on error
1004 */ 1010 */
1005 int fit_image_verify_required_sigs(const void *fit, int image_noffset, 1011 int fit_image_verify_required_sigs(const void *fit, int image_noffset,
1006 const char *data, size_t size, const void *sig_blob, 1012 const char *data, size_t size, const void *sig_blob,
1007 int *no_sigsp); 1013 int *no_sigsp);
1008 1014
1009 /** 1015 /**
1010 * fit_image_check_sig() - Check a single image signature node 1016 * fit_image_check_sig() - Check a single image signature node
1011 * 1017 *
1012 * @fit: FIT to check 1018 * @fit: FIT to check
1013 * @noffset: Offset of signature node to check 1019 * @noffset: Offset of signature node to check
1014 * @data: Image data to check 1020 * @data: Image data to check
1015 * @size: Size of image data 1021 * @size: Size of image data
1016 * @required_keynode: Offset in the control FDT of the required key node, 1022 * @required_keynode: Offset in the control FDT of the required key node,
1017 * if any. If this is given, then the image wil not 1023 * if any. If this is given, then the image wil not
1018 * pass verification unless that key is used. If this is 1024 * pass verification unless that key is used. If this is
1019 * -1 then any signature will do. 1025 * -1 then any signature will do.
1020 * @err_msgp: In the event of an error, this will be pointed to a 1026 * @err_msgp: In the event of an error, this will be pointed to a
1021 * help error string to display to the user. 1027 * help error string to display to the user.
1022 * @return 0 if all verified ok, <0 on error 1028 * @return 0 if all verified ok, <0 on error
1023 */ 1029 */
1024 int fit_image_check_sig(const void *fit, int noffset, const void *data, 1030 int fit_image_check_sig(const void *fit, int noffset, const void *data,
1025 size_t size, int required_keynode, char **err_msgp); 1031 size_t size, int required_keynode, char **err_msgp);
1026 1032
1027 /** 1033 /**
1028 * fit_region_make_list() - Make a list of regions to hash 1034 * fit_region_make_list() - Make a list of regions to hash
1029 * 1035 *
1030 * Given a list of FIT regions (offset, size) provided by libfdt, create 1036 * Given a list of FIT regions (offset, size) provided by libfdt, create
1031 * a list of regions (void *, size) for use by the signature creationg 1037 * a list of regions (void *, size) for use by the signature creationg
1032 * and verification code. 1038 * and verification code.
1033 * 1039 *
1034 * @fit: FIT image to process 1040 * @fit: FIT image to process
1035 * @fdt_regions: Regions as returned by libfdt 1041 * @fdt_regions: Regions as returned by libfdt
1036 * @count: Number of regions returned by libfdt 1042 * @count: Number of regions returned by libfdt
1037 * @region: Place to put list of regions (NULL to allocate it) 1043 * @region: Place to put list of regions (NULL to allocate it)
1038 * @return pointer to list of regions, or NULL if out of memory 1044 * @return pointer to list of regions, or NULL if out of memory
1039 */ 1045 */
1040 struct image_region *fit_region_make_list(const void *fit, 1046 struct image_region *fit_region_make_list(const void *fit,
1041 struct fdt_region *fdt_regions, int count, 1047 struct fdt_region *fdt_regions, int count,
1042 struct image_region *region); 1048 struct image_region *region);
1043 1049
1044 static inline int fit_image_check_target_arch(const void *fdt, int node) 1050 static inline int fit_image_check_target_arch(const void *fdt, int node)
1045 { 1051 {
1046 #ifndef USE_HOSTCC 1052 #ifndef USE_HOSTCC
1047 return fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT); 1053 return fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT);
1048 #else 1054 #else
1049 return 0; 1055 return 0;
1050 #endif 1056 #endif
1051 } 1057 }
1052 1058
1053 #ifdef CONFIG_FIT_VERBOSE 1059 #ifdef CONFIG_FIT_VERBOSE
1054 #define fit_unsupported(msg) printf("! %s:%d " \ 1060 #define fit_unsupported(msg) printf("! %s:%d " \
1055 "FIT images not supported for '%s'\n", \ 1061 "FIT images not supported for '%s'\n", \
1056 __FILE__, __LINE__, (msg)) 1062 __FILE__, __LINE__, (msg))
1057 1063
1058 #define fit_unsupported_reset(msg) printf("! %s:%d " \ 1064 #define fit_unsupported_reset(msg) printf("! %s:%d " \
1059 "FIT images not supported for '%s' " \ 1065 "FIT images not supported for '%s' " \
1060 "- must reset board to recover!\n", \ 1066 "- must reset board to recover!\n", \
1061 __FILE__, __LINE__, (msg)) 1067 __FILE__, __LINE__, (msg))
1062 #else 1068 #else
1063 #define fit_unsupported(msg) 1069 #define fit_unsupported(msg)
1064 #define fit_unsupported_reset(msg) 1070 #define fit_unsupported_reset(msg)
1065 #endif /* CONFIG_FIT_VERBOSE */ 1071 #endif /* CONFIG_FIT_VERBOSE */
1066 #endif /* CONFIG_FIT */ 1072 #endif /* CONFIG_FIT */
1067 1073
1068 #if defined(CONFIG_ANDROID_BOOT_IMAGE) 1074 #if defined(CONFIG_ANDROID_BOOT_IMAGE)
1069 struct andr_img_hdr; 1075 struct andr_img_hdr;
1070 int android_image_check_header(const struct andr_img_hdr *hdr); 1076 int android_image_check_header(const struct andr_img_hdr *hdr);
1071 int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify, 1077 int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
1072 ulong *os_data, ulong *os_len); 1078 ulong *os_data, ulong *os_len);
1073 int android_image_get_ramdisk(const struct andr_img_hdr *hdr, 1079 int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
1074 ulong *rd_data, ulong *rd_len); 1080 ulong *rd_data, ulong *rd_len);
1075 ulong android_image_get_end(const struct andr_img_hdr *hdr); 1081 ulong android_image_get_end(const struct andr_img_hdr *hdr);
1076 ulong android_image_get_kload(const struct andr_img_hdr *hdr); 1082 ulong android_image_get_kload(const struct andr_img_hdr *hdr);
1077 1083
1078 #endif /* CONFIG_ANDROID_BOOT_IMAGE */ 1084 #endif /* CONFIG_ANDROID_BOOT_IMAGE */
1079 1085
1080 #endif /* __IMAGE_H__ */ 1086 #endif /* __IMAGE_H__ */
1081 1087