From 0df6736bb9f67fc24f8eb985779a2847dd19e009 Mon Sep 17 00:00:00 2001 From: Yishai Jaffe Date: Mon, 23 Dec 2024 12:01:48 +0200 Subject: [PATCH] drivers: serial: define default values for basic options Defined default values for baudrate, parity, stop bits, and data bits. This removes complexity and obfuscation from the code. Signed-off-by: Yishai Jaffe --- drivers/serial/uart_altera.c | 9 +-- drivers/serial/uart_cc13xx_cc26xx.c | 6 +- drivers/serial/uart_esp32.c | 8 +-- drivers/serial/uart_ifx_cat1.c | 6 +- drivers/serial/uart_intel_lw.c | 9 +-- drivers/serial/uart_max32.c | 8 +-- drivers/serial/uart_mcux_flexcomm.c | 2 +- drivers/serial/uart_mcux_iuart.c | 2 +- drivers/serial/uart_mcux_lpuart.c | 2 +- drivers/serial/uart_neorv32.c | 3 +- drivers/serial/uart_renesas_rz_scif.c | 10 ++- drivers/serial/uart_rzt2m.c | 8 +-- drivers/serial/uart_si32_usart.c | 2 +- drivers/serial/uart_stm32.c | 69 +++++-------------- drivers/serial/uart_stm32.h | 5 -- drivers/serial/uart_wch_usart.c | 2 +- drivers/serial/usart_gd32.c | 2 +- dts/bindings/serial/adi,max32-uart.yaml | 15 ++++ dts/bindings/serial/altr,uart.yaml | 10 +++ dts/bindings/serial/espressif,esp32-uart.yaml | 10 +++ dts/bindings/serial/infineon,cat1-uart.yaml | 10 +++ dts/bindings/serial/intel,lw_uart.yaml | 10 +++ dts/bindings/serial/renesas,rz-scif-uart.yaml | 15 ++++ dts/bindings/serial/renesas,rzt2m-uart.yaml | 10 +++ dts/bindings/serial/st,stm32-uart-base.yaml | 15 ++++ .../serial/ti,cc13xx-cc26xx-uart.yaml | 13 ++++ dts/bindings/serial/uart-controller.yaml | 1 + 27 files changed, 161 insertions(+), 101 deletions(-) diff --git a/drivers/serial/uart_altera.c b/drivers/serial/uart_altera.c index 9a5392c7b13..a9f469f3eea 100644 --- a/drivers/serial/uart_altera.c +++ b/drivers/serial/uart_altera.c @@ -960,12 +960,9 @@ static struct uart_altera_device_data uart_altera_dev_data_##n = { \ .uart_cfg = \ { \ .baudrate = DT_INST_PROP(n, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, \ - UART_CFG_PARITY_NONE), \ - .stop_bits = DT_INST_ENUM_IDX_OR(n, stop_bits, \ - UART_CFG_STOP_BITS_1), \ - .data_bits = DT_INST_ENUM_IDX_OR(n, data_bits, \ - UART_CFG_DATA_BITS_8), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ + .stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(n, data_bits), \ .flow_ctrl = DT_INST_PROP(n, hw_flow_control) ? \ UART_CFG_FLOW_CTRL_RTS_CTS : \ UART_CFG_FLOW_CTRL_NONE, \ diff --git a/drivers/serial/uart_cc13xx_cc26xx.c b/drivers/serial/uart_cc13xx_cc26xx.c index 969c8df5ec2..7d286a9ba5e 100644 --- a/drivers/serial/uart_cc13xx_cc26xx.c +++ b/drivers/serial/uart_cc13xx_cc26xx.c @@ -617,9 +617,9 @@ static DEVICE_API(uart, uart_cc13xx_cc26xx_driver_api) = { uart_cc13xx_cc26xx_data_##n = { \ .uart_config = { \ .baudrate = DT_INST_PROP(n, current_speed), \ - .parity = UART_CFG_PARITY_NONE, \ - .stop_bits = UART_CFG_STOP_BITS_1, \ - .data_bits = UART_CFG_DATA_BITS_8, \ + .parity = DT_INST_ENUM_IDX(n, parity), \ + .stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(n, data_bits), \ .flow_ctrl = UART_CFG_FLOW_CTRL_NONE, \ }, \ .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ diff --git a/drivers/serial/uart_esp32.c b/drivers/serial/uart_esp32.c index 35986ce6254..47d652b8291 100644 --- a/drivers/serial/uart_esp32.c +++ b/drivers/serial/uart_esp32.c @@ -1055,11 +1055,9 @@ static DEVICE_API(uart, uart_esp32_api) = { \ static struct uart_esp32_data uart_esp32_data_##idx = { \ .uart_config = {.baudrate = DT_INST_PROP(idx, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(idx, parity, UART_CFG_PARITY_NONE), \ - .stop_bits = DT_INST_ENUM_IDX_OR(idx, stop_bits, \ - UART_CFG_STOP_BITS_1), \ - .data_bits = DT_INST_ENUM_IDX_OR(idx, data_bits, \ - UART_CFG_DATA_BITS_8), \ + .parity = DT_INST_ENUM_IDX(idx, parity), \ + .stop_bits = DT_INST_ENUM_IDX(idx, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(idx, data_bits), \ .flow_ctrl = MAX(COND_CODE_1(DT_INST_PROP(idx, hw_rs485_hd_mode), \ (UART_CFG_FLOW_CTRL_RS485), \ (UART_CFG_FLOW_CTRL_NONE)), \ diff --git a/drivers/serial/uart_ifx_cat1.c b/drivers/serial/uart_ifx_cat1.c index ab217190e24..6d86c51531f 100644 --- a/drivers/serial/uart_ifx_cat1.c +++ b/drivers/serial/uart_ifx_cat1.c @@ -519,9 +519,9 @@ static DEVICE_API(uart, ifx_cat1_uart_driver_api) = { \ static struct ifx_cat1_uart_config ifx_cat1_uart##n##_cfg = { \ .dt_cfg.baudrate = DT_INST_PROP(n, current_speed), \ - .dt_cfg.parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ - .dt_cfg.stop_bits = DT_INST_ENUM_IDX_OR(n, stop_bits, UART_CFG_STOP_BITS_1), \ - .dt_cfg.data_bits = DT_INST_ENUM_IDX_OR(n, data_bits, UART_CFG_DATA_BITS_8), \ + .dt_cfg.parity = DT_INST_ENUM_IDX(n, parity), \ + .dt_cfg.stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .dt_cfg.data_bits = DT_INST_ENUM_IDX(n, data_bits), \ .dt_cfg.flow_ctrl = DT_INST_PROP(n, hw_flow_control), \ .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ .reg_addr = (CySCB_Type *)DT_INST_REG_ADDR(n), \ diff --git a/drivers/serial/uart_intel_lw.c b/drivers/serial/uart_intel_lw.c index 64c0d0a6dd1..786360c2050 100644 --- a/drivers/serial/uart_intel_lw.c +++ b/drivers/serial/uart_intel_lw.c @@ -994,12 +994,9 @@ static struct uart_intel_lw_device_data uart_intel_lw_dev_data_##n = { \ .uart_cfg = \ { \ .baudrate = DT_INST_PROP(n, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, \ - UART_CFG_PARITY_NONE), \ - .stop_bits = DT_INST_ENUM_IDX_OR(n, stop_bits, \ - UART_CFG_STOP_BITS_1), \ - .data_bits = DT_INST_ENUM_IDX_OR(n, data_bits, \ - UART_CFG_DATA_BITS_8), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ + .stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(n, data_bits), \ .flow_ctrl = DT_INST_PROP(n, hw_flow_control) ? \ UART_CFG_FLOW_CTRL_RTS_CTS : \ UART_CFG_FLOW_CTRL_NONE, \ diff --git a/drivers/serial/uart_max32.c b/drivers/serial/uart_max32.c index c09cb0b09ba..280c5997b63 100644 --- a/drivers/serial/uart_max32.c +++ b/drivers/serial/uart_max32.c @@ -438,10 +438,10 @@ static DEVICE_API(uart, uart_max32_driver_api) = { .perclk.bit = DT_INST_CLOCKS_CELL(_num, bit), \ .perclk.clk_src = \ DT_INST_PROP_OR(_num, clock_source, ADI_MAX32_PRPH_CLK_SRC_PCLK), \ - .uart_conf.baudrate = DT_INST_PROP_OR(_num, current_speed, 115200), \ - .uart_conf.parity = DT_INST_ENUM_IDX_OR(_num, parity, UART_CFG_PARITY_NONE), \ - .uart_conf.data_bits = DT_INST_ENUM_IDX_OR(_num, data_bits, UART_CFG_DATA_BITS_8), \ - .uart_conf.stop_bits = DT_INST_ENUM_IDX_OR(_num, stop_bits, UART_CFG_STOP_BITS_1), \ + .uart_conf.baudrate = DT_INST_PROP(_num, current_speed), \ + .uart_conf.parity = DT_INST_ENUM_IDX(_num, parity), \ + .uart_conf.data_bits = DT_INST_ENUM_IDX(_num, data_bits), \ + .uart_conf.stop_bits = DT_INST_ENUM_IDX(_num, stop_bits), \ .uart_conf.flow_ctrl = \ DT_INST_PROP_OR(_num, hw_flow_control, UART_CFG_FLOW_CTRL_NONE), \ IF_ENABLED(CONFIG_UART_INTERRUPT_DRIVEN, \ diff --git a/drivers/serial/uart_mcux_flexcomm.c b/drivers/serial/uart_mcux_flexcomm.c index b0a51b4d1a3..fcb7f41121e 100644 --- a/drivers/serial/uart_mcux_flexcomm.c +++ b/drivers/serial/uart_mcux_flexcomm.c @@ -1188,7 +1188,7 @@ static const struct mcux_flexcomm_config mcux_flexcomm_##n##_config = { \ .clock_subsys = \ (clock_control_subsys_t)DT_INST_CLOCKS_CELL(n, name), \ .baud_rate = DT_INST_PROP(n, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ UART_MCUX_FLEXCOMM_IRQ_CFG_FUNC_INIT(n) \ UART_MCUX_FLEXCOMM_ASYNC_CFG(n) \ diff --git a/drivers/serial/uart_mcux_iuart.c b/drivers/serial/uart_mcux_iuart.c index 6906d6c98b6..2024efa7603 100644 --- a/drivers/serial/uart_mcux_iuart.c +++ b/drivers/serial/uart_mcux_iuart.c @@ -329,7 +329,7 @@ static const struct mcux_iuart_config mcux_iuart_##n##_config = { \ .clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(n)), \ .clock_subsys = (clock_control_subsys_t)DT_INST_CLOCKS_CELL(n, name),\ .baud_rate = DT_INST_PROP(n, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ IRQ_FUNC_INIT \ } diff --git a/drivers/serial/uart_mcux_lpuart.c b/drivers/serial/uart_mcux_lpuart.c index 9c31d8a34e5..67586c1b571 100644 --- a/drivers/serial/uart_mcux_lpuart.c +++ b/drivers/serial/uart_mcux_lpuart.c @@ -1368,7 +1368,7 @@ static const struct mcux_lpuart_config mcux_lpuart_##n##_config = { \ .clock_subsys = (clock_control_subsys_t)DT_INST_CLOCKS_CELL(n, name), \ .baud_rate = DT_INST_PROP(n, current_speed), \ .flow_ctrl = FLOW_CONTROL(n), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ .rs485_de_active_low = DT_INST_PROP(n, nxp_rs485_de_active_low), \ .loopback_en = DT_INST_PROP(n, nxp_loopback), \ .single_wire = DT_INST_PROP(n, single_wire), \ diff --git a/drivers/serial/uart_neorv32.c b/drivers/serial/uart_neorv32.c index c4668e7e27c..8165ff7277e 100644 --- a/drivers/serial/uart_neorv32.c +++ b/drivers/serial/uart_neorv32.c @@ -491,8 +491,7 @@ static DEVICE_API(uart, neorv32_uart_driver_api) = { static struct neorv32_uart_data neorv32_uart_##n##_data = { \ .uart_cfg = { \ .baudrate = DT_PROP(node_id, current_speed), \ - .parity = DT_ENUM_IDX_OR(node_id, parity, \ - UART_CFG_PARITY_NONE), \ + .parity = DT_ENUM_IDX(node_id, parity), \ .stop_bits = UART_CFG_STOP_BITS_1, \ .data_bits = UART_CFG_DATA_BITS_8, \ .flow_ctrl = DT_PROP(node_id, hw_flow_control) ? \ diff --git a/drivers/serial/uart_renesas_rz_scif.c b/drivers/serial/uart_renesas_rz_scif.c index 6b63f694324..6582fe425fa 100644 --- a/drivers/serial/uart_renesas_rz_scif.c +++ b/drivers/serial/uart_renesas_rz_scif.c @@ -278,12 +278,10 @@ static int uart_rz_scif_init(const struct device *dev) static struct uart_rz_scif_data uart_rz_scif_data_##n = { \ .uart_config = \ { \ - .baudrate = DT_INST_PROP_OR(n, current_speed, 115200), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ - .stop_bits = \ - DT_INST_ENUM_IDX_OR(n, stop_bits, UART_CFG_STOP_BITS_1), \ - .data_bits = \ - DT_INST_ENUM_IDX_OR(n, data_bits, UART_CFG_DATA_BITS_8), \ + .baudrate = DT_INST_PROP(n, current_speed), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ + .stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(n, data_bits), \ .flow_ctrl = DT_INST_PROP_OR(n, hw_flow_control, \ UART_CFG_FLOW_CTRL_NONE), \ }, \ diff --git a/drivers/serial/uart_rzt2m.c b/drivers/serial/uart_rzt2m.c index 83b929619ea..e42f3e7e743 100644 --- a/drivers/serial/uart_rzt2m.c +++ b/drivers/serial/uart_rzt2m.c @@ -427,11 +427,9 @@ static void uart_rzt2m_isr(const struct device *dev) .uart_cfg = \ { \ .baudrate = DT_INST_ENUM_IDX(n, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ - .stop_bits = \ - DT_INST_ENUM_IDX_OR(n, stop_bits, UART_CFG_STOP_BITS_1), \ - .data_bits = \ - DT_INST_ENUM_IDX_OR(n, data_bits, UART_CFG_DATA_BITS_8), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ + .stop_bits = DT_INST_ENUM_IDX(n, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(n, data_bits), \ }, \ }; \ UART_RZT2M_CONFIG_FUNC(n); \ diff --git a/drivers/serial/uart_si32_usart.c b/drivers/serial/uart_si32_usart.c index 472f53c244c..89283e4639b 100644 --- a/drivers/serial/uart_si32_usart.c +++ b/drivers/serial/uart_si32_usart.c @@ -378,7 +378,7 @@ static int usart_si32_init(const struct device *dev) static const struct usart_si32_config usart_si32_cfg_##index = { \ .usart = (SI32_USART_A_Type *)DT_INST_REG_ADDR(index), \ .hw_flow_control = DT_INST_PROP(index, hw_flow_control), \ - .parity = DT_INST_ENUM_IDX_OR(index, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(index, parity), \ .clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(index)), \ SI32_USART_IRQ_HANDLER_FUNC(index)}; \ \ diff --git a/drivers/serial/uart_stm32.c b/drivers/serial/uart_stm32.c index 858ceecbb38..13c85a5066d 100644 --- a/drivers/serial/uart_stm32.c +++ b/drivers/serial/uart_stm32.c @@ -2345,18 +2345,13 @@ static void uart_stm32_irq_config_func_##index(const struct device *dev) \ */ #define STM32_UART_CHECK_DT_PARITY(index) \ BUILD_ASSERT( \ - !(DT_INST_ENUM_IDX_OR(index, parity, STM32_UART_DEFAULT_PARITY) \ - == UART_CFG_PARITY_MARK || \ - DT_INST_ENUM_IDX_OR(index, parity, STM32_UART_DEFAULT_PARITY) \ - == UART_CFG_PARITY_SPACE), \ + !(DT_INST_ENUM_IDX(index, parity) == UART_CFG_PARITY_MARK || \ + DT_INST_ENUM_IDX(index, parity) == UART_CFG_PARITY_SPACE), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported parity configuration"); \ BUILD_ASSERT( \ - !(DT_INST_ENUM_IDX_OR(index, parity, STM32_UART_DEFAULT_PARITY) \ - != UART_CFG_PARITY_NONE && \ - DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_9), \ + !(DT_INST_ENUM_IDX(index, parity) != UART_CFG_PARITY_NONE && \ + DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_9), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported parity + data bits combination"); @@ -2367,32 +2362,18 @@ BUILD_ASSERT( \ #ifdef LL_USART_DATAWIDTH_7B #define STM32_UART_CHECK_DT_DATA_BITS(index) \ BUILD_ASSERT( \ - !(DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_5 || \ - (DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_6 && \ - DT_INST_ENUM_IDX_OR(index, parity, \ - STM32_UART_DEFAULT_PARITY) \ - == UART_CFG_PARITY_NONE)), \ + !(DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_5 || \ + (DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_6 && \ + DT_INST_ENUM_IDX(index, parity) == UART_CFG_PARITY_NONE)), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported data bits configuration"); #else #define STM32_UART_CHECK_DT_DATA_BITS(index) \ BUILD_ASSERT( \ - !(DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_5 || \ - DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_6 || \ - (DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS) \ - == UART_CFG_DATA_BITS_7 && \ - DT_INST_ENUM_IDX_OR(index, parity, \ - STM32_UART_DEFAULT_PARITY) \ - == UART_CFG_PARITY_NONE)), \ + !(DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_5 || \ + DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_6 || \ + (DT_INST_ENUM_IDX(index, data_bits) == UART_CFG_DATA_BITS_7 && \ + DT_INST_ENUM_IDX(index, parity) == UART_CFG_PARITY_NONE)), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported data bits configuration"); #endif @@ -2404,9 +2385,7 @@ BUILD_ASSERT( \ #ifndef LL_USART_STOPBITS_0_5 #define STM32_UART_CHECK_DT_STOP_BITS_0_5(index) \ BUILD_ASSERT( \ - !(DT_INST_ENUM_IDX_OR(index, stop_bits, \ - STM32_UART_DEFAULT_STOP_BITS) \ - == UART_CFG_STOP_BITS_0_5), \ + DT_INST_ENUM_IDX(index, stop_bits) != UART_CFG_STOP_BITS_0_5, \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported stop bits configuration"); /* LPUARTs don't support 0.5 stop bits configurations */ @@ -2414,9 +2393,7 @@ BUILD_ASSERT( \ #define STM32_UART_CHECK_DT_STOP_BITS_0_5(index) \ BUILD_ASSERT( \ !(DT_HAS_COMPAT_STATUS_OKAY(st_stm32_lpuart) && \ - DT_INST_ENUM_IDX_OR(index, stop_bits, \ - STM32_UART_DEFAULT_STOP_BITS) \ - == UART_CFG_STOP_BITS_0_5), \ + DT_INST_ENUM_IDX(index, stop_bits) == UART_CFG_STOP_BITS_0_5), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported stop bits configuration"); #endif @@ -2428,9 +2405,7 @@ BUILD_ASSERT( \ #ifndef LL_USART_STOPBITS_1_5 #define STM32_UART_CHECK_DT_STOP_BITS_1_5(index) \ BUILD_ASSERT( \ - DT_INST_ENUM_IDX_OR(index, stop_bits, \ - STM32_UART_DEFAULT_STOP_BITS) \ - != UART_CFG_STOP_BITS_1_5, \ + DT_INST_ENUM_IDX(index, stop_bits) != UART_CFG_STOP_BITS_1_5, \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported stop bits configuration"); /* LPUARTs don't support 1.5 stop bits configurations */ @@ -2438,9 +2413,7 @@ BUILD_ASSERT( \ #define STM32_UART_CHECK_DT_STOP_BITS_1_5(index) \ BUILD_ASSERT( \ !(DT_HAS_COMPAT_STATUS_OKAY(st_stm32_lpuart) && \ - DT_INST_ENUM_IDX_OR(index, stop_bits, \ - STM32_UART_DEFAULT_STOP_BITS) \ - == UART_CFG_STOP_BITS_1_5), \ + DT_INST_ENUM_IDX(index, stop_bits) == UART_CFG_STOP_BITS_1_5), \ "Node " DT_NODE_PATH(DT_DRV_INST(index)) \ " has unsupported stop bits configuration"); #endif @@ -2454,14 +2427,10 @@ static const struct stm32_pclken pclken_##index[] = \ STM32_DT_INST_CLOCKS(index);\ \ static struct uart_config uart_cfg_##index = { \ - .baudrate = DT_INST_PROP_OR(index, current_speed, \ - STM32_UART_DEFAULT_BAUDRATE), \ - .parity = DT_INST_ENUM_IDX_OR(index, parity, \ - STM32_UART_DEFAULT_PARITY), \ - .stop_bits = DT_INST_ENUM_IDX_OR(index, stop_bits, \ - STM32_UART_DEFAULT_STOP_BITS), \ - .data_bits = DT_INST_ENUM_IDX_OR(index, data_bits, \ - STM32_UART_DEFAULT_DATA_BITS), \ + .baudrate = DT_INST_PROP(index, current_speed), \ + .parity = DT_INST_ENUM_IDX(index, parity), \ + .stop_bits = DT_INST_ENUM_IDX(index, stop_bits), \ + .data_bits = DT_INST_ENUM_IDX(index, data_bits), \ .flow_ctrl = DT_INST_PROP(index, hw_flow_control) \ ? UART_CFG_FLOW_CTRL_RTS_CTS \ : UART_CFG_FLOW_CTRL_NONE, \ diff --git a/drivers/serial/uart_stm32.h b/drivers/serial/uart_stm32.h index 7c6f432a504..6420f67f64e 100644 --- a/drivers/serial/uart_stm32.h +++ b/drivers/serial/uart_stm32.h @@ -18,11 +18,6 @@ #include -#define STM32_UART_DEFAULT_BAUDRATE 115200 -#define STM32_UART_DEFAULT_PARITY UART_CFG_PARITY_NONE -#define STM32_UART_DEFAULT_STOP_BITS UART_CFG_STOP_BITS_1 -#define STM32_UART_DEFAULT_DATA_BITS UART_CFG_DATA_BITS_8 - /* device config */ struct uart_stm32_config { /* USART instance */ diff --git a/drivers/serial/uart_wch_usart.c b/drivers/serial/uart_wch_usart.c index 169dc681fbe..3b9aa7a2ed9 100644 --- a/drivers/serial/uart_wch_usart.c +++ b/drivers/serial/uart_wch_usart.c @@ -330,7 +330,7 @@ static DEVICE_API(uart, usart_wch_driver_api) = { static const struct usart_wch_config usart_wch_##idx##_config = { \ .regs = (USART_TypeDef *)DT_INST_REG_ADDR(idx), \ .current_speed = DT_INST_PROP(idx, current_speed), \ - .parity = DT_INST_ENUM_IDX_OR(idx, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(idx, parity), \ .clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(idx)), \ .clock_id = DT_INST_CLOCKS_CELL(idx, id), \ .pin_cfg = PINCTRL_DT_INST_DEV_CONFIG_GET(idx), \ diff --git a/drivers/serial/usart_gd32.c b/drivers/serial/usart_gd32.c index 9936a818124..bbccf6525ce 100644 --- a/drivers/serial/usart_gd32.c +++ b/drivers/serial/usart_gd32.c @@ -335,7 +335,7 @@ static DEVICE_API(uart, usart_gd32_driver_api) = { .clkid = DT_INST_CLOCKS_CELL(n, id), \ .reset = RESET_DT_SPEC_INST_GET(n), \ .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ - .parity = DT_INST_ENUM_IDX_OR(n, parity, UART_CFG_PARITY_NONE), \ + .parity = DT_INST_ENUM_IDX(n, parity), \ GD32_USART_IRQ_HANDLER_FUNC_INIT(n) \ }; \ DEVICE_DT_INST_DEFINE(n, usart_gd32_init, \ diff --git a/dts/bindings/serial/adi,max32-uart.yaml b/dts/bindings/serial/adi,max32-uart.yaml index c79543cf6b8..0b106b24ac8 100644 --- a/dts/bindings/serial/adi,max32-uart.yaml +++ b/dts/bindings/serial/adi,max32-uart.yaml @@ -34,3 +34,18 @@ properties: - 5: "ADI_MAX32_PRPH_CLK_SRC_INRO" Internal Ring Oscillator The target device might not support all option please take a look on target device user guide + + current-speed: + description: | + Initial baud rate setting for UART. Defaults to standard baudrate of 115200 if not specified. + default: 115200 + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 diff --git a/dts/bindings/serial/altr,uart.yaml b/dts/bindings/serial/altr,uart.yaml index 69c9ed1a94c..c009bedd88b 100644 --- a/dts/bindings/serial/altr,uart.yaml +++ b/dts/bindings/serial/altr,uart.yaml @@ -13,6 +13,16 @@ properties: required: true description: Default baudrate of the uart controller. + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 + fixed-baudrate: type: boolean description: | diff --git a/dts/bindings/serial/espressif,esp32-uart.yaml b/dts/bindings/serial/espressif,esp32-uart.yaml index 49026309f34..f1f6abdfa37 100644 --- a/dts/bindings/serial/espressif,esp32-uart.yaml +++ b/dts/bindings/serial/espressif,esp32-uart.yaml @@ -14,6 +14,16 @@ properties: pinctrl-names: required: true + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 + hw-rs485-hd-mode: type: boolean description: | diff --git a/dts/bindings/serial/infineon,cat1-uart.yaml b/dts/bindings/serial/infineon,cat1-uart.yaml index 2827e0b4e1a..32990ea6827 100644 --- a/dts/bindings/serial/infineon,cat1-uart.yaml +++ b/dts/bindings/serial/infineon,cat1-uart.yaml @@ -39,3 +39,13 @@ properties: pinctrl-names: required: true + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 diff --git a/dts/bindings/serial/intel,lw_uart.yaml b/dts/bindings/serial/intel,lw_uart.yaml index 798dfa53225..4687ebcfe4a 100644 --- a/dts/bindings/serial/intel,lw_uart.yaml +++ b/dts/bindings/serial/intel,lw_uart.yaml @@ -17,3 +17,13 @@ properties: type: boolean description: | Baud rate cannot be changed by software (Divisor register is not writable) + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 diff --git a/dts/bindings/serial/renesas,rz-scif-uart.yaml b/dts/bindings/serial/renesas,rz-scif-uart.yaml index b362a09e474..1d3ae33b1b2 100644 --- a/dts/bindings/serial/renesas,rz-scif-uart.yaml +++ b/dts/bindings/serial/renesas,rz-scif-uart.yaml @@ -8,6 +8,21 @@ compatible: "renesas,rz-scif-uart" include: [uart-controller.yaml, pinctrl-device.yaml] properties: + current-speed: + description: | + Initial baud rate setting for UART. Defaults to standard baudrate of 115200 if not specified. + default: 115200 + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 + channel: type: int required: true diff --git a/dts/bindings/serial/renesas,rzt2m-uart.yaml b/dts/bindings/serial/renesas,rzt2m-uart.yaml index 967972ac7c8..9ab38e8f638 100644 --- a/dts/bindings/serial/renesas,rzt2m-uart.yaml +++ b/dts/bindings/serial/renesas,rzt2m-uart.yaml @@ -22,5 +22,15 @@ properties: - 9600 - 115200 + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 + interrupts: required: true diff --git a/dts/bindings/serial/st,stm32-uart-base.yaml b/dts/bindings/serial/st,stm32-uart-base.yaml index 37b6e66762b..f8323111743 100644 --- a/dts/bindings/serial/st,stm32-uart-base.yaml +++ b/dts/bindings/serial/st,stm32-uart-base.yaml @@ -25,6 +25,21 @@ properties: interrupts: required: true + current-speed: + description: | + Initial baud rate setting for UART. Defaults to standard baudrate of 115200 if not specified. + default: 115200 + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 + single-wire: type: boolean description: | diff --git a/dts/bindings/serial/ti,cc13xx-cc26xx-uart.yaml b/dts/bindings/serial/ti,cc13xx-cc26xx-uart.yaml index 5b13c83934c..1ba0920602d 100644 --- a/dts/bindings/serial/ti,cc13xx-cc26xx-uart.yaml +++ b/dts/bindings/serial/ti,cc13xx-cc26xx-uart.yaml @@ -13,3 +13,16 @@ properties: interrupts: required: true + + current-speed: + required: true + + stop-bits: + description: | + Sets the number of stop bits. Defaults to standard of 1 if not specified. + default: "1" + + data-bits: + description: | + Sets the number of data bits. Defaults to standard of 8 if not specified. + default: 8 diff --git a/dts/bindings/serial/uart-controller.yaml b/dts/bindings/serial/uart-controller.yaml index 3c4873fedef..81f25af21aa 100644 --- a/dts/bindings/serial/uart-controller.yaml +++ b/dts/bindings/serial/uart-controller.yaml @@ -23,6 +23,7 @@ properties: - "none" - "odd" - "even" + default: "none" stop-bits: type: string description: |