Commit dba0d7c7dc3b9b60043726931b1f635b725e9756

Authored by Ye Li
1 parent bb5ed5774d

MLK-20559-1 spl_sdp: Add CONFIG_SPL_SDP_USB_DEV for USB device

Add a new configuration CONFIG_SPL_SDP_USB_DEV to specify the
usb index for spl sdp driver, so that we change use different device.
The default value is 0.

Signed-off-by: Ye Li <ye.li@nxp.com>

Showing 2 changed files with 10 additions and 2 deletions Inline Diff

1 menu "SPL / TPL" 1 menu "SPL / TPL"
2 2
3 config SUPPORT_SPL 3 config SUPPORT_SPL
4 bool 4 bool
5 5
6 config SUPPORT_TPL 6 config SUPPORT_TPL
7 bool 7 bool
8 8
9 config SPL_DFU_NO_RESET 9 config SPL_DFU_NO_RESET
10 bool 10 bool
11 11
12 config SPL 12 config SPL
13 bool 13 bool
14 depends on SUPPORT_SPL 14 depends on SUPPORT_SPL
15 prompt "Enable SPL" 15 prompt "Enable SPL"
16 help 16 help
17 If you want to build SPL as well as the normal image, say Y. 17 If you want to build SPL as well as the normal image, say Y.
18 18
19 config SPL_FRAMEWORK 19 config SPL_FRAMEWORK
20 bool "Support SPL based upon the common SPL framework" 20 bool "Support SPL based upon the common SPL framework"
21 depends on SPL 21 depends on SPL
22 default y 22 default y
23 help 23 help
24 Enable the SPL framework under common/spl/. This framework 24 Enable the SPL framework under common/spl/. This framework
25 supports MMC, NAND and YMODEM and other methods loading of U-Boot 25 supports MMC, NAND and YMODEM and other methods loading of U-Boot
26 and the Linux Kernel. If unsure, say Y. 26 and the Linux Kernel. If unsure, say Y.
27 27
28 if SPL 28 if SPL
29 29
30 config SPL_LDSCRIPT 30 config SPL_LDSCRIPT
31 string "Linker script for the SPL stage" 31 string "Linker script for the SPL stage"
32 default "arch/$(ARCH)/cpu/u-boot-spl.lds" 32 default "arch/$(ARCH)/cpu/u-boot-spl.lds"
33 help 33 help
34 The SPL stage will usually require a different linker-script 34 The SPL stage will usually require a different linker-script
35 (as it runs from a different memory region) than the regular 35 (as it runs from a different memory region) than the regular
36 U-Boot stage. Set this to the path of the linker-script to 36 U-Boot stage. Set this to the path of the linker-script to
37 be used for SPL. 37 be used for SPL.
38 38
39 config SPL_BOARD_INIT 39 config SPL_BOARD_INIT
40 bool "Call board-specific initialization in SPL" 40 bool "Call board-specific initialization in SPL"
41 help 41 help
42 If this option is enabled, U-Boot will call the function 42 If this option is enabled, U-Boot will call the function
43 spl_board_init() from board_init_r(). This function should be 43 spl_board_init() from board_init_r(). This function should be
44 provided by the board. 44 provided by the board.
45 45
46 config SPL_BOOTROM_SUPPORT 46 config SPL_BOOTROM_SUPPORT
47 bool "Support returning to the BOOTROM" 47 bool "Support returning to the BOOTROM"
48 help 48 help
49 Some platforms (e.g. the Rockchip RK3368) provide support in their 49 Some platforms (e.g. the Rockchip RK3368) provide support in their
50 ROM for loading the next boot-stage after performing basic setup 50 ROM for loading the next boot-stage after performing basic setup
51 from the SPL stage. 51 from the SPL stage.
52 52
53 Enable this option, to return to the BOOTROM through the 53 Enable this option, to return to the BOOTROM through the
54 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the 54 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
55 boot device list, if not implemented for a given board) 55 boot device list, if not implemented for a given board)
56 56
57 config SPL_RAW_IMAGE_SUPPORT 57 config SPL_RAW_IMAGE_SUPPORT
58 bool "Support SPL loading and booting of RAW images" 58 bool "Support SPL loading and booting of RAW images"
59 default n if (ARCH_MX6 && (SPL_MMC_SUPPORT || SPL_SATA_SUPPORT)) 59 default n if (ARCH_MX6 && (SPL_MMC_SUPPORT || SPL_SATA_SUPPORT))
60 default y if !TI_SECURE_DEVICE 60 default y if !TI_SECURE_DEVICE
61 help 61 help
62 SPL will support loading and booting a RAW image when this option 62 SPL will support loading and booting a RAW image when this option
63 is y. If this is not set, SPL will move on to other available 63 is y. If this is not set, SPL will move on to other available
64 boot media to find a suitable image. 64 boot media to find a suitable image.
65 65
66 config SPL_LEGACY_IMAGE_SUPPORT 66 config SPL_LEGACY_IMAGE_SUPPORT
67 bool "Support SPL loading and booting of Legacy images" 67 bool "Support SPL loading and booting of Legacy images"
68 default y if !TI_SECURE_DEVICE 68 default y if !TI_SECURE_DEVICE
69 help 69 help
70 SPL will support loading and booting Legacy images when this option 70 SPL will support loading and booting Legacy images when this option
71 is y. If this is not set, SPL will move on to other available 71 is y. If this is not set, SPL will move on to other available
72 boot media to find a suitable image. 72 boot media to find a suitable image.
73 73
74 config SPL_SYS_MALLOC_SIMPLE 74 config SPL_SYS_MALLOC_SIMPLE
75 bool 75 bool
76 prompt "Only use malloc_simple functions in the SPL" 76 prompt "Only use malloc_simple functions in the SPL"
77 help 77 help
78 Say Y here to only use the *_simple malloc functions from 78 Say Y here to only use the *_simple malloc functions from
79 malloc_simple.c, rather then using the versions from dlmalloc.c; 79 malloc_simple.c, rather then using the versions from dlmalloc.c;
80 this will make the SPL binary smaller at the cost of more heap 80 this will make the SPL binary smaller at the cost of more heap
81 usage as the *_simple malloc functions do not re-use free-ed mem. 81 usage as the *_simple malloc functions do not re-use free-ed mem.
82 82
83 config TPL_SYS_MALLOC_SIMPLE 83 config TPL_SYS_MALLOC_SIMPLE
84 bool 84 bool
85 prompt "Only use malloc_simple functions in the TPL" 85 prompt "Only use malloc_simple functions in the TPL"
86 help 86 help
87 Say Y here to only use the *_simple malloc functions from 87 Say Y here to only use the *_simple malloc functions from
88 malloc_simple.c, rather then using the versions from dlmalloc.c; 88 malloc_simple.c, rather then using the versions from dlmalloc.c;
89 this will make the TPL binary smaller at the cost of more heap 89 this will make the TPL binary smaller at the cost of more heap
90 usage as the *_simple malloc functions do not re-use free-ed mem. 90 usage as the *_simple malloc functions do not re-use free-ed mem.
91 91
92 config SPL_STACK_R 92 config SPL_STACK_R
93 bool "Enable SDRAM location for SPL stack" 93 bool "Enable SDRAM location for SPL stack"
94 help 94 help
95 SPL starts off execution in SRAM and thus typically has only a small 95 SPL starts off execution in SRAM and thus typically has only a small
96 stack available. Since SPL sets up DRAM while in its board_init_f() 96 stack available. Since SPL sets up DRAM while in its board_init_f()
97 function, it is possible for the stack to move there before 97 function, it is possible for the stack to move there before
98 board_init_r() is reached. This option enables a special SDRAM 98 board_init_r() is reached. This option enables a special SDRAM
99 location for the SPL stack. U-Boot SPL switches to this after 99 location for the SPL stack. U-Boot SPL switches to this after
100 board_init_f() completes, and before board_init_r() starts. 100 board_init_f() completes, and before board_init_r() starts.
101 101
102 config SPL_STACK_R_ADDR 102 config SPL_STACK_R_ADDR
103 depends on SPL_STACK_R 103 depends on SPL_STACK_R
104 hex "SDRAM location for SPL stack" 104 hex "SDRAM location for SPL stack"
105 default 0x82000000 if ARCH_OMAP2PLUS 105 default 0x82000000 if ARCH_OMAP2PLUS
106 help 106 help
107 Specify the address in SDRAM for the SPL stack. This will be set up 107 Specify the address in SDRAM for the SPL stack. This will be set up
108 before board_init_r() is called. 108 before board_init_r() is called.
109 109
110 config SPL_STACK_R_MALLOC_SIMPLE_LEN 110 config SPL_STACK_R_MALLOC_SIMPLE_LEN
111 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE 111 depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
112 hex "Size of malloc_simple heap after switching to DRAM SPL stack" 112 hex "Size of malloc_simple heap after switching to DRAM SPL stack"
113 default 0x100000 113 default 0x100000
114 help 114 help
115 Specify the amount of the stack to use as memory pool for 115 Specify the amount of the stack to use as memory pool for
116 malloc_simple after switching the stack to DRAM. This may be set 116 malloc_simple after switching the stack to DRAM. This may be set
117 to give board_init_r() a larger heap then the initial heap in 117 to give board_init_r() a larger heap then the initial heap in
118 SRAM which is limited to SYS_MALLOC_F_LEN bytes. 118 SRAM which is limited to SYS_MALLOC_F_LEN bytes.
119 119
120 config SPL_SEPARATE_BSS 120 config SPL_SEPARATE_BSS
121 bool "BSS section is in a different memory region from text" 121 bool "BSS section is in a different memory region from text"
122 help 122 help
123 Some platforms need a large BSS region in SPL and can provide this 123 Some platforms need a large BSS region in SPL and can provide this
124 because RAM is already set up. In this case BSS can be moved to RAM. 124 because RAM is already set up. In this case BSS can be moved to RAM.
125 This option should then be enabled so that the correct device tree 125 This option should then be enabled so that the correct device tree
126 location is used. Normally we put the device tree at the end of BSS 126 location is used. Normally we put the device tree at the end of BSS
127 but with this option enabled, it goes at _image_binary_end. 127 but with this option enabled, it goes at _image_binary_end.
128 128
129 config SPL_DISABLE_BANNER_PRINT 129 config SPL_DISABLE_BANNER_PRINT
130 bool "Disable output of the SPL banner 'U-Boot SPL ...'" 130 bool "Disable output of the SPL banner 'U-Boot SPL ...'"
131 help 131 help
132 If this option is enabled, SPL will not print the banner with version 132 If this option is enabled, SPL will not print the banner with version
133 info. Selecting this option could be useful to reduce SPL boot time 133 info. Selecting this option could be useful to reduce SPL boot time
134 (e.g. approx. 6 ms slower, when output on i.MX6 with 115200 baud). 134 (e.g. approx. 6 ms slower, when output on i.MX6 with 115200 baud).
135 135
136 config SPL_DISPLAY_PRINT 136 config SPL_DISPLAY_PRINT
137 bool "Display a board-specific message in SPL" 137 bool "Display a board-specific message in SPL"
138 help 138 help
139 If this option is enabled, U-Boot will call the function 139 If this option is enabled, U-Boot will call the function
140 spl_display_print() immediately after displaying the SPL console 140 spl_display_print() immediately after displaying the SPL console
141 banner ("U-Boot SPL ..."). This function should be provided by 141 banner ("U-Boot SPL ..."). This function should be provided by
142 the board. 142 the board.
143 143
144 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 144 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
145 bool "MMC raw mode: by sector" 145 bool "MMC raw mode: by sector"
146 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER ||ARCH_MX6 || \ 146 default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER ||ARCH_MX6 || \
147 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \ 147 ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
148 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \ 148 ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
149 OMAP44XX || OMAP54XX || AM33XX || AM43XX 149 OMAP44XX || OMAP54XX || AM33XX || AM43XX
150 help 150 help
151 Use sector number for specifying U-Boot location on MMC/SD in 151 Use sector number for specifying U-Boot location on MMC/SD in
152 raw mode. 152 raw mode.
153 153
154 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 154 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
155 hex "Address on the MMC to load U-Boot from" 155 hex "Address on the MMC to load U-Boot from"
156 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 156 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
157 default 0x50 if ARCH_SUNXI 157 default 0x50 if ARCH_SUNXI
158 default 0x75 if ARCH_DAVINCI 158 default 0x75 if ARCH_DAVINCI
159 default 0x8a if ARCH_MX6 159 default 0x8a if ARCH_MX6
160 default 0x100 if ARCH_UNIPHIER 160 default 0x100 if ARCH_UNIPHIER
161 default 0x140 if ARCH_MVEBU 161 default 0x140 if ARCH_MVEBU
162 default 0x200 if ARCH_SOCFPGA || ARCH_AT91 162 default 0x200 if ARCH_SOCFPGA || ARCH_AT91
163 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \ 163 default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
164 OMAP54XX || AM33XX || AM43XX 164 OMAP54XX || AM33XX || AM43XX
165 default 0x4000 if ARCH_ROCKCHIP 165 default 0x4000 if ARCH_ROCKCHIP
166 help 166 help
167 Address on the MMC to load U-Boot from, when the MMC is being used 167 Address on the MMC to load U-Boot from, when the MMC is being used
168 in raw mode. Units: MMC sectors (1 sector = 512 bytes). 168 in raw mode. Units: MMC sectors (1 sector = 512 bytes).
169 169
170 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION 170 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
171 bool "MMC Raw mode: by partition" 171 bool "MMC Raw mode: by partition"
172 help 172 help
173 Use a partition for loading U-Boot when using MMC/SD in raw mode. 173 Use a partition for loading U-Boot when using MMC/SD in raw mode.
174 174
175 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION 175 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
176 hex "Partition to use to load U-Boot from" 176 hex "Partition to use to load U-Boot from"
177 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION 177 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
178 default 1 178 default 1
179 help 179 help
180 Partition on the MMC to load U-Boot from when the MMC is being 180 Partition on the MMC to load U-Boot from when the MMC is being
181 used in raw mode 181 used in raw mode
182 182
183 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE 183 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
184 bool "MMC raw mode: by partition type" 184 bool "MMC raw mode: by partition type"
185 depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION 185 depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
186 help 186 help
187 Use partition type for specifying U-Boot partition on MMC/SD in 187 Use partition type for specifying U-Boot partition on MMC/SD in
188 raw mode. U-Boot will be loaded from the first partition of this 188 raw mode. U-Boot will be loaded from the first partition of this
189 type to be found. 189 type to be found.
190 190
191 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE 191 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
192 hex "Partition Type on the MMC to load U-Boot from" 192 hex "Partition Type on the MMC to load U-Boot from"
193 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE 193 depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
194 help 194 help
195 Partition Type on the MMC to load U-Boot from, when the MMC is being 195 Partition Type on the MMC to load U-Boot from, when the MMC is being
196 used in raw mode. 196 used in raw mode.
197 197
198 config SPL_CRC32_SUPPORT 198 config SPL_CRC32_SUPPORT
199 bool "Support CRC32" 199 bool "Support CRC32"
200 depends on SPL_FIT 200 depends on SPL_FIT
201 help 201 help
202 Enable this to support CRC32 in FIT images within SPL. This is a 202 Enable this to support CRC32 in FIT images within SPL. This is a
203 32-bit checksum value that can be used to verify images. This is 203 32-bit checksum value that can be used to verify images. This is
204 the least secure type of checksum, suitable for detected 204 the least secure type of checksum, suitable for detected
205 accidental image corruption. For secure applications you should 205 accidental image corruption. For secure applications you should
206 consider SHA1 or SHA256. 206 consider SHA1 or SHA256.
207 207
208 config SPL_MD5_SUPPORT 208 config SPL_MD5_SUPPORT
209 bool "Support MD5" 209 bool "Support MD5"
210 depends on SPL_FIT 210 depends on SPL_FIT
211 help 211 help
212 Enable this to support MD5 in FIT images within SPL. An MD5 212 Enable this to support MD5 in FIT images within SPL. An MD5
213 checksum is a 128-bit hash value used to check that the image 213 checksum is a 128-bit hash value used to check that the image
214 contents have not been corrupted. Note that MD5 is not considered 214 contents have not been corrupted. Note that MD5 is not considered
215 secure as it is possible (with a brute-force attack) to adjust the 215 secure as it is possible (with a brute-force attack) to adjust the
216 image while still retaining the same MD5 hash value. For secure 216 image while still retaining the same MD5 hash value. For secure
217 applications where images may be changed maliciously, you should 217 applications where images may be changed maliciously, you should
218 consider SHA1 or SHA256. 218 consider SHA1 or SHA256.
219 219
220 config SPL_SHA1_SUPPORT 220 config SPL_SHA1_SUPPORT
221 bool "Support SHA1" 221 bool "Support SHA1"
222 depends on SPL_FIT 222 depends on SPL_FIT
223 select SHA1 223 select SHA1
224 help 224 help
225 Enable this to support SHA1 in FIT images within SPL. A SHA1 225 Enable this to support SHA1 in FIT images within SPL. A SHA1
226 checksum is a 160-bit (20-byte) hash value used to check that the 226 checksum is a 160-bit (20-byte) hash value used to check that the
227 image contents have not been corrupted or maliciously altered. 227 image contents have not been corrupted or maliciously altered.
228 While SHA1 is fairly secure it is coming to the end of its life 228 While SHA1 is fairly secure it is coming to the end of its life
229 due to the expanding computing power avaiable to brute-force 229 due to the expanding computing power avaiable to brute-force
230 attacks. For more security, consider SHA256. 230 attacks. For more security, consider SHA256.
231 231
232 config SPL_SHA256_SUPPORT 232 config SPL_SHA256_SUPPORT
233 bool "Support SHA256" 233 bool "Support SHA256"
234 depends on SPL_FIT 234 depends on SPL_FIT
235 select SHA256 235 select SHA256
236 help 236 help
237 Enable this to support SHA256 in FIT images within SPL. A SHA256 237 Enable this to support SHA256 in FIT images within SPL. A SHA256
238 checksum is a 256-bit (32-byte) hash value used to check that the 238 checksum is a 256-bit (32-byte) hash value used to check that the
239 image contents have not been corrupted. SHA256 is recommended for 239 image contents have not been corrupted. SHA256 is recommended for
240 use in secure applications since (as at 2016) there is no known 240 use in secure applications since (as at 2016) there is no known
241 feasible attack that could produce a 'collision' with differing 241 feasible attack that could produce a 'collision' with differing
242 input data. Use this for the highest security. Note that only the 242 input data. Use this for the highest security. Note that only the
243 SHA256 variant is supported: SHA512 and others are not currently 243 SHA256 variant is supported: SHA512 and others are not currently
244 supported in U-Boot. 244 supported in U-Boot.
245 245
246 config SPL_FIT_IMAGE_TINY 246 config SPL_FIT_IMAGE_TINY
247 bool "Remove functionality from SPL FIT loading to reduce size" 247 bool "Remove functionality from SPL FIT loading to reduce size"
248 depends on SPL_FIT 248 depends on SPL_FIT
249 default y if MACH_SUN50I || MACH_SUN50I_H5 249 default y if MACH_SUN50I || MACH_SUN50I_H5
250 default y if ARCH_IMX8M 250 default y if ARCH_IMX8M
251 help 251 help
252 Enable this to reduce the size of the FIT image loading code 252 Enable this to reduce the size of the FIT image loading code
253 in SPL, if space for the SPL binary is very tight. 253 in SPL, if space for the SPL binary is very tight.
254 254
255 This removes the detection of image types (which forces the 255 This removes the detection of image types (which forces the
256 first image to be treated as having a U-Boot style calling 256 first image to be treated as having a U-Boot style calling
257 convention) and skips the recording of each loaded payload 257 convention) and skips the recording of each loaded payload
258 (i.e. loadable) into the FDT (modifying the loaded FDT to 258 (i.e. loadable) into the FDT (modifying the loaded FDT to
259 ensure this information is available to the next image 259 ensure this information is available to the next image
260 invoked). 260 invoked).
261 261
262 config SPL_CPU_SUPPORT 262 config SPL_CPU_SUPPORT
263 bool "Support CPU drivers" 263 bool "Support CPU drivers"
264 help 264 help
265 Enable this to support CPU drivers in SPL. These drivers can set 265 Enable this to support CPU drivers in SPL. These drivers can set
266 up CPUs and provide information about them such as the model and 266 up CPUs and provide information about them such as the model and
267 name. This can be useful in SPL since setting up the CPUs earlier 267 name. This can be useful in SPL since setting up the CPUs earlier
268 may improve boot performance. Enable this option to build the 268 may improve boot performance. Enable this option to build the
269 drivers in drivers/cpu as part of an SPL build. 269 drivers in drivers/cpu as part of an SPL build.
270 270
271 config SPL_CRYPTO_SUPPORT 271 config SPL_CRYPTO_SUPPORT
272 bool "Support crypto drivers" 272 bool "Support crypto drivers"
273 help 273 help
274 Enable crypto drivers in SPL. These drivers can be used to 274 Enable crypto drivers in SPL. These drivers can be used to
275 accelerate secure boot processing in secure applications. Enable 275 accelerate secure boot processing in secure applications. Enable
276 this option to build the drivers in drivers/crypto as part of an 276 this option to build the drivers in drivers/crypto as part of an
277 SPL build. 277 SPL build.
278 278
279 config SPL_HASH_SUPPORT 279 config SPL_HASH_SUPPORT
280 bool "Support hashing drivers" 280 bool "Support hashing drivers"
281 select SHA1 281 select SHA1
282 select SHA256 282 select SHA256
283 help 283 help
284 Enable hashing drivers in SPL. These drivers can be used to 284 Enable hashing drivers in SPL. These drivers can be used to
285 accelerate secure boot processing in secure applications. Enable 285 accelerate secure boot processing in secure applications. Enable
286 this option to build system-specific drivers for hash acceleration 286 this option to build system-specific drivers for hash acceleration
287 as part of an SPL build. 287 as part of an SPL build.
288 288
289 config SPL_DMA_SUPPORT 289 config SPL_DMA_SUPPORT
290 bool "Support DMA drivers" 290 bool "Support DMA drivers"
291 help 291 help
292 Enable DMA (direct-memory-access) drivers in SPL. These drivers 292 Enable DMA (direct-memory-access) drivers in SPL. These drivers
293 can be used to handle memory-to-peripheral data transfer without 293 can be used to handle memory-to-peripheral data transfer without
294 the CPU moving the data. Enable this option to build the drivers 294 the CPU moving the data. Enable this option to build the drivers
295 in drivers/dma as part of an SPL build. 295 in drivers/dma as part of an SPL build.
296 296
297 config SPL_DRIVERS_MISC_SUPPORT 297 config SPL_DRIVERS_MISC_SUPPORT
298 bool "Support misc drivers" 298 bool "Support misc drivers"
299 help 299 help
300 Enable miscellaneous drivers in SPL. These drivers perform various 300 Enable miscellaneous drivers in SPL. These drivers perform various
301 tasks that don't fall nicely into other categories, Enable this 301 tasks that don't fall nicely into other categories, Enable this
302 option to build the drivers in drivers/misc as part of an SPL 302 option to build the drivers in drivers/misc as part of an SPL
303 build, for those that support building in SPL (not all drivers do). 303 build, for those that support building in SPL (not all drivers do).
304 304
305 config SPL_ENV_SUPPORT 305 config SPL_ENV_SUPPORT
306 bool "Support an environment" 306 bool "Support an environment"
307 help 307 help
308 Enable environment support in SPL. The U-Boot environment provides 308 Enable environment support in SPL. The U-Boot environment provides
309 a number of settings (essentially name/value pairs) which can 309 a number of settings (essentially name/value pairs) which can
310 control many aspects of U-Boot's operation. Normally this is not 310 control many aspects of U-Boot's operation. Normally this is not
311 needed in SPL as it has a much simpler task with less 311 needed in SPL as it has a much simpler task with less
312 configuration. But some boards use this to support 'Falcon' boot 312 configuration. But some boards use this to support 'Falcon' boot
313 on EXT2 and FAT, where SPL boots directly into Linux without 313 on EXT2 and FAT, where SPL boots directly into Linux without
314 starting U-Boot first. Enabling this option will make env_get() 314 starting U-Boot first. Enabling this option will make env_get()
315 and env_set() available in SPL. 315 and env_set() available in SPL.
316 316
317 config SPL_SAVEENV 317 config SPL_SAVEENV
318 bool "Support save environment" 318 bool "Support save environment"
319 depends on SPL_ENV_SUPPORT 319 depends on SPL_ENV_SUPPORT
320 select SPL_MMC_WRITE if ENV_IS_IN_MMC 320 select SPL_MMC_WRITE if ENV_IS_IN_MMC
321 help 321 help
322 Enable save environment support in SPL after setenv. By default 322 Enable save environment support in SPL after setenv. By default
323 the saveenv option is not provided in SPL, but some boards need 323 the saveenv option is not provided in SPL, but some boards need
324 this support in 'Falcon' boot, where SPL need to boot from 324 this support in 'Falcon' boot, where SPL need to boot from
325 different images based on environment variable set by OS. For 325 different images based on environment variable set by OS. For
326 example OS may set "reboot_image" environment variable to 326 example OS may set "reboot_image" environment variable to
327 "recovery" inorder to boot recovery image by SPL. The SPL read 327 "recovery" inorder to boot recovery image by SPL. The SPL read
328 "reboot_image" and act accordingly and change the reboot_image 328 "reboot_image" and act accordingly and change the reboot_image
329 to default mode using setenv and save the environemnt. 329 to default mode using setenv and save the environemnt.
330 330
331 config SPL_ETH_SUPPORT 331 config SPL_ETH_SUPPORT
332 bool "Support Ethernet" 332 bool "Support Ethernet"
333 depends on SPL_ENV_SUPPORT 333 depends on SPL_ENV_SUPPORT
334 help 334 help
335 Enable access to the network subsystem and associated Ethernet 335 Enable access to the network subsystem and associated Ethernet
336 drivers in SPL. This permits SPL to load U-Boot over an Ethernet 336 drivers in SPL. This permits SPL to load U-Boot over an Ethernet
337 link rather than from an on-board peripheral. Environment support 337 link rather than from an on-board peripheral. Environment support
338 is required since the network stack uses a number of environment 338 is required since the network stack uses a number of environment
339 variables. See also SPL_NET_SUPPORT. 339 variables. See also SPL_NET_SUPPORT.
340 340
341 config SPL_EXT_SUPPORT 341 config SPL_EXT_SUPPORT
342 bool "Support EXT filesystems" 342 bool "Support EXT filesystems"
343 help 343 help
344 Enable support for EXT2/3/4 filesystems with SPL. This permits 344 Enable support for EXT2/3/4 filesystems with SPL. This permits
345 U-Boot (or Linux in Falcon mode) to be loaded from an EXT 345 U-Boot (or Linux in Falcon mode) to be loaded from an EXT
346 filesystem from within SPL. Support for the underlying block 346 filesystem from within SPL. Support for the underlying block
347 device (e.g. MMC or USB) must be enabled separately. 347 device (e.g. MMC or USB) must be enabled separately.
348 348
349 config SPL_FAT_SUPPORT 349 config SPL_FAT_SUPPORT
350 bool "Support FAT filesystems" 350 bool "Support FAT filesystems"
351 select FS_FAT 351 select FS_FAT
352 help 352 help
353 Enable support for FAT and VFAT filesystems with SPL. This 353 Enable support for FAT and VFAT filesystems with SPL. This
354 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT 354 permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
355 filesystem from within SPL. Support for the underlying block 355 filesystem from within SPL. Support for the underlying block
356 device (e.g. MMC or USB) must be enabled separately. 356 device (e.g. MMC or USB) must be enabled separately.
357 357
358 config SPL_FPGA_SUPPORT 358 config SPL_FPGA_SUPPORT
359 bool "Support FPGAs" 359 bool "Support FPGAs"
360 help 360 help
361 Enable support for FPGAs in SPL. Field-programmable Gate Arrays 361 Enable support for FPGAs in SPL. Field-programmable Gate Arrays
362 provide software-configurable hardware which is typically used to 362 provide software-configurable hardware which is typically used to
363 implement peripherals (such as UARTs, LCD displays, MMC) or 363 implement peripherals (such as UARTs, LCD displays, MMC) or
364 accelerate custom processing functions, such as image processing 364 accelerate custom processing functions, such as image processing
365 or machine learning. Sometimes it is useful to program the FPGA 365 or machine learning. Sometimes it is useful to program the FPGA
366 as early as possible during boot, and this option can enable that 366 as early as possible during boot, and this option can enable that
367 within SPL. 367 within SPL.
368 368
369 config SPL_GPIO_SUPPORT 369 config SPL_GPIO_SUPPORT
370 bool "Support GPIO" 370 bool "Support GPIO"
371 help 371 help
372 Enable support for GPIOs (General-purpose Input/Output) in SPL. 372 Enable support for GPIOs (General-purpose Input/Output) in SPL.
373 GPIOs allow U-Boot to read the state of an input line (high or 373 GPIOs allow U-Boot to read the state of an input line (high or
374 low) and set the state of an output line. This can be used to 374 low) and set the state of an output line. This can be used to
375 drive LEDs, control power to various system parts and read user 375 drive LEDs, control power to various system parts and read user
376 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED, 376 input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
377 for example. Enable this option to build the drivers in 377 for example. Enable this option to build the drivers in
378 drivers/gpio as part of an SPL build. 378 drivers/gpio as part of an SPL build.
379 379
380 config SPL_I2C_SUPPORT 380 config SPL_I2C_SUPPORT
381 bool "Support I2C" 381 bool "Support I2C"
382 help 382 help
383 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL. 383 Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
384 I2C works with a clock and data line which can be driven by a 384 I2C works with a clock and data line which can be driven by a
385 one or more masters or slaves. It is a fairly complex bus but is 385 one or more masters or slaves. It is a fairly complex bus but is
386 widely used as it only needs two lines for communication. Speeds of 386 widely used as it only needs two lines for communication. Speeds of
387 400kbps are typical but up to 3.4Mbps is supported by some 387 400kbps are typical but up to 3.4Mbps is supported by some
388 hardware. I2C can be useful in SPL to configure power management 388 hardware. I2C can be useful in SPL to configure power management
389 ICs (PMICs) before raising the CPU clock speed, for example. 389 ICs (PMICs) before raising the CPU clock speed, for example.
390 Enable this option to build the drivers in drivers/i2c as part of 390 Enable this option to build the drivers in drivers/i2c as part of
391 an SPL build. 391 an SPL build.
392 392
393 config SPL_LIBCOMMON_SUPPORT 393 config SPL_LIBCOMMON_SUPPORT
394 bool "Support common libraries" 394 bool "Support common libraries"
395 help 395 help
396 Enable support for common U-Boot libraries within SPL. These 396 Enable support for common U-Boot libraries within SPL. These
397 libraries include common code to deal with U-Boot images, 397 libraries include common code to deal with U-Boot images,
398 environment and USB, for example. This option is enabled on many 398 environment and USB, for example. This option is enabled on many
399 boards. Enable this option to build the code in common/ as part of 399 boards. Enable this option to build the code in common/ as part of
400 an SPL build. 400 an SPL build.
401 401
402 config SPL_LIBDISK_SUPPORT 402 config SPL_LIBDISK_SUPPORT
403 bool "Support disk paritions" 403 bool "Support disk paritions"
404 help 404 help
405 Enable support for disk partitions within SPL. 'Disk' is something 405 Enable support for disk partitions within SPL. 'Disk' is something
406 of a misnomer as it includes non-spinning media such as flash (as 406 of a misnomer as it includes non-spinning media such as flash (as
407 used in MMC and USB sticks). Partitions provide a way for a disk 407 used in MMC and USB sticks). Partitions provide a way for a disk
408 to be split up into separate regions, with a partition table placed 408 to be split up into separate regions, with a partition table placed
409 at the start or end which describes the location and size of each 409 at the start or end which describes the location and size of each
410 'partition'. These partitions are typically uses as individual block 410 'partition'. These partitions are typically uses as individual block
411 devices, typically with an EXT2 or FAT filesystem in each. This 411 devices, typically with an EXT2 or FAT filesystem in each. This
412 option enables whatever partition support has been enabled in 412 option enables whatever partition support has been enabled in
413 U-Boot to also be used in SPL. It brings in the code in disk/. 413 U-Boot to also be used in SPL. It brings in the code in disk/.
414 414
415 config SPL_LIBGENERIC_SUPPORT 415 config SPL_LIBGENERIC_SUPPORT
416 bool "Support generic libraries" 416 bool "Support generic libraries"
417 help 417 help
418 Enable support for generic U-Boot libraries within SPL. These 418 Enable support for generic U-Boot libraries within SPL. These
419 libraries include generic code to deal with device tree, hashing, 419 libraries include generic code to deal with device tree, hashing,
420 printf(), compression and the like. This option is enabled on many 420 printf(), compression and the like. This option is enabled on many
421 boards. Enable this option to build the code in lib/ as part of an 421 boards. Enable this option to build the code in lib/ as part of an
422 SPL build. 422 SPL build.
423 423
424 config SPL_MMC_SUPPORT 424 config SPL_MMC_SUPPORT
425 bool "Support MMC" 425 bool "Support MMC"
426 depends on MMC 426 depends on MMC
427 help 427 help
428 Enable support for MMC (Multimedia Card) within SPL. This enables 428 Enable support for MMC (Multimedia Card) within SPL. This enables
429 the MMC protocol implementation and allows any enabled drivers to 429 the MMC protocol implementation and allows any enabled drivers to
430 be used within SPL. MMC can be used with or without disk partition 430 be used within SPL. MMC can be used with or without disk partition
431 support depending on the application (SPL_LIBDISK_SUPPORT). Enable 431 support depending on the application (SPL_LIBDISK_SUPPORT). Enable
432 this option to build the drivers in drivers/mmc as part of an SPL 432 this option to build the drivers in drivers/mmc as part of an SPL
433 build. 433 build.
434 434
435 config SPL_MMC_WRITE 435 config SPL_MMC_WRITE
436 bool "MMC/SD/SDIO card support for write operations in SPL" 436 bool "MMC/SD/SDIO card support for write operations in SPL"
437 depends on SPL_MMC_SUPPORT 437 depends on SPL_MMC_SUPPORT
438 default n 438 default n
439 help 439 help
440 Enable write access to MMC and SD Cards in SPL 440 Enable write access to MMC and SD Cards in SPL
441 441
442 442
443 config SPL_MPC8XXX_INIT_DDR_SUPPORT 443 config SPL_MPC8XXX_INIT_DDR_SUPPORT
444 bool "Support MPC8XXX DDR init" 444 bool "Support MPC8XXX DDR init"
445 help 445 help
446 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic 446 Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
447 random-access memory) on the MPC8XXX family within SPL. This 447 random-access memory) on the MPC8XXX family within SPL. This
448 allows DRAM to be set up before loading U-Boot into that DRAM, 448 allows DRAM to be set up before loading U-Boot into that DRAM,
449 where it can run. 449 where it can run.
450 450
451 config SPL_MTD_SUPPORT 451 config SPL_MTD_SUPPORT
452 bool "Support MTD drivers" 452 bool "Support MTD drivers"
453 help 453 help
454 Enable support for MTD (Memory Technology Device) within SPL. MTD 454 Enable support for MTD (Memory Technology Device) within SPL. MTD
455 provides a block interface over raw NAND and can also be used with 455 provides a block interface over raw NAND and can also be used with
456 SPI flash. This allows SPL to load U-Boot from supported MTD 456 SPI flash. This allows SPL to load U-Boot from supported MTD
457 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how 457 devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
458 to enable specific MTD drivers. 458 to enable specific MTD drivers.
459 459
460 config SPL_MUSB_NEW_SUPPORT 460 config SPL_MUSB_NEW_SUPPORT
461 bool "Support new Mentor Graphics USB" 461 bool "Support new Mentor Graphics USB"
462 help 462 help
463 Enable support for Mentor Graphics USB in SPL. This is a new 463 Enable support for Mentor Graphics USB in SPL. This is a new
464 driver used by some boards. Enable this option to build 464 driver used by some boards. Enable this option to build
465 the drivers in drivers/usb/musb-new as part of an SPL build. The 465 the drivers in drivers/usb/musb-new as part of an SPL build. The
466 old drivers are in drivers/usb/musb. 466 old drivers are in drivers/usb/musb.
467 467
468 config SPL_NAND_SUPPORT 468 config SPL_NAND_SUPPORT
469 bool "Support NAND flash" 469 bool "Support NAND flash"
470 help 470 help
471 Enable support for NAND (Negative AND) flash in SPL. NAND flash 471 Enable support for NAND (Negative AND) flash in SPL. NAND flash
472 can be used to allow SPL to load U-Boot from supported devices. 472 can be used to allow SPL to load U-Boot from supported devices.
473 This enables the drivers in drivers/mtd/nand as part of an SPL 473 This enables the drivers in drivers/mtd/nand as part of an SPL
474 build. 474 build.
475 475
476 config SPL_NET_SUPPORT 476 config SPL_NET_SUPPORT
477 bool "Support networking" 477 bool "Support networking"
478 help 478 help
479 Enable support for network devices (such as Ethernet) in SPL. 479 Enable support for network devices (such as Ethernet) in SPL.
480 This permits SPL to load U-Boot over a network link rather than 480 This permits SPL to load U-Boot over a network link rather than
481 from an on-board peripheral. Environment support is required since 481 from an on-board peripheral. Environment support is required since
482 the network stack uses a number of environment variables. See also 482 the network stack uses a number of environment variables. See also
483 SPL_ETH_SUPPORT. 483 SPL_ETH_SUPPORT.
484 484
485 if SPL_NET_SUPPORT 485 if SPL_NET_SUPPORT
486 config SPL_NET_VCI_STRING 486 config SPL_NET_VCI_STRING
487 string "BOOTP Vendor Class Identifier string sent by SPL" 487 string "BOOTP Vendor Class Identifier string sent by SPL"
488 help 488 help
489 As defined by RFC 2132 the vendor class identifier field can be 489 As defined by RFC 2132 the vendor class identifier field can be
490 sent by the client to identify the vendor type and configuration 490 sent by the client to identify the vendor type and configuration
491 of a client. This is often used in practice to allow for the DHCP 491 of a client. This is often used in practice to allow for the DHCP
492 server to specify different files to load depending on if the ROM, 492 server to specify different files to load depending on if the ROM,
493 SPL or U-Boot itself makes the request 493 SPL or U-Boot itself makes the request
494 endif # if SPL_NET_SUPPORT 494 endif # if SPL_NET_SUPPORT
495 495
496 config SPL_NO_CPU_SUPPORT 496 config SPL_NO_CPU_SUPPORT
497 bool "Drop CPU code in SPL" 497 bool "Drop CPU code in SPL"
498 help 498 help
499 This is specific to the ARM926EJ-S CPU. It disables the standard 499 This is specific to the ARM926EJ-S CPU. It disables the standard
500 start.S start-up code, presumably so that a replacement can be 500 start.S start-up code, presumably so that a replacement can be
501 used on that CPU. You should not enable it unless you know what 501 used on that CPU. You should not enable it unless you know what
502 you are doing. 502 you are doing.
503 503
504 config SPL_NOR_SUPPORT 504 config SPL_NOR_SUPPORT
505 bool "Support NOR flash" 505 bool "Support NOR flash"
506 help 506 help
507 Enable support for loading U-Boot from memory-mapped NOR (Negative 507 Enable support for loading U-Boot from memory-mapped NOR (Negative
508 OR) flash in SPL. NOR flash is slow to write but fast to read, and 508 OR) flash in SPL. NOR flash is slow to write but fast to read, and
509 a memory-mapped device makes it very easy to access. Loading from 509 a memory-mapped device makes it very easy to access. Loading from
510 NOR is typically achieved with just a memcpy(). 510 NOR is typically achieved with just a memcpy().
511 511
512 config SPL_XIP_SUPPORT 512 config SPL_XIP_SUPPORT
513 bool "Support XIP" 513 bool "Support XIP"
514 depends on SPL 514 depends on SPL
515 help 515 help
516 Enable support for execute in place of U-Boot or kernel image. There 516 Enable support for execute in place of U-Boot or kernel image. There
517 is no need to copy image from flash to ram if flash supports execute 517 is no need to copy image from flash to ram if flash supports execute
518 in place. Its very useful in systems having enough flash but not 518 in place. Its very useful in systems having enough flash but not
519 enough ram to load the image. 519 enough ram to load the image.
520 520
521 config SPL_ONENAND_SUPPORT 521 config SPL_ONENAND_SUPPORT
522 bool "Support OneNAND flash" 522 bool "Support OneNAND flash"
523 help 523 help
524 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is 524 Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
525 a type of NAND flash and therefore can be used to allow SPL to 525 a type of NAND flash and therefore can be used to allow SPL to
526 load U-Boot from supported devices. This enables the drivers in 526 load U-Boot from supported devices. This enables the drivers in
527 drivers/mtd/onenand as part of an SPL build. 527 drivers/mtd/onenand as part of an SPL build.
528 528
529 config SPL_OS_BOOT 529 config SPL_OS_BOOT
530 bool "Activate Falcon Mode" 530 bool "Activate Falcon Mode"
531 depends on !TI_SECURE_DEVICE 531 depends on !TI_SECURE_DEVICE
532 default n 532 default n
533 help 533 help
534 Enable booting directly to an OS from SPL. 534 Enable booting directly to an OS from SPL.
535 for more info read doc/README.falcon 535 for more info read doc/README.falcon
536 536
537 if SPL_OS_BOOT 537 if SPL_OS_BOOT
538 config SYS_OS_BASE 538 config SYS_OS_BASE
539 hex "addr, where OS is found" 539 hex "addr, where OS is found"
540 depends on SPL_NOR_SUPPORT 540 depends on SPL_NOR_SUPPORT
541 help 541 help
542 Specify the address, where the OS image is found, which 542 Specify the address, where the OS image is found, which
543 gets booted. 543 gets booted.
544 544
545 endif # SPL_OS_BOOT 545 endif # SPL_OS_BOOT
546 546
547 config SPL_PCI_SUPPORT 547 config SPL_PCI_SUPPORT
548 bool "Support PCI drivers" 548 bool "Support PCI drivers"
549 help 549 help
550 Enable support for PCI in SPL. For platforms that need PCI to boot, 550 Enable support for PCI in SPL. For platforms that need PCI to boot,
551 or must perform some init using PCI in SPL, this provides the 551 or must perform some init using PCI in SPL, this provides the
552 necessary driver support. This enables the drivers in drivers/pci 552 necessary driver support. This enables the drivers in drivers/pci
553 as part of an SPL build. 553 as part of an SPL build.
554 554
555 config SPL_PCH_SUPPORT 555 config SPL_PCH_SUPPORT
556 bool "Support PCH drivers" 556 bool "Support PCH drivers"
557 help 557 help
558 Enable support for PCH (Platform Controller Hub) devices in SPL. 558 Enable support for PCH (Platform Controller Hub) devices in SPL.
559 These are used to set up GPIOs and the SPI peripheral early in 559 These are used to set up GPIOs and the SPI peripheral early in
560 boot. This enables the drivers in drivers/pch as part of an SPL 560 boot. This enables the drivers in drivers/pch as part of an SPL
561 build. 561 build.
562 562
563 config SPL_POST_MEM_SUPPORT 563 config SPL_POST_MEM_SUPPORT
564 bool "Support POST drivers" 564 bool "Support POST drivers"
565 help 565 help
566 Enable support for POST (Power-on Self Test) in SPL. POST is a 566 Enable support for POST (Power-on Self Test) in SPL. POST is a
567 procedure that checks that the hardware (CPU or board) appears to 567 procedure that checks that the hardware (CPU or board) appears to
568 be functionally correctly. It is a sanity check that can be 568 be functionally correctly. It is a sanity check that can be
569 performed before booting. This enables the drivers in post/drivers 569 performed before booting. This enables the drivers in post/drivers
570 as part of an SPL build. 570 as part of an SPL build.
571 571
572 config SPL_POWER_SUPPORT 572 config SPL_POWER_SUPPORT
573 bool "Support power drivers" 573 bool "Support power drivers"
574 help 574 help
575 Enable support for power control in SPL. This includes support 575 Enable support for power control in SPL. This includes support
576 for PMICs (Power-management Integrated Circuits) and some of the 576 for PMICs (Power-management Integrated Circuits) and some of the
577 features provided by PMICs. In particular, voltage regulators can 577 features provided by PMICs. In particular, voltage regulators can
578 be used to enable/disable power and vary its voltage. That can be 578 be used to enable/disable power and vary its voltage. That can be
579 useful in SPL to turn on boot peripherals and adjust CPU voltage 579 useful in SPL to turn on boot peripherals and adjust CPU voltage
580 so that the clock speed can be increased. This enables the drivers 580 so that the clock speed can be increased. This enables the drivers
581 in drivers/power, drivers/power/pmic and drivers/power/regulator 581 in drivers/power, drivers/power/pmic and drivers/power/regulator
582 as part of an SPL build. 582 as part of an SPL build.
583 583
584 config SPL_RAM_SUPPORT 584 config SPL_RAM_SUPPORT
585 bool "Support booting from RAM" 585 bool "Support booting from RAM"
586 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ 586 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
587 help 587 help
588 Enable booting of an image in RAM. The image can be preloaded or 588 Enable booting of an image in RAM. The image can be preloaded or
589 it can be loaded by SPL directly into RAM (e.g. using USB). 589 it can be loaded by SPL directly into RAM (e.g. using USB).
590 590
591 config SPL_RAM_DEVICE 591 config SPL_RAM_DEVICE
592 bool "Support booting from preloaded image in RAM" 592 bool "Support booting from preloaded image in RAM"
593 depends on SPL_RAM_SUPPORT 593 depends on SPL_RAM_SUPPORT
594 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ 594 default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
595 help 595 help
596 Enable booting of an image already loaded in RAM. The image has to 596 Enable booting of an image already loaded in RAM. The image has to
597 be already in memory when SPL takes over, e.g. loaded by the boot 597 be already in memory when SPL takes over, e.g. loaded by the boot
598 ROM. 598 ROM.
599 599
600 config SPL_RTC_SUPPORT 600 config SPL_RTC_SUPPORT
601 bool "Support RTC drivers" 601 bool "Support RTC drivers"
602 help 602 help
603 Enable RTC (Real-time Clock) support in SPL. This includes support 603 Enable RTC (Real-time Clock) support in SPL. This includes support
604 for reading and setting the time. Some RTC devices also have some 604 for reading and setting the time. Some RTC devices also have some
605 non-volatile (battery-backed) memory which is accessible if 605 non-volatile (battery-backed) memory which is accessible if
606 needed. This enables the drivers in drivers/rtc as part of an SPL 606 needed. This enables the drivers in drivers/rtc as part of an SPL
607 build. 607 build.
608 608
609 config SPL_SATA_SUPPORT 609 config SPL_SATA_SUPPORT
610 bool "Support loading from SATA" 610 bool "Support loading from SATA"
611 help 611 help
612 Enable support for SATA (Serial AT attachment) in SPL. This allows 612 Enable support for SATA (Serial AT attachment) in SPL. This allows
613 use of SATA devices such as hard drives and flash drivers for 613 use of SATA devices such as hard drives and flash drivers for
614 loading U-Boot. SATA is used in higher-end embedded systems and 614 loading U-Boot. SATA is used in higher-end embedded systems and
615 can provide higher performance than MMC , at somewhat higher 615 can provide higher performance than MMC , at somewhat higher
616 expense and power consumption. This enables loading from SATA 616 expense and power consumption. This enables loading from SATA
617 using a configured device. 617 using a configured device.
618 618
619 config SPL_SERIAL_SUPPORT 619 config SPL_SERIAL_SUPPORT
620 bool "Support serial" 620 bool "Support serial"
621 help 621 help
622 Enable support for serial in SPL. This allows use of a serial UART 622 Enable support for serial in SPL. This allows use of a serial UART
623 for displaying messages while SPL is running. It also brings in 623 for displaying messages while SPL is running. It also brings in
624 printf() and panic() functions. This should normally be enabled 624 printf() and panic() functions. This should normally be enabled
625 unless there are space reasons not to. Even then, consider 625 unless there are space reasons not to. Even then, consider
626 enabling USE_TINY_PRINTF which is a small printf() version. 626 enabling USE_TINY_PRINTF which is a small printf() version.
627 627
628 config SPL_SPI_FLASH_SUPPORT 628 config SPL_SPI_FLASH_SUPPORT
629 bool "Support SPI flash drivers" 629 bool "Support SPI flash drivers"
630 help 630 help
631 Enable support for using SPI flash in SPL, and loading U-Boot from 631 Enable support for using SPI flash in SPL, and loading U-Boot from
632 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after 632 SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
633 the SPI bus that is used to connect it to a system. It is a simple 633 the SPI bus that is used to connect it to a system. It is a simple
634 but fast bidirectional 4-wire bus (clock, chip select and two data 634 but fast bidirectional 4-wire bus (clock, chip select and two data
635 lines). This enables the drivers in drivers/mtd/spi as part of an 635 lines). This enables the drivers in drivers/mtd/spi as part of an
636 SPL build. This normally requires SPL_SPI_SUPPORT. 636 SPL build. This normally requires SPL_SPI_SUPPORT.
637 637
638 config SPL_SPI_SUPPORT 638 config SPL_SPI_SUPPORT
639 bool "Support SPI drivers" 639 bool "Support SPI drivers"
640 help 640 help
641 Enable support for using SPI in SPL. This is used for connecting 641 Enable support for using SPI in SPL. This is used for connecting
642 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for 642 to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
643 more details on that. The SPI driver provides the transport for 643 more details on that. The SPI driver provides the transport for
644 data between the SPI flash and the CPU. This option can be used to 644 data between the SPI flash and the CPU. This option can be used to
645 enable SPI drivers that are needed for other purposes also, such 645 enable SPI drivers that are needed for other purposes also, such
646 as a SPI PMIC. 646 as a SPI PMIC.
647 647
648 config SPL_THERMAL 648 config SPL_THERMAL
649 bool "Driver support for thermal devices" 649 bool "Driver support for thermal devices"
650 help 650 help
651 Enable support for temperature-sensing devices. Some SoCs have on-chip 651 Enable support for temperature-sensing devices. Some SoCs have on-chip
652 temperature sensors to permit warnings, speed throttling or even 652 temperature sensors to permit warnings, speed throttling or even
653 automatic power-off when the temperature gets too high or low. Other 653 automatic power-off when the temperature gets too high or low. Other
654 devices may be discrete but connected on a suitable bus. 654 devices may be discrete but connected on a suitable bus.
655 655
656 config SPL_USB_HOST_SUPPORT 656 config SPL_USB_HOST_SUPPORT
657 bool "Support USB host drivers" 657 bool "Support USB host drivers"
658 help 658 help
659 Enable access to USB (Universal Serial Bus) host devices so that 659 Enable access to USB (Universal Serial Bus) host devices so that
660 SPL can load U-Boot from a connected USB peripheral, such as a USB 660 SPL can load U-Boot from a connected USB peripheral, such as a USB
661 flash stick. While USB takes a little longer to start up than most 661 flash stick. While USB takes a little longer to start up than most
662 buses, it is very flexible since many different types of storage 662 buses, it is very flexible since many different types of storage
663 device can be attached. This option enables the drivers in 663 device can be attached. This option enables the drivers in
664 drivers/usb/host as part of an SPL build. 664 drivers/usb/host as part of an SPL build.
665 665
666 config SPL_USB_SUPPORT 666 config SPL_USB_SUPPORT
667 bool "Support loading from USB" 667 bool "Support loading from USB"
668 depends on SPL_USB_HOST_SUPPORT 668 depends on SPL_USB_HOST_SUPPORT
669 help 669 help
670 Enable support for USB devices in SPL. This allows use of USB 670 Enable support for USB devices in SPL. This allows use of USB
671 devices such as hard drives and flash drivers for loading U-Boot. 671 devices such as hard drives and flash drivers for loading U-Boot.
672 The actual drivers are enabled separately using the normal U-Boot 672 The actual drivers are enabled separately using the normal U-Boot
673 config options. This enables loading from USB using a configured 673 config options. This enables loading from USB using a configured
674 device. 674 device.
675 675
676 config SPL_USB_GADGET_SUPPORT 676 config SPL_USB_GADGET_SUPPORT
677 bool "Suppport USB Gadget drivers" 677 bool "Suppport USB Gadget drivers"
678 help 678 help
679 Enable USB Gadget API which allows to enable USB device functions 679 Enable USB Gadget API which allows to enable USB device functions
680 in SPL. 680 in SPL.
681 681
682 if SPL_USB_GADGET_SUPPORT 682 if SPL_USB_GADGET_SUPPORT
683 683
684 config SPL_USB_ETHER 684 config SPL_USB_ETHER
685 bool "Support USB Ethernet drivers" 685 bool "Support USB Ethernet drivers"
686 help 686 help
687 Enable access to the USB network subsystem and associated 687 Enable access to the USB network subsystem and associated
688 drivers in SPL. This permits SPL to load U-Boot over a 688 drivers in SPL. This permits SPL to load U-Boot over a
689 USB-connected Ethernet link (such as a USB Ethernet dongle) rather 689 USB-connected Ethernet link (such as a USB Ethernet dongle) rather
690 than from an onboard peripheral. Environment support is required 690 than from an onboard peripheral. Environment support is required
691 since the network stack uses a number of environment variables. 691 since the network stack uses a number of environment variables.
692 See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT. 692 See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT.
693 693
694 config SPL_DFU_SUPPORT 694 config SPL_DFU_SUPPORT
695 bool "Support DFU (Device Firmware Upgarde)" 695 bool "Support DFU (Device Firmware Upgarde)"
696 select SPL_HASH_SUPPORT 696 select SPL_HASH_SUPPORT
697 select SPL_DFU_NO_RESET 697 select SPL_DFU_NO_RESET
698 depends on SPL_RAM_SUPPORT 698 depends on SPL_RAM_SUPPORT
699 help 699 help
700 This feature enables the DFU (Device Firmware Upgarde) in SPL with 700 This feature enables the DFU (Device Firmware Upgarde) in SPL with
701 RAM memory device support. The ROM code will load and execute 701 RAM memory device support. The ROM code will load and execute
702 the SPL built with dfu. The user can load binaries (u-boot/kernel) to 702 the SPL built with dfu. The user can load binaries (u-boot/kernel) to
703 selected device partition from host-pc using dfu-utils. 703 selected device partition from host-pc using dfu-utils.
704 This feature is useful to flash the binaries to factory or bare-metal 704 This feature is useful to flash the binaries to factory or bare-metal
705 boards using USB interface. 705 boards using USB interface.
706 706
707 choice 707 choice
708 bool "DFU device selection" 708 bool "DFU device selection"
709 depends on SPL_DFU_SUPPORT 709 depends on SPL_DFU_SUPPORT
710 710
711 config SPL_DFU_RAM 711 config SPL_DFU_RAM
712 bool "RAM device" 712 bool "RAM device"
713 depends on SPL_DFU_SUPPORT && SPL_RAM_SUPPORT 713 depends on SPL_DFU_SUPPORT && SPL_RAM_SUPPORT
714 help 714 help
715 select RAM/DDR memory device for loading binary images 715 select RAM/DDR memory device for loading binary images
716 (u-boot/kernel) to the selected device partition using 716 (u-boot/kernel) to the selected device partition using
717 DFU and execute the u-boot/kernel from RAM. 717 DFU and execute the u-boot/kernel from RAM.
718 718
719 endchoice 719 endchoice
720 720
721 config SPL_USB_SDP_SUPPORT 721 config SPL_USB_SDP_SUPPORT
722 bool "Support SDP (Serial Download Protocol)" 722 bool "Support SDP (Serial Download Protocol)"
723 help 723 help
724 Enable Serial Download Protocol (SDP) device support in SPL. This 724 Enable Serial Download Protocol (SDP) device support in SPL. This
725 allows to download images into memory and execute (jump to) them 725 allows to download images into memory and execute (jump to) them
726 using the same protocol as implemented by the i.MX family's boot ROM. 726 using the same protocol as implemented by the i.MX family's boot ROM.
727
728 config SPL_SDP_USB_DEV
729 int "SDP USB controller index"
730 default 0
731 depends on SPL_USB_SDP_SUPPORT
732 help
733 Some boards have USB controller other than 0. Define this option
734 so it can be used in compiled environment.
727 endif 735 endif
728 736
729 config SPL_WATCHDOG_SUPPORT 737 config SPL_WATCHDOG_SUPPORT
730 bool "Support watchdog drivers" 738 bool "Support watchdog drivers"
731 help 739 help
732 Enable support for watchdog drivers in SPL. A watchdog is 740 Enable support for watchdog drivers in SPL. A watchdog is
733 typically a hardware peripheral which can reset the system when it 741 typically a hardware peripheral which can reset the system when it
734 detects no activity for a while (such as a software crash). This 742 detects no activity for a while (such as a software crash). This
735 enables the drivers in drivers/watchdog as part of an SPL build. 743 enables the drivers in drivers/watchdog as part of an SPL build.
736 744
737 config SPL_YMODEM_SUPPORT 745 config SPL_YMODEM_SUPPORT
738 bool "Support loading using Ymodem" 746 bool "Support loading using Ymodem"
739 help 747 help
740 While loading from serial is slow it can be a useful backup when 748 While loading from serial is slow it can be a useful backup when
741 there is no other option. The Ymodem protocol provides a reliable 749 there is no other option. The Ymodem protocol provides a reliable
742 means of transmitting U-Boot over a serial line for using in SPL, 750 means of transmitting U-Boot over a serial line for using in SPL,
743 with a checksum to ensure correctness. 751 with a checksum to ensure correctness.
744 752
745 config SPL_ATF 753 config SPL_ATF
746 bool "Support ARM Trusted Firmware" 754 bool "Support ARM Trusted Firmware"
747 depends on ARM64 755 depends on ARM64
748 help 756 help
749 ATF(ARM Trusted Firmware) is a component for ARM AArch64 which 757 ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
750 is loaded by SPL (which is considered as BL2 in ATF terminology). 758 is loaded by SPL (which is considered as BL2 in ATF terminology).
751 More detail at: https://github.com/ARM-software/arm-trusted-firmware 759 More detail at: https://github.com/ARM-software/arm-trusted-firmware
752 760
753 config SPL_ATF_NO_PLATFORM_PARAM 761 config SPL_ATF_NO_PLATFORM_PARAM
754 bool "Pass no platform parameter" 762 bool "Pass no platform parameter"
755 depends on SPL_ATF 763 depends on SPL_ATF
756 help 764 help
757 While we expect to call a pointer to a valid FDT (or NULL) 765 While we expect to call a pointer to a valid FDT (or NULL)
758 as the platform parameter to an ATF, some ATF versions are 766 as the platform parameter to an ATF, some ATF versions are
759 not U-Boot aware and have an insufficiently robust parameter 767 not U-Boot aware and have an insufficiently robust parameter
760 validation to gracefully reject a FDT being passed. 768 validation to gracefully reject a FDT being passed.
761 769
762 If this option is enabled, the spl_atf os-type handler will 770 If this option is enabled, the spl_atf os-type handler will
763 always pass NULL for the platform parameter. 771 always pass NULL for the platform parameter.
764 772
765 If your ATF is affected, say Y. 773 If your ATF is affected, say Y.
766 774
767 config TPL 775 config TPL
768 bool 776 bool
769 depends on SUPPORT_TPL 777 depends on SUPPORT_TPL
770 prompt "Enable TPL" 778 prompt "Enable TPL"
771 help 779 help
772 If you want to build TPL as well as the normal image and SPL, say Y. 780 If you want to build TPL as well as the normal image and SPL, say Y.
773 781
774 if TPL 782 if TPL
775 783
776 config TPL_BOARD_INIT 784 config TPL_BOARD_INIT
777 bool "Call board-specific initialization in TPL" 785 bool "Call board-specific initialization in TPL"
778 help 786 help
779 If this option is enabled, U-Boot will call the function 787 If this option is enabled, U-Boot will call the function
780 spl_board_init() from board_init_r(). This function should be 788 spl_board_init() from board_init_r(). This function should be
781 provided by the board. 789 provided by the board.
782 790
783 config TPL_LDSCRIPT 791 config TPL_LDSCRIPT
784 string "Linker script for the TPL stage" 792 string "Linker script for the TPL stage"
785 depends on TPL 793 depends on TPL
786 help 794 help
787 The TPL stage will usually require a different linker-script 795 The TPL stage will usually require a different linker-script
788 (as it runs from a different memory region) than the regular 796 (as it runs from a different memory region) than the regular
789 U-Boot stage. Set this to the path of the linker-script to 797 U-Boot stage. Set this to the path of the linker-script to
790 be used for TPL. 798 be used for TPL.
791 799
792 May be left empty to trigger the Makefile infrastructure to 800 May be left empty to trigger the Makefile infrastructure to
793 fall back to the linker-script used for the SPL stage. 801 fall back to the linker-script used for the SPL stage.
794 802
795 config TPL_NEEDS_SEPARATE_TEXT_BASE 803 config TPL_NEEDS_SEPARATE_TEXT_BASE
796 bool "TPL needs a separate text-base" 804 bool "TPL needs a separate text-base"
797 default n 805 default n
798 depends on TPL 806 depends on TPL
799 help 807 help
800 Enable, if the TPL stage should not inherit its text-base 808 Enable, if the TPL stage should not inherit its text-base
801 from the SPL stage. When enabled, a base address for the 809 from the SPL stage. When enabled, a base address for the
802 .text sections of the TPL stage has to be set below. 810 .text sections of the TPL stage has to be set below.
803 811
804 config TPL_NEEDS_SEPARATE_STACK 812 config TPL_NEEDS_SEPARATE_STACK
805 bool "TPL needs a separate initial stack-pointer" 813 bool "TPL needs a separate initial stack-pointer"
806 default n 814 default n
807 depends on TPL 815 depends on TPL
808 help 816 help
809 Enable, if the TPL stage should not inherit its initial 817 Enable, if the TPL stage should not inherit its initial
810 stack-pointer from the settings for the SPL stage. 818 stack-pointer from the settings for the SPL stage.
811 819
812 config TPL_TEXT_BASE 820 config TPL_TEXT_BASE
813 hex "Base address for the .text section of the TPL stage" 821 hex "Base address for the .text section of the TPL stage"
814 depends on TPL_NEEDS_SEPARATE_TEXT_BASE 822 depends on TPL_NEEDS_SEPARATE_TEXT_BASE
815 help 823 help
816 The base address for the .text section of the TPL stage. 824 The base address for the .text section of the TPL stage.
817 825
818 config TPL_MAX_SIZE 826 config TPL_MAX_SIZE
819 int "Maximum size (in bytes) for the TPL stage" 827 int "Maximum size (in bytes) for the TPL stage"
820 default 0 828 default 0
821 depends on TPL 829 depends on TPL
822 help 830 help
823 The maximum size (in bytes) of the TPL stage. 831 The maximum size (in bytes) of the TPL stage.
824 832
825 config TPL_STACK 833 config TPL_STACK
826 hex "Address of the initial stack-pointer for the TPL stage" 834 hex "Address of the initial stack-pointer for the TPL stage"
827 depends on TPL_NEEDS_SEPARATE_STACK 835 depends on TPL_NEEDS_SEPARATE_STACK
828 help 836 help
829 The address of the initial stack-pointer for the TPL stage. 837 The address of the initial stack-pointer for the TPL stage.
830 Usually this will be the (aligned) top-of-stack. 838 Usually this will be the (aligned) top-of-stack.
831 839
832 config TPL_BOOTROM_SUPPORT 840 config TPL_BOOTROM_SUPPORT
833 bool "Support returning to the BOOTROM (from TPL)" 841 bool "Support returning to the BOOTROM (from TPL)"
834 help 842 help
835 Some platforms (e.g. the Rockchip RK3368) provide support in their 843 Some platforms (e.g. the Rockchip RK3368) provide support in their
836 ROM for loading the next boot-stage after performing basic setup 844 ROM for loading the next boot-stage after performing basic setup
837 from the TPL stage. 845 from the TPL stage.
838 846
839 Enable this option, to return to the BOOTROM through the 847 Enable this option, to return to the BOOTROM through the
840 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the 848 BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
841 boot device list, if not implemented for a given board) 849 boot device list, if not implemented for a given board)
842 850
843 config TPL_DRIVERS_MISC_SUPPORT 851 config TPL_DRIVERS_MISC_SUPPORT
844 bool "Support misc drivers in TPL" 852 bool "Support misc drivers in TPL"
845 help 853 help
846 Enable miscellaneous drivers in TPL. These drivers perform various 854 Enable miscellaneous drivers in TPL. These drivers perform various
847 tasks that don't fall nicely into other categories, Enable this 855 tasks that don't fall nicely into other categories, Enable this
848 option to build the drivers in drivers/misc as part of an TPL 856 option to build the drivers in drivers/misc as part of an TPL
849 build, for those that support building in TPL (not all drivers do). 857 build, for those that support building in TPL (not all drivers do).
850 858
851 config TPL_ENV_SUPPORT 859 config TPL_ENV_SUPPORT
852 bool "Support an environment" 860 bool "Support an environment"
853 help 861 help
854 Enable environment support in TPL. See SPL_ENV_SUPPORT for details. 862 Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
855 863
856 config TPL_I2C_SUPPORT 864 config TPL_I2C_SUPPORT
857 bool "Support I2C" 865 bool "Support I2C"
858 help 866 help
859 Enable support for the I2C bus in TPL. See SPL_I2C_SUPPORT for 867 Enable support for the I2C bus in TPL. See SPL_I2C_SUPPORT for
860 details. 868 details.
861 869
862 config TPL_LIBCOMMON_SUPPORT 870 config TPL_LIBCOMMON_SUPPORT
863 bool "Support common libraries" 871 bool "Support common libraries"
864 help 872 help
865 Enable support for common U-Boot libraries within TPL. See 873 Enable support for common U-Boot libraries within TPL. See
866 SPL_LIBCOMMON_SUPPORT for details. 874 SPL_LIBCOMMON_SUPPORT for details.
867 875
868 config TPL_LIBGENERIC_SUPPORT 876 config TPL_LIBGENERIC_SUPPORT
869 bool "Support generic libraries" 877 bool "Support generic libraries"
870 help 878 help
871 Enable support for generic U-Boot libraries within TPL. See 879 Enable support for generic U-Boot libraries within TPL. See
872 SPL_LIBGENERIC_SUPPORT for details. 880 SPL_LIBGENERIC_SUPPORT for details.
873 881
874 config TPL_MPC8XXX_INIT_DDR_SUPPORT 882 config TPL_MPC8XXX_INIT_DDR_SUPPORT
875 bool "Support MPC8XXX DDR init" 883 bool "Support MPC8XXX DDR init"
876 help 884 help
877 Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See 885 Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
878 SPL_MPC8XXX_INIT_DDR_SUPPORT for details. 886 SPL_MPC8XXX_INIT_DDR_SUPPORT for details.
879 887
880 config TPL_MMC_SUPPORT 888 config TPL_MMC_SUPPORT
881 bool "Support MMC" 889 bool "Support MMC"
882 depends on MMC 890 depends on MMC
883 help 891 help
884 Enable support for MMC within TPL. See SPL_MMC_SUPPORT for details. 892 Enable support for MMC within TPL. See SPL_MMC_SUPPORT for details.
885 893
886 config TPL_NAND_SUPPORT 894 config TPL_NAND_SUPPORT
887 bool "Support NAND flash" 895 bool "Support NAND flash"
888 help 896 help
889 Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details. 897 Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
890 898
891 config TPL_SERIAL_SUPPORT 899 config TPL_SERIAL_SUPPORT
892 bool "Support serial" 900 bool "Support serial"
893 help 901 help
894 Enable support for serial in TPL. See SPL_SERIAL_SUPPORT for 902 Enable support for serial in TPL. See SPL_SERIAL_SUPPORT for
895 details. 903 details.
896 904
897 config TPL_SPI_FLASH_SUPPORT 905 config TPL_SPI_FLASH_SUPPORT
898 bool "Support SPI flash drivers" 906 bool "Support SPI flash drivers"
899 help 907 help
900 Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT 908 Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
901 for details. 909 for details.
902 910
903 config TPL_SPI_SUPPORT 911 config TPL_SPI_SUPPORT
904 bool "Support SPI drivers" 912 bool "Support SPI drivers"
905 help 913 help
906 Enable support for using SPI in TPL. See SPL_SPI_SUPPORT for 914 Enable support for using SPI in TPL. See SPL_SPI_SUPPORT for
907 details. 915 details.
908 916
909 endif # TPL 917 endif # TPL
910 918
911 endif # SPL 919 endif # SPL
912 endmenu 920 endmenu
913 921
common/spl/spl_sdp.c
1 /* 1 /*
2 * (C) Copyright 2016 Toradex 2 * (C) Copyright 2016 Toradex
3 * Author: Stefan Agner <stefan.agner@toradex.com> 3 * Author: Stefan Agner <stefan.agner@toradex.com>
4 * 4 *
5 * SPDX-License-Identifier: GPL-2.0+ 5 * SPDX-License-Identifier: GPL-2.0+
6 */ 6 */
7 7
8 #include <common.h> 8 #include <common.h>
9 #include <spl.h> 9 #include <spl.h>
10 #include <usb.h> 10 #include <usb.h>
11 #include <g_dnl.h> 11 #include <g_dnl.h>
12 #include <sdp.h> 12 #include <sdp.h>
13 13
14 DECLARE_GLOBAL_DATA_PTR; 14 DECLARE_GLOBAL_DATA_PTR;
15 15
16 static int spl_sdp_load_image(struct spl_image_info *spl_image, 16 static int spl_sdp_load_image(struct spl_image_info *spl_image,
17 struct spl_boot_device *bootdev) 17 struct spl_boot_device *bootdev)
18 { 18 {
19 int ret; 19 int ret;
20 const int controller_index = 0; 20 const int controller_index = CONFIG_SPL_SDP_USB_DEV;
21 21
22 board_usb_init(0, USB_INIT_DEVICE); 22 board_usb_init(controller_index, USB_INIT_DEVICE);
23 23
24 g_dnl_clear_detach(); 24 g_dnl_clear_detach();
25 g_dnl_register("usb_dnl_sdp"); 25 g_dnl_register("usb_dnl_sdp");
26 26
27 ret = sdp_init(controller_index); 27 ret = sdp_init(controller_index);
28 if (ret) { 28 if (ret) {
29 pr_err("SDP init failed: %d\n", ret); 29 pr_err("SDP init failed: %d\n", ret);
30 return -ENODEV; 30 return -ENODEV;
31 } 31 }
32 32
33 /* This command typically does not return but jumps to an image */ 33 /* This command typically does not return but jumps to an image */
34 sdp_handle(controller_index); 34 sdp_handle(controller_index);
35 pr_err("SDP ended\n"); 35 pr_err("SDP ended\n");
36 36
37 return -EINVAL; 37 return -EINVAL;
38 } 38 }
39 SPL_LOAD_IMAGE_METHOD("USB SDP", 0, BOOT_DEVICE_BOARD, spl_sdp_load_image); 39 SPL_LOAD_IMAGE_METHOD("USB SDP", 0, BOOT_DEVICE_BOARD, spl_sdp_load_image);
40 40