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