1# Copyright (c) 2016-2021 Nordic Semiconductor ASA
2# SPDX-License-Identifier: Apache-2.0
3
4config ZEPHYR_HAL_NORDIC_MODULE
5	bool
6
7config HAS_NORDIC_DRIVERS
8	bool
9
10menu "Nordic drivers"
11	depends on HAS_NORDIC_DRIVERS
12
13choice NRF_802154_SOURCE
14	prompt "Source of the IEEE 802.15.4 radio driver"
15
16config NRF_802154_SOURCE_HAL_NORDIC
17	bool "Open source"
18
19endchoice
20
21menuconfig NRF_802154_RADIO_DRIVER
22	bool "NRF IEEE 802.15.4 radio driver"
23	depends on HAS_HW_NRF_RADIO_IEEE802154
24	select DYNAMIC_INTERRUPTS
25	select ENTROPY_GENERATOR
26	select CLOCK_CONTROL
27	depends on !$(dt_nodelabel_enabled,timer1)
28	help
29	  This option enables nRF IEEE 802.15.4 radio driver in Zephyr. Note,
30	  that beside the radio peripheral itself, this drivers occupies several
31	  other peripherals. A complete list can be found in the hal_nordic
32	  repository, within drivers/nrf_radio_802154/nrf_802154_peripherals.h
33	  file. As the nRF IEEE 802.15.4 radio driver defines IRQ configuration
34	  abstraction layer API and its Zephyr-specific implementation uses dynamic
35	  interrupts, the DYNAMIC_INTERRUPTS switch is selected unconditionally.
36
37if NRF_802154_RADIO_DRIVER
38
39config NRF_802154_CONSTLAT_CONTROL
40	def_bool y
41	depends on SOC_SERIES_NRF54LX && NRF_802154_SL_OPENSOURCE
42	select NRF_SYS_EVENT
43	help
44	  Allows the nRF 802.15.4 radio driver to manage the constant latency state.
45
46config NRF_802154_MULTIPROTOCOL_SUPPORT
47	bool
48	help
49	  In dynamic multiprotocol applications, access to the radio peripheral
50	  must be distributed by an arbiter. To support this arbitration
51	  in the driver, this option must be enabled. Otherwise, the driver
52	  assumes that access to the radio peripheral is granted indefinitely.
53
54choice NRF_802154_SL_TYPE
55	prompt "nRF IEEE 802.15.4 Service Layer Type"
56
57config NRF_802154_SL_OPENSOURCE
58	bool "Open source"
59	select SENSOR if NRF_802154_TEMPERATURE_UPDATE
60	select TEMP_NRF5 if NRF_802154_TEMPERATURE_UPDATE
61
62endchoice
63
64config NRF_802154_TEMPERATURE_UPDATE
65	bool "nRF 802.15.4 temperature update"
66	default y if !SOC_NRF54H20
67	help
68	  Enable temperature update for nRF 802.15.4 driver
69
70config NRF_802154_TEMPERATURE_UPDATE_INIT_PRIO
71	int "nRF52 IEEE 802.15.4 temperature update initialization priority"
72	depends on NRF_802154_TEMPERATURE_UPDATE
73	default 91
74	help
75	  Set the initialization priority of a temperature update for nRF 802.15.4 driver.
76
77config NRF_802154_TEMPERATURE_UPDATE_PERIOD
78	int "nRF 802.15.4 temperature update period in milliseconds"
79	depends on NRF_802154_TEMPERATURE_UPDATE
80	default 60000
81	help
82	  Period of a temperature update for nRF 802.15.4 driver in milliseconds
83
84endif # NRF_802154_RADIO_DRIVER
85
86config NRF_802154_SERIALIZATION
87	bool
88	select IPC_SERVICE
89	select MBOX
90	help
91	  This helper symbol indicates that the nRF 802.15.4 serialization is available.
92
93config NRF_802154_SER_HOST
94	bool "nRF IEEE 802.15.4 Driver serialization host"
95	depends on !NRF_802154_RADIO_DRIVER
96	depends on !HAS_HW_NRF_RADIO_IEEE802154
97	select IEEE802154_NRF5_EXT_IRQ_MGMT if IEEE802154_NRF5
98	select NRF_802154_SERIALIZATION
99	help
100	  Enable serialization of nRF IEEE 802.15.4 Driver. This option is to be
101	  used if radio is not available in the core, but radio services are
102	  provided by a serialization backend.
103
104menuconfig NRF_802154_SER_RADIO
105	bool "nRF IEEE 802.15.4 Driver serialization radio"
106	depends on HAS_HW_NRF_RADIO_IEEE802154
107	depends on !IEEE802154_NRF5
108	select NRF_802154_RADIO_DRIVER
109	select NRF_802154_SERIALIZATION
110	help
111	  Enable serialization of nRF IEEE 802.15.4 Driver. This option is to be
112	  used if radio is available in the core to provide radio services over
113	  a serialization backend.
114
115if NRF_802154_SER_RADIO
116
117config NRF_802154_SER_RADIO_INIT_PRIO
118	int "nRF52 IEEE 802.15.4 serialization initialization priority"
119	default 53
120	help
121	  Set the initialization priority number. Do not mess with it unless
122	  you know what you are doing.
123
124endif
125
126menu "nRF 802.15.4 serialization"
127	depends on NRF_802154_SER_HOST || NRF_802154_SER_RADIO
128
129config NRF_802154_SER_LOG
130	bool "802.15.4 serialization logs"
131	default n
132	help
133	  This option enable debug logs of 802.15.4 serialization module.
134
135config NRF_802154_SER_DEFAULT_RESPONSE_TIMEOUT
136	int "Default Spinel serialization response timeout in milliseconds"
137	default 500
138	help
139	  This option specifies default timeout of spinel status response
140	  in milliseconds.
141
142endmenu # NRF_802154_SER_HOST || NRF_802154_SER_RADIO
143
144if NRF_802154_RADIO_DRIVER || NRF_802154_SERIALIZATION
145
146choice NRF_802154_CCA_MODE
147	prompt "nRF IEEE 802.15.4 CCA mode"
148	default NRF_802154_CCA_MODE_ED
149	help
150	  CCA mode
151
152config NRF_802154_CCA_MODE_ED
153	bool "Energy Above Threshold"
154
155config NRF_802154_CCA_MODE_CARRIER
156	bool "Carrier Seen"
157
158config NRF_802154_CCA_MODE_CARRIER_AND_ED
159	bool "Energy Above Threshold AND Carrier Seen"
160
161config NRF_802154_CCA_MODE_CARRIER_OR_ED
162	bool "Energy Above Threshold OR Carrier Seen"
163
164endchoice
165
166config NRF_802154_CCA_ED_THRESHOLD_DBM
167	int "nRF IEEE 802.15.4 CCA Energy Detection threshold in dBm"
168	default -75
169	help
170	  If energy detected in a given channel is above the value then the
171	  channel is deemed busy. The unit is dBm.
172
173config NRF_802154_CCA_CORR_THRESHOLD
174	int "nRF IEEE 802.15.4 CCA Correlator threshold"
175	default 45
176
177config NRF_802154_CCA_CORR_LIMIT
178	int "nRF IEEE 802.15.4 CCA Correlator limit"
179	default 2
180	help
181	  Limit for occurrences above correlator threshold. When not equal to
182	  zero the correlator based signal detect is enabled.
183
184config NRF_802154_RX_BUFFERS
185	int "nRF 802.15.4 receive buffers"
186	default 20
187	help
188	  Number of buffers in nRF 802.15.4 driver serialization host's receive queue.
189	  If this value is modified, its remote counterpart must be set to the exact same value.
190
191config NRF_802154_PENDING_SHORT_ADDRESSES
192	int "nRF 802.15.4 pending short addresses"
193	default 16
194	help
195	  Number of slots containing short addresses of nodes for which pending data is stored
196
197config NRF_802154_PENDING_EXTENDED_ADDRESSES
198	int "nRF 802.15.4 pending extended addresses"
199	default 16
200	help
201	  Number of slots containing extended addresses of nodes for which pending data is stored
202
203config NRF_802154_ENCRYPTION
204	bool "nRF 802.15.4 AES-CCM* authentication & encryption"
205	depends on !CRYPTO_NRF_ECB
206	select NRF_802154_IE_WRITER
207	select NRF_802154_SECURITY_WRITER
208	help
209	  Enable module for encryption and authentication of outgoing frames and Acks.
210
211config NRF_802154_IE_WRITER
212	bool "Information element writer"
213	help
214	  Enable data injection for some Information Element types.
215
216config NRF_802154_SECURITY_WRITER
217	bool "Security frame counter writer"
218	help
219	  Enable injection of security frame counter.
220
221config NRF_802154_SECURITY_KEY_STORAGE_SIZE
222	int "nRF 802.15.4 security key storage size"
223	default 3
224	help
225	  Number of encryption keys that the nRF 802.15.4 Radio Driver can store simultaneously.
226
227config NRF_802154_CARRIER_FUNCTIONS
228	bool "nRF 802.15.4 carrier functions"
229	default y if (OPENTHREAD_DIAG || IEEE802154_CARRIER_FUNCTIONS)
230	help
231	  This option enables functions such as modulated carrier and continuous carrier.
232	  If this option is modified on a multicore SoC, its remote counterpart must be set to the exact same value.
233
234choice NRF_802154_ASSERT_CHOICE
235	prompt "nRF 802.15.4 assert implementation"
236	default NRF_802154_ASSERT_ZEPHYR_MINIMAL
237
238config NRF_802154_ASSERT_ZEPHYR_MINIMAL
239	bool "nRF 802.15.4 minimal assertions"
240	help
241	  This option provides minimal run-time checking of the nRF 802.15.4 Radio Driver's operation,
242	  even if kernel-wide CONFIG_ASSERT is disabled. In case of an abnormal condition the function
243	  `nrf_802154_assert_handler()` is called. File and line debug information are not provided
244	  to save memory of the image file. Default implementation of the `nrf_802154_assert_handler`
245	  involves a call to `k_panic`/`k_oops` and allows further tweaking of the behavior.
246	  You can also provide your own implementation of `nrf_802154_assert_handler`.
247
248config NRF_802154_ASSERT_ZEPHYR
249	bool "nRF 802.15.4 Radio Driver assertions as Zephyr's standard __ASERT_NO_MSG"
250	help
251	  The run-time checking of the nRF 802.15.4 Radio Driver depends fully on the configuration
252	  of the `__ASSERT_NO_MSG` macro, including the ability to completely turn off the run-time
253	  checking.
254
255endchoice # NRF_802154_ASSERT_CHOICE
256
257endif # NRF_802154_RADIO_DRIVER || NRF_802154_SERIALIZATION
258
259endmenu # HAS_NORDIC_DRIVERS
260
261rsource "ironside/se/Kconfig"
262rsource "nrfs/Kconfig"
263rsource "nrfx/Kconfig"
264rsource "Kconfig.nrf_regtool"
265