From fe10897f70e9bdfcd90fa00f96ddf322d65938eb Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Mon, 18 Sep 2023 13:32:15 -0700 Subject: [PATCH] uart: ns16550: simplify DLF and PCP related macros This simplifies DLF and PCP enabling devicetree macros with DT_ANY_INST_HAS_PROP_STATUS_OKAY() instead of the complicated ones. Also, this moves the macro to initialize struct elements into the struct initializer itself. This makes it clearer on which element is being initialized directly inside the struct initializer instead of having to do mental macro trampoline to find the correct macro. Signed-off-by: Daniel Leung --- drivers/serial/uart_ns16550.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/drivers/serial/uart_ns16550.c b/drivers/serial/uart_ns16550.c index 8124733c2fb..49d8416f950 100644 --- a/drivers/serial/uart_ns16550.c +++ b/drivers/serial/uart_ns16550.c @@ -43,13 +43,8 @@ LOG_MODULE_REGISTER(uart_ns16550, CONFIG_UART_LOG_LEVEL); -#define INST_HAS_PCP_HELPER(inst) DT_INST_NODE_HAS_PROP(inst, pcp) || -#define INST_HAS_DLF_HELPER(inst) DT_INST_NODE_HAS_PROP(inst, dlf) || - -#define UART_NS16550_PCP_ENABLED \ - (DT_INST_FOREACH_STATUS_OKAY(INST_HAS_PCP_HELPER) 0) -#define UART_NS16550_DLF_ENABLED \ - (DT_INST_FOREACH_STATUS_OKAY(INST_HAS_DLF_HELPER) 0) +#define UART_NS16550_PCP_ENABLED DT_ANY_INST_HAS_PROP_STATUS_OKAY(pcp) +#define UART_NS16550_DLF_ENABLED DT_ANY_INST_HAS_PROP_STATUS_OKAY(dlf) #if DT_ANY_INST_ON_BUS_STATUS_OKAY(pcie) BUILD_ASSERT(IS_ENABLED(CONFIG_PCIE), "NS16550(s) in DT need CONFIG_PCIE"); @@ -1300,12 +1295,6 @@ static const struct uart_driver_api uart_ns16550_driver_api = { #define UART_NS16550_IRQ_FUNC_DEFINE(n) #endif /* CONFIG_UART_INTERRUPT_DRIVEN */ -#if UART_NS16550_PCP_ENABLED -#define DEV_CONFIG_PCP_INIT(n) .pcp = DT_INST_PROP_OR(n, pcp, 0), -#else -#define DEV_CONFIG_PCP_INIT(n) -#endif - #define DEV_CONFIG_PCIE0(n) #define DEV_CONFIG_PCIE1(n) DEVICE_PCIE_INST_INIT(n, pcie) #define DEV_CONFIG_PCIE_INIT(n) \ @@ -1321,12 +1310,6 @@ static const struct uart_driver_api uart_ns16550_driver_api = { #define DEV_DATA_FLOW_CTRL(n) \ _CONCAT(DEV_DATA_FLOW_CTRL, DT_INST_PROP_OR(n, hw_flow_control, 0)) -#define DEV_DATA_DLF0(n) -#define DEV_DATA_DLF1(n) \ - .dlf = DT_INST_PROP(n, dlf), -#define DEV_DATA_DLF_INIT(n) \ - _CONCAT(DEV_DATA_DLF, DT_INST_NODE_HAS_PROP(n, dlf))(n) - #ifdef CONFIG_UART_NS16550_PARENT_INIT_LEVEL #define NS16550_BOOT_LEVEL0 PRE_KERNEL_1 #define NS16550_BOOT_LEVEL1 POST_KERNEL @@ -1357,7 +1340,8 @@ static const struct uart_driver_api uart_ns16550_driver_api = { ) \ ) \ DEV_CONFIG_IRQ_FUNC_INIT(n) \ - DEV_CONFIG_PCP_INIT(n) \ + IF_ENABLED(DT_INST_NODE_HAS_PROP(n, pcp), \ + (.pcp = DT_INST_PROP_OR(n, pcp, 0),)) \ .reg_interval = (1 << DT_INST_PROP(n, reg_shift)), \ DEV_CONFIG_PCIE_INIT(n) \ IF_ENABLED(DT_INST_NODE_HAS_PROP(n, pinctrl_0), \ @@ -1371,7 +1355,8 @@ static const struct uart_driver_api uart_ns16550_driver_api = { .uart_config.stop_bits = UART_CFG_STOP_BITS_1, \ .uart_config.data_bits = UART_CFG_DATA_BITS_8, \ .uart_config.flow_ctrl = DEV_DATA_FLOW_CTRL(n), \ - DEV_DATA_DLF_INIT(n) \ + IF_ENABLED(DT_INST_NODE_HAS_PROP(n, dlf), \ + (.dlf = DT_INST_PROP_OR(n, dlf, 0),)) \ }; \ DEVICE_DT_INST_DEFINE(n, &uart_ns16550_init, NULL, \ &uart_ns16550_dev_data_##n, &uart_ns16550_dev_cfg_##n, \