:orphan: .. title:: CONFIG_UART_NS16550_WA_ISR_REENABLE_INTERRUPT .. kconfig:: CONFIG_UART_NS16550_WA_ISR_REENABLE_INTERRUPT CONFIG_UART_NS16550_WA_ISR_REENABLE_INTERRUPT ############################################# *Re-enable interrupts by toggling IER at end of ISR* Type: ``bool`` Help ==== .. code-block:: none In some configurations (e.g. edge interrupt triggers), an interruptible event occurs during ISR and the host interrupt controller does not see the new event due to IIR is constantly asserting interrupts. For example, the callback handles RX and then TX. If another character comes in before end of TX processing (TX interrupt still asserts while raising RX interrupt), the host interrupt controller may not see this new event. So if needed, the IER is being toggled to re-assert interrupts at the end of ISR to nudge the host interrupt controller to fire the ISR again. Direct dependencies =================== (\ :kconfig:`UART_NS16550 ` && \ :kconfig:`SOC_SERIES_RISCV32_IT8XXX2 `) || (\ :kconfig:`UART_INTERRUPT_DRIVEN ` && \ :kconfig:`UART_NS16550 ` && \ :kconfig:`SERIAL `) *(Includes any dependencies from ifs and menus.)* Default ======= - y Kconfig definitions =================== At ``/riscv/riscv-ite/it8xxx2/Kconfig.defconfig.series:32`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/riscv/riscv-ite/Kconfig.defconfig:4`` Menu path: (Top) .. code-block:: kconfig config UART_NS16550_WA_ISR_REENABLE_INTERRUPT bool default y depends on UART_NS16550 && SOC_SERIES_RISCV32_IT8XXX2 ---- At ``/serial/Kconfig.ns16550:46`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:42`` → ``/Kconfig:26`` → ``/serial/Kconfig:104`` Menu path: (Top) → Device Drivers → Serial Drivers → NS16550 serial driver → NS16550 Workarounds .. code-block:: kconfig config UART_NS16550_WA_ISR_REENABLE_INTERRUPT bool "Re-enable interrupts by toggling IER at end of ISR" depends on UART_INTERRUPT_DRIVEN && UART_NS16550 && SERIAL help In some configurations (e.g. edge interrupt triggers), an interruptible event occurs during ISR and the host interrupt controller does not see the new event due to IIR is constantly asserting interrupts. For example, the callback handles RX and then TX. If another character comes in before end of TX processing (TX interrupt still asserts while raising RX interrupt), the host interrupt controller may not see this new event. So if needed, the IER is being toggled to re-assert interrupts at the end of ISR to nudge the host interrupt controller to fire the ISR again. *(The 'depends on' condition includes propagated dependencies from ifs and menus.)*