Revert "Exynos5250: DRAM: Changes for x16 DDR3L module"
[chromiumos/third_party/u-boot.git] / include / configs / chromeos.h
1 /*
2  * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 #ifndef __configs_chromeos_h__
8 #define __configs_chromeos_h__
9
10 /*
11  * This config file defines platform-independent settings that a verified boot
12  * firmware must have.
13  */
14
15 /* Stringify a token */
16 #define _STRINGIFY(x)   #x
17 #define STRINGIFY(x)    _STRINGIFY(x)
18
19 /* Enable verified boot */
20 #define CONFIG_CHROMEOS
21
22 /* Enable test codes */
23 #ifdef VBOOT_DEBUG
24 #define CONFIG_CHROMEOS_TEST
25 #endif /* VBOOT_DEBUG */
26
27 /* Enable graphics display */
28 #define CONFIG_LCD_BMP_RLE8
29 #define CONFIG_LZMA
30 #define CONFIG_SPLASH_SCREEN
31
32 /* Support constant vboot flag from fdt */
33 #define CONFIG_CHROMEOS_CONST_FLAG
34
35 /*
36  * Use the fdt to decide whether to load the environment early in start-up
37  * (even before we decide if we're entering developer mode).
38  */
39 #define CONFIG_OF_LOAD_ENVIRONMENT
40
41 /*
42  * Enable this feature to embed crossystem data into device tree before booting
43  * the kernel.
44  */
45 /*
46  * TODO If x86 firmware does not embedding crossystem data in a device tree (and
47  * pass the tree to kernel) but uses ACPI or whatever instead, move this to
48  * chromeos_tegra2_twostop.h.
49  */
50 #define CONFIG_OF_UPDATE_FDT_BEFORE_BOOT
51
52 /*
53  * This is the default kernel command line to a Chrome OS kernel. An ending
54  * space character helps us concatenate more arguments.
55  */
56 #ifndef CONFIG_BOOTARGS
57 #define CONFIG_BOOTARGS
58 #endif
59 #define CHROMEOS_BOOTARGS "cros_secure " CONFIG_BOOTARGS " "
60
61 /*******************************************************************************
62  * Non-verified boot script                                                    *
63  ******************************************************************************/
64
65 /*
66  * Defines the regen_all variable, which is used by other commands
67  * defined in this file.  Usage is to override one or more of the environment
68  * variables and then run regen_all to regenerate the environment.
69  *
70  * Args from other scipts in this file:
71  *   bootdev_bootargs: Filled in by other commands below based on the boot
72  *       device.
73  *
74  * Args:
75  *   common_bootargs: A copy of the default bootargs so we can run regen_all
76  *       more than once.
77  *   dev_extras: Placeholder space for developers to put their own boot args.
78  *   extra_bootargs: Filled in by update_firmware_vars.py script in some cases.
79  */
80 #define CONFIG_REGEN_ALL_SETTINGS \
81         "common_bootargs=cros_legacy " CONFIG_DIRECT_BOOTARGS "\0" \
82         \
83         "dev_extras=\0" \
84         "extra_bootargs=\0" \
85         "bootdev_bootargs=\0" \
86         \
87         "regen_all=" \
88                 "setenv bootargs " \
89                         "${common_bootargs} " \
90                         "${dev_extras} " \
91                         "${extra_bootargs} " \
92                         "${bootdev_bootargs}\0"
93
94 /*
95  * Defines ext2_boot and run_disk_boot_script.
96  *
97  * The run_disk_boot_script runs a u-boot script on the boot disk.  At the
98  * moment this is used to allow the boot disk to choose a partion to boot from,
99  * but could theoretically be used for more complicated things.
100  *
101  * The ext2_boot script boots from an ext2 device.
102  *
103  * Args from other scipts in this file:
104  *   devtype: The device type we're booting from, like "usb" or "mmc"
105  *   devnum: The device number (depends on devtype).  If we're booting from
106  *       extranal MMC (for instance), this would be 1
107  *   devname: The linux device name that will be assigned, like "sda" or
108  *       mmcblk0p
109  *
110  * Args expected to be set by the u-boot script in /u-boot/boot.scr.uimg:
111  *   rootpart: The root filesystem partion; we default to 3 in case there are
112  *       problems reading the boot script.
113  *   cros_bootfile: The name of the kernel in the root partition; we default to
114  *       "/boot/vmlinux.uimg"
115  *
116  * Other args:
117  *   script_part: The FAT partion we'll look for a boot script in.
118  *   script_img: The name of the u-boot script.
119  *
120  * When we boot from an ext2 device, we will look at partion 12 (0x0c) to find
121  * a u-boot script (as /u-boot/boot.scr.uimg).  That script is expected to
122  * override "rootpart" and "cros_bootfile" as needed to select which partition
123  * to boot from.
124  *
125  * USB download support:
126  *
127  * Once we have loaded the kernel from the selected device successfully,
128  * we check whether a kernel has in fact been provided through the USB
129  * download feature. In that case the kernaddr environment variable will
130  * be set. It might seem strange that we load the original kernel and
131  * then ignore it, but we try to load the kernel from a number of different
132  * places. If the USB disk fails (because there is no disk inserted or
133  * it is invalid) we don't want to pull in the kernaddr kernel and boot it
134  * with USB as the root disk. So allow the normal boot failover to occur,
135  * and only insert the kernaddr kernel when we actually have decided
136  * what to boot from.
137  */
138 #define CONFIG_EXT2_BOOT_HELPER_SETTINGS \
139         "rootpart=3\0" \
140         "cros_bootfile=/boot/vmlinux.uimg\0" \
141         \
142         "script_part=c\0" \
143         "script_img=/u-boot/boot.scr.uimg\0" \
144         \
145         "run_disk_boot_script=" \
146                 "if fatload ${devtype} ${devnum}:${script_part} " \
147                                 "${loadaddr} ${script_img}; then " \
148                         "source ${loadaddr}; " \
149                 "fi\0" \
150         \
151         "regen_ext2_bootargs=" \
152                 "setenv bootdev_bootargs " \
153                 "root=/dev/${devname}${rootpart} rootwait ro; " \
154                 "run regen_all\0" \
155         \
156         "ext2_boot=" \
157                 "run regen_ext2_bootargs; " \
158                 "if ext2load ${devtype} ${devnum}:${rootpart} " \
159                         "${loadaddr} ${cros_bootfile}; then " \
160                         "if test ${kernaddr} != \"\"; then "\
161                                 "echo \"Using bundled kernel\"; "\
162                                 "bootm ${kernaddr};" \
163                         "fi; "\
164                         "bootm ${loadaddr};" \
165                 "fi\0"
166
167 /*
168  * Network-boot related settings.
169  *
170  * At the moment, we support full network root booting (tftp kernel and initial
171  * ramdisk) as well as nfs booting (tftp kernel and point root to NFS).
172  *
173  * Network booting is enabled if you have an ethernet adapter plugged in at boot
174  * and also have set tftpserverip/nfsserverip to something other than 0.0.0.0.
175  * For full network booting you just need tftpserverip.  For full NFS root
176  * you neet to set both.
177  */
178 #define CONFIG_NETBOOT_SETTINGS \
179         "tftpserverip=0.0.0.0\0" \
180         "nfsserverip=0.0.0.0\0" \
181         \
182         "rootaddr=" STRINGIFY(CONFIG_INITRD_ADDRESS) "\0" \
183         "initrd_high=0xffffffff\0" \
184         \
185         "regen_nfsroot_bootargs=" \
186                 "setenv bootdev_bootargs " \
187                         "dev=/dev/nfs4 rw nfsroot=${nfsserverip}:${rootpath} " \
188                         "ip=dhcp noinitrd; " \
189                 "run regen_all\0" \
190         "regen_initrdroot_bootargs=" \
191                 "setenv bootdev_bootargs " \
192                         "rw root=/dev/ram0 ramdisk_size=294912; " \
193                 "run regen_all\0" \
194         \
195         "tftp_setup=" \
196                 "setenv tftpkernelpath " \
197                         "/tftpboot/vmlinux.uimg; " \
198                 "setenv tftprootpath " \
199                         "/tftpboot/initrd.uimg; " \
200                 "setenv rootpath " \
201                         "/export/nfsroot; " \
202                 "setenv autoload n\0" \
203         "initrdroot_boot=" \
204                 "run tftp_setup; " \
205                 "run regen_initrdroot_bootargs; " \
206                 "bootp; " \
207                 "if tftpboot ${rootaddr} ${tftpserverip}:${tftprootpath} && " \
208                 "   tftpboot ${loadaddr} ${tftpserverip}:${tftpkernelpath}; " \
209                 "then " \
210                         "bootm ${loadaddr} ${rootaddr}; " \
211                 "else " \
212                         "echo 'ERROR: Could not load root/kernel from TFTP'; " \
213                         "exit; " \
214                 "fi\0" \
215         "tftp_ext2_boot=" \
216                 "run tftp_setup; " \
217                 "run regen_ext2_bootargs; " \
218                 "bootp; " \
219                 "if tftpboot ${loadaddr} ${tftpserverip}:${tftpkernelpath}; " \
220                 "then " \
221                         "bootm ${loadaddr}; " \
222                 "else " \
223                         "echo 'ERROR: Could not load kernel from TFTP'; " \
224                         "exit; " \
225                 "fi\0" \
226         "nfsroot_boot=" \
227                 "run tftp_setup; " \
228                 "run regen_nfsroot_bootargs; " \
229                 "bootp; " \
230                 "if tftpboot ${loadaddr} ${tftpserverip}:${tftpkernelpath}; " \
231                 "then " \
232                         "bootm ${loadaddr}; " \
233                 "else " \
234                         "echo 'ERROR: Could not load kernel from TFTP'; " \
235                         "exit; " \
236                 "fi\0" \
237         \
238         "net_boot=" \
239                 "if test ${ethact} != \"\"; then " \
240                         "if test ${tftpserverip} != \"0.0.0.0\"; then " \
241                                 "run initrdroot_boot; " \
242                                 "if test ${nfsserverip} != \"0.0.0.0\"; then " \
243                                         "run nfsroot_boot; " \
244                                 "fi; " \
245                         "fi; " \
246                 "fi\0" \
247
248 /*
249  * Our full set of extra enviornment variables.
250  *
251  * A few notes:
252  * - Right now, we can only boot from one USB device.  Need to fix this once
253  *   usb works better.
254  * - We define "non_verified_boot", which is the normal boot command unless
255  *   it is overridden in the FDT.
256  * - When we're running securely, the FDT will specify to call vboot_twostop
257  *   directly.
258  */
259
260 #define CONFIG_CHROMEOS_EXTRA_ENV_SETTINGS \
261         CONFIG_STD_DEVICES_SETTINGS \
262         CONFIG_REGEN_ALL_SETTINGS \
263         CONFIG_EXT2_BOOT_HELPER_SETTINGS \
264         CONFIG_NETBOOT_SETTINGS \
265         \
266         "usb_boot=setenv devtype usb; " \
267                 "setenv devnum 0; " \
268                 "setenv devname sda; " \
269                 "run run_disk_boot_script;" \
270                 "run ext2_boot\0" \
271         \
272         "mmc_setup=" \
273                 "mmc dev ${devnum}; " \
274                 "mmc rescan ${devnum}; " \
275                 "setenv devtype mmc; " \
276                 "setenv devname mmcblk${devnum}p\0" \
277         "mmc_boot=" \
278                 "run mmc_setup; " \
279                 "run run_disk_boot_script;" \
280                 "run ext2_boot\0" \
281         "mmc0_boot=setenv devnum 0; " \
282                 "run mmc_boot\0" \
283         "mmc1_boot=setenv devnum 1; " \
284                 "run mmc_boot\0" \
285         "mmc0_tftpboot=setenv devnum 0; " \
286                 "run mmc_setup; " \
287                 "run tftp_ext2_boot\0" \
288         \
289         "non_verified_boot=" \
290                 "usb start; " \
291                 "run net_boot; " \
292                 "run usb_boot; " \
293                 \
294                 "run mmc1_boot; " \
295                 "run mmc0_boot\0"
296
297 #define CONFIG_NON_VERIFIED_BOOTCOMMAND "run non_verified_boot"
298
299 #endif /* __configs_chromeos_h__ */