diff --git a/boards/arm/cyclonev_socdk/cyclonev_socdk_defconfig b/boards/arm/cyclonev_socdk/cyclonev_socdk_defconfig index 477d9be9d9c..a3f431a8668 100644 --- a/boards/arm/cyclonev_socdk/cyclonev_socdk_defconfig +++ b/boards/arm/cyclonev_socdk/cyclonev_socdk_defconfig @@ -13,7 +13,7 @@ CONFIG_SYSCON=y # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_NS16550=y -CONFIG_UART_NS16950=y +CONFIG_UART_NS16550_VARIANT_NS16950=y #CONFIG_UART_INTERRUPT_DRIVEN=y #CONFIG_UART_NS16550_ACCESS_WORD_ONLY=y #CONFIG_UART_ALTERA_JTAG=y diff --git a/drivers/serial/Kconfig.ns16550 b/drivers/serial/Kconfig.ns16550 index c7d5a5bbaf2..016d1889473 100644 --- a/drivers/serial/Kconfig.ns16550 +++ b/drivers/serial/Kconfig.ns16550 @@ -29,18 +29,23 @@ config UART_NS16550_DRV_CMD Says n if not sure. choice - prompt "UART type" - default UART_NS16750 + prompt "UART variant" + default UART_NS16550_VARIANT_NS16550 help - Select UART device type + Select UART device variant -config UART_NS16750 +config UART_NS16550_VARIANT_NS16550 + bool "UART 16550 (16-bytes FIFO)" + help + This enables support for 16-bytes FIFO if UART controller is 16550. + +config UART_NS16550_VARIANT_NS16750 bool "UART 16750 (64-bytes FIFO and auto flow control)" help This enables support for 64-bytes FIFO and automatic hardware flow control if UART controller is 16750. -config UART_NS16950 +config UART_NS16550_VARIANT_NS16950 bool "UART 16950 (128-bytes FIFO and auto flow control)" help This enables support for 128-bytes FIFO and automatic hardware flow control. diff --git a/drivers/serial/uart_ns16550.c b/drivers/serial/uart_ns16550.c index 739b6f2190a..130446384a6 100644 --- a/drivers/serial/uart_ns16550.c +++ b/drivers/serial/uart_ns16550.c @@ -448,7 +448,8 @@ static int uart_ns16550_configure(const struct device *dev, uart_cfg.data_bits | uart_cfg.stop_bits | uart_cfg.parity); mdc = MCR_OUT2 | MCR_RTS | MCR_DTR; -#if defined(CONFIG_UART_NS16750) || defined(CONFIG_UART_NS16950) +#if defined(CONFIG_UART_NS16550_VARIANT_NS16750) || \ + defined(CONFIG_UART_NS16550_VARIANT_NS16950) if (cfg->flow_ctrl == UART_CFG_FLOW_CTRL_RTS_CTS) { mdc |= MCR_AFCE; } @@ -463,15 +464,15 @@ static int uart_ns16550_configure(const struct device *dev, */ OUTBYTE(FCR(dev), FCR_FIFO | FCR_MODE0 | FCR_FIFO_8 | FCR_RCVRCLR | FCR_XMITCLR -#ifdef CONFIG_UART_NS16750 +#ifdef CONFIG_UART_NS16550_VARIANT_NS16750 | FCR_FIFO_64 #endif ); if ((INBYTE(IIR(dev)) & IIR_FE) == IIR_FE) { -#ifdef CONFIG_UART_NS16750 +#ifdef CONFIG_UART_NS16550_VARIANT_NS16750 dev_data->fifo_size = 64; -#elif defined(CONFIG_UART_NS16950) +#elif defined(CONFIG_UART_NS16550_VARIANT_NS16950) dev_data->fifo_size = 128; #else dev_data->fifo_size = 16;