Skip to content

Commit 041f982

Browse files
talih0nashif
authored andcommitted
drivers: xmc4xxx_uart: Delay transmit interrupt until byte is sent out
Generate the Tx service request after the symbol is shifted out of the UART. This is useful when the UART is connected to an RS485 transducer which has a separate transmit enable gpio/line. Hence it's important to know when the transmission actually finishes so that the drive enable line can be disabled. Signed-off-by: Andriy Gelman <[email protected]>
1 parent a8ac02f commit 041f982

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

drivers/serial/uart_xmc4xxx.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ static void disable_tx_events(const struct uart_xmc4xxx_config *config)
116116
XMC_USIC_CH_TXFIFO_DisableEvent(config->uart,
117117
XMC_USIC_CH_TXFIFO_EVENT_CONF_STANDARD);
118118
} else {
119-
XMC_USIC_CH_DisableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_BUFFER);
119+
XMC_USIC_CH_DisableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_SHIFT);
120120
}
121121
}
122122
#endif
@@ -131,7 +131,7 @@ static void enable_tx_events(const struct uart_xmc4xxx_config *config)
131131
XMC_USIC_CH_TXFIFO_EnableEvent(config->uart,
132132
XMC_USIC_CH_TXFIFO_EVENT_CONF_STANDARD);
133133
} else {
134-
XMC_USIC_CH_EnableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_BUFFER);
134+
XMC_USIC_CH_EnableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_SHIFT);
135135
}
136136
}
137137

@@ -189,7 +189,7 @@ static void uart_xmc4xxx_configure_service_requests(const struct device *dev)
189189
data->service_request_tx);
190190
} else {
191191
XMC_USIC_CH_SetInterruptNodePointer(
192-
config->uart, XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER,
192+
config->uart, XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_SHIFT,
193193
data->service_request_tx);
194194
}
195195

@@ -338,7 +338,7 @@ static void uart_xmc4xxx_irq_tx_disable(const struct device *dev)
338338
XMC_USIC_CH_TXFIFO_DisableEvent(config->uart,
339339
XMC_USIC_CH_TXFIFO_EVENT_CONF_STANDARD);
340340
} else {
341-
XMC_USIC_CH_DisableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_BUFFER);
341+
XMC_USIC_CH_DisableEvent(config->uart, XMC_USIC_CH_EVENT_TRANSMIT_SHIFT);
342342
}
343343
}
344344

0 commit comments

Comments
 (0)