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
167	int "nRF IEEE 802.15.4 CCA Energy Detection threshold"
168	default 45
169	help
170	  If energy detected in a given channel is above the value then the
171	  channel is deemed busy. The unit is defined as per 802.15.4-2006 spec.
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 16
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
207config NRF_802154_SECURITY_KEY_STORAGE_SIZE
208	int "nRF 802.15.4 security key storage size"
209	default 3
210	help
211	  Number of encryption keys that the nRF 802.15.4 Radio Driver can store simultaneously.
212
213config NRF_802154_CARRIER_FUNCTIONS
214	bool "nRF 802.15.4 carrier functions"
215	default y if (OPENTHREAD_DIAG || IEEE802154_CARRIER_FUNCTIONS)
216	help
217	  This option enables functions such as modulated carrier and continuous carrier.
218	  If this option is modified on a multicore SoC, its remote counterpart must be set to the exact same value.
219
220choice NRF_802154_ASSERT_CHOICE
221	prompt "nRF 802.15.4 assert implementation"
222	default NRF_802154_ASSERT_ZEPHYR_MINIMAL
223
224config NRF_802154_ASSERT_ZEPHYR_MINIMAL
225	bool "nRF 802.15.4 minimal assertions"
226	help
227	  This option provides minimal run-time checking of the nRF 802.15.4 Radio Driver's operation,
228	  even if kernel-wide CONFIG_ASSERT is disabled. In case of an abnormal condition the function
229	  `nrf_802154_assert_handler()` is called. File and line debug information are not provided
230	  to save memory of the image file. Default implementation of the `nrf_802154_assert_handler`
231	  involves a call to `k_panic`/`k_oops` and allows further tweaking of the behavior.
232	  You can also provide your own implementation of `nrf_802154_assert_handler`.
233
234config NRF_802154_ASSERT_ZEPHYR
235	bool "nRF 802.15.4 Radio Driver assertions as Zephyr's standard __ASERT_NO_MSG"
236	help
237	  The run-time checking of the nRF 802.15.4 Radio Driver depends fully on the configuration
238	  of the `__ASSERT_NO_MSG` macro, including the ability to completely turn off the run-time
239	  checking.
240
241endchoice # NRF_802154_ASSERT_CHOICE
242
243endif # NRF_802154_RADIO_DRIVER || NRF_802154_SERIALIZATION
244
245endmenu # HAS_NORDIC_DRIVERS
246
247rsource "nrfs/Kconfig"
248rsource "nrfx/Kconfig"
249rsource "Kconfig.nrf_regtool"
250