1menu "x86 architecture"
2	depends on X86
3
4config SYS_ARCH
5	default "x86"
6
7choice
8	prompt "Run U-Boot in 32/64-bit mode"
9	default X86_RUN_32BIT
10	help
11	  U-Boot can be built as a 32-bit binary which runs in 32-bit mode
12	  even on 64-bit machines. In this case SPL is not used, and U-Boot
13	  runs directly from the reset vector (via 16-bit start-up).
14
15	  Alternatively it can be run as a 64-bit binary, thus requiring a
16	  64-bit machine. In this case SPL runs in 32-bit mode (via 16-bit
17	  start-up) then jumps to U-Boot in 64-bit mode.
18
19	  For now, 32-bit mode is recommended, as 64-bit is still
20	  experimental and is missing a lot of features.
21
22config X86_RUN_32BIT
23	bool "32-bit"
24	help
25	  Build U-Boot as a 32-bit binary with no SPL. This is the currently
26	  supported normal setup. U-Boot will stay in 32-bit mode even on
27	  64-bit machines. When booting a 64-bit kernel, U-Boot will switch
28	  to 64-bit just before starting the kernel. Only the bottom 4GB of
29	  memory can be accessed through normal means, although
30	  arch_phys_memset() can be used for basic access to other memory.
31
32config X86_RUN_64BIT
33	bool "32-bit SPL followed by 64-bit U-Boot"
34	select X86_64
35	select SPL if !EFI_APP
36	select SPL_SEPARATE_BSS if !EFI_APP
37	help
38	  Build U-Boot as a 64-bit binary with a 32-bit SPL. This is
39	  experimental and many features are missing. U-Boot SPL starts up,
40	  runs through the 16-bit and 32-bit init, then switches to 64-bit
41	  mode and jumps to U-Boot proper.
42
43config X86_RUN_64BIT_NO_SPL
44	bool "64-bit"
45	select X86_64
46	help
47          Build U-Boot as a 64-bit binary without SPL. As U-Boot enters
48          in 64-bit mode, the assumption is that the silicon is fully
49          initialized (MP, page tables, etc.).
50
51endchoice
52
53config X86_64
54	bool
55	select 64BIT
56
57config SPL_X86_64
58	bool
59	depends on SPL
60
61choice
62	prompt "Mainboard vendor"
63	default VENDOR_EMULATION
64
65config VENDOR_ADVANTECH
66	bool "advantech"
67
68config VENDOR_CONGATEC
69	bool "congatec"
70
71config VENDOR_COREBOOT
72	bool "coreboot"
73
74config VENDOR_DFI
75	bool "dfi"
76
77config VENDOR_EFI
78	bool "efi"
79
80config VENDOR_EMULATION
81	bool "emulation"
82
83config VENDOR_GOOGLE
84	bool "Google"
85
86config VENDOR_INTEL
87	bool "Intel"
88
89endchoice
90
91# subarchitectures-specific options below
92config INTEL_MID
93	bool "Intel MID platform support"
94	select REGMAP
95	select SYSCON
96	help
97	  Select to build a U-Boot capable of supporting Intel MID
98	  (Mobile Internet Device) platform systems which do not have
99	  the PCI legacy interfaces.
100
101	  If you are building for a PC class system say N here.
102
103	  Intel MID platforms are based on an Intel processor and
104	  chipset which consume less power than most of the x86
105	  derivatives.
106
107# board-specific options below
108source "board/advantech/Kconfig"
109source "board/congatec/Kconfig"
110source "board/coreboot/Kconfig"
111source "board/dfi/Kconfig"
112source "board/efi/Kconfig"
113source "board/emulation/Kconfig"
114source "board/google/Kconfig"
115source "board/intel/Kconfig"
116
117# platform-specific options below
118source "arch/x86/cpu/apollolake/Kconfig"
119source "arch/x86/cpu/baytrail/Kconfig"
120source "arch/x86/cpu/braswell/Kconfig"
121source "arch/x86/cpu/broadwell/Kconfig"
122source "arch/x86/cpu/coreboot/Kconfig"
123source "arch/x86/cpu/ivybridge/Kconfig"
124source "arch/x86/cpu/efi/Kconfig"
125source "arch/x86/cpu/qemu/Kconfig"
126source "arch/x86/cpu/quark/Kconfig"
127source "arch/x86/cpu/queensbay/Kconfig"
128source "arch/x86/cpu/slimbootloader/Kconfig"
129source "arch/x86/cpu/tangier/Kconfig"
130
131# architecture-specific options below
132
133config AHCI
134	default y
135
136config SYS_MALLOC_F_LEN
137	default 0x800
138
139config RAMBASE
140	hex
141	default 0x100000
142
143config XIP_ROM_SIZE
144	hex
145	depends on X86_RESET_VECTOR
146	default ROM_SIZE
147
148config CPU_ADDR_BITS
149	int
150	default 36
151
152config HPET_ADDRESS
153	hex
154	default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
155
156config SMM_TSEG
157	bool
158
159config SMM_TSEG_SIZE
160	hex
161
162config X86_RESET_VECTOR
163	bool
164	select BINMAN
165
166# The following options control where the 16-bit and 32-bit init lies
167# If SPL is enabled then it normally holds this init code, and U-Boot proper
168# is normally a 64-bit build.
169#
170# The 16-bit init refers to the reset vector and the small amount of code to
171# get the processor into 32-bit mode. It may be in SPL or in U-Boot proper,
172# or missing altogether if U-Boot is started from EFI or coreboot.
173#
174# The 32-bit init refers to processor init, running binary blobs including
175# FSP, setting up interrupts and anything else that needs to be done in
176# 32-bit code. It is normally in the same place as 16-bit init if that is
177# enabled (i.e. they are both in SPL, or both in U-Boot proper).
178config X86_16BIT_INIT
179	bool
180	depends on X86_RESET_VECTOR
181	default y if X86_RESET_VECTOR && !SPL
182	help
183	  This is enabled when 16-bit init is in U-Boot proper
184
185config SPL_X86_16BIT_INIT
186	bool
187	depends on X86_RESET_VECTOR
188	default y if X86_RESET_VECTOR && SPL && !TPL
189	help
190	  This is enabled when 16-bit init is in SPL
191
192config TPL_X86_16BIT_INIT
193	bool
194	depends on X86_RESET_VECTOR
195	default y if X86_RESET_VECTOR && TPL
196	help
197	  This is enabled when 16-bit init is in TPL
198
199config X86_32BIT_INIT
200	bool
201	depends on X86_RESET_VECTOR
202	default y if X86_RESET_VECTOR && !SPL
203	help
204	  This is enabled when 32-bit init is in U-Boot proper
205
206config SPL_X86_32BIT_INIT
207	bool
208	depends on X86_RESET_VECTOR
209	default y if X86_RESET_VECTOR && SPL
210	help
211	  This is enabled when 32-bit init is in SPL
212
213config USE_EARLY_BOARD_INIT
214	bool
215
216config RESET_SEG_START
217	hex
218	depends on X86_RESET_VECTOR
219	default 0xffff0000
220
221config RESET_VEC_LOC
222	hex
223	depends on X86_RESET_VECTOR
224	default 0xfffffff0
225
226config SYS_X86_START16
227	hex
228	depends on X86_RESET_VECTOR
229	default 0xfffff800
230
231config HAVE_X86_FIT
232	bool
233	help
234	  Enable inclusion of an Intel Firmware Interface Table (FIT) into the
235	  image. This table is supposed to point to microcode and the like. So
236	  far it is just a fixed table with the minimum set of headers, so that
237	  it is actually present.
238
239config X86_LOAD_FROM_32_BIT
240	bool "Boot from a 32-bit program"
241	help
242	  Define this to boot U-Boot from a 32-bit program which sets
243	  the GDT differently. This can be used to boot directly from
244	  any stage of coreboot, for example, bypassing the normal
245	  payload-loading feature.
246
247config BOARD_ROMSIZE_KB_512
248	bool
249config BOARD_ROMSIZE_KB_1024
250	bool
251config BOARD_ROMSIZE_KB_2048
252	bool
253config BOARD_ROMSIZE_KB_4096
254	bool
255config BOARD_ROMSIZE_KB_8192
256	bool
257config BOARD_ROMSIZE_KB_16384
258	bool
259
260choice
261	prompt "ROM chip size"
262	depends on X86_RESET_VECTOR
263	default UBOOT_ROMSIZE_KB_512 if BOARD_ROMSIZE_KB_512
264	default UBOOT_ROMSIZE_KB_1024 if BOARD_ROMSIZE_KB_1024
265	default UBOOT_ROMSIZE_KB_2048 if BOARD_ROMSIZE_KB_2048
266	default UBOOT_ROMSIZE_KB_4096 if BOARD_ROMSIZE_KB_4096
267	default UBOOT_ROMSIZE_KB_8192 if BOARD_ROMSIZE_KB_8192
268	default UBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384
269	help
270	  Select the size of the ROM chip you intend to flash U-Boot on.
271
272	  The build system will take care of creating a u-boot.rom file
273	  of the matching size.
274
275config UBOOT_ROMSIZE_KB_512
276	bool "512 KB"
277	help
278	  Choose this option if you have a 512 KB ROM chip.
279
280config UBOOT_ROMSIZE_KB_1024
281	bool "1024 KB (1 MB)"
282	help
283	  Choose this option if you have a 1024 KB (1 MB) ROM chip.
284
285config UBOOT_ROMSIZE_KB_2048
286	bool "2048 KB (2 MB)"
287	help
288	  Choose this option if you have a 2048 KB (2 MB) ROM chip.
289
290config UBOOT_ROMSIZE_KB_4096
291	bool "4096 KB (4 MB)"
292	help
293	  Choose this option if you have a 4096 KB (4 MB) ROM chip.
294
295config UBOOT_ROMSIZE_KB_8192
296	bool "8192 KB (8 MB)"
297	help
298	  Choose this option if you have a 8192 KB (8 MB) ROM chip.
299
300config UBOOT_ROMSIZE_KB_16384
301	bool "16384 KB (16 MB)"
302	help
303	  Choose this option if you have a 16384 KB (16 MB) ROM chip.
304
305endchoice
306
307# Map the config names to an integer (KB).
308config UBOOT_ROMSIZE_KB
309	int
310	default 512 if UBOOT_ROMSIZE_KB_512
311	default 1024 if UBOOT_ROMSIZE_KB_1024
312	default 2048 if UBOOT_ROMSIZE_KB_2048
313	default 4096 if UBOOT_ROMSIZE_KB_4096
314	default 8192 if UBOOT_ROMSIZE_KB_8192
315	default 16384 if UBOOT_ROMSIZE_KB_16384
316
317# Map the config names to a hex value (bytes).
318config ROM_SIZE
319	hex
320	default 0x80000 if UBOOT_ROMSIZE_KB_512
321	default 0x100000 if UBOOT_ROMSIZE_KB_1024
322	default 0x200000 if UBOOT_ROMSIZE_KB_2048
323	default 0x400000 if UBOOT_ROMSIZE_KB_4096
324	default 0x800000 if UBOOT_ROMSIZE_KB_8192
325	default 0xc00000 if UBOOT_ROMSIZE_KB_12288
326	default 0x1000000 if UBOOT_ROMSIZE_KB_16384
327
328config HAVE_INTEL_ME
329	bool "Platform requires Intel Management Engine"
330	help
331	  Newer higher-end devices have an Intel Management Engine (ME)
332	  which is a very large binary blob (typically 1.5MB) which is
333	  required for the platform to work. This enforces a particular
334	  SPI flash format. You will need to supply the me.bin file in
335	  your board directory.
336
337config X86_RAMTEST
338	bool "Perform a simple RAM test after SDRAM initialisation"
339	help
340	  If there is something wrong with SDRAM then the platform will
341	  often crash within U-Boot or the kernel. This option enables a
342	  very simple RAM test that quickly checks whether the SDRAM seems
343	  to work correctly. It is not exhaustive but can save time by
344	  detecting obvious failures.
345
346config FLASH_DESCRIPTOR_FILE
347	string "Flash descriptor binary filename"
348	depends on HAVE_INTEL_ME || FSP_VERSION2
349	default "descriptor.bin"
350	help
351	  The filename of the file to use as flash descriptor in the
352	  board directory.
353
354config INTEL_ME_FILE
355	string "Intel Management Engine binary filename"
356	depends on HAVE_INTEL_ME
357	default "me.bin"
358	help
359	  The filename of the file to use as Intel Management Engine in the
360	  board directory.
361
362config USE_HOB
363	bool "Use HOB (Hand-Off Block)"
364	help
365	  Select this option to access HOB (Hand-Off Block) data structures
366	  and parse HOBs. This HOB infra structure can be reused with
367	  different solutions across different platforms.
368
369config HAVE_FSP
370	bool "Add an Firmware Support Package binary"
371	depends on !EFI_CLIENT
372	select USE_HOB
373	select HAS_ROM
374	help
375	  Select this option to add an Firmware Support Package binary to
376	  the resulting U-Boot image. It is a binary blob which U-Boot uses
377	  to set up SDRAM and other chipset specific initialization.
378
379	  Note: Without this binary U-Boot will not be able to set up its
380	  SDRAM so will not boot.
381
382config USE_CAR
383	bool "Use Cache-As-RAM (CAR) to get temporary RAM at start-up"
384	default y if !HAVE_FSP
385	help
386	  Select this option if your board uses CAR init code, typically in a
387	  car.S file, to get some initial memory for code execution. This is
388	  common with Intel CPUs which don't use FSP.
389
390choice
391	prompt "FSP version"
392	depends on HAVE_FSP
393	default FSP_VERSION2 if INTEL_APOLLOLAKE
394	default FSP_VERSION1
395	help
396	  Selects the FSP version to use. Intel has published several versions
397	  of the FSP External Architecture Specification and this allows
398	  selection of the version number used by a particular SoC.
399
400config FSP_VERSION1
401	bool "FSP version 1.x"
402	help
403	  This covers versions 1.0 and 1.1a. See here for details:
404	  https://github.com/IntelFsp/fsp/wiki
405
406config FSP_VERSION2
407	bool "FSP version 2.x"
408	select DM_EVENT
409	help
410	  This covers versions 2.0 and 2.1. See here for details:
411	  https://github.com/IntelFsp/fsp/wiki
412
413endchoice
414
415config FSP_FILE
416	string "Firmware Support Package binary filename"
417	depends on FSP_VERSION1
418	default "fsp.bin"
419	help
420	  The filename of the file to use as Firmware Support Package binary
421	  in the board directory.
422
423config FSP_ADDR
424	hex "Firmware Support Package binary location"
425	depends on FSP_VERSION1
426	default 0xfffc0000
427	help
428	  FSP is not Position Independent Code (PIC) and the whole FSP has to
429	  be rebased if it is placed at a location which is different from the
430	  perferred base address specified during the FSP build. Use Intel's
431	  Binary Configuration Tool (BCT) to do the rebase.
432
433	  The default base address of 0xfffc0000 indicates that the binary must
434	  be located at offset 0xc0000 from the beginning of a 1MB flash device.
435
436if FSP_VERSION2
437
438config FSP_FILE_T
439	string "Firmware Support Package binary filename (Temp RAM)"
440	default "fsp_t.bin"
441	help
442	  The filename of the file to use for the temporary-RAM init phase from
443	  the Firmware Support Package binary. Put this in the board directory.
444	  It is used to set up an initial area of RAM which can be used for the
445	  stack and other purposes, while bringing up the main system DRAM.
446
447config FSP_ADDR_T
448	hex "Firmware Support Package binary location (Temp RAM)"
449	default 0xffff8000
450	help
451	  FSP is not Position-Independent Code (PIC) and FSP components have to
452	  be rebased if placed at a location which is different from the
453	  perferred base address specified during the FSP build. Use Intel's
454	  Binary Configuration Tool (BCT) to do the rebase.
455
456config FSP_FILE_M
457	string "Firmware Support Package binary filename (Memory Init)"
458	default "fsp_m.bin"
459	help
460	  The filename of the file to use for the RAM init phase from the
461	  Firmware Support Package binary. Put this in the board directory.
462	  It is used to set up the main system DRAM and runs in SPL, once
463	  temporary RAM (CAR) is working.
464
465config FSP_FILE_S
466	string "Firmware Support Package binary filename (Silicon Init)"
467	default "fsp_s.bin"
468	help
469	  The filename of the file to use for the Silicon init phase from the
470	  Firmware Support Package binary. Put this in the board directory.
471	  It is used to set up the silicon to work correctly and must be
472	  executed after DRAM is running.
473
474config IFWI_INPUT_FILE
475	string "Filename containing FIT (Firmware Interface Table) with IFWI"
476	default "fitimage.bin"
477	help
478	  The IFWI is obtained by running a tool on this file to extract the
479	  IFWI. Put this in the board directory. The IFWI contains U-Boot TPL,
480	  microcode and other internal items.
481
482endif
483
484config FSP_TEMP_RAM_ADDR
485	hex
486	depends on FSP_VERSION1
487	default 0x2000000
488	help
489	  Stack top address which is used in fsp_init() after DRAM is ready and
490	  CAR is disabled.
491
492config FSP_SYS_MALLOC_F_LEN
493	hex
494	depends on FSP_VERSION1
495	default 0x100000
496	help
497	  Additional size of malloc() pool before relocation.
498
499config FSP_USE_UPD
500	bool
501	depends on FSP_VERSION1
502	default y if !NORTHBRIDGE_INTEL_IVYBRIDGE
503	help
504	  Most FSPs use UPD data region for some FSP customization. But there
505	  are still some FSPs that might not even have UPD. For such FSPs,
506	  override this to n in their platform Kconfig files.
507
508config FSP_BROKEN_HOB
509	bool
510	depends on FSP_VERSION1
511	help
512	  Indicate some buggy FSPs that does not report memory used by FSP
513	  itself as reserved in the resource descriptor HOB. Select this to
514	  tell U-Boot to do some additional work to ensure U-Boot relocation
515	  do not overwrite the important boot service data which is used by
516	  FSP, otherwise the subsequent call to fsp_notify() will fail.
517
518config ENABLE_MRC_CACHE
519	bool "Enable MRC cache"
520	depends on !EFI_CLIENT && !SYS_COREBOOT
521	help
522	  Enable this feature to cause MRC data to be cached in NV storage
523	  to be used for speeding up boot time on future reboots and/or
524	  power cycles.
525
526	  For platforms that use Intel FSP for the memory initialization,
527	  please check FSP output HOB via U-Boot command 'fsp hob' to see
528	  if there is FSP_NON_VOLATILE_STORAGE_HOB_GUID (asm/fsp1/fsp_hob.h).
529	  If such GUID does not exist, MRC cache is not available on such
530	  platform (eg: Intel Queensbay), which means selecting this option
531	  here does not make any difference.
532
533config HAVE_MRC
534	bool "Add a System Agent binary"
535	select HAS_ROM
536	depends on !HAVE_FSP
537	help
538	  Select this option to add a System Agent binary to
539	  the resulting U-Boot image. MRC stands for Memory Reference Code.
540	  It is a binary blob which U-Boot uses to set up SDRAM.
541
542	  Note: Without this binary U-Boot will not be able to set up its
543	  SDRAM so will not boot.
544
545config CACHE_MRC_BIN
546	bool
547	depends on HAVE_MRC
548	help
549	  Enable caching for the memory reference code binary. This uses an
550	  MTRR (memory type range register) to turn on caching for the section
551	  of SPI flash that contains the memory reference code. This makes
552	  SDRAM init run faster.
553
554config CACHE_MRC_SIZE_KB
555	int
556	depends on HAVE_MRC
557	default 512
558	help
559	  Sets the size of the cached area for the memory reference code.
560	  This ends at the end of SPI flash (address 0xffffffff) and is
561	  measured in KB. Typically this is set to 512, providing for 0.5MB
562	  of cached space.
563
564config DCACHE_RAM_BASE
565	hex
566	depends on HAVE_MRC
567	help
568	  Sets the base of the data cache area in memory space. This is the
569	  start address of the cache-as-RAM (CAR) area and the address varies
570	  depending on the CPU. Once CAR is set up, read/write memory becomes
571	  available at this address and can be used temporarily until SDRAM
572	  is working.
573
574config DCACHE_RAM_SIZE
575	hex
576	depends on HAVE_MRC
577	default 0x40000
578	help
579	  Sets the total size of the data cache area in memory space. This
580	  sets the size of the cache-as-RAM (CAR) area. Note that much of the
581	  CAR space is required by the MRC. The CAR space available to U-Boot
582	  is normally at the start and typically extends to 1/4 or 1/2 of the
583	  available size.
584
585config DCACHE_RAM_MRC_VAR_SIZE
586	hex
587	depends on HAVE_MRC
588	help
589	  This is the amount of CAR (Cache as RAM) reserved for use by the
590	  memory reference code. This depends on the implementation of the
591	  memory reference code and must be set correctly or the board will
592	  not boot.
593
594config HAVE_REFCODE
595        bool "Add a Reference Code binary"
596        help
597          Select this option to add a Reference Code binary to the resulting
598          U-Boot image. This is an Intel binary blob that handles system
599          initialisation, in this case the PCH and System Agent.
600
601          Note: Without this binary (on platforms that need it such as
602          broadwell) U-Boot will be missing some critical setup steps.
603          Various peripherals may fail to work.
604
605config HAVE_MICROCODE
606	bool "Board requires a microcode binary"
607	default y if !FSP_VERSION2
608	help
609	  Enable this if the board requires microcode to be loaded on boot.
610	  Typically this is handed by the FSP for modern boards, but for
611	  some older boards, it must be programmed by U-Boot, and that form
612	  part of the image.
613
614config SMP
615	bool "Enable Symmetric Multiprocessing"
616	help
617	  Enable use of more than one CPU in U-Boot and the Operating System
618	  when loaded. Each CPU will be started up and information can be
619	  obtained using the 'cpu' command. If this option is disabled, then
620	  only one CPU will be enabled regardless of the number of CPUs
621	  available.
622
623config SMP_AP_WORK
624	bool
625	depends on SMP
626	help
627	 Allow APs to do other work after initialisation instead of going
628	 to sleep.
629
630config MAX_CPUS
631	int "Maximum number of CPUs permitted"
632	depends on SMP
633	default 4
634	help
635	  When using multi-CPU chips it is possible for U-Boot to start up
636	  more than one CPU. The stack memory used by all of these CPUs is
637	  pre-allocated so at present U-Boot wants to know the maximum
638	  number of CPUs that may be present. Set this to at least as high
639	  as the number of CPUs in your system (it uses about 4KB of RAM for
640	  each CPU).
641
642config AP_STACK_SIZE
643	hex
644	depends on SMP
645	default 0x1000
646	help
647	  Each additional CPU started by U-Boot requires its own stack. This
648	  option sets the stack size used by each CPU and directly affects
649	  the memory used by this initialisation process. Typically 4KB is
650	  enough space.
651
652config CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED
653	bool
654	help
655	  This option indicates that the turbo mode setting is not package
656	  scoped. i.e. turbo_enable() needs to be called on not just the
657	  bootstrap processor (BSP).
658
659config HAVE_VGA_BIOS
660	bool "Add a VGA BIOS image"
661	help
662	  Select this option if you have a VGA BIOS image that you would
663	  like to add to your ROM.
664
665config VGA_BIOS_FILE
666	string "VGA BIOS image filename"
667	depends on HAVE_VGA_BIOS
668	default "vga.bin"
669	help
670	  The filename of the VGA BIOS image in the board directory.
671
672config VGA_BIOS_ADDR
673	hex "VGA BIOS image location"
674	depends on HAVE_VGA_BIOS
675	default 0xfff90000
676	help
677	  The location of VGA BIOS image in the SPI flash. For example, base
678	  address of 0xfff90000 indicates that the image will be put at offset
679	  0x90000 from the beginning of a 1MB flash device.
680
681config HAVE_VBT
682	bool "Add a Video BIOS Table (VBT) image"
683	depends on HAVE_FSP
684	help
685	  Select this option if you have a Video BIOS Table (VBT) image that
686	  you would like to add to your ROM. This is normally required if you
687	  are using an Intel FSP firmware that is complaint with spec 1.1 or
688	  later to initialize the integrated graphics device (IGD).
689
690	  Video BIOS Table, or VBT, provides platform and board specific
691	  configuration information to the driver that is not discoverable
692	  or available through other means. By other means the most used
693	  method here is to read EDID table from the attached monitor, over
694	  Display Data Channel (DDC) using two pin I2C serial interface. VBT
695	  configuration is related to display hardware and is available via
696	  the ACPI OpRegion or, on older systems, in the PCI ROM (Option ROM).
697
698config VBT_FILE
699	string "Video BIOS Table (VBT) image filename"
700	depends on HAVE_VBT
701	default "vbt.bin"
702	help
703	  The filename of the file to use as Video BIOS Table (VBT) image
704	  in the board directory.
705
706config VBT_ADDR
707	hex "Video BIOS Table (VBT) image location"
708	depends on HAVE_VBT
709	default 0xfff90000
710	help
711	  The location of Video BIOS Table (VBT) image in the SPI flash. For
712	  example, base address of 0xfff90000 indicates that the image will
713	  be put at offset 0x90000 from the beginning of a 1MB flash device.
714
715config VIDEO_FSP
716	bool "Enable FSP framebuffer driver support"
717	depends on HAVE_VBT && VIDEO
718	help
719	  Turn on this option to enable a framebuffer driver when U-Boot is
720	  using Video BIOS Table (VBT) image for FSP firmware to initialize
721	  the integrated graphics device.
722
723config ROM_TABLE_ADDR
724	hex
725	default 0xf0000
726	help
727	  All x86 tables happen to like the address range from 0x0f0000
728	  to 0x100000. We use 0xf0000 as the starting address to store
729	  those tables, including PIRQ routing table, Multi-Processor
730	  table and ACPI table.
731
732config ROM_TABLE_SIZE
733	hex
734	default 0x10000
735
736config X86_HARDFP
737	bool "Support hardware floating point"
738	help
739	  U-Boot generally does not make use of floating point. Where this is
740	  needed, it can be enabled using this option. This adjusts the
741	  start-up code for 64-bit mode and changes the compiler options for
742	  64-bit to enable SSE.
743
744config HAVE_ITSS
745	bool "Enable ITSS"
746	help
747	  Select this to include the driver for the Interrupt Timer
748	  Subsystem (ITSS) which is found on several Intel devices.
749
750config HAVE_P2SB
751	bool "Enable P2SB"
752	depends on P2SB
753	help
754	  Select this to include the driver for the Primary to
755	  Sideband Bridge (P2SB) which is found on several Intel
756	  devices.
757
758menu "System tables"
759	depends on !EFI_CLIENT && !SYS_COREBOOT
760
761config GENERATE_PIRQ_TABLE
762	bool "Generate a PIRQ table"
763	help
764	  Generate a PIRQ routing table for this board. The PIRQ routing table
765	  is generated by U-Boot in the system memory from 0xf0000 to 0xfffff
766	  at every 16-byte boundary with a PCI IRQ routing signature ("$PIR").
767	  It specifies the interrupt router information as well how all the PCI
768	  devices' interrupt pins are wired to PIRQs.
769
770config GENERATE_SFI_TABLE
771	bool "Generate a SFI (Simple Firmware Interface) table"
772	help
773	  The Simple Firmware Interface (SFI) provides a lightweight method
774	  for platform firmware to pass information to the operating system
775	  via static tables in memory.  Kernel SFI support is required to
776	  boot on SFI-only platforms.  If you have ACPI tables then these are
777	  used instead.
778
779	  U-Boot writes this table in write_sfi_table() just before booting
780	  the OS.
781
782	  For more information, see http://simplefirmware.org
783
784config GENERATE_MP_TABLE
785	bool "Generate an MP (Multi-Processor) table"
786	help
787	  Generate an MP (Multi-Processor) table for this board. The MP table
788	  provides a way for the operating system to support for symmetric
789	  multiprocessing as well as symmetric I/O interrupt handling with
790	  the local APIC and I/O APIC.
791
792config ACPI_GNVS_EXTERNAL
793	bool
794	help
795	  Put the GNVS (Global Non-Volatile Sleeping) table separate from the
796	  DSDT and add a pointer to the table from the DSDT. This allows
797	  U-Boot to better control the address of the GNVS.
798
799endmenu
800
801config HAVE_ACPI_RESUME
802	bool "Enable ACPI S3 resume"
803	select ENABLE_MRC_CACHE
804	help
805	  Select this to enable ACPI S3 resume. S3 is an ACPI-defined sleeping
806	  state where all system context is lost except system memory. U-Boot
807	  is responsible for restoring the machine state as it was before sleep.
808	  It needs restore the memory controller, without overwriting memory
809	  which is not marked as reserved. For the peripherals which lose their
810	  registers, U-Boot needs to write the original value. When everything
811	  is done, U-Boot needs to find out the wakeup vector provided by OSes
812	  and jump there.
813
814config S3_VGA_ROM_RUN
815	bool "Re-run VGA option ROMs on S3 resume"
816	depends on HAVE_ACPI_RESUME
817	help
818	  Execute VGA option ROMs in U-Boot when resuming from S3. Normally
819	  this is needed when graphics console is being used in the kernel.
820
821	  Turning it off can reduce some resume time, but be aware that your
822	  graphics console won't work without VGA options ROMs. Set it to N
823	  if your kernel is only on a serial console.
824
825config STACK_SIZE_RESUME
826	hex
827	depends on HAVE_ACPI_RESUME
828	default 0x1000
829	help
830	  Estimated U-Boot's runtime stack size that needs to be reserved
831	  during an ACPI S3 resume.
832
833config MAX_PIRQ_LINKS
834	int
835	default 8
836	help
837	  This variable specifies the number of PIRQ interrupt links which are
838	  routable. On most older chipsets, this is 4, PIRQA through PIRQD.
839	  Some newer chipsets offer more than four links, commonly up to PIRQH.
840
841config IRQ_SLOT_COUNT
842	int
843	default 128
844	help
845	  U-Boot can support up to 254 IRQ slot info in the PIRQ routing table
846	  which in turns forms a table of exact 4KiB. The default value 128
847	  should be enough for most boards. If this does not fit your board,
848	  change it according to your needs.
849
850config PCIE_ECAM_BASE
851	hex
852	default 0xe0000000
853	help
854	  This is the memory-mapped address of PCI configuration space, which
855	  is only available through the Enhanced Configuration Access
856	  Mechanism (ECAM) with PCI Express. It can be set up almost
857	  anywhere. Before it is set up, it is possible to access PCI
858	  configuration space through I/O access, but memory access is more
859	  convenient. Using this, PCI can be scanned and configured. This
860	  should be set to a region that does not conflict with memory
861	  assigned to PCI devices - i.e. the memory and prefetch regions, as
862	  passed to pci_set_region().
863
864config PCIE_ECAM_SIZE
865	hex
866	default 0x10000000
867	help
868	  This is the size of memory-mapped address of PCI configuration space,
869	  which is only available through the Enhanced Configuration Access
870	  Mechanism (ECAM) with PCI Express. Each bus consumes 1 MiB memory,
871	  so a default 0x10000000 size covers all of the 256 buses which is the
872	  maximum number of PCI buses as defined by the PCI specification.
873
874config I8259_PIC
875	bool "Enable Intel 8259 compatible interrupt controller"
876	default y
877	help
878	  Intel 8259 ISA compatible chipset incorporates two 8259 (master and
879	  slave) interrupt controllers. Include this to have U-Boot set up
880	  the interrupt correctly.
881
882config APIC
883	bool "Enable Intel Advanced Programmable Interrupt Controller"
884	default y
885	help
886	  The (A)dvanced (P)rogrammable (I)nterrupt (C)ontroller is responsible
887	  for catching interrupts and distributing them to one or more CPU
888	  cores. In most cases there are some LAPICs (local) for each core and
889	  one I/O APIC. This conjunction is found on most modern x86 systems.
890
891config PINCTRL_ICH6
892	bool
893	help
894	  Intel ICH6 compatible chipset pinctrl driver. It needs to work
895	  together with the ICH6 compatible gpio driver.
896
897config I8254_TIMER
898	bool
899	default y
900	help
901	  Intel 8254 timer contains three counters which have fixed uses.
902	  Include this to have U-Boot set up the timer correctly.
903
904config SEABIOS
905	bool "Support booting SeaBIOS"
906	help
907	  SeaBIOS is an open source implementation of a 16-bit X86 BIOS.
908	  It can run in an emulator or natively on X86 hardware with the use
909	  of coreboot/U-Boot. By turning on this option, U-Boot prepares
910	  all the configuration tables that are necessary to boot SeaBIOS.
911
912	  Check http://www.seabios.org/SeaBIOS for details.
913
914config HIGH_TABLE_SIZE
915	hex "Size of configuration tables which reside in high memory"
916	default 0x10000
917	depends on SEABIOS
918	help
919	  SeaBIOS itself resides in E seg and F seg, where U-Boot puts all
920	  configuration tables like PIRQ/MP/ACPI. To avoid conflicts, U-Boot
921	  puts a copy of configuration tables in high memory region which
922	  is reserved on the stack before relocation. The region size is
923	  determined by this option.
924
925	  Increse it if the default size does not fit the board's needs.
926	  This is most likely due to a large ACPI DSDT table is used.
927
928config INTEL_CAR_CQOS
929	bool "Support Intel Cache Quality of Service"
930	help
931	  Cache Quality of Service allows more fine-grained control of cache
932	  usage. As result, it is possible to set up a portion of L2 cache for
933	  CAR and use the remainder for actual caching.
934
935#
936# Each bit in QOS mask controls this many bytes. This is calculated as:
937# (CACHE_WAYS / CACHE_BITS_PER_MASK) * CACHE_LINE_SIZE * CACHE_SETS
938#
939config CACHE_QOS_SIZE_PER_BIT
940	hex
941	depends on INTEL_CAR_CQOS
942	default 0x20000 # 128 KB
943
944config X86_OFFSET_U_BOOT
945	hex "Offset of U-Boot in ROM image"
946	depends on HAVE_TEXT_BASE
947	default TEXT_BASE
948
949config X86_OFFSET_SPL
950	hex "Offset of SPL in ROM image"
951	depends on SPL && X86
952	default SPL_TEXT_BASE
953
954config ACPI_GPE
955	bool "Support ACPI general-purpose events"
956	help
957	  Enable a driver for ACPI GPEs to allow peripherals to send interrupts
958	  via ACPI to the OS. In U-Boot this is only used when U-Boot itself
959	  needs access to these interrupts. This can happen when it uses a
960	  peripheral that is set up to use GPEs and so cannot use the normal
961	  GPIO mechanism for polling an input.
962
963	  See https://queue.acm.org/blogposting.cfm?id=18977 for more info
964
965config SPL_ACPI_GPE
966	bool "Support ACPI general-purpose events in SPL"
967	depends on SPL
968	help
969	  Enable a driver for ACPI GPEs to allow peripherals to send interrupts
970	  via ACPI to the OS. In U-Boot this is only used when U-Boot itself
971	  needs access to these interrupts. This can happen when it uses a
972	  peripheral that is set up to use GPEs and so cannot use the normal
973	  GPIO mechanism for polling an input.
974
975	  See https://queue.acm.org/blogposting.cfm?id=18977 for more info
976
977config TPL_ACPI_GPE
978	bool "Support ACPI general-purpose events in TPL"
979	depends on TPL
980	help
981	  Enable a driver for ACPI GPEs to allow peripherals to send interrupts
982	  via ACPI to the OS. In U-Boot this is only used when U-Boot itself
983	  needs access to these interrupts. This can happen when it uses a
984	  peripheral that is set up to use GPEs and so cannot use the normal
985	  GPIO mechanism for polling an input.
986
987	  See https://queue.acm.org/blogposting.cfm?id=18977 for more info
988
989config SA_PCIEX_LENGTH
990	hex
991	default 0x10000000 if (PCIEX_LENGTH_256MB)
992	default 0x8000000 if (PCIEX_LENGTH_128MB)
993	default 0x4000000 if (PCIEX_LENGTH_64MB)
994	default 0x10000000
995	help
996	  This option allows you to select length of PCIEX region.
997
998config PCIEX_LENGTH_256MB
999	bool
1000
1001config PCIEX_LENGTH_128MB
1002	bool
1003
1004config PCIEX_LENGTH_64MB
1005	bool
1006
1007config INTEL_SOC
1008	bool
1009	help
1010	  This is enabled on Intel SoCs that can support various advanced
1011	  features such as power management (requiring asm/arch/pm.h), system
1012	  agent (asm/arch/systemagent.h) and an I/O map for ACPI
1013	  (asm/arch/iomap.h).
1014
1015	  This cannot be selected in a defconfig file. It must be enabled by a
1016	  'select' in the SoC's Kconfig.
1017
1018if INTEL_SOC
1019
1020config INTEL_ACPIGEN
1021	bool "Support ACPI table generation for Intel SoCs"
1022	depends on ACPIGEN
1023	help
1024	  This option adds some functions used for programmatic generation of
1025	  ACPI tables on Intel SoCs. This provides features for writing CPU
1026	  information such as P states and T stages. Also included is a way
1027	  to create a GNVS table and set it up.
1028
1029config INTEL_GMA_ACPI
1030	bool "Generate ACPI table for Intel GMA graphics"
1031	help
1032	  The Intel GMA graphics driver in Linux expects an ACPI table
1033	  which describes the layout of the registers and the display
1034	  connected to the device. Enable this option to create this
1035	  table so that graphics works correctly.
1036
1037config INTEL_GENERIC_WIFI
1038	bool "Enable generation of ACPI tables for Intel WiFi"
1039	help
1040	  Select this option to provide code to a build generic WiFi ACPI table
1041	  for Intel WiFi devices. This is not a WiFi driver and offers no
1042	  network functionality. It is only here to generate the ACPI tables
1043	  required by Linux.
1044
1045config INTEL_GMA_SWSMISCI
1046	bool
1047	help
1048	  Select this option for Atom-based platforms which use the SWSMISCI
1049	  register (0xe0) rather than the SWSCI register (0xe8).
1050
1051endif # INTEL_SOC
1052
1053config COREBOOT_SYSINFO
1054	bool "Support reading coreboot sysinfo"
1055	default y if SYS_COREBOOT
1056	help
1057	  Select this option to read the coreboot sysinfo table on start-up,
1058	  if present. This is written by coreboot before it exits and provides
1059	  various pieces of information about the running system, including
1060	  display, memory and build information. It is stored in
1061	  struct sysinfo_t after parsing by get_coreboot_info().
1062
1063config SPL_COREBOOT_SYSINFO
1064	bool "Support reading coreboot sysinfo"
1065	depends on SPL
1066	default y if COREBOOT_SYSINFO
1067	help
1068	  Select this option to read the coreboot sysinfo table in SPL,
1069	  if present. This is written by coreboot before it exits and provides
1070	  various pieces of information about the running system, including
1071	  display, memory and build information. It is stored in
1072	  struct sysinfo_t after parsing by get_coreboot_info().
1073
1074config ZBOOT
1075	bool "Support the zImage format"
1076	default y
1077	help
1078	  Enable this to support booting the x86-specific zImage format. This
1079	  uses a special, binary format containing information about the Linux
1080	  format to boot.
1081
1082endmenu
1083