zephyr/drivers/serial
Krzysztof Chruściński c8d50e4ef1 drivers: serial: nrfx_uarte: Add support for non ISR PM mode
When fast UARTE instance is used (e.g. UARTE120 in nrf54h20), PM actions
are not ISR safe because they include communication over IPC so they can
only be called from the thread context. Extend driver to support both
PM modes. When non ISR mode is used then uart_rx_enable() and uart_tx()
will return error if they are called from ISR and resume operation
would need to be called because device is suspended. On completion,
driver is calling pm_device_runtime_put_async which can be called from
the ISR context.

Additionally, suspending in the TXSTOPPED and RXTO events has been
moved after user callback. It allows to support the case where
uart_rx_enable() or uart_tx() are called from that callback context.
Since suspending is called after returning from the callback it will
not trigger suspend action because API called in the callback context
will increment the usage counter (when pm_device_runtime_get() is
called).

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-12-09 22:05:03 +00:00
..
CMakeLists.txt drivers: add the ch32v00x usart driver 2024-11-26 14:41:46 +00:00
Kconfig drivers: add the ch32v00x usart driver 2024-11-26 14:41:46 +00:00
Kconfig.altera
Kconfig.altera_jtag
Kconfig.apbuart
Kconfig.b91 drivers: all: telink-b91: select PINCTRL 2024-12-05 15:17:47 +01:00
Kconfig.bcm2711
Kconfig.bt
Kconfig.cc13xx_cc26xx drivers: all: cc12xx_cc26xx: select PINCTRL 2024-12-05 15:18:01 +01:00
Kconfig.cc32xx
Kconfig.cdns
Kconfig.cmsdk_apb
Kconfig.efinix_sapphire
Kconfig.emul
Kconfig.ene
Kconfig.esp32
Kconfig.gd32 soc: gd32: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:40:42 -06:00
Kconfig.gecko drivers: serial: gecko: Add PINCTRL dependency 2024-11-26 15:42:02 -05:00
Kconfig.hostlink
Kconfig.ifx_cat1 drivers: Remove CONFIG_PINCTRL in defconfig files 2024-09-23 18:08:14 -04:00
Kconfig.imx boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.intel_lw
Kconfig.it8xxx2 ITE: it8xxx2: Remove CONFIG_PINCTRL from soc defconfig file 2024-10-15 13:52:55 +02:00
Kconfig.leuart_gecko
Kconfig.litex
Kconfig.lpc11u6x boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.max32
Kconfig.mcux
Kconfig.mcux_flexcomm
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
Kconfig.miv
Kconfig.msp432p4xx
Kconfig.native_posix
Kconfig.native_tty
Kconfig.neorv32
Kconfig.npcx board: npcx: remove CONFIG_PINCTRL from defconfig of npcx boards 2024-11-07 08:59:14 -08:00
Kconfig.nrfx drivers: serial: nrfx_uarte: Deprecate CONFIG_UART_x_NRF_HW_ASYNC 2024-12-06 12:14:02 +01:00
Kconfig.nrfx_uart_instance drivers: serial: nrfx_uarte: Deprecate CONFIG_UART_x_NRF_HW_ASYNC 2024-12-06 12:14:02 +01:00
Kconfig.ns16550 drivers: serial: ns16550: select PINCTRL if necessary 2024-12-06 12:13:45 +01: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
Kconfig.pl011
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.renesas_ra boards: mikroe: remove CONFIG_PINCTRL from defconfig of RA4M1 clicker 2024-10-05 14:05:48 -04:00
Kconfig.renesas_ra8 drivers: Select PINCTRL for renesas RA drivers 2024-11-06 09:59:32 -08:00
Kconfig.rpi_pico soc: raspberrypi: Drop PINCTRL from Kconfig.defconfig 2024-11-25 14:42:01 +01:00
Kconfig.rtt
Kconfig.rv32m1_lpuart
Kconfig.rzt2m
Kconfig.sam0 soc: atmel: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:43:26 -06:00
Kconfig.sedi
Kconfig.si32
Kconfig.sifive
Kconfig.smartbond da1469x: Remove CONFIG_PINCTRL from all defconfig files 2024-10-08 16:57:41 +02:00
Kconfig.stellaris
Kconfig.stm32
Kconfig.sy1xx
Kconfig.test
Kconfig.uart_sam soc: atmel: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:43:26 -06:00
Kconfig.usart_sam soc: atmel: Drop PINCTRL from Kconfig.defconfig 2024-11-04 13:43:26 -06:00
Kconfig.wch_usart drivers: add the ch32v00x usart driver 2024-11-26 14:41:46 +00:00
Kconfig.xec drivers: microchip xec: select PINCTRL 2024-11-29 05:41:53 +01:00
Kconfig.xen
Kconfig.xlnx
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
serial_esp32_usb.c drivers: serial: Move esp32 serial UART API from DRAM to ROM 2024-12-02 22:08:56 +00:00
serial_test.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_altera_jtag.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_altera.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_apbuart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_async_rx.c
uart_async_to_irq.c drivers: serial: uart_async_to_irq: Fix uart_irq_tx_complete 2024-10-29 07:10:08 -05:00
uart_b91.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_bcm2711.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_bt.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_cc13xx_cc26xx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_cc32xx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_cdns.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_cdns.h
uart_cmsdk_apb.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_efinix_sapphire.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_emul.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_ene_kb1200.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_esp32.c drivers: serial: Move esp32 serial UART API from DRAM to ROM 2024-12-02 22:08:56 +00:00
uart_gecko.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_handlers.c
uart_hostlink.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_hvc_xen.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_ifx_cat1.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_intel_lw.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_ite_it8xxx2.c
uart_litex.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00: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: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mchp_xec.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mcux_flexcomm.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mcux_iuart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +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: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_mcux.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00: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_native_ptty_bottom.c
uart_native_ptty_bottom.h
uart_native_ptty.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_native_tty_bottom.c
uart_native_tty_bottom.h
uart_native_tty.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_neorv32.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_npcx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_nrfx_uart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_nrfx_uarte2.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_nrfx_uarte.c drivers: serial: nrfx_uarte: Add support for non ISR PM mode 2024-12-09 22:05:03 +00:00
uart_ns16550.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_numaker.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_numicro.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_nxp_s32_linflexd.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_nxp_s32_linflexd.h
uart_opentitan.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_pipe.c
uart_pl011_ambiq.h
uart_pl011_raspberrypi_pico.h
uart_pl011_registers.h
uart_pl011.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00: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
uart_rcar.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_renesas_ra8_sci_b.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_renesas_ra_sci.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_renesas_ra.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_rpi_pico_pio.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00: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: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_rzt2m.h
uart_sam0.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_sam.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_sedi.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_si32_usart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_sifive.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00: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: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_stm32.h
uart_sy1xx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_wch_usart.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_xlnx_ps.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_xlnx_uartlite.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
uart_xmc4xxx.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
usart_gd32.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00
usart_sam.c drivers: serial: Place API into iterable section 2024-12-02 22:08:56 +00:00