drivers: serial: ns16550: Remove hard-coded max instance count
Instead of having a hard-coded maximum instance count, introduce a Kconfig variable for it. The inclusion of the per-instance header files is solved by having them chain-include each other with a pre-processor condition that checks if the current header file is the last one or not. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
048dcea54b
commit
4fa0a9b4b2
|
@ -42,7 +42,9 @@ zephyr_library_sources_ifdef(CONFIG_USERSPACE uart_handlers.c)
|
|||
|
||||
if(CONFIG_UART_NS16550)
|
||||
zephyr_library_sources(uart_ns16550.c)
|
||||
foreach(NUM RANGE 0 3)
|
||||
math(EXPR max_index "${CONFIG_UART_NS16550_MAX_INSTANCES} - 1")
|
||||
foreach(NUM RANGE 0 ${max_index})
|
||||
math(EXPR NEXT_NUM "${NUM} + 1")
|
||||
configure_file(
|
||||
uart_ns16550_port_x.h
|
||||
${PROJECT_BINARY_DIR}/include/generated/uart_ns16550_port_${NUM}.h
|
||||
|
|
|
@ -11,6 +11,13 @@ menuconfig UART_NS16550
|
|||
|
||||
if UART_NS16550
|
||||
|
||||
config UART_NS16550_MAX_INSTANCES
|
||||
int "Maximum number of supported driver instances"
|
||||
range 1 32
|
||||
default 4
|
||||
help
|
||||
The maximum number of supported driver instances in device tree.
|
||||
|
||||
config UART_NS16550_LINE_CTRL
|
||||
bool "Enable Serial Line Control for Apps"
|
||||
depends on UART_LINE_CTRL
|
||||
|
|
|
@ -976,7 +976,8 @@ static const struct uart_driver_api uart_ns16550_driver_api = {
|
|||
#endif
|
||||
};
|
||||
|
||||
/* The instance-specific header files are chained together (each instance
|
||||
* includes the next one, unless it's the last instance) so we only need to
|
||||
* include the first instance.
|
||||
*/
|
||||
#include <uart_ns16550_port_0.h>
|
||||
#include <uart_ns16550_port_1.h>
|
||||
#include <uart_ns16550_port_2.h>
|
||||
#include <uart_ns16550_port_3.h>
|
||||
|
|
|
@ -130,3 +130,8 @@ static void irq_config_func_@NUM@(const struct device *dev)
|
|||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Include subsequent instances */
|
||||
#if @NUM@ < (CONFIG_UART_NS16550_MAX_INSTANCES - 1)
|
||||
#include <uart_ns16550_port_@NEXT_NUM@.h>
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue