]>
Commit | Line | Data |
---|---|---|
2a43201a DG |
1 | /* |
2 | * (C) Copyright 2014 | |
3 | * NVIDIA Corporation <www.nvidia.com> | |
4 | * | |
5 | * Copyright 2014 Red Hat, Inc. | |
6 | * | |
7 | * SPDX-License-Identifier: GPL-2.0+ | |
8 | */ | |
9 | ||
10 | #ifndef _CONFIG_CMD_DISTRO_BOOTCMD_H | |
11 | #define _CONFIG_CMD_DISTRO_BOOTCMD_H | |
12 | ||
13 | #define BOOTENV_SHARED_BLKDEV_BODY(devtypel) \ | |
14 | "if " #devtypel " dev ${devnum}; then " \ | |
15 | "setenv devtype " #devtypel "; " \ | |
16 | "run scan_dev_for_boot; " \ | |
17 | "fi\0" | |
18 | ||
19 | #define BOOTENV_SHARED_BLKDEV(devtypel) \ | |
20 | #devtypel "_boot=" \ | |
21 | BOOTENV_SHARED_BLKDEV_BODY(devtypel) | |
22 | ||
23 | #define BOOTENV_DEV_BLKDEV(devtypeu, devtypel, instance) \ | |
24 | "bootcmd_" #devtypel #instance "=" \ | |
25 | "setenv devnum " #instance "; " \ | |
26 | "run " #devtypel "_boot\0" | |
27 | ||
28 | #define BOOTENV_DEV_NAME_BLKDEV(devtypeu, devtypel, instance) \ | |
29 | #devtypel #instance " " | |
30 | ||
31 | #ifdef CONFIG_CMD_MMC | |
32 | #define BOOTENV_SHARED_MMC BOOTENV_SHARED_BLKDEV(mmc) | |
33 | #define BOOTENV_DEV_MMC BOOTENV_DEV_BLKDEV | |
34 | #define BOOTENV_DEV_NAME_MMC BOOTENV_DEV_NAME_BLKDEV | |
35 | #else | |
36 | #define BOOTENV_SHARED_MMC | |
37 | #define BOOTENV_DEV_MMC \ | |
38 | BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC | |
39 | #define BOOTENV_DEV_NAME_MMC \ | |
40 | BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC | |
41 | #endif | |
42 | ||
43 | #ifdef CONFIG_CMD_SATA | |
44 | #define BOOTENV_SHARED_SATA BOOTENV_SHARED_BLKDEV(sata) | |
45 | #define BOOTENV_DEV_SATA BOOTENV_DEV_BLKDEV | |
46 | #define BOOTENV_DEV_NAME_SATA BOOTENV_DEV_NAME_BLKDEV | |
47 | #else | |
48 | #define BOOTENV_SHARED_SATA | |
49 | #define BOOTENV_DEV_SATA \ | |
50 | BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_CMD_SATA | |
51 | #define BOOTENV_DEV_NAME_SATA \ | |
52 | BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_CMD_SATA | |
53 | #endif | |
54 | ||
55 | #ifdef CONFIG_CMD_SCSI | |
a03bdaa1 HG |
56 | #define BOOTENV_RUN_SCSI_INIT "run scsi_init; " |
57 | #define BOOTENV_SET_SCSI_NEED_INIT "setenv scsi_need_init; " | |
58 | #define BOOTENV_SHARED_SCSI \ | |
59 | "scsi_init=" \ | |
60 | "if ${scsi_need_init}; then " \ | |
61 | "setenv scsi_need_init false; " \ | |
62 | "scsi scan; " \ | |
63 | "fi\0" \ | |
64 | \ | |
65 | "scsi_boot=" \ | |
66 | BOOTENV_RUN_SCSI_INIT \ | |
67 | BOOTENV_SHARED_BLKDEV_BODY(scsi) | |
2a43201a DG |
68 | #define BOOTENV_DEV_SCSI BOOTENV_DEV_BLKDEV |
69 | #define BOOTENV_DEV_NAME_SCSI BOOTENV_DEV_NAME_BLKDEV | |
70 | #else | |
a03bdaa1 HG |
71 | #define BOOTENV_RUN_SCSI_INIT |
72 | #define BOOTENV_SET_SCSI_NEED_INIT | |
2a43201a DG |
73 | #define BOOTENV_SHARED_SCSI |
74 | #define BOOTENV_DEV_SCSI \ | |
75 | BOOT_TARGET_DEVICES_references_SCSI_without_CONFIG_CMD_SCSI | |
76 | #define BOOTENV_DEV_NAME_SCSI \ | |
77 | BOOT_TARGET_DEVICES_references_SCSI_without_CONFIG_CMD_SCSI | |
78 | #endif | |
79 | ||
80 | #ifdef CONFIG_CMD_IDE | |
81 | #define BOOTENV_SHARED_IDE BOOTENV_SHARED_BLKDEV(ide) | |
82 | #define BOOTENV_DEV_IDE BOOTENV_DEV_BLKDEV | |
83 | #define BOOTENV_DEV_NAME_IDE BOOTENV_DEV_NAME_BLKDEV | |
84 | #else | |
85 | #define BOOTENV_SHARED_IDE | |
86 | #define BOOTENV_DEV_IDE \ | |
87 | BOOT_TARGET_DEVICES_references_IDE_without_CONFIG_CMD_IDE | |
88 | #define BOOTENV_DEV_NAME_IDE \ | |
89 | BOOT_TARGET_DEVICES_references_IDE_without_CONFIG_CMD_IDE | |
90 | #endif | |
91 | ||
92 | #ifdef CONFIG_CMD_USB | |
93 | #define BOOTENV_RUN_USB_INIT "run usb_init; " | |
94 | #define BOOTENV_SET_USB_NEED_INIT "setenv usb_need_init; " | |
95 | #define BOOTENV_SHARED_USB \ | |
96 | "usb_init=" \ | |
97 | "if ${usb_need_init}; then " \ | |
98 | "setenv usb_need_init false; " \ | |
99 | "usb start 0; " \ | |
100 | "fi\0" \ | |
101 | \ | |
102 | "usb_boot=" \ | |
103 | BOOTENV_RUN_USB_INIT \ | |
104 | BOOTENV_SHARED_BLKDEV_BODY(usb) | |
105 | #define BOOTENV_DEV_USB BOOTENV_DEV_BLKDEV | |
106 | #define BOOTENV_DEV_NAME_USB BOOTENV_DEV_NAME_BLKDEV | |
107 | #else | |
108 | #define BOOTENV_RUN_USB_INIT | |
109 | #define BOOTENV_SET_USB_NEED_INIT | |
110 | #define BOOTENV_SHARED_USB | |
111 | #define BOOTENV_DEV_USB \ | |
112 | BOOT_TARGET_DEVICES_references_USB_without_CONFIG_CMD_USB | |
113 | #define BOOTENV_DEV_NAME_USB \ | |
114 | BOOT_TARGET_DEVICES_references_USB_without_CONFIG_CMD_USB | |
115 | #endif | |
116 | ||
117 | #if defined(CONFIG_CMD_DHCP) | |
118 | #define BOOTENV_DEV_DHCP(devtypeu, devtypel, instance) \ | |
119 | "bootcmd_dhcp=" \ | |
120 | BOOTENV_RUN_USB_INIT \ | |
121 | "if dhcp ${scriptaddr} boot.scr.uimg; then " \ | |
122 | "source ${scriptaddr}; " \ | |
123 | "fi\0" | |
124 | #define BOOTENV_DEV_NAME_DHCP(devtypeu, devtypel, instance) \ | |
125 | "dhcp " | |
126 | #else | |
127 | #define BOOTENV_DEV_DHCP \ | |
128 | BOOT_TARGET_DEVICES_references_DHCP_without_CONFIG_CMD_DHCP | |
129 | #define BOOTENV_DEV_NAME_DHCP \ | |
130 | BOOT_TARGET_DEVICES_references_DHCP_without_CONFIG_CMD_DHCP | |
131 | #endif | |
132 | ||
133 | #if defined(CONFIG_CMD_DHCP) && defined(CONFIG_CMD_PXE) | |
134 | #define BOOTENV_DEV_PXE(devtypeu, devtypel, instance) \ | |
135 | "bootcmd_pxe=" \ | |
136 | BOOTENV_RUN_USB_INIT \ | |
137 | "dhcp; " \ | |
138 | "if pxe get; then " \ | |
139 | "pxe boot; " \ | |
140 | "fi\0" | |
141 | #define BOOTENV_DEV_NAME_PXE(devtypeu, devtypel, instance) \ | |
142 | "pxe " | |
143 | #else | |
144 | #define BOOTENV_DEV_PXE \ | |
145 | BOOT_TARGET_DEVICES_references_PXE_without_CONFIG_CMD_DHCP_or_PXE | |
146 | #define BOOTENV_DEV_NAME_PXE \ | |
147 | BOOT_TARGET_DEVICES_references_PXE_without_CONFIG_CMD_DHCP_or_PXE | |
148 | #endif | |
149 | ||
150 | #define BOOTENV_DEV_NAME(devtypeu, devtypel, instance) \ | |
151 | BOOTENV_DEV_NAME_##devtypeu(devtypeu, devtypel, instance) | |
152 | #define BOOTENV_BOOT_TARGETS \ | |
153 | "boot_targets=" BOOT_TARGET_DEVICES(BOOTENV_DEV_NAME) "\0" | |
154 | ||
155 | #define BOOTENV_DEV(devtypeu, devtypel, instance) \ | |
156 | BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance) | |
157 | #define BOOTENV \ | |
158 | BOOTENV_SHARED_MMC \ | |
159 | BOOTENV_SHARED_USB \ | |
160 | BOOTENV_SHARED_SATA \ | |
161 | BOOTENV_SHARED_SCSI \ | |
162 | BOOTENV_SHARED_IDE \ | |
163 | "boot_prefixes=/ /boot/\0" \ | |
164 | "boot_scripts=boot.scr.uimg boot.scr\0" \ | |
165 | BOOTENV_BOOT_TARGETS \ | |
166 | "bootpart=1\0" \ | |
167 | \ | |
168 | "boot_extlinux=" \ | |
169 | "sysboot ${devtype} ${devnum}:${bootpart} any " \ | |
170 | "${scriptaddr} ${prefix}extlinux/extlinux.conf\0" \ | |
171 | \ | |
172 | "scan_dev_for_extlinux=" \ | |
173 | "if test -e ${devtype} ${devnum}:${bootpart} " \ | |
174 | "${prefix}extlinux/extlinux.conf; then " \ | |
175 | "echo Found ${prefix}extlinux/extlinux.conf; " \ | |
176 | "run boot_extlinux; " \ | |
177 | "echo SCRIPT FAILED: continuing...; " \ | |
178 | "fi\0" \ | |
179 | \ | |
180 | "boot_a_script=" \ | |
181 | "load ${devtype} ${devnum}:${bootpart} " \ | |
182 | "${scriptaddr} ${prefix}${script}; " \ | |
183 | "source ${scriptaddr}\0" \ | |
184 | \ | |
185 | "scan_dev_for_scripts=" \ | |
186 | "for script in ${boot_scripts}; do " \ | |
187 | "if test -e ${devtype} ${devnum}:${bootpart} " \ | |
188 | "${prefix}${script}; then " \ | |
189 | "echo Found U-Boot script " \ | |
190 | "${prefix}${script}; " \ | |
191 | "run boot_a_script; " \ | |
192 | "echo SCRIPT FAILED: continuing...; " \ | |
193 | "fi; " \ | |
194 | "done\0" \ | |
195 | \ | |
196 | "scan_dev_for_boot=" \ | |
197 | "echo Scanning ${devtype} ${devnum}...; " \ | |
198 | "for prefix in ${boot_prefixes}; do " \ | |
199 | "run scan_dev_for_extlinux; " \ | |
200 | "run scan_dev_for_scripts; " \ | |
201 | "done\0" \ | |
202 | \ | |
203 | BOOT_TARGET_DEVICES(BOOTENV_DEV) \ | |
204 | \ | |
a03bdaa1 | 205 | "bootcmd=" BOOTENV_SET_USB_NEED_INIT BOOTENV_SET_SCSI_NEED_INIT \ |
2a43201a DG |
206 | "for target in ${boot_targets}; do " \ |
207 | "run bootcmd_${target}; " \ | |
208 | "done\0" | |
209 | ||
210 | #endif /* _CONFIG_CMD_DISTRO_BOOTCMD_H */ |