Skip to content

Commit c6b988b

Browse files
committed
drivers: serial: stm32: make poll-out function to pass data by value
Passing data by value is more efficient in this context. As such, revise `poll_out_fn` and `uart_stm32_poll_out_visitor` to accept the `out` argument by value instead of by address. Signed-off-by: Pisit Sawangvonganan <[email protected]>
1 parent c50777a commit c6b988b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

drivers/serial/uart_stm32.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -652,9 +652,9 @@ static int uart_stm32_poll_in_visitor(const struct device *dev, void *in, poll_i
652652
}
653653

654654
typedef void (*poll_out_fn)(
655-
USART_TypeDef *usart, void *out);
655+
USART_TypeDef *usart, uint16_t out);
656656

657-
static void uart_stm32_poll_out_visitor(const struct device *dev, void *out, poll_out_fn set_fn)
657+
static void uart_stm32_poll_out_visitor(const struct device *dev, uint16_t out, poll_out_fn set_fn)
658658
{
659659
const struct uart_stm32_config *config = dev->config;
660660
USART_TypeDef *usart = config->usart;
@@ -707,9 +707,9 @@ static void poll_in_u8(USART_TypeDef *usart, void *in)
707707
*((unsigned char *)in) = (unsigned char)LL_USART_ReceiveData8(usart);
708708
}
709709

710-
static void poll_out_u8(USART_TypeDef *usart, void *out)
710+
static void poll_out_u8(USART_TypeDef *usart, uint16_t out)
711711
{
712-
LL_USART_TransmitData8(usart, *((uint8_t *)out));
712+
LL_USART_TransmitData8(usart, (uint8_t)out);
713713
}
714714

715715
static int uart_stm32_poll_in(const struct device *dev, unsigned char *c)
@@ -719,14 +719,14 @@ static int uart_stm32_poll_in(const struct device *dev, unsigned char *c)
719719

720720
static void uart_stm32_poll_out(const struct device *dev, unsigned char c)
721721
{
722-
uart_stm32_poll_out_visitor(dev, (void *)&c, poll_out_u8);
722+
uart_stm32_poll_out_visitor(dev, c, poll_out_u8);
723723
}
724724

725725
#ifdef CONFIG_UART_WIDE_DATA
726726

727-
static void poll_out_u9(USART_TypeDef *usart, void *out)
727+
static void poll_out_u9(USART_TypeDef *usart, uint16_t out)
728728
{
729-
LL_USART_TransmitData9(usart, *((uint16_t *)out));
729+
LL_USART_TransmitData9(usart, out);
730730
}
731731

732732
static void poll_in_u9(USART_TypeDef *usart, void *in)
@@ -741,7 +741,7 @@ static int uart_stm32_poll_in_u16(const struct device *dev, uint16_t *in_u16)
741741

742742
static void uart_stm32_poll_out_u16(const struct device *dev, uint16_t out_u16)
743743
{
744-
uart_stm32_poll_out_visitor(dev, (void *)&out_u16, poll_out_u9);
744+
uart_stm32_poll_out_visitor(dev, out_u16, poll_out_u9);
745745
}
746746

747747
#endif

0 commit comments

Comments
 (0)