1# SPDX-License-Identifier: Apache-2.0
2
3config BOARD
4	string
5	default "$(BOARD)"
6	help
7	  This option holds the name of the board and is used to locate the files
8	  related to the board in the source tree (under boards/).
9	  The Board is the first location where we search for a linker.ld file,
10	  if not found we look for the linker file in
11	  soc/<arch>/<family>/<series>
12
13config BOARD_REVISION
14	def_string "$(BOARD_REVISION)"
15	help
16	  If the BOARD has a revision field set, this is the revision.
17	  Otherwise, it is the empty string. For example, if BOARD is
18	  "plank@foo", this option will be "foo". If BOARD is "plank",
19	  this option will be the empty string.
20
21config BOARD_TARGET
22	string
23	default "$(BOARD)@$(BOARD_REVISION)$(BOARD_QUALIFIERS)" if "$(BOARD_REVISION)" != ""
24	default "$(BOARD)$(BOARD_QUALIFIERS)"
25	help
26	  Contains the board target (full string including name, revision, soc, cluster and
27	  variant) of the board being used.
28
29	  For example, if building for ``nrf5340dk/nrf5340/cpuapp`` then this will contain the
30	  value ``nrf5340dk/nrf5340/cpuapp``.
31
32config BOARD_DEPRECATED_RELEASE
33	string
34	help
35	  This hidden option is set in the board configuration and indicates
36	  the Zephyr release that the board configuration will be removed.
37	  When set, any build for that board will generate a clearly visible
38	  deprecation warning.
39	  When adding this to a BOARD, remember to follow the instructions in
40	  https://docs.zephyrproject.org/latest/develop/api/api_lifecycle.html#deprecated
41
42config QEMU_TARGET
43	bool
44	help
45	  Mark all QEMU targets with this variable for checking whether we are
46	  running in an emulated environment.
47
48config NET_DRIVERS
49	bool
50	default y if QEMU_TARGET && NETWORKING
51	help
52	  When building for a qemu target then NET_DRIVERS will be default
53	  enabled to allow for easy use of SLIP or PPP
54
55rsource "Kconfig.v2"
56
57# Parse shields references
58# Don't do it as a menuconfig, as shield selection is a CMake feature.
59# This loads custom shields Kconfig (from BOARD_ROOT)
60osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield"
61# This loads Zephyr base shield defconfigs
62rsource "shields/*/Kconfig.shield"
63
64menu "Board Options"
65config QEMU_ICOUNT
66	bool "QEMU icount mode"
67	depends on QEMU_TARGET
68	default y if !NETWORKING && !BT
69	help
70	  Enable QEMU virtual instruction counter. The virtual cpu will
71	  execute one instruction every 2^N ns of virtual time. This will
72	  give deterministic execution times from the guest point of view.
73
74config QEMU_ICOUNT_SHIFT
75	int "QEMU icount shift value"
76	depends on QEMU_ICOUNT
77	help
78	  The virtual CPU will execute one instruction every 2^N nanoseconds
79	  of virtual time, where N is the value provided here.
80
81config QEMU_ICOUNT_SLEEP
82	bool "QEMU icount sleep mode enable"
83	depends on QEMU_ICOUNT
84	help
85	  When the virtual CPU is sleeping, the virtual time will advance
86	  at default speed unless this option is set. With this option set,
87	  the virtual time will jump to the next timer deadline instantly
88	  whenever the virtual CPU goes to sleep mode and will not advance
89	  if no timer is enabled. This behavior gives deterministic execution
90	  times from the guest point of view.
91
92config QEMU_IVSHMEM_PLAIN_MEM_SIZE
93	int "QEMU ivshmem-plain shared memory size in mega-bytes"
94	default 1
95	depends on QEMU_TARGET && IVSHMEM && !IVSHMEM_DOORBELL
96	help
97	  This sets the size of the shared memory when using ivshmem-plain
98	  device in Qemu. Note that it's in mega-bytes, so 1 means 1M for Qemu
99	  etc..
100
101config QEMU_UEFI_BOOT
102	bool "QEMU uses UEFI to boot up"
103	default n
104	depends on BUILD_OUTPUT_EFI && QEMU_TARGET && X86_64
105	help
106	  This option indicates that QEMU will use UEFI bootable method
107	  to boot up.
108
109config QEMU_GDBSERVER_LISTEN_DEV
110	string "QEMU gdbserver listen device"
111	default "tcp::1234"
112	depends on QEMU_TARGET
113	help
114	  This options is passed onto QEMU as a parameter to `-gdb` option.
115	  The default value is equivalent to `-s` which is a shorthand for
116	  `-gdb tcp::1234`. An empty value omits the `-gdb` parameter altogether.
117	  This allows the injection of `-gdb` parameter from other sources such
118	  as the `QEMU_EXTRA_FLAGS` environment variable. Refer to application
119	  development doc and/or QEMU invocation doc for more info.
120
121config QEMU_EXTRA_FLAGS
122	string "QEMU extra flags"
123	depends on QEMU_TARGET
124	default ""
125	help
126	  This option is to pass onto QEMU an extra list of parameters
127	  to setup devices, for example to allocate interface for Zephyr
128	  GDBstub over serial with `-serial tcp:127.0.0.1:5678,server`
129
130config BOARD_REQUIRES_SERIAL_BACKEND_CDC_ACM
131	bool
132	help
133	  Indicates that a board has no other capabilities than to use the CDC
134	  ACM UART as a backend for logging or shell.
135
136config BOARD_SERIAL_BACKEND_CDC_ACM
137	bool "Board uses USB CDC ACM UART as serial backend"
138	depends on BOARD_REQUIRES_SERIAL_BACKEND_CDC_ACM
139	default y
140	help
141	  USB stack and CDC ACM UART are configured and initialized at boot
142	  time to be used as a backend for logging or shell.
143
144# There might not be any board options, hence the optional source
145osource "$(KCONFIG_BOARD_DIR)/Kconfig"
146endmenu
147
148config BOARD_HAS_TIMING_FUNCTIONS
149	bool
150	help
151	  Should be selected if board provides custom method for retrieving
152	  timestamps and cycle count.
153