drivers: serial: mcux: Introduce support for HW flow control
Now that a hw-flow-control DTS binding has been added for MCUX uart, let's check for the DT_ define and enable support in the MCUX HAL layer. Signed-off-by: Michael Scott <mike@foundries.io>
This commit is contained in:
parent
a4361ffe44
commit
3588b94b06
3 changed files with 21 additions and 0 deletions
|
@ -16,6 +16,7 @@ struct uart_mcux_config {
|
|||
char *clock_name;
|
||||
clock_control_subsys_t clock_subsys;
|
||||
u32_t baud_rate;
|
||||
u8_t hw_flow_control;
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
void (*irq_config_func)(struct device *dev);
|
||||
#endif
|
||||
|
@ -245,6 +246,10 @@ static int uart_mcux_init(struct device *dev)
|
|||
UART_GetDefaultConfig(&uart_config);
|
||||
uart_config.enableTx = true;
|
||||
uart_config.enableRx = true;
|
||||
if (config->hw_flow_control) {
|
||||
uart_config.enableRxRTS = true;
|
||||
uart_config.enableTxCTS = true;
|
||||
}
|
||||
uart_config.baudRate_Bps = config->baud_rate;
|
||||
|
||||
UART_Init(config->base, &uart_config, clock_freq);
|
||||
|
@ -289,6 +294,7 @@ static const struct uart_mcux_config uart_mcux_0_config = {
|
|||
.clock_name = DT_UART_MCUX_0_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_0_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_0_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_0_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_0,
|
||||
#endif
|
||||
|
@ -332,6 +338,7 @@ static const struct uart_mcux_config uart_mcux_1_config = {
|
|||
.clock_name = DT_UART_MCUX_1_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_1_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_1_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_1_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_1,
|
||||
#endif
|
||||
|
@ -375,6 +382,7 @@ static const struct uart_mcux_config uart_mcux_2_config = {
|
|||
.clock_name = DT_UART_MCUX_2_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_2_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_2_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_2_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_2,
|
||||
#endif
|
||||
|
@ -418,6 +426,7 @@ static const struct uart_mcux_config uart_mcux_3_config = {
|
|||
.clock_name = DT_UART_MCUX_3_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_3_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_3_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_3_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_3,
|
||||
#endif
|
||||
|
@ -461,6 +470,7 @@ static const struct uart_mcux_config uart_mcux_4_config = {
|
|||
.clock_name = DT_UART_MCUX_4_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_4_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_4_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_4_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_4,
|
||||
#endif
|
||||
|
@ -504,6 +514,7 @@ static const struct uart_mcux_config uart_mcux_5_config = {
|
|||
.clock_name = DT_UART_MCUX_5_CLOCK_NAME,
|
||||
.clock_subsys = (clock_control_subsys_t)DT_UART_MCUX_5_CLOCK_SUBSYS,
|
||||
.baud_rate = DT_UART_MCUX_5_BAUD_RATE,
|
||||
.hw_flow_control = DT_UART_MCUX_5_HW_FLOW_CONTROL,
|
||||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
.irq_config_func = uart_mcux_config_func_5,
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#define DT_UART_MCUX_0_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006A000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_0_IRQ_STATUS DT_NXP_KINETIS_UART_4006A000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_0_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006A000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_0_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006A000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_0_CLOCK_NAME DT_NXP_KINETIS_UART_4006A000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_0_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006A000_CLOCK_NAME
|
||||
|
||||
|
@ -16,6 +17,7 @@
|
|||
#define DT_UART_MCUX_1_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006B000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_1_IRQ_STATUS DT_NXP_KINETIS_UART_4006B000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_1_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006B000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_1_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006B000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_1_CLOCK_NAME DT_NXP_KINETIS_UART_4006B000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_1_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006B000_CLOCK_NAME
|
||||
|
||||
|
@ -25,6 +27,7 @@
|
|||
#define DT_UART_MCUX_2_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006C000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_2_IRQ_STATUS DT_NXP_KINETIS_UART_4006C000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_2_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006C000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_2_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006C000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_2_CLOCK_NAME DT_NXP_KINETIS_UART_4006C000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_2_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006C000_CLOCK_NAME
|
||||
|
||||
|
@ -34,6 +37,7 @@
|
|||
#define DT_UART_MCUX_3_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006D000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_3_IRQ_STATUS DT_NXP_KINETIS_UART_4006D000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_3_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006D000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_3_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006D000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_3_CLOCK_NAME DT_NXP_KINETIS_UART_4006D000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_3_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006D000_CLOCK_NAME
|
||||
|
||||
|
@ -43,6 +47,7 @@
|
|||
#define DT_UART_MCUX_4_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_400EA000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_4_IRQ_STATUS DT_NXP_KINETIS_UART_400EA000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_4_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_400EA000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_4_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_400EA000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_4_CLOCK_NAME DT_NXP_KINETIS_UART_400EA000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_4_CLOCK_SUBSYS DT_NXP_KINETIS_UART_400EA000_CLOCK_NAME
|
||||
|
||||
|
@ -52,6 +57,7 @@
|
|||
#define DT_UART_MCUX_5_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_400EB000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_5_IRQ_STATUS DT_NXP_KINETIS_UART_400EB000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_5_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_400EB000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_5_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_400EB000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_5_CLOCK_NAME DT_NXP_KINETIS_UART_400EB000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_5_CLOCK_SUBSYS DT_NXP_KINETIS_UART_400EB000_CLOCK_NAME
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#define DT_UART_MCUX_0_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006A000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_0_IRQ_STATUS DT_NXP_KINETIS_UART_4006A000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_0_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006A000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_0_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006A000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_0_CLOCK_NAME DT_NXP_KINETIS_UART_4006A000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_0_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006A000_CLOCK_NAME
|
||||
|
||||
|
@ -50,6 +51,7 @@
|
|||
#define DT_UART_MCUX_1_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006B000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_1_IRQ_STATUS DT_NXP_KINETIS_UART_4006B000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_1_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006B000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_1_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006B000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_1_CLOCK_NAME DT_NXP_KINETIS_UART_4006B000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_1_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006B000_CLOCK_NAME
|
||||
|
||||
|
@ -59,6 +61,7 @@
|
|||
#define DT_UART_MCUX_2_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006C000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_2_IRQ_STATUS DT_NXP_KINETIS_UART_4006C000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_2_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006C000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_2_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006C000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_2_CLOCK_NAME DT_NXP_KINETIS_UART_4006C000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_2_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006C000_CLOCK_NAME
|
||||
|
||||
|
@ -68,6 +71,7 @@
|
|||
#define DT_UART_MCUX_3_IRQ_ERROR_PRI DT_NXP_KINETIS_UART_4006D000_IRQ_ERROR_PRIORITY
|
||||
#define DT_UART_MCUX_3_IRQ_STATUS DT_NXP_KINETIS_UART_4006D000_IRQ_STATUS
|
||||
#define DT_UART_MCUX_3_IRQ_STATUS_PRI DT_NXP_KINETIS_UART_4006D000_IRQ_STATUS_PRIORITY
|
||||
#define DT_UART_MCUX_3_HW_FLOW_CONTROL DT_NXP_KINETIS_UART_4006D000_HW_FLOW_CONTROL
|
||||
#define DT_UART_MCUX_3_CLOCK_NAME DT_NXP_KINETIS_UART_4006D000_CLOCK_CONTROLLER
|
||||
#define DT_UART_MCUX_3_CLOCK_SUBSYS DT_NXP_KINETIS_UART_4006D000_CLOCK_NAME
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue