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