zephyr/drivers/serial
Peter McGaughey 3104ad0e39 drivers: serial: uart_sam0: fix uart_sam0_irq_update TXC reset
drivers: serial: uart_sam0: fix uart_sam0_irq_update TXC reset bug

uart_sam0_irq_update function resets flags that will cause int. re-entry
existing implementation also clears the TXC flag if it is set
this breaks transmit complete detection

Per the SAMD5x/E5x Datasheet Sect. 34.8.6, writing '1' to the TXC will
clear the flag and disable TX complete interrupts, this should be
preserved through the irq_update for use in the tx_complete check function

The proper fix will cache the TXC value before conditionally clearing the
flag based on that cached value. If you do not condition this on the
cached value a race condition will periodically occur where
the TXC is cleared but never cached.

Fixes zephyrproject-rtos#55386

Signed-off-by: Peter McGaughey <peter.mcgaughey@daikincomfort.com>
2023-06-13 15:09:28 -04:00
..
CMakeLists.txt drivers: serial: Added rpi_pico driver over PIO 2023-04-25 13:12:02 +02:00
Kconfig drivers: kconfig: unify menuconfig title strings 2023-03-28 15:06:06 +02:00
Kconfig.altera drivers: serial: uart_altera: add driver 2023-02-23 09:26:33 +01:00
Kconfig.altera_jtag drivers: serial: uart_altera_jtag: enhancement 2023-01-27 14:24:43 -05:00
Kconfig.apbuart
Kconfig.b91
Kconfig.cc13xx_cc26xx
Kconfig.cc32xx
Kconfig.cdns drivers: serial: Add Driver for CDNS UART IP6528 2022-12-12 12:19:35 -05:00
Kconfig.cmsdk_apb
Kconfig.emul serial: Add driver for emulated UART 2023-03-27 09:50:44 +02:00
Kconfig.esp32 drivers: uart: esp32c3: Add async support 2023-01-12 19:09:01 +01:00
Kconfig.gd32
Kconfig.gecko
Kconfig.hostlink drivers: serial: add virtual uart over ARC hostlink channel 2023-03-17 11:49:02 +01:00
Kconfig.ifx_cat1 drivers: serial: Add Infineon CAT1 UART driver 2023-03-01 11:44:57 +01:00
Kconfig.imx
Kconfig.it8xxx2 drivers: serial: ite_it8xxx2: add a dedicated priority symbol 2023-05-26 13:51:08 -04:00
Kconfig.leuart_gecko
Kconfig.litex
Kconfig.lpc11u6x
Kconfig.mcux drivers: uart_mcux: Do not select async support 2023-05-02 21:02:43 +02:00
Kconfig.mcux_flexcomm drivers: uart_mcux_flexcomm: Add ASYNC API 2023-05-26 13:15:24 -05:00
Kconfig.mcux_iuart
Kconfig.mcux_lpsci
Kconfig.mcux_lpuart drivers: all: mcux: remove conditional support for pinctrl 2023-04-24 13:34:22 +02:00
Kconfig.miv drivers: serial: uart_miv: Disable SERIAL_SUPPORT_INTERRUPT 2023-05-08 16:59:21 -04:00
Kconfig.msp432p4xx
Kconfig.native_posix drivers: Console: Move all posix arch boards to same driver 2023-05-26 12:57:41 +02:00
Kconfig.neorv32
Kconfig.npcx
Kconfig.nrfx drivers: uart_nrfx_uarte: Revert workaround for bytes dropping 2023-04-04 13:45:17 +02:00
Kconfig.ns16550 Revert "drivers: serial: ns16550: Add support for Async APIs" 2023-06-13 06:59:33 -04:00
Kconfig.numicro
Kconfig.nxp_s32 drivers: serial: rename S32 to NXP S32 2023-01-04 16:51:38 +01:00
Kconfig.opentitan drivers: serial: Add support for OpenTitan serial UART 2023-01-27 19:25:26 +09:00
Kconfig.pl011 driver: uart: pl011_sbsa: refine creating device instance 2023-05-17 09:49:03 +02:00
Kconfig.psoc6
Kconfig.ql_usbserialport_s3b
Kconfig.rcar
Kconfig.rpi_pico drivers: serial: Added rpi_pico driver over PIO 2023-04-25 13:12:02 +02:00
Kconfig.rtt serial: rtt: select SERIAL_SUPPORT_ASYNC 2023-03-30 09:51:18 +02:00
Kconfig.rv32m1_lpuart drivers: all: rv32m1: remove conditional support for pinctrl 2023-04-24 13:34:22 +02:00
Kconfig.sam0
Kconfig.sifive
Kconfig.smartbond
Kconfig.stellaris
Kconfig.stm32 drivers: serial: Reset UART using RCC before initialization 2022-12-09 09:43:36 -08:00
Kconfig.test
Kconfig.uart_sam
Kconfig.usart_sam
Kconfig.xec
Kconfig.xen
Kconfig.xlnx
Kconfig.xmc4xxx drivers: serial: xmc4xxx: Fix Kconfig help entry 2023-02-21 21:15:53 +01:00
leuart_gecko.c soc: arm: silabs: remove soc_gpio_configure wrapper 2022-12-20 22:50:19 +01:00
serial_esp32_usb.c driver: usb_serial: esp32c3: fix USB port behavior 2023-04-04 14:30:15 +02:00
serial_test.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
uart_altera_jtag.c drivers: serial: uart_altera_jtag: enhancement 2023-01-27 14:24:43 -05:00
uart_altera.c drivers: serial: uart_altera: add driver 2023-02-23 09:26:33 +01:00
uart_apbuart.c drivers/apbuart: correct the baud formula 2023-03-27 22:15:33 +00:00
uart_b91.c
uart_cc13xx_cc26xx.c
uart_cc32xx.c
uart_cdns.c drivers: serial: Add Driver for CDNS UART IP6528 2022-12-12 12:19:35 -05:00
uart_cdns.h drivers: serial: Add Driver for CDNS UART IP6528 2022-12-12 12:19:35 -05:00
uart_cmsdk_apb.c treewide: Update clock control API usage 2023-04-05 10:55:46 +02:00
uart_emul.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
uart_esp32.c drivers: uart: esp32: fix baudrate return value 2023-05-12 09:59:25 +02:00
uart_gecko.c drivers: uart: gecko: add support for efr32xg24 2023-04-04 13:34:45 +02:00
uart_handlers.c
uart_hostlink.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
uart_hvc_xen_consoleio.c
uart_hvc_xen.c init: remove the need for a dummy device pointer in SYS_INIT functions 2023-04-12 14:28:07 +00:00
uart_ifx_cat1.c drivers: serial: Add Infineon CAT1 UART driver 2023-03-01 11:44:57 +01:00
uart_imx.c
uart_ite_it8xxx2.c drivers: serial: ite_it8xxx2: add a dedicated priority symbol 2023-05-26 13:51:08 -04:00
uart_liteuart.c
uart_lpc11u6x.c
uart_lpc11u6x.h
uart_mchp_xec.c uart: microchip: fix build error with PM_DEVICE=n 2023-01-30 18:54:59 +00:00
uart_mcux_flexcomm.c drivers: uart_mcux_flexcomm: Unlock IRQ if error 2023-06-12 14:03:43 -04:00
uart_mcux_iuart.c nxp: imx: Implement iuart clock gating 2023-03-15 09:13:10 +01:00
uart_mcux_lpsci.c
uart_mcux_lpuart.c dma: callback with 2 status codes for successful transfers 2023-05-08 09:57:32 +02:00
uart_mcux.c drivers: uart_mcux: Do not enable and disable the transmitter 2023-05-16 12:08:32 +02:00
uart_miv.c treewide: rename Microsemi to Microchip 2023-05-04 10:47:07 +02:00
uart_msp432p4xx.c
uart_native_posix.c drivers: uart_native_posix: Check return values of system calls 2023-06-01 18:04:25 -04:00
uart_neorv32.c
uart_npcx.c intc: miwu: npcx: improve interrupt latency of miwu input events 2023-05-17 09:48:54 +02:00
uart_nrfx_uart.c drivers: uart_nrfx_uart: Request next buffer only when needed 2023-06-06 09:34:29 +02:00
uart_nrfx_uarte.c drivers: serial: uart_nrfx_uarte: Align use of TIMER macro in ASYNC API 2023-05-05 11:47:53 +02:00
uart_ns16550.c Revert "drivers: serial: ns16550: Add support for Async APIs" 2023-06-13 06:59:33 -04:00
uart_ns16550.h
uart_numicro.c drivers: serial: numicro: fix poll_in function 2022-12-08 18:46:33 +01:00
uart_nxp_s32_linflexd.c drivers: serial: rename S32 to NXP S32 2023-01-04 16:51:38 +01:00
uart_nxp_s32_linflexd.h drivers: serial: rename S32 to NXP S32 2023-01-04 16:51:38 +01:00
uart_opentitan.c drivers: serial: Add support for OpenTitan serial UART 2023-01-27 19:25:26 +09:00
uart_pipe.c
uart_pl011.c barriers: Move __ISB() to the new API 2023-05-24 13:13:57 -04:00
uart_psoc6.c
uart_ql_usbserialport_s3b.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
uart_ql_usbserialport_s3b.h
uart_rcar.c treewide: Update clock control API usage 2023-04-05 10:55:46 +02:00
uart_rpi_pico_pio.c drivers: serial: Added rpi_pico driver over PIO 2023-04-25 13:12:02 +02:00
uart_rpi_pico.c drivers: serial: rpi_pico: add support for hardware flow control 2023-05-30 09:00:09 -04:00
uart_rtt.c drivers: serial: uart_rtt: fix multi-channel 2023-02-25 06:55:58 -05:00
uart_rv32m1_lpuart.c drivers: all: rv32m1: remove conditional support for pinctrl 2023-04-24 13:34:22 +02:00
uart_sam0.c drivers: serial: uart_sam0: fix uart_sam0_irq_update TXC reset 2023-06-13 15:09:28 -04:00
uart_sam.c treewide: Update clock control API usage 2023-04-05 10:55:46 +02:00
uart_sifive.c
uart_smartbond.c
uart_stellaris.c
uart_stm32.c drivers: serial: stm32 uart driver asserts when baudRate >=16 2023-05-30 13:16:05 -04:00
uart_stm32.h drivers: serial: stm32 uart implements driver enable 2023-05-26 14:55:30 -04:00
uart_xlnx_ps.c
uart_xlnx_uartlite.c serial: xilinx: uartlite: Fix infinite spin in xlnx_uartlite_fifo_read 2023-03-20 10:21:37 +01:00
uart_xmc4xxx.c drivers: serial: uart_xmc4xxx: Minor cleanups 2023-04-12 08:59:20 +02:00
usart_gd32.c treewide: Update clock control API usage 2023-04-05 10:55:46 +02:00
usart_sam.c treewide: Update clock control API usage 2023-04-05 10:55:46 +02:00