zephyr/drivers/serial
Paul Sokolovsky 57286afdd6 drivers: uart: Allow to pass arbitrary user data to irq callback
Zephyr UART drivers offer very low-level functionality. Oftentimes,
it would be useful to provide higher-level wrappers around UART
device which would offer additional functionality. However, UART
driver irq callback routine receives just a pointer to (low-level)
UART device, and it's not possible to get to a wrapper structure
(without introducing expensive external mapping structures). This
is an indirect reason why the current UARt wrappers - uart_pipe,
console - are instantiated statically just for one underlying UART
device and cannot be reused for multiple devices.

Solve this by allowing to pass an arbitrary user data to irq
callback, set by new uart_irq_callback_user_data_set() function.
Existing uart_irq_callback_set() keeps setting a callback which
will receive pointer to the device.

While public API maintains compatibility, drivers themselves need
to be updated to support arbitrary user data storage/passing (as
legacy uart_irq_callback_set() functionality is now implemented in
terms of it).

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2018-08-02 19:20:12 +02:00
..
CMakeLists.txt
Kconfig
Kconfig.altera_jtag
Kconfig.cc32xx
Kconfig.cmsdk_apb
Kconfig.esp32
Kconfig.fe310
Kconfig.gecko
Kconfig.imx
Kconfig.mcux
Kconfig.mcux_lpc_usart
Kconfig.mcux_lpsci
Kconfig.mcux_lpuart
Kconfig.miv
Kconfig.msp432p4xx
Kconfig.nrfx
Kconfig.ns16550
Kconfig.nsim
Kconfig.qmsi
Kconfig.riscv_qemu
Kconfig.sam0
Kconfig.stellaris
Kconfig.stm32
Kconfig.uart_sam
Kconfig.usart_sam
uart_altera_jtag_hal.c
uart_cc32xx.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_cmsdk_apb.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_esp32.c
uart_fe310.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_gecko.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_handlers.c
uart_imx.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_mcux_lpsci.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_mcux_lpuart.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_mcux.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_miv.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_msp432p4xx.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_nrfx_uart.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_nrfx_uarte.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_ns16550.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_ns16550.h
uart_nsim.c
uart_qmsi.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_riscv_qemu.c
uart_sam.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_sam0.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_stellaris.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_stm32.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
uart_stm32.h drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00
usart_mcux_lpc.c
usart_sam.c drivers: uart: Allow to pass arbitrary user data to irq callback 2018-08-02 19:20:12 +02:00