zephyr/drivers/serial
Marco Widmer 5abd0035f2 drivers: serial: cmsdk_apb: lock irqs when writing the ctrl register
Enabling and disabling interrupts may happen concurrently from thread
and interrupt context. Add locks to synchronize the access to the ctrl
register.

This was observed to improve the stability of the zephyr,bt-hci-uart
driver when used with the cmsdk_apb uart driver.

Signed-off-by: Marco Widmer <marco.widmer@bytesatwork.ch>
2026-03-13 14:43:17 +01:00
..
CMakeLists.txt drivers: serial: Initial SAU UART driver support for Renesas RA0 series 2026-03-02 10:48:45 +01:00
Kconfig drivers: serial: add realtek bee serial driver 2026-02-17 15:22:38 +00:00
Kconfig.aesc drivers: serial: Add aesc UART driver 2025-05-14 14:09:41 +02:00
Kconfig.altera
Kconfig.altera_jtag doc: remove more occurances of Nios II 2025-05-15 20:01:05 -04:00
Kconfig.ambiq drivers: uart: ambiq: enable driver for apollo4x 2025-11-04 16:53:51 +02:00
Kconfig.ameba_loguart drivers: serial: add amebadplus loguart driver 2025-12-15 17:06:38 +00:00
Kconfig.apbuart
Kconfig.b91 drivers: all: telink-b91: select PINCTRL 2024-12-05 15:17:47 +01:00
Kconfig.bcm2711 drivers: uart: add pinctrl support for bcm2711 aux uart 2026-02-06 08:52:07 -06:00
Kconfig.bee drivers: serial: add realtek bee serial driver 2026-02-17 15:22:38 +00:00
Kconfig.bflb bflb: Make BL60x independant from SDK 2025-08-01 07:57:36 -04:00
Kconfig.bitbang drivers: serial: add uart-bitbang support 2025-08-19 19:13:19 +02:00
Kconfig.bridge serial: add an uart-bridge driver 2025-05-14 20:11:00 +01:00
Kconfig.bt serial: uart_bt: select SERIAL_SUPPORT_INTERRUPT 2025-05-19 18:39:16 +01:00
Kconfig.cc13xx_cc26xx drivers: all: cc12xx_cc26xx: select PINCTRL 2024-12-05 15:18:01 +01:00
Kconfig.cc23x0 drivers: serial: cc23x0: Add support for DMA mode 2025-06-10 12:08:22 +02:00
Kconfig.cc32xx
Kconfig.cdns
Kconfig.cmsdk_apb drivers: uart: adds pinctrl support for Arm cmsdk uart driver 2025-04-07 15:18:10 +02:00
Kconfig.efinix_sapphire
Kconfig.emul emul: Support UART device emulation 2024-07-30 18:28:17 +01:00
Kconfig.ene drivers: uart: uart driver 2025-06-27 10:57:20 +02:00
Kconfig.esp32 drivers: uart: esp32h2: Add ASYNC support 2025-10-09 12:36:11 -04:00
Kconfig.focaltech drivers: serial: focaltech: add ft9001 serial driver 2025-12-18 12:13:19 +00:00
Kconfig.gd32 soc: gd32: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:40:42 -06:00
Kconfig.gecko driver: serial: split silabs series 2 and series 0/1 boards usart driver 2025-01-21 19:29:25 +01:00
Kconfig.hostlink
Kconfig.imx boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.infineon dts: bindings: Drop cat1 from the infineon binding files 2025-12-17 13:58:09 -05:00
Kconfig.intel_lw drivers: serial: uart_intel_lw: add driver 2023-10-21 11:54:23 +02:00
Kconfig.it8xxx2 ITE: it8xxx2: Remove CONFIG_PINCTRL from soc defconfig file 2024-10-15 13:52:55 +02:00
Kconfig.it51xxx drivers/serial: Add ITE UART wrapper to enable serial driver of ns16550 2025-04-08 10:48:26 +02:00
Kconfig.leuart_gecko
Kconfig.litex dts: bindings: litex: rename uart compatible 2024-08-02 03:32:21 -04:00
Kconfig.lpc11u6x boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.max32 drivers: serial: More complete TX errata fix for MAX32 2026-02-27 21:09:31 +00:00
Kconfig.mchp drivers: uart: microchip: sercom g1: DMA selection for async mode 2026-01-09 10:41:23 +01:00
Kconfig.mcux
Kconfig.mcux_flexcomm drivers: uart_mcux_flexcomm: Enable as wakeup src 2025-05-30 19:40:11 +02:00
Kconfig.mcux_iuart boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.mcux_lpsci boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.mcux_lpuart drivers: uart_mcux_lpuart: Handle multiple uart case 2025-10-08 17:47:00 +03:00
Kconfig.miv
Kconfig.msp432p4xx
Kconfig.mspm0 serial: Add error checking and interrupt support on mspm0 driver 2025-08-19 19:13:34 +02:00
Kconfig.native_pty drivers serial native_pty: Add DT property to connect to stdin/out 2026-01-30 06:00:04 -06:00
Kconfig.native_tty uart_native_tty: Emulate an interrupt driven uart 2024-02-27 14:49:02 +01:00
Kconfig.neorv32
Kconfig.npcx drivers: kconfig: fix typo 2025-07-01 10:58:54 -10:00
Kconfig.nrfx Revert "drivers: serial: nrfx_uarte: Workaround for spurious RXTO during restart" 2026-02-09 15:59:02 +01:00
Kconfig.nrfx_uart_instance drivers: serial: nrfx_uarte: Refactor byte counting with TIMER 2026-02-03 12:12:41 +00:00
Kconfig.ns16550 drivers: serial: ns16550: Enable interrupts only if defined 2026-02-06 08:53:07 -06:00
Kconfig.numaker boards: nuvoton: numaker: Drop PINCTRL from board defconfig 2024-11-20 08:23:58 -05:00
Kconfig.numicro boards: nuvoton: numaker: Drop PINCTRL from board defconfig 2024-11-20 08:23:58 -05:00
Kconfig.nxp_s32 boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.opentitan drivers: serial: opentitan: remove bogus depends on clause 2025-09-19 08:06:42 +02:00
Kconfig.pl011 drivers: serial: pl011: Enable PINCTRL conjuction with dt prop 'pinctrl-0' 2025-01-07 00:26:37 +01:00
Kconfig.psoc6 Documentation: Update documenation for Infineon boards 2024-11-14 20:36:38 -06:00
Kconfig.ql_usbserialport_s3b
Kconfig.rcar drivers: rcar: Select CONFIG_PINCTRL 2024-11-22 17:41:02 +01:00
Kconfig.realtek_rts5912 serial: rts5912: implement power management 2025-10-02 11:47:32 +03:00
Kconfig.renesas_ra drivers: serial: Initial SAU UART driver support for Renesas RA0 series 2026-03-02 10:48:45 +01:00
Kconfig.renesas_ra8 drivers: Select PINCTRL for renesas RA drivers 2024-11-06 09:59:32 -08:00
Kconfig.renesas_rx drivers: serial: Add DTC support for serial driver and implement Async API 2025-10-14 12:53:49 +03:00
Kconfig.renesas_rx_qemu driver: serial: Add support for uart interface for qemu_rx 2025-05-02 09:18:16 +02:00
Kconfig.renesas_rz drivers: serial: Add support for Renesas RZ/V2H 2025-06-04 17:00:01 +02:00
Kconfig.rpi_pico soc: raspberrypi: Drop PINCTRL from Kconfig.defconfig 2024-11-25 14:42:01 +01:00
Kconfig.rtt serial: rtt: select SERIAL_SUPPORT_ASYNC 2023-03-30 09:51:18 +02:00
Kconfig.rv32m1_lpuart
Kconfig.rzt2m drivers: pinctrl: add RZT2M driver 2023-11-15 11:41:35 +01:00
Kconfig.sam0 soc: atmel: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:43:26 -06:00
Kconfig.sedi
Kconfig.sf32lb drivers: serial: sf32lb: add uart async API support 2025-12-31 11:00:08 +00:00
Kconfig.si32 drivers: serial: Add initial SiM3U1xx support 2024-08-26 18:51:36 +02:00
Kconfig.sifive soc: sifive: sifive_freedom: Fix SoC Kconfig naming and issues 2026-01-29 17:20:11 +01:00
Kconfig.silabs_eusart soc: silabs: Move Kconfig symbols for HAL selection to HAL 2025-10-22 09:03:15 +02:00
Kconfig.silabs_usart soc: silabs: Move Kconfig symbols for HAL selection to HAL 2025-10-22 09:03:15 +02:00
Kconfig.smartbond da1469x: Remove CONFIG_PINCTRL from all defconfig files 2024-10-08 16:57:41 +02:00
Kconfig.stellaris drivers: dts: ti: fix typo in "Texas Instruments" company name 2025-12-18 18:52:58 +00:00
Kconfig.stm32 driver: uart: stm32: Disable UART DMA before shutdown 2025-10-24 09:01:50 -07:00
Kconfig.sy1xx drivers: serial: sy1xx add support for pinctrl 2025-01-21 19:29:14 +01:00
Kconfig.test drivers: serial: serial_test: Move ring buf dep to Kconfig 2023-09-28 16:38:30 -04:00
Kconfig.uart_sam soc: atmel: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:43:26 -06:00
Kconfig.usart_sam drivers: serial: sam: update serial to support sama7g5 2025-05-28 08:14:08 +02:00
Kconfig.virtio_console drivers: serial: virtio_console: Make Kconfig more informative 2025-10-14 07:44:12 -04:00
Kconfig.wch_usart drivers: uart_wch: add interrupt-driven device bindings 2025-01-06 22:36:20 +01:00
Kconfig.xec drivers: microchip xec: select PINCTRL 2024-11-29 05:41:53 +01:00
Kconfig.xen drivers: xen: add XEN_EVENTS Kconfig option 2026-01-30 16:56:52 -06:00
Kconfig.xlnx drivers: serial: Update drivers to use devicetree Kconfig symbol 2022-07-21 10:29:06 +02:00
Kconfig.xmc4xxx SOC: Remove config PINCTRL from xmc4xxx soc 2024-12-02 22:05:16 +00:00
leuart_gecko.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
lpuart_esp32.c espressif: adapt to hal_espressif IDF master sync 2026-03-13 11:38:18 +01:00
serial_esp32_usb.c espressif: adapt to hal_espressif IDF master sync 2026-03-13 11:38:18 +01:00
serial_test.c drivers: serial: serial_test: Support irq_update call 2025-05-09 01:40:57 +02:00
uart_aesc.c drivers: serial: Place device APIs in linker sections 2025-06-27 10:09:32 -05:00
uart_altera.c drivers: serial: define default values for basic options 2025-01-15 19:04:56 +01:00
uart_altera_jtag.c arch: nios2: remove arch 2025-05-15 20:01:05 -04:00
uart_ambiq.c drivers: uart: ambiq: make driver compatible with apollo4x 2025-11-04 16:53:51 +02:00
uart_ameba_loguart.c drivers: serial: place API into iterable section 2026-01-26 14:02:16 -06:00
uart_apbuart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_async_rx.c serial: uart_async_rx: Avoid possible division by zero 2024-07-27 15:14:26 +03:00
uart_async_to_irq.c drivers: serial: uart_async_to_irq.c check if baudrate is not zero 2025-01-07 00:26:56 +01:00
uart_b91.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_bcm2711.c drivers: uart: add pinctrl support for bcm2711 aux uart 2026-02-06 08:52:07 -06:00
uart_bee.c drivers: serial: add rtl8752h serial driver 2026-03-09 15:03:48 -05:00
uart_bflb.c drivers: serial: bflb: do not enable rx and err interrupt by default 2026-01-21 20:06:48 +01:00
uart_bitbang.c serial: uart_bitbang: fix incorrect callback device 2025-12-17 10:52:33 +02:00
uart_bridge.c uart_bridge: log the device name on bitrate changes 2025-06-30 17:39:09 -05:00
uart_bt.c doc: fix spelling errors tree-wide 2025-09-03 17:04:13 +02:00
uart_cc13xx_cc26xx.c serial: cc13xx_cc26xx: Fix TX interrupt 2026-02-27 07:58:45 +01:00
uart_cc23x0.c drivers: serial: cc23x0: Replace incorrect macros 2025-10-16 22:31:52 -04:00
uart_cc32xx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_cdns.c drivers: serial: cdns: fix race conditon under heavy uart load 2025-12-01 08:26:56 +01:00
uart_cdns.h drivers: serial: correct spelling 2024-01-13 00:24:36 +00:00
uart_cmsdk_apb.c drivers: serial: cmsdk_apb: lock irqs when writing the ctrl register 2026-03-13 14:43:17 +01:00
uart_efinix_sapphire.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_emul.c drivers: uart: emul: Fix uninitialized variable errors 2025-08-14 15:49:49 +02:00
uart_ene_kb106x.c drivers: uart: uart driver 2025-06-27 10:57:20 +02:00
uart_ene_kb1200.c style: add missing curly braces in if/while/for statements. 2025-05-17 14:10:33 +02:00
uart_esp32.c espressif: adapt to hal_espressif IDF master sync 2026-03-13 11:38:18 +01:00
uart_ft9001.c drivers: serial: place API into iterable section 2026-01-26 14:02:16 -06:00
uart_gecko.c drivers: serial: silabs: Fix build for efm32wg_stk3800/efm32wg990f256 2025-02-05 14:58:28 +01:00
uart_handlers.c drivers: uart: fix incorrect handler check in uart_configure syscall 2025-12-22 14:50:23 +01:00
uart_hostlink.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_hvc_xen.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_hvc_xen_consoleio.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_imx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_infineon.c dts: bindings: Drop cat1 from the infineon binding files 2025-12-17 13:58:09 -05:00
uart_infineon_pdl.c drivers: serial: infineon: updated hardware flow control support 2026-03-06 09:57:43 +01:00
uart_intel_lw.c drivers: serial: define default values for basic options 2025-01-15 19:04:56 +01:00
uart_ite_it8xxx2.c drivers: serial: remove '&' when assigning init_fn 2024-07-27 20:48:34 +03:00
uart_ite_it51xxx.c drivers/serial: Add ITE UART wrapper to enable serial driver of ns16550 2025-04-08 10:48:26 +02:00
uart_litex.c drivers: serial: litex: fix is pending 2026-01-27 15:20:09 -06:00
uart_lpc11u6x.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_lpc11u6x.h zephyr: bulk update to DT_NODE_HAS_STATUS_OKAY 2024-10-03 17:06:52 +01:00
uart_max32.c drivers/serial: Add missing declarations in uart_max32.c 2026-03-04 14:28:47 +00:00
uart_mchp_sercom_g1.c drivers: uart: microchip: sercom g1: code improvements 2026-03-02 11:00:26 +01:00
uart_mchp_xec.c serial: uart_mchp_xec: fix TX complete status check 2026-02-04 13:53:23 +01:00
uart_mcux.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mcux_flexcomm.c drivers: nxp: Allow usage of clocks without subsystem name 2026-02-23 16:59:01 +00:00
uart_mcux_iuart.c drivers: serial: uart_mcux_iuart: Adjust FIFO fill behavior for TX 2026-01-06 13:37:54 +00:00
uart_mcux_lpsci.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mcux_lpuart.c drivers: mcux_lpuart: Handle STANDBY PM state in state-lock functions 2026-03-05 04:41:25 +01:00
uart_miv.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_msp432p4xx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mspm0.c drivers: uart: Add configure/config_get API support for mspm0 driver 2025-11-21 10:10:11 +02:00
uart_native_pty.c drivers serial native_pty: Add DT property to connect to stdin/out 2026-01-30 06:00:04 -06:00
uart_native_pty_bottom.c includes: remove duplicated entries in zephyr-tree 2025-12-17 13:57:38 -05:00
uart_native_pty_bottom.h serial: uart_native_pty: IRQ support 2025-08-19 19:14:21 +02:00
uart_native_tty.c drivers: serial: native_tty: change init priority 2025-07-25 07:45:19 -04:00
uart_native_tty_bottom.c drivers/serial/uart_native_tty: Set TTY to be closed on exec 2025-10-02 22:00:02 +02:00
uart_native_tty_bottom.h drivers: serial: native_tty: config_get support 2025-07-24 02:47:59 -04:00
uart_neorv32.c drivers: serial: uart: neorv32: neorv32_uart_config_get() can be unused 2025-03-15 00:35:36 +01:00
uart_npcx.c drivers: uart: npcx: support additional capabilities 2025-10-16 17:15:30 +03:00
uart_nrfx_uart.c drivers: serial: use proper essential type in boolean variables assignments 2026-02-05 10:20:22 +00:00
uart_nrfx_uarte.c drivers: serial: nrfx_uarte: Fix wrong endif use 2026-02-13 13:55:53 +01:00
uart_ns16550.c drivers: uart: ns16550: clear TX and RX FIFOs when initial 2026-02-13 18:56:41 +00:00
uart_numaker.c drivers: serial: numaker: support hw-flow-control 2025-06-27 12:22:12 +02:00
uart_numicro.c soc: nuvoton m48x: use numaker reset driver for uart 2026-02-23 08:48:43 +01:00
uart_nxp_s32_linflexd.c drivers: uart_nxp_s32_linflexd: support config via devicetree 2025-04-23 11:48:24 +02:00
uart_nxp_s32_linflexd.h drivers: uart_nxp_s32_linflexd: support config via devicetree 2025-04-23 11:48:24 +02:00
uart_opentitan.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_pipe.c
uart_pl011.c drivers: serial: pl011: fix SBSA IRQ config function reference 2026-01-29 16:11:53 -06:00
uart_pl011_ambiq.h drivers: serial: pl011: only declare ambiq pm action when used 2025-10-01 08:27:59 +02:00
uart_pl011_raspberrypi_pico.h drivers: serial: pl011: Add support for Ambiq Apollo2 SoC UART 2025-08-19 18:00:41 +02:00
uart_pl011_registers.h drivers: serial: pl011: Add support for Ambiq Apollo510 SoC UART 2025-04-21 20:04:31 +02:00
uart_psoc6.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_ql_usbserialport_s3b.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_ql_usbserialport_s3b.h drivers: serial: correct spelling 2024-01-13 00:24:36 +00:00
uart_rcar.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_realtek_rts5912.c serial: rts5912: implement power management 2025-10-02 11:47:32 +03:00
uart_renesas_ra8_sci_b.c drivers: serial: fix IAR warning Pe1072 about declaration after a label 2026-01-04 14:11:51 +01:00
uart_renesas_ra_sau.c drivers: serial: Initial SAU UART driver support for Renesas RA0 series 2026-03-02 10:48:45 +01:00
uart_renesas_ra_sci.c drivers: Update p_context for all Renesas drivers 2025-08-08 11:52:13 +03:00
uart_renesas_rx_sci.c drivers: serial: Add support for group interrupt in the serial driver 2026-02-25 13:02:41 +01:00
uart_renesas_rx_sci_qemu.c drivers: serial: Place device APIs in linker sections 2025-06-27 10:09:32 -05:00
uart_renesas_rz_sci.c drivers: serial: renesas: Add support for RZ/T2H, N2H 2026-03-10 09:33:25 +01:00
uart_renesas_rz_scif.c drivers: serial: renesas: Initialize p_reg in extended configuration 2026-02-03 09:29:36 +01:00
uart_renesas_rza2m_scif.c drivers: serial: Add support for RZ/A2M 2025-04-25 14:05:01 +02:00
uart_rpi_pico_pio.c drivers: serial: Pico PIO UART wait for initial high 2025-01-27 21:03:48 +01:00
uart_rtt.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_rv32m1_lpuart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_rzt2m.c drivers: serial: define default values for basic options 2025-01-15 19:04:56 +01:00
uart_rzt2m.h drivers: serial: add RZT2M uart driver 2023-11-15 11:41:35 +01:00
uart_sam.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_sam0.c drivers: serial: sam0: Fix rx ready 2025-09-01 16:56:36 +01:00
uart_sedi.c drivers: serial: uart_sedi: Remove unused variable 'mask' 2025-07-14 11:18:45 -10:00
uart_sf32lb.c drivers: serial: place API into iterable section 2026-01-26 14:02:16 -06:00
uart_shell.c drivers: serial: uart_shell: avoid utilization of C23 extension 2026-02-11 15:04:40 -06:00
uart_si32_usart.c drivers: serial: define default values for basic options 2025-01-15 19:04:56 +01:00
uart_sifive.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_silabs_eusart.c drivers: serial: silabs: Fix async race condition 2026-01-30 06:00:41 -06:00
uart_silabs_usart.c drivers: serial: silabs: Fix async race condition 2026-01-30 06:00:41 -06:00
uart_smartbond.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_stellaris.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_stm32.c drivers: *: stm32: don't check if clock device is ready 2026-02-13 18:59:16 +00:00
uart_stm32.h drivers: serial: uart_stm32: make ptr to clock device const 2026-01-09 07:57:04 -06:00
uart_sy1xx.c drivers: serial: sy1xx add support for pinctrl 2025-01-21 19:29:14 +01:00
uart_virtio_console.c drivers: serial: virtio_console: fix port adding during poll 2025-10-15 17:36:48 -04:00
uart_wch_usart.c modules: Update hal_wch 2025-05-24 18:03:53 +02:00
uart_xlnx_ps.c drivers: serial: xuartps: removing redundant include 2025-03-19 01:27:01 +01:00
uart_xlnx_uartlite.c drivers: serial: uart_xlnx_uartlite: set irq flags per device tree 2025-06-11 08:19:28 +02:00
uart_xmc4xxx.c drivers: serial: uart_xmc4xxx: Enable run time configuration 2026-01-22 14:30:26 -06:00
usart_gd32.c drivers: serial: gd32: add UART runtime configure support 2026-01-11 13:04:25 +01:00
usart_sam.c drivers: serial: sam: update serial to support sama7g5 2025-05-28 08:14:08 +02:00