1# nrfx UART configuration
2
3# Copyright (c) 2016 - 2018, Nordic Semiconductor ASA
4# SPDX-License-Identifier: Apache-2.0
5
6menuconfig UART_NRFX
7	bool "nRF UART nrfx drivers"
8	default y
9	select SERIAL_HAS_DRIVER
10	select SERIAL_SUPPORT_INTERRUPT
11	select SERIAL_SUPPORT_ASYNC
12	select PINCTRL
13	depends on DT_HAS_NORDIC_NRF_UART_ENABLED || DT_HAS_NORDIC_NRF_UARTE_ENABLED
14	help
15	  Enable support for nrfx UART drivers for nRF MCU series.
16	  Peripherals with the same instance ID cannot be used together,
17	  e.g. UART_0 and UARTE_0.
18
19if UART_NRFX
20
21config UART_NRFX_UART
22	def_bool y
23	depends on DT_HAS_NORDIC_NRF_UART_ENABLED
24
25config UART_NRFX_UARTE
26	def_bool y
27	depends on DT_HAS_NORDIC_NRF_UARTE_ENABLED
28	imply NRFX_UARTE_CONFIG_SKIP_PSEL_CONFIG if !UART_NRFX_UARTE_LEGACY_SHIM
29	imply NRFX_UARTE_CONFIG_SKIP_GPIO_CONFIG if !UART_NRFX_UARTE_LEGACY_SHIM
30
31config UART_NRFX_UARTE_LEGACY_SHIM
32	bool "Legacy UARTE shim"
33	depends on UART_NRFX_UARTE
34	default y
35	help
36	  Disabling this option is deprecated.
37
38config DEPRECATED_UART_NRFX_UARTE_LEGACY_SHIM
39	bool
40	default y if !UART_NRFX_UARTE_LEGACY_SHIM
41	depends on UART_NRFX_UARTE
42	select DEPRECATED
43
44config UART_NRFX_UARTE_ENHANCED_RX
45	bool "Enhanced RX handling"
46	depends on UART_ASYNC_API
47	depends on UART_NRFX_UARTE_LEGACY_SHIM
48	default y
49	help
50	  Enable RX handling mode which is switching buffers on timeout. This is an
51	  enhancement compared to other two modes (default and hardware assisted).
52	  Default mode could miscount bytes when interrupt was not handled on time
53	  and hardware assisted required TIMER peripheral instance and PPI channel
54	  for accurate byte counting.
55
56config UART_ASYNC_TX_CACHE_SIZE
57	int "TX cache buffer size"
58	depends on UART_ASYNC_API
59	depends on UART_NRFX_UARTE_LEGACY_SHIM
60	default 8
61	help
62	  For UARTE, TX cache buffer is used when provided TX buffer is not located
63	  in RAM, because EasyDMA in UARTE peripherals can only transfer data
64	  from RAM.
65
66if HAS_HW_NRF_UART0 || HAS_HW_NRF_UARTE0
67nrfx_uart_num = 0
68rsource "Kconfig.nrfx_uart_instance"
69endif
70
71if HAS_HW_NRF_UARTE1
72nrfx_uart_num = 1
73rsource "Kconfig.nrfx_uart_instance"
74endif
75
76if HAS_HW_NRF_UARTE2
77nrfx_uart_num = 2
78rsource "Kconfig.nrfx_uart_instance"
79endif
80
81if HAS_HW_NRF_UARTE3
82nrfx_uart_num = 3
83rsource "Kconfig.nrfx_uart_instance"
84endif
85
86if HAS_HW_NRF_UARTE00
87nrfx_uart_num = 00
88rsource "Kconfig.nrfx_uart_instance"
89endif
90
91if HAS_HW_NRF_UARTE20
92nrfx_uart_num = 20
93rsource "Kconfig.nrfx_uart_instance"
94endif
95
96if HAS_HW_NRF_UARTE21
97nrfx_uart_num = 21
98rsource "Kconfig.nrfx_uart_instance"
99endif
100
101if HAS_HW_NRF_UARTE22
102nrfx_uart_num = 22
103rsource "Kconfig.nrfx_uart_instance"
104endif
105
106if HAS_HW_NRF_UARTE30
107nrfx_uart_num = 30
108rsource "Kconfig.nrfx_uart_instance"
109endif
110
111if HAS_HW_NRF_UARTE120
112
113config UART_NRFX_UARTE_USE_CLOCK_CONTROL
114	def_bool y
115	select CLOCK_CONTROL
116
117nrfx_uart_num = 120
118rsource "Kconfig.nrfx_uart_instance"
119endif
120
121if HAS_HW_NRF_UARTE130
122nrfx_uart_num = 130
123rsource "Kconfig.nrfx_uart_instance"
124endif
125
126if HAS_HW_NRF_UARTE131
127nrfx_uart_num = 131
128rsource "Kconfig.nrfx_uart_instance"
129endif
130
131if HAS_HW_NRF_UARTE132
132nrfx_uart_num = 132
133rsource "Kconfig.nrfx_uart_instance"
134endif
135
136if HAS_HW_NRF_UARTE133
137nrfx_uart_num = 133
138rsource "Kconfig.nrfx_uart_instance"
139endif
140
141if HAS_HW_NRF_UARTE134
142nrfx_uart_num = 134
143rsource "Kconfig.nrfx_uart_instance"
144endif
145
146if HAS_HW_NRF_UARTE135
147nrfx_uart_num = 135
148rsource "Kconfig.nrfx_uart_instance"
149endif
150
151if HAS_HW_NRF_UARTE136
152nrfx_uart_num = 136
153rsource "Kconfig.nrfx_uart_instance"
154endif
155
156if HAS_HW_NRF_UARTE137
157nrfx_uart_num = 137
158rsource "Kconfig.nrfx_uart_instance"
159endif
160
161config NRFX_TIMER0
162	default y
163	depends on UART_0_NRF_HW_ASYNC_TIMER = 0 \
164		|| UART_1_NRF_HW_ASYNC_TIMER = 0 \
165		|| UART_2_NRF_HW_ASYNC_TIMER = 0 \
166		|| UART_3_NRF_HW_ASYNC_TIMER = 0
167
168config NRFX_TIMER1
169	default y
170	depends on UART_0_NRF_HW_ASYNC_TIMER = 1 \
171		|| UART_1_NRF_HW_ASYNC_TIMER = 1 \
172		|| UART_2_NRF_HW_ASYNC_TIMER = 1 \
173		|| UART_3_NRF_HW_ASYNC_TIMER = 1
174
175config NRFX_TIMER2
176	default y
177	depends on UART_0_NRF_HW_ASYNC_TIMER = 2 \
178		|| UART_1_NRF_HW_ASYNC_TIMER = 2 \
179		|| UART_2_NRF_HW_ASYNC_TIMER = 2 \
180		|| UART_3_NRF_HW_ASYNC_TIMER = 2
181
182config NRFX_TIMER3
183	default y
184	depends on UART_0_NRF_HW_ASYNC_TIMER = 3 \
185		|| UART_1_NRF_HW_ASYNC_TIMER = 3 \
186		|| UART_2_NRF_HW_ASYNC_TIMER = 3 \
187		|| UART_3_NRF_HW_ASYNC_TIMER = 3
188
189config NRFX_TIMER4
190	default y
191	depends on UART_0_NRF_HW_ASYNC_TIMER = 4 \
192		|| UART_1_NRF_HW_ASYNC_TIMER = 4 \
193		|| UART_2_NRF_HW_ASYNC_TIMER = 4 \
194		|| UART_3_NRF_HW_ASYNC_TIMER = 4
195
196endif # UART_NRFX
197