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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.b91 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.cc13xx_cc26xx drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.cc32xx drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.cdns drivers: serial: Add Driver for CDNS UART IP6528 2022-12-12 12:19:35 -05:00
Kconfig.cmsdk_apb drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.gecko drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.it8xxx2 drivers: serial: ite_it8xxx2: add a dedicated priority symbol 2023-05-26 13:51:08 -04:00
Kconfig.leuart_gecko drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.litex drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.lpc11u6x drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.mcux_lpsci drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.native_posix drivers: Console: Move all posix arch boards to same driver 2023-05-26 12:57:41 +02:00
Kconfig.neorv32 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.npcx drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.ql_usbserialport_s3b drivers: serial: Add QuickLogic USBserialport_S3B support 2022-10-20 15:41:09 +02:00
Kconfig.rcar drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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 drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.sifive drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.smartbond drivers: serial: Add driver for smartbond 2022-08-31 20:32:03 +02:00
Kconfig.stellaris drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.stm32 drivers: serial: Reset UART using RCC before initialization 2022-12-09 09:43:36 -08:00
Kconfig.test drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.uart_sam drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.usart_sam drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.xec drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.xen drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.xlnx drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
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.c drivers: serial: uart_altera: add driver 2023-02-23 09:26:33 +01:00
uart_altera_jtag.c drivers: serial: uart_altera_jtag: enhancement 2023-01-27 14:24:43 -05:00
uart_apbuart.c drivers/apbuart: correct the baud formula 2023-03-27 22:15:33 +00:00
uart_b91.c include: add missing irq.h include 2022-10-11 18:05:17 +02:00
uart_cc13xx_cc26xx.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
uart_cc32xx.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
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 drivers: migrate includes to <zephyr/...> 2022-05-06 19:58:21 +02:00
uart_hostlink.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
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_hvc_xen_consoleio.c drivers: migrate includes to <zephyr/...> 2022-05-06 19:58:21 +02:00
uart_ifx_cat1.c drivers: serial: Add Infineon CAT1 UART driver 2023-03-01 11:44:57 +01:00
uart_imx.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
uart_ite_it8xxx2.c drivers: serial: ite_it8xxx2: add a dedicated priority symbol 2023-05-26 13:51:08 -04:00
uart_liteuart.c drivers: use unsigned int for irq_lock() 2022-07-14 14:37:13 -05:00
uart_lpc11u6x.c include: add missing irq.h include 2022-10-11 18:05:17 +02:00
uart_lpc11u6x.h drivers: serial: lpc11u6x: Remove DT_LABEL usage 2022-06-30 10:32:33 +02:00
uart_mchp_xec.c uart: microchip: fix build error with PM_DEVICE=n 2023-01-30 18:54:59 +00:00
uart_mcux.c drivers: uart_mcux: Do not enable and disable the transmitter 2023-05-16 12:08:32 +02: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 include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
uart_mcux_lpuart.c dma: callback with 2 status codes for successful transfers 2023-05-08 09:57:32 +02:00
uart_miv.c treewide: rename Microsemi to Microchip 2023-05-04 10:47:07 +02:00
uart_msp432p4xx.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
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 include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
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: ns16550: move command macro to public header 2022-11-10 22:40:21 -05:00
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 drivers: serial: pipe: init device at compile time and check if ready 2022-08-19 11:51:26 +02:00
uart_pl011.c barriers: Move __ISB() to the new API 2023-05-24 13:13:57 -04:00
uart_psoc6.c drivers: migrate includes to <zephyr/...> 2022-05-06 19:58:21 +02:00
uart_ql_usbserialport_s3b.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00
uart_ql_usbserialport_s3b.h drivers: serial: Add QuickLogic USBserialport_S3B support 2022-10-20 15:41:09 +02:00
uart_rcar.c treewide: Update clock control API usage 2023-04-05 10:55:46 +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_rpi_pico_pio.c drivers: serial: Added rpi_pico driver over PIO 2023-04-25 13:12:02 +02: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_sam.c treewide: Update clock control API usage 2023-04-05 10:55:46 +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_sifive.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
uart_smartbond.c include: add missing zephyr/kernel.h 2022-10-20 22:52:09 +09:00
uart_stellaris.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
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 include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
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