1# Zephyr Bluetooth Controller configuration options
2
3# Copyright (c) 2016-2017 Nordic Semiconductor ASA
4# SPDX-License-Identifier: Apache-2.0
5
6if BT_LL_SW_SPLIT
7
8DT_PATH_NORDIC_RADIO := $(dt_nodelabel_path,radio)
9DT_NORDIC_RADIO_DFE_SUPPORTED := $(dt_node_has_bool_prop,$(DT_PATH_NORDIC_RADIO),dfe-supported)
10
11config BT_LLL_VENDOR_NORDIC
12	bool "Use Nordic LLL"
13	depends on SOC_COMPATIBLE_NRF
14	select BT_HAS_HCI_VS
15	select ENTROPY_NRF5_RNG
16	select ENTROPY_NRF5_BIAS_CORRECTION
17	select BT_CTLR_LE_ENC_SUPPORT if !BT_CTLR_DATA_LENGTH_CLEAR && \
18					 !BT_CTLR_PHY_2M_NRF
19	select BT_CTLR_CONN_PARAM_REQ_SUPPORT
20	select BT_CTLR_EXT_REJ_IND_SUPPORT
21	select BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT
22	select BT_CTLR_DATA_LEN_UPDATE_SUPPORT if HAS_HW_NRF_CCM_LFLEN_8BIT || \
23						  BT_CTLR_DATA_LENGTH_CLEAR
24	select BT_CTLR_PRIVACY_SUPPORT if !SOC_SERIES_NRF51X
25	select BT_CTLR_EXT_SCAN_FP_SUPPORT
26
27	select BT_CTLR_PHY_2M_SUPPORT if HAS_HW_NRF_RADIO_BLE_2M || \
28					 BT_CTLR_PHY_2M_NRF
29	select BT_CTLR_PHY_CODED_SUPPORT if HAS_HW_NRF_RADIO_BLE_CODED
30	select BT_CTLR_PHY_UPDATE_SUPPORT if BT_CTLR_PHY_2M_SUPPORT || \
31					     BT_CTLR_PHY_CODED_SUPPORT
32	select BT_CTLR_ADV_EXT_SUPPORT
33	select BT_CTLR_ADV_PERIODIC_SUPPORT
34	select BT_CTLR_SYNC_PERIODIC_SUPPORT
35	select BT_CTLR_ADV_ISO_SUPPORT
36	select BT_CTLR_SYNC_ISO_SUPPORT
37	select BT_CTLR_DF_SUPPORT if $(DT_NORDIC_RADIO_DFE_SUPPORTED)
38	select BT_CTLR_CTEINLINE_SUPPORT if $(DT_NORDIC_RADIO_DFE_SUPPORTED)
39	select BT_CTLR_CHAN_SEL_2_SUPPORT
40	select BT_CTLR_MIN_USED_CHAN_SUPPORT
41	select BT_CTLR_DTM_HCI_SUPPORT
42	select BT_CTLR_CONN_RSSI_SUPPORT
43
44	select BT_CTLR_XTAL_ADVANCED_SUPPORT
45	select BT_CTLR_SCHED_ADVANCED_SUPPORT
46	select BT_CTLR_TIFS_HW_SUPPORT
47	select BT_CTLR_ULL_LLL_PRIO_SUPPORT
48
49	default y
50	help
51	  Use Nordic Lower Link Layer implementation.
52
53config BT_LLL_VENDOR_OPENISA
54	bool "Use OpenISA LLL"
55	depends on SOC_OPENISA_RV32M1_RISCV32
56	select BT_CTLR_PHY_UPDATE_SUPPORT
57	select BT_CTLR_EXT_REJ_IND_SUPPORT
58	select BT_HAS_HCI_VS
59	select BT_CTLR_LE_ENC_SUPPORT if !BT_CTLR_DATA_LENGTH_CLEAR
60	select BT_CTLR_PRIVACY_SUPPORT
61	default y
62	help
63	  Use OpenISA Lower Link Layer implementation.
64
65config BT_CTLR_XTAL_ADVANCED_SUPPORT
66	bool
67
68config BT_CTLR_SCHED_ADVANCED_SUPPORT
69	bool
70
71config BT_CTLR_TIFS_HW_SUPPORT
72	bool
73
74config BT_CTLR_ULL_LLL_PRIO_SUPPORT
75	bool
76
77config BT_CTLR_RX_PRIO_STACK_SIZE
78	# Controller's Co-Operative high priority Rx thread stack size.
79	int "High priority Rx thread stack size"
80	default 448
81
82config BT_CTLR_SETTINGS
83	bool "Settings System"
84	depends on SETTINGS
85	help
86	  Enable use of settings system in controller.
87
88config BT_CTLR_VERSION_SETTINGS
89	bool "Version Settings"
90	depends on BT_CTLR_SETTINGS
91	help
92	  Make the controller's Company Id and Subversion Number configurable
93	  through settings system.
94
95config BT_CTLR_COMPANY_ID
96	hex "Controller Company Id"
97	default BT_COMPANY_ID
98	range 0x0000 0xFFFF
99	help
100	  Set the Bluetooth Company Identifier that will be used in
101	  the VERSION_IND PDU. Uses BT_COMPANY_ID by default, although
102	  silicon vendors and hardware manufacturers can set their own
103	  Company Identifier for the controller. The full list of Bluetooth
104	  Company Identifiers can be found here:
105	  https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
106
107config BT_CTLR_SUBVERSION_NUMBER
108	hex "Subversion Number"
109	default 0xFFFF
110	range 0x0000 0xFFFF
111	help
112	  Set the Subversion Number that will be used in VERSION_IND PDU.
113
114config BT_CTLR_ADVANCED_FEATURES
115	bool "Show advanced features"
116	help
117	  Makes advanced features visible to controller developers.
118
119menu "Advanced features"
120	visible if BT_CTLR_ADVANCED_FEATURES
121
122config BT_CTLR_SW_DEFERRED_PRIVACY
123	bool "LE Controller-based Software Privacy"
124	depends on BT_CTLR_PRIVACY
125	help
126	  Enable support for software based deferred privacy calculations.
127
128config BT_CTLR_RPA_CACHE_SIZE
129	int "LE Controller-based Software Privacy Resolving List size"
130	depends on BT_CTLR_SW_DEFERRED_PRIVACY
131	default 8
132	range 1 64
133	help
134	  Set the size of the Known Unknown Resolving List for LE
135	  Controller-based Software deferred Privacy.
136
137config BT_CTLR_DATA_LENGTH_CLEAR
138	bool "Data Length Support (Cleartext only)"
139	depends on SOC_SERIES_NRF51X
140	help
141	  Enable support for Bluetooth v4.2 LE Data Length Update procedure, up to
142	  251 byte cleartext payloads in the Controller. Encrypted connections
143	  are not supported.
144
145
146config BT_CTLR_PHY_2M_NRF
147	bool "2Mbps Nordic Semiconductor PHY Support (Cleartext only)"
148	depends on SOC_SERIES_NRF51X
149	select BT_CTLR_PHY_2M
150	help
151	  Enable support for Nordic Semiconductor proprietary 2Mbps PHY in the
152	  Controller. Encrypted connections are not supported.
153
154config BT_CTLR_ADV_AUX_SET
155	int "LE Extended Advertising Auxiliary Sets"
156	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
157	range 1 BT_CTLR_ADV_SET if BT_CTLR_ADV_PERIODIC
158	range 0 BT_CTLR_ADV_SET
159	default 1 if BT_CTLR_ADV_PERIODIC
160	default BT_CTLR_ADV_SET
161	help
162	  Maximum supported advertising auxiliary channel sets.
163
164config BT_CTLR_ADV_SYNC_SET
165	int "LE Periodic Advertising Sets"
166	depends on BT_CTLR_ADV_PERIODIC
167	range 1 BT_CTLR_ADV_AUX_SET
168	default 1
169	help
170	  Maximum supported periodic advertising sets.
171
172config BT_CTLR_ADV_PDU_LINK
173	bool "Enable linking of advertising PDU trains"
174	help
175	  Enables extra space in each advertising PDU to allow linking PDUs. This
176	  is required to enable advertising data trains (i.e. transmission of
177	  AUX_CHAIN_IND).
178
179config BT_CTLR_ADV_SYNC_PDU_BACK2BACK
180	bool "Enable back-to-back transmission of periodic advertising trains"
181	depends on BT_CTLR_ADV_PERIODIC
182	select BT_CTLR_ADV_PDU_LINK
183	help
184	  Enables transmission of AUX_CHAIN_IND in periodic advertising train by
185	  sending each AUX_CHAIN_IND one after another back-to-back.
186	  Note, consecutive AUX_CHAIN_IND packets are not scheduled but sent at
187	  a constant offset on a best effort basis. This means advertising train can
188	  be preempted by other event at any time.
189
190config BT_CTLR_ADV_SYNC_PDU_BACK2BACK_AFS
191	int "AUX Frame Space for back-to-back transmission of periodic advertising trains"
192	depends on BT_CTLR_ADV_SYNC_PDU_BACK2BACK
193	default 300
194	range 300 1000
195	help
196	  Specific AUX Frame Space to be used for back-to-back transmission of
197	  periodic advertising trains. Time specified in microseconds.
198
199config BT_CTLR_ADV_DATA_BUF_MAX
200	int "Advertising Data Maximum Buffers"
201	depends on BT_BROADCASTER
202	range 1 64 if BT_CTLR_ADV_EXT
203	range 1 1 if !BT_CTLR_ADV_EXT
204	default 1
205	help
206	  Maximum number of buffered Advertising Data payload across enabled
207	  advertising sets.
208
209config BT_CTLR_ADV_EXT_PDU_EXTRA_DATA_MEMORY
210	bool
211	depends on BT_CTLR_ADV_EXT
212	help
213	  Add additional memory to advertising PDU storage. The memory is a
214	  general purpose storage for data that should be send from ULL to LLL.
215	  The data stored in the memory are in synchoronization with content
216	  of PDU memory.
217
218	  For example, the extra data memory is used for storage for parameters
219	  to configure Radio peripheral to transmit CTE. The configuration data
220	  must be synchronized with CTEInfo field in extended advertising header
221	  that is part of PDU data.
222
223config BT_CTRL_ADV_ADI_IN_SCAN_RSP
224	bool "Include ADI in AUX_SCAN_RSP PDU"
225	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
226	help
227	  Enable ADI field in AUX_SCAN_RSP PDU
228
229config BT_CTLR_SCAN_AUX_SET
230	int "LE Extended Scanning Auxiliary Sets"
231	depends on BT_OBSERVER && BT_CTLR_ADV_EXT
232	range 1 64
233	default 1
234	help
235	  Maximum supported auxiliary channel scan sets.
236
237config BT_CTLR_SCAN_SYNC_ISO_SET
238	int "LE ISO Broadcast Isochronous Groups Sync Sets"
239	depends on BT_CTLR_SYNC_ISO
240	range 1 64
241	default 1
242	help
243	  Maximum supported broadcast isochronous groups (BIGs) sync sets.
244
245config BT_CTLR_ADV_ENABLE_STRICT
246	bool "Enforce Strict Advertising Enable/Disable"
247	depends on BT_BROADCASTER
248	help
249	  Enforce returning HCI Error Command Disallowed on enabling/disabling
250	  already enabled/disabled advertising.
251
252config BT_CTLR_SCAN_ENABLE_STRICT
253	bool "Enforce Strict Scan Enable/Disable"
254	depends on BT_OBSERVER
255	help
256	  Enforce returning HCI Error Command Disallowed on enabling/disabling
257	  already enabled/disabled scanning.
258
259config BT_CTLR_ZLI
260	bool "Use Zero Latency IRQs"
261	depends on ZERO_LATENCY_IRQS
262	default y
263	help
264	  Enable support for use of Zero Latency IRQ feature. Note, applications
265	  shall not use Zero Latency IRQ themselves when this option is selected,
266	  else will impact controller stability.
267
268config BT_CTLR_OPTIMIZE_FOR_SPEED
269	prompt "Optimize for Speed" if !(SOC_SERIES_NRF51X && BT_CTLR_LE_ENC)
270	bool
271	default y if BT_CTLR_LE_ENC
272	help
273	  Optimize compilation of controller for execution speed.
274
275config BT_CTLR_XTAL_ADVANCED
276	bool "Advanced event preparation"
277	depends on BT_CTLR_XTAL_ADVANCED_SUPPORT
278	default y
279	help
280	  Enables advanced event preparation offset ahead of radio tx/rx, taking
281	  into account predictive processing time requirements in preparation to
282	  the event, like control procedure handling and CPU execution speeds.
283	  Crystal oscillator is retained between closely spaced consecutive
284	  radio events to reduce the overall number of crystal settling current
285	  consumptions.
286
287	  This feature maximizes radio utilization in an average role event
288	  timeslice when they are closely spaced by using a reduced offset
289	  between preparation and radio event.
290
291	  By disabling this feature, the controller will use a constant offset
292	  between the preparation and radio event. The controller will toggle
293	  crystal oscillator between two closely spaced radio events leading to
294	  higher average current due to increased number of crystal settling
295	  current consumptions.
296
297config BT_CTLR_XTAL_THRESHOLD
298	int "Crystal shutdown threshold in uS"
299	depends on BT_CTLR_XTAL_ADVANCED
300	default 1500
301	help
302	  Configure the optimal delta in micro seconds between two consecutive
303	  radio events, event done to next preparation, below which (active
304	  clock) crystal will be retained. This value is board dependent.
305
306config BT_CTLR_SCHED_ADVANCED
307	bool "Advanced scheduling"
308	depends on (BT_MAX_CONN != 0) && BT_CTLR_SCHED_ADVANCED_SUPPORT
309	default y if !(BT_PERIPHERAL && !BT_CENTRAL)
310	help
311	  Enable non-overlapping placement of observer, initiator and central
312	  roles in timespace. Uses window offset in connection updates and uses
313	  connection parameter request in peripheral role to negotiate
314	  non-overlapping placement with active central roles to avoid peripheral
315	  roles drifting into active central roles in the local controller.
316
317	  This feature maximizes the average data transmission amongst active
318	  concurrent central and peripheral connections while other observer,
319	  initiator, central or peripheral roles are active in the local controller.
320
321	  Disabling this feature will lead to overlapping role in timespace
322	  leading to skipped events amongst active roles.
323
324config BT_CTLR_LLL_PRIO
325	int "Lower Link Layer (Radio) IRQ priority" if (BT_CTLR_ULL_LLL_PRIO_SUPPORT && !BT_CTLR_ZLI)
326	range 0 3 if SOC_SERIES_NRF51X
327	range 0 6 if (SOC_SERIES_NRF52X || SOC_SERIES_NRF53X)
328	default 0
329	help
330	  The interrupt priority for event preparation and radio IRQ.
331
332config BT_CTLR_ULL_HIGH_PRIO
333	int "Upper Link Layer High IRQ priority" if BT_CTLR_ULL_LLL_PRIO_SUPPORT
334	range BT_CTLR_LLL_PRIO 3 if SOC_SERIES_NRF51X
335	range BT_CTLR_LLL_PRIO 6 if (SOC_SERIES_NRF52X || SOC_SERIES_NRF53X)
336	default BT_CTLR_LLL_PRIO if (!BT_CTLR_ULL_LLL_PRIO_SUPPORT || BT_CTLR_ZLI || BT_CTLR_LOW_LAT)
337	default 1
338	help
339	  The interrupt priority for Ticker's Worker IRQ and Upper Link Layer
340	  higher priority functions.
341
342config BT_CTLR_ULL_LOW_PRIO
343	int "Upper Link Layer Low IRQ priority" if BT_CTLR_ULL_LLL_PRIO_SUPPORT
344	range BT_CTLR_ULL_HIGH_PRIO 3 if SOC_SERIES_NRF51X
345	range BT_CTLR_ULL_HIGH_PRIO 6 if (SOC_SERIES_NRF52X || SOC_SERIES_NRF53X)
346	default BT_CTLR_ULL_HIGH_PRIO
347	help
348	  The interrupt priority for Ticker's Job IRQ and Upper Link Layer
349	  lower priority functions.
350
351config BT_CTLR_LOW_LAT
352	bool "Low latency non-negotiating event preemption"
353	select BT_CTLR_LOW_LAT_ULL_DONE
354	default y if SOC_SERIES_NRF51X
355	help
356	  Use low latency non-negotiating event preemption. This reduces
357	  Radio ISR latencies by the controller event scheduling framework.
358	  Consequently, this reduces on-air radio utilization due to redundant
359	  radio state switches.
360
361config BT_CTLR_LOW_LAT_ULL
362	prompt "Low latency ULL"
363	bool
364	depends on BT_CTLR_LOW_LAT
365	default y
366	help
367	  Low latency ULL implementation that uses tailchaining instead of while
368	  loop to demux rx messages from LLL.
369
370config BT_CTLR_LOW_LAT_ULL_DONE
371	prompt "Low latency ULL prepare dequeue"
372	bool
373	help
374	  Done events be processed and dequeued in ULL context.
375
376config BT_CTLR_CONN_META
377	prompt "Enable connection meta data extension"
378	bool
379	help
380	  Enables vendor specific per-connection meta data as part of the
381	  LLL connection object.
382
383config BT_CTLR_RX_PDU_META
384	prompt "Enable RX pdu meta data"
385	bool
386
387config BT_CTLR_RADIO_ENABLE_FAST
388	bool "Use tTXEN/RXEN,FAST ramp-up"
389	depends on SOC_COMPATIBLE_NRF52X || SOC_SERIES_NRF53X
390	default y
391	help
392	  Enable use of fast radio ramp-up mode.
393
394config BT_CTLR_TIFS_HW
395	bool "H/w Accelerated tIFS Trx switching"
396	depends on !BT_CTLR_RADIO_ENABLE_FAST && BT_CTLR_TIFS_HW_SUPPORT
397	default y
398	help
399	  Enable use of hardware accelerated tIFS Trx switching.
400
401config BT_CTLR_SW_SWITCH_SINGLE_TIMER
402	bool "Single TIMER tIFS Trx SW switching"
403	depends on (!BT_CTLR_TIFS_HW) && (SOC_COMPATIBLE_NRF52X || SOC_SERIES_NRF53X)
404	help
405	  Implement the tIFS Trx SW switch with the same TIMER
406	  instance, as the one used for BLE event timing. Requires
407	  SW switching be enabled. Using a single TIMER:
408	  (+) frees up one TIMER instance
409	  (+) removes jitter for HCTO implementation
410	  (-) introduces drifting to the absolute time inside BLE
411	  events, that increases linearly with the number of
412	  packets exchanged in the event
413	  (-) makes it impossible to use most of the pre-programmed
414	  PPI channels for the controller, resulting in 4 channels
415	  less left for other uses
416
417config BT_CTLR_PARAM_CHECK
418	bool "Enable HCI Command Parameter checking"
419	default y if BT_HCI_RAW
420	help
421	  Enable code checking HCI Command Parameters. This is not needed in
422	  combined host plus controller builds, saving some code space.
423
424if BT_CONN
425
426config BT_CTLR_FAST_ENC
427	bool "Fast Encryption Setup"
428	depends on BT_CTLR_LE_ENC
429	default y if BT_HCI_RAW
430	help
431	  Enable connection encryption setup in 3 connection intervals.
432	  Peripheral will respond to Encryption Request with Encryption Response
433	  in the same connection interval, and also, will respond with Start
434	  Encryption Response PDU in the 3rd connection interval, hence
435	  completing encryption setup in 3 connection intervals. Encrypted data
436	  would be transmitted as fast as in 3rd connection interval from the
437	  connection establishment.
438	  Maximum CPU time in Radio ISR will increase if this feature is
439	  selected.
440
441config BT_CTLR_LLCP_CONN
442	int "Number of connections with worst-case overlapping procedures"
443	default BT_MAX_CONN
444	range 1 BT_MAX_CONN
445	help
446	  Set the number connections for which worst-case buffer requirements
447	  for LLCP procedures must be met. Executing LLCP procedures on
448	  more than this number of connections simultaneously may cause
449	  instabilities.
450
451config BT_CTLR_LLID_DATA_START_EMPTY
452	bool "Handle zero length L2CAP start frame"
453	default y if BT_HCI_RAW
454	help
455	  Handle zero length L2CAP start frame.
456
457config BT_CTLR_RX_ENQUEUE_HOLD
458	bool "Procedure Complete after on-air instant"
459	default y if BT_HCI_RAW
460	help
461	  Hold enqueue of Procedure Complete events with instant until after the
462	  on-air instant is reached.
463
464config BT_CTLR_TX_RETRY_DISABLE
465	bool "Disable Tx Retry"
466	help
467	  Avoid retransmission of a PDU if peer device Nack-ed a transmission
468	  in the current connection event, close the connection event so as to
469	  save current consumption on retries (in case peer has no buffers to
470	  receive new PDUs).
471
472	  Enabling this will lower power consumption, but increase transmission
473	  latencies by one connection interval as the next attempt to send a PDU
474	  would happen in the next connection event instead of repeated retries
475	  in the current connection event.
476
477config BT_CTLR_THROUGHPUT
478	bool "Measure incoming Tx throughput"
479	help
480	  Measure incoming Tx throughput and log the results.
481
482config BT_CTLR_FORCE_MD_COUNT
483	int "Forced MD bit count" if !BT_CTLR_FORCE_MD_AUTO
484	range 0 255
485	default 1 if BT_CTLR_FORCE_MD_AUTO
486	default 0
487	help
488	  No. of times to force MD bit to be set in Tx PDU after a successful
489	  transmission of non-empty PDU.
490
491	  This will prolong the connection event to from being closed in cases
492	  where applications want to send data in same connection event but are
493	  slow in providing new Tx data.
494
495config BT_CTLR_FORCE_MD_AUTO
496	bool "Forced MD bit automatic calculation"
497	select BT_CTLR_THROUGHPUT
498	default y if BT_HCI_RAW
499	help
500	  Force MD bit in transmitted PDU based on runtime incoming transmit
501	  data throughput.
502
503config BT_CTLR_CONN_RANDOM_FORCE
504	bool "Enable random forced scheduling for peripheral on missed anchor point"
505	depends on BT_PERIPHERAL
506	default y
507	help
508	  When enabled, controller will have legacy behavior and randomly force
509	  priority at next ticker scheduling for peripheral role, if anchor point is
510	  missed.
511	  Two or more connections with similar interval on a device connected
512	  to a peer device having two or more connections at its end with same
513	  interval could lock to a round robin pattern where in neither of the central
514	  nor peripheral event would be in sync at either end. Randomness allows
515	  to break this locked round robin pattern permitting an anchor point sync.
516
517config BT_CTLR_CONN_RSSI_EVENT
518	bool "Connection RSSI event"
519	depends on BT_CTLR_CONN_RSSI
520	help
521	  Generate events for connection RSSI measurement.
522
523config BT_CTLR_ALLOW_SAME_PEER_CONN
524	bool "Allow connection requests from same peer"
525	depends on BT_MAX_CONN > 1
526	help
527	  Allow connection requests from the same peer. While the
528	  Bluetooth specification does not allow multiple connections
529	  with the same peer, allowing such connections is useful
530	  while debugging multiple connections.
531
532	  WARNING: This option enables behavior that violates the Bluetooth
533	  specification.
534
535endif # BT_CONN
536
537config BT_CTLR_ADV_INDICATION
538	bool "Advertisement indications"
539	depends on BT_BROADCASTER
540	help
541	  Generate events indicating on air advertisement events.
542
543config BT_CTLR_SCAN_REQ_NOTIFY
544	bool "Scan Request Notifications"
545	depends on BT_BROADCASTER
546	help
547	  Generate events notifying the on air scan requests received.
548
549config BT_CTLR_SCAN_REQ_RSSI
550	bool "Measure Scan Request RSSI"
551	depends on BT_CTLR_SCAN_REQ_NOTIFY
552	help
553	  Measure RSSI of the on air scan requests received.
554
555config BT_CTLR_SCAN_INDICATION
556	bool "Scanner indications"
557	depends on BT_OBSERVER
558	help
559	  Generate events indicating on air scanner events.
560
561config BT_CTLR_SCAN_UNRESERVED
562	bool "Unreserved scan window"
563	depends on BT_OBSERVER && !BT_CTLR_LOW_LAT
564	default y if BT_MESH
565	help
566	  Scanner will not use time space reservation for scan window when in
567	  continuous scan mode.
568
569config BT_MAYFLY_YIELD_AFTER_CALL
570	bool "Yield from mayfly thread after first call"
571	default y
572	help
573	  Only process one mayfly callback per invocation (legacy behavior).
574	  If set to 'n', all pending mayflies for callee are executed before
575	  yielding
576
577config BT_TICKER_LOW_LAT
578	bool "Ticker low latency mode"
579	default y if SOC_SERIES_NRF51X
580	help
581	  This option enables legacy ticker scheduling which defers overlapping
582	  ticker node timeouts and thereby prevents ticker interrupts during
583	  radio RX/TX. Enabling this option disables the ticker priority- and
584	  'must expire' features.
585
586config BT_TICKER_LAZY_GET
587	bool "Ticker Next Slot Get with Lazy"
588	default y if BT_CTLR_ADV_PERIODIC
589	help
590	  This option enables ticker interface to iterate through active
591	  ticker nodes, returning tick to expire and lazy count from a reference
592	  tick.
593
594config BT_TICKER_NEXT_SLOT_GET_MATCH
595	bool "Ticker Next Slot Get with match callback"
596	default y if BT_TICKER_SLOT_AGNOSTIC
597	help
598	  This option enables ticker interface to iterate through active
599	  ticker nodes with a callback for every found ticker node. When
600	  returning true in the callback, iteration will stop and the normal
601	  operation callback invoked.
602
603config BT_TICKER_EXT
604	bool "Ticker extensions"
605	depends on !BT_TICKER_LOW_LAT && !BT_TICKER_SLOT_AGNOSTIC
606	default y
607	help
608	  This option enables ticker extensions such as re-scheduling of
609	  ticker nodes with slot_window set to non-zero. Ticker extensions
610	  are invoked by using available '_ext' versions of ticker interface
611	  functions.
612
613config BT_TICKER_SLOT_AGNOSTIC
614	bool "Slot agnostic ticker mode"
615	help
616	  This option enables slot agnostic ticker mode, which ignores slot
617	  reservations and collision handling, and operates as a simple
618	  multi-instance programmable timer.
619
620config BT_CTLR_JIT_SCHEDULING
621	bool "Just-in-Time Scheduling"
622	select BT_TICKER_SLOT_AGNOSTIC
623	help
624	  This option enables the experimental 'Next Generation' scheduling
625	  feature, which eliminates priorities and collision resolving in the
626	  ticker, and instead relies on just-in-time ("lazy") resolution in
627	  the link layer.
628
629config BT_CTLR_USER_EXT
630	prompt "Enable proprietary extensions in Controller"
631	bool
632	help
633	  Catch-all for enabling proprietary event types in Controller behavior.
634
635config BT_CTLR_USER_EVT_RANGE
636	int "Range of event constants reserved for proprietary event types"
637	depends on BT_CTLR_USER_EXT
638	default 5
639	range 0 10
640	help
641	  Number of event types reserved for proprietary use. The range
642	  is typically used when BT_CTLR_USER_EXT is in use.
643
644config BT_CTLR_USER_TICKER_ID_RANGE
645	int "Range of ticker id constants reserved for proprietary ticker nodes"
646	depends on BT_CTLR_USER_EXT
647	default 0
648	range 0 10
649	help
650	  Number of ticker ids reserved for proprietary use. The range
651	  is typically used when BT_CTLR_USER_EXT is in use.
652
653config BT_RX_USER_PDU_LEN
654	int "Maximum supported proprietary PDU buffer length"
655	depends on BT_CTLR_USER_EXT
656	default 2
657	range 2 255
658	help
659	  Maximum data size for each proprietary PDU. This size includes link layer
660	  header and payload. It does not account for HCI event headers as these
661	  PDUs are assumed to not go across HCI.
662
663config BT_CTLR_USER_CPR_INTERVAL_MIN
664	bool "Enable proprietary Connection Parameter Request minimum interval"
665	depends on BT_CTLR_USER_EXT
666	help
667	  When enabled, controller will accept Connection Parameter Request
668	  intervals down to a proprietary minimum value.
669
670endmenu
671
672comment "BLE Controller hardware configuration"
673
674menuconfig BT_CTLR_GPIO_PA
675	bool "Power Amplifier GPIO interface"
676	depends on !SOC_SERIES_NRF51X
677	help
678	  Enable GPIO interface to a Power Amplifier. This allows hardware
679	  designs using PA to let the Controller toggle their state based on
680	  radio activity.
681
682if BT_CTLR_GPIO_PA
683
684config BT_CTLR_GPIO_PA_PIN
685	int "Power Amplifier GPIO pin number"
686	range 0 47 if SOC_NRF52840 || SOC_NRF5340_CPUNET
687	range 0 31
688	help
689	  GPIO Pin number connected to a Power Amplifier.
690
691config BT_CTLR_GPIO_PA_POL_INV
692	bool "Inverted polarity for the PA pin"
693	help
694	  Enable inverted polarity (active low) for the PA pin.
695
696config BT_CTLR_GPIO_PA_OFFSET
697	int "Time from PA ON to Tx ready"
698	default 5
699	range 0 15
700	help
701	  Time before Tx ready to turn on PA in micro seconds.
702
703endif # BT_CTLR_GPIO_PA
704
705menuconfig BT_CTLR_GPIO_LNA
706	bool "Low Noise Amplifier GPIO interface"
707	depends on !SOC_SERIES_NRF51X
708	help
709	  Enable GPIO interface to a Low Noise Amplifier. This allows hardware
710	  designs using LNAs to let the Controller toggle their state based on
711	  radio activity.
712
713if BT_CTLR_GPIO_LNA
714
715config BT_CTLR_GPIO_LNA_PIN
716	int "Low Noise Amplifier GPIO pin number"
717	range 0 47 if SOC_NRF52840 || SOC_NRF5340_CPUNET
718	range 0 31
719	help
720	  GPIO Pin number connected to a Low Noise Amplifier.
721
722config BT_CTLR_GPIO_LNA_POL_INV
723	bool "Inverted polarity for the LNA pin"
724	help
725	  Enable inverted polarity (active low) for the LNA pin.
726
727config BT_CTLR_GPIO_LNA_OFFSET
728	int "Time from LNA ON to Rx ready"
729	default 5
730	range 0 15
731	help
732	  Time before Rx ready to turn on LNA in micro seconds.
733
734endif # BT_CTLR_GPIO_LNA
735
736menuconfig BT_CTLR_FEM_NRF21540
737	bool "nRF21540 GPIO interface"
738	depends on !SOC_SERIES_NRF51X
739	select BT_CTLR_GPIO_PA
740	select BT_CTLR_GPIO_LNA
741	help
742	  Enable PDN and CSN GPIO interface for the nRF21540. This allows
743	  hardware designs using the nRF21540 to let the controller toggle
744	  their state based on radio activity.
745
746if BT_CTLR_FEM_NRF21540
747
748config BT_CTLR_GPIO_PDN_PIN
749	int "FEM PDN pin number"
750	range 0 47 if SOC_NRF52840 || SOC_NRF5340_CPUNET
751	range 0 31
752	help
753	  GPIO Pin number connected to the PDN pin of the nRF21540 FEM.
754
755config BT_CTLR_GPIO_PDN_POL_INV
756	bool "Inverted polarity for the PDN pin"
757	help
758	  Enable inverted polarity (active low) for the PDN pin.
759
760config BT_CTLR_GPIO_CSN_PIN
761	int "FEM CSN pin number"
762	range 0 47 if SOC_NRF52840 || SOC_NRF5340_CPUNET
763	range 0 31
764	help
765	  GPIO Pin number connected to the CSN pin of the nRF21540 FEM.
766
767config BT_CTLR_GPIO_CSN_POL_INV
768	bool "Inverted polarity for the CSN pin"
769	default y
770	help
771	  Enable inverted polarity (active low) for the CSN pin.
772
773config BT_CTLR_GPIO_PDN_CSN_OFFSET
774	int "Time from PDN and CSN toggle to PA/LNA pin toggle"
775	range 0 20
776	help
777	  Time from PDN and CSN toggle to PA/LNA pin toggle in micro seconds.
778
779endif # BT_CTLR_FEM_NRF21540
780
781config BT_CTLR_PA_LNA_GPIOTE_CHAN
782	# Hidden "nRF5 GPIO PA/LNA GPIOTE Channel"
783	int
784	depends on SOC_FAMILY_NRF && (BT_CTLR_GPIO_PA || BT_CTLR_GPIO_LNA)
785	default 3 if PWM_NRF5_SW
786	default 0
787	help
788	  Select the nRF5 GPIOTE channel to use for PA/LNA GPIO feature.
789
790config BT_CTLR_PDN_GPIOTE_CHAN
791	# Hidden "nRF5 GPIO FEM PDN GPIOTE Channel"
792	int
793	depends on SOC_FAMILY_NRF && BT_CTLR_FEM_NRF21540
794	default 4 if PWM_NRF5_SW
795	default 1
796	help
797	  Select the nRF5 GPIOTE channel to use for FEM PDN GPIO pin toggle.
798
799config BT_CTLR_CSN_GPIOTE_CHAN
800	# Hidden "nRF5 GPIO FEM CSN GPIOTE Channel"
801	int
802	depends on SOC_FAMILY_NRF && BT_CTLR_FEM_NRF21540
803	default 5 if PWM_NRF5_SW
804	default 2
805	help
806	  Select the nRF5 GPIOTE channel to use for FEM CSN GPIO pin toggle.
807
808comment "BLE Controller debug configuration"
809
810config BT_CTLR_PROFILE_ISR
811	bool "Profile radio ISR"
812	help
813	  Turn on measurement of radio ISR latency, CPU usage and generation of
814	  controller event with these profiling data. The controller event
815	  contains current, minimum and maximum ISR entry latencies; and
816	  current, minimum and maximum ISR CPU use in micro-seconds.
817
818config BT_CTLR_DEBUG_PINS
819	bool "Bluetooth Controller Debug Pins"
820	depends on BOARD_NRF51DK_NRF51422 || BOARD_NRF52DK_NRF52832 || BOARD_NRF52DK_NRF52810 || BOARD_NRF52840DK_NRF52840 || BOARD_NRF52833DK_NRF52833 || BOARD_NRF5340DK_NRF5340_CPUNET || BOARD_RV32M1_VEGA
821	help
822	  Turn on debug GPIO toggling for the BLE Controller. This is useful
823	  when debugging with a logic analyzer or profiling certain sections of
824	  the code.
825
826endif # BT_LL_SW_SPLIT
827