Skip to content

Commit f85107d

Browse files
committed
boards: add common configuration for CDC ACM UART
Many boards have similar code to configure the USB and CDC ACM UART that they want to use as a logging or shell backend. Also, many boards have incorrect or incomplete configuration. Remove all USB and CDC ACM configuration in favor of common configuration for all boards and use common board variant to configure CDC ACM UART as backend. Signed-off-by: Johann Fischer <[email protected]>
1 parent c3466b1 commit f85107d

File tree

7 files changed

+81
-70
lines changed

7 files changed

+81
-70
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Copyright (c) 2023-2024 Nordic Semiconductor ASA
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
config SERIAL
6+
default y
7+
8+
config CONSOLE
9+
default y
10+
11+
config UART_CONSOLE
12+
default CONSOLE
13+
14+
config SHELL_BACKEND_SERIAL_CHECK_DTR
15+
default SHELL
16+
depends on UART_LINE_CTRL
17+
18+
config UART_LINE_CTRL
19+
default SHELL
20+
21+
config USB_DEVICE_STACK
22+
default y
23+
24+
config USB_DEVICE_INITIALIZE_AT_BOOT
25+
default y if !MCUBOOT
26+
27+
config USB_DEVICE_REMOTE_WAKEUP
28+
default n
29+
30+
if LOG
31+
32+
choice USB_CDC_ACM_LOG_LEVEL_CHOICE
33+
default USB_CDC_ACM_LOG_LEVEL_OFF
34+
endchoice
35+
36+
choice USB_DEVICE_LOG_LEVEL_CHOICE
37+
default USB_DEVICE_LOG_LEVEL_OFF
38+
endchoice
39+
40+
# Wait 4000ms at startup for logging
41+
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
42+
default 4000
43+
44+
endif # LOG

boards/common/cdc_acm_serial.dts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright (c) 2024 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/ {
8+
chosen {
9+
zephyr,console = &cdc_acm_uart;
10+
zephyr,shell-uart = &cdc_acm_uart;
11+
zephyr,uart-mcumgr = &cdc_acm_uart;
12+
zephyr,bt-mon-uart = &cdc_acm_uart;
13+
zephyr,bt-c2h-uart = &cdc_acm_uart;
14+
};
15+
};
16+
17+
zephyr_udc0: &usbd {
18+
cdc_acm_uart: cdc_acm_uart {
19+
compatible = "zephyr,cdc-acm-uart";
20+
};
21+
};

boards/nordic/nrf52840dongle/Kconfig

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,4 @@ config BOARD_HAS_NRF5_BOOTLOADER
1212
If selected, applications are linked so that they can be loaded by Nordic
1313
nRF5 bootloader.
1414

15-
config BOARD_SERIAL_BACKEND_CDC_ACM
16-
bool "USB CDC"
17-
default y
18-
1915
endif # BOARD_NRF52840DONGLE

boards/nordic/nrf52840dongle/Kconfig.defconfig

Lines changed: 6 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# SPDX-License-Identifier: Apache-2.0
66

7-
if BOARD_NRF52840DONGLE
7+
if BOARD_NRF52840DONGLE_NRF52840 || BOARD_NRF52840DONGLE_NRF52840_CDC_ACM_SERIAL
88

99
# To let the nRF5 bootloader load an application, the application
1010
# must be linked after Nordic MBR, that is factory-programmed on the board.
@@ -22,62 +22,11 @@ config FLASH_LOAD_OFFSET
2222
default 0x1000
2323
depends on BOARD_HAS_NRF5_BOOTLOADER && (MCUBOOT || !USE_DT_CODE_PARTITION)
2424

25-
if BOARD_SERIAL_BACKEND_CDC_ACM
26-
27-
config USB_DEVICE_STACK
28-
default y
29-
30-
config USB_CDC_ACM
31-
default SERIAL
32-
33-
config CONSOLE
34-
default y
35-
36-
config UART_CONSOLE
37-
default CONSOLE
38-
39-
config USB_DEVICE_INITIALIZE_AT_BOOT
40-
default y if !MCUBOOT && CONSOLE
41-
42-
config SHELL_BACKEND_SERIAL_CHECK_DTR
43-
default SHELL
44-
depends on UART_LINE_CTRL
45-
46-
config UART_LINE_CTRL
47-
default SHELL
48-
49-
config USB_DEVICE_REMOTE_WAKEUP
50-
default n
51-
52-
if LOG
53-
54-
# Logger cannot use itself to log
55-
choice USB_CDC_ACM_LOG_LEVEL_CHOICE
56-
default USB_CDC_ACM_LOG_LEVEL_OFF
57-
endchoice
58-
59-
# Set USB log level to error only
60-
choice USB_DEVICE_LOG_LEVEL_CHOICE
61-
default USB_DEVICE_LOG_LEVEL_ERR
62-
endchoice
63-
64-
# Wait 4000ms at startup for logging
65-
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
66-
default 4000
67-
68-
endif # LOG
69-
70-
if USB_DEVICE_STACK
71-
72-
# Enable UART driver, needed for CDC ACM
73-
config SERIAL
74-
default y
75-
76-
endif # USB_DEVICE_STACK
77-
78-
endif # BOARD_SERIAL_BACKEND_CDC_ACM
79-
8025
config BT_CTLR
8126
default BT
8227

83-
endif # BOARD_NRF52840DONGLE
28+
if BOARD_NRF52840DONGLE_NRF52840_CDC_ACM_SERIAL
29+
source "${ZEPHYR_BASE}/boards/common/Kconfig.cdc_acm_serial"
30+
endif
31+
32+
endif #BOARD_NRF52840DONGLE || BOARD_NRF52840DONGLE_NRF52840_CDC_ACM_SERIAL

boards/nordic/nrf52840dongle/board.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ board:
44
vendor: nordic
55
socs:
66
- name: nrf52840
7+
variants:
8+
- name: 'cdc_acm_serial'

boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840.dts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@
1515
compatible = "nordic,nrf52840-dongle-nrf52840";
1616

1717
chosen {
18-
zephyr,console = &cdc_acm_uart;
19-
zephyr,shell-uart = &cdc_acm_uart;
20-
zephyr,uart-mcumgr = &cdc_acm_uart;
21-
zephyr,bt-mon-uart = &cdc_acm_uart;
22-
zephyr,bt-c2h-uart = &cdc_acm_uart;
2318
zephyr,sram = &sram0;
2419
zephyr,flash = &flash0;
2520
zephyr,code-partition = &slot0_partition;
@@ -188,8 +183,4 @@
188183
zephyr_udc0: &usbd {
189184
compatible = "nordic,nrf-usbd";
190185
status = "okay";
191-
192-
cdc_acm_uart: cdc_acm_uart {
193-
compatible = "zephyr,cdc-acm-uart";
194-
};
195186
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/*
2+
* Copyright (c) 2024 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include "nrf52840dongle_nrf52840.dts"
8+
#include <../boards/common/cdc_acm_serial.dts>

0 commit comments

Comments
 (0)