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 <daniel.leung@intel.com>
This commit is contained in:
parent
2899df629f
commit
fe10897f70
1 changed files with 6 additions and 21 deletions
|
@ -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, \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue