The driver implements the QEMU ramfb as a framebuffer-based display.
It only implements the basic capabilities necessary (ARGB8888) with
resolution configurable via DTS. For initialization it uses the fwcfg
driver.
Signed-off-by: Maximilian Zimmermann <gitmz@posteo.de>
Fixes the no-mt test at tests/arch/riscv/pmp/isr-stack-guard
by making the driver work without MULTITHREADING primitives
if they are disabled.
Signed-off-by: Maximilian Zimmermann <gitmz@posteo.de>
Add video_import_buffer() API and necessary changes to support buffers
allocated from outside, not from the video heap.
Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
Currently, the video_enqueue() API enqueues the whole external video
buffer container structure from the application and the driver stores
this container in its FIFO queue.
While it works in simple applications where the enqueued video_buffer
container persists for the whole program lifecycle, it does not work in
situations where we cannot keep this container, e.g. enqueuing a buffer
inside a function, the local variable will be destroyed when the function
returns and hence the buffer is no longer valid.
Video buffers can be tracked via their indices in the buffer pool.
Set the index field when buffers are allocated and enqueue the internal
buffer rather than the external one to fix the issue.
Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
PM suspend operation cannot be performed for UART using asynchronous
API is there are any active operations. Instead of asserting return
error.
Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
1. Keep drivers/timer/cortex_m_systick.h as a compatibility
shim for legacy Cortex-M-specific names.
2. Switch to use the generic low-power companion timer API
for the Cortex-M SysTick driver.
3. Mark the global CORTEX_M_SYSTICK_LPM_* kconfig options
as 'DEPRECATED' and replace them with SYSTEM_TIMER_LPM_*
4. Rename 'zephyr,cortex-m-idle-timer' to
'zephyr,system-timer-companion'
Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
The supported pixel formats are the most important thing in
get_capabilities() but not reported. Fix it.
Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
Add PIXEL_FORMAT_XRGB_8888 and the corresponding panel format.
Add support for this format in display_sdl driver as well.
Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
syscon does not support clock get rate function for lpuart
for MCXL family.
Enable lpuart clock get rate function for MCXL family.
Signed-off-by: Michal Smola <michal.smola@nxp.com>
MCXL family has only PORT1, 2 and 3 controlled by syscon.
Do not enable clock for PORT0 in syscon driver.
Signed-off-by: Michal Smola <michal.smola@nxp.com>
The async mode ISR silently cleared RX error flags (overrun, parity,
framing, noise) without notifying the application. This violates the
Zephyr async UART API which requires a UART_RX_STOPPED event followed
by UART_RX_BUF_RELEASED and UART_RX_DISABLED.
Enable RX error interrupts alongside the idle-line interrupt, and
handle them in the ISR by reporting UART_RX_STOPPED with the
appropriate reason bitmask, then calling rx_disable() for the full
API-mandated teardown sequence.
Also set rx_dma_params.buf to NULL in rx_disable() after releasing
buffers, so stale pointers are not left behind.
Signed-off-by: Ofir Shemesh <ofirshemesh777@gmail.com>
Clear rx_dma_params.buf to NULL in mcux_lpuart_rx_disable() after
releasing all buffers. Without this, the stale pointer remains set
after RX teardown, which can cause subsequent checks against buf
to incorrectly assume RX is still active.
Signed-off-by: Ofir Shemesh <ofirshemesh777@gmail.com>
The PSOC4 flash driver accepted unaligned write offsets and sizes,
using a read-modify-write path to handle sub-row writes. This
violated the flash API contract, as the driver advertises
write_block_size=256 via devicetree.
Additionally, the Infineon HAL function Cy_Flash_WriteRow() requires
row-aligned addresses and exactly CY_FLASH_SIZEOF_ROW bytes of data.
The R-M-W path was passing unaligned addresses to the HAL, which
would reject them, but the driver was not checking the return value
and silently reported success after failed writes.
Add write alignment validation for both offset and size. Remove the
dead read-modify-write code path. Add missing error checking on
Cy_Flash_WriteRow() return value in the write loop, consistent with
the erase function.
Handle caller-provided data buffers that are not 4-byte aligned by
staging each row through a local aligned buffer before calling
Cy_Flash_WriteRow(), which requires a uint32_t-aligned source
pointer. When the source is already aligned, it is passed directly
with no copy overhead.
Signed-off-by: Braeden Lane <Braeden.Lane@infineon.com>
remove redundant net_pkt_set_iface() it is already set in
net_recv_data() and net_pkt_rx_alloc_with_buffer().
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
The previous 40 KB default heap was at the edge for the Wi-Fi driver,
which can lead to allocation failures. Increase to 50 KB to provide
adequate memory for Wi-Fi operation.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend the ESP32 Wi-Fi driver to support ESP32-C5, the first
Espressif SoC with dual-band Wi-Fi 6 (2.4 GHz and 5 GHz).
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend the ESP32 LEDC PWM driver to support ESP32-C5. Clear the
gamma RAM fade function on SoCs that have it to prevent stale
fade parameters from affecting duty cycle output.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend the ESP32 GDMA driver to support ESP32-C5. Add the C5 SoC to
the AHB GDMA configuration and define the per-channel interrupt
source mappings.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Add ESP32-C5 support to the RTC counter driver. The C5 uses a
different LP timer interrupt status register field
(soc_wakeup_int_st) compared to other SoCs (alarm), requiring a
SoC-specific macro for the interrupt status check.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend UART and USB serial drivers to support ESP32-C5. Add UHCI0
compatibility macro since the ESP32-C5 HAL exports the UHCI
peripheral as UHCI instead of UHCI0.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Add CLIC interrupt controller support for ESP32-C5. Set the SHV
(selective hardware vectoring) bit for each allocated interrupt
so the CLIC dispatches through the mtvt vector table.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend the ESP32 GPIO driver to support ESP32-C5 by adding the
SoC series to the register struct compatibility defines.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Disable the interrupt before reconfiguring its type to prevent
spurious triggers and edge detector asymmetry. Without this, the
first gpio_pin_interrupt_configure(GPIO_INT_EDGE_BOTH) can leave
the edge detector in an inconsistent state causing a persistent
timing offset between rising and falling edge detection.
Also skip the enable call when the requested mode is disable,
avoiding a redundant enable immediately after setting the type to
GPIO_INTR_DISABLE.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Introduce a system timer driver that uses the MAX32 Wake-up Timer as the
system tick source. This enables the MAX32 SoC family to use the WUT for
kernel timing operations.
Signed-off-by: Tahsin Mutlugun <Tahsin.Mutlugun@analog.com>
Add an HCI driver for the BL702 on-chip BLE controller. The controller
is a precompiled binary blob communicating via vendor on-chip HCI
functions (bt_onchiphci_send/bt_onchiphci_interface_init).
The driver:
- Translates between Zephyr HCI net_buf and the vendor's internal
packet structures for both TX (commands, ACL data) and RX (events,
ACL data)
- Uses a dedicated RX thread with FIFO+semaphore to dequeue messages
from the controller callback (which may run in ISR context)
- Reads the BLE MAC address from eFuse during initialization
- Supports multiple controller binary variants via Kconfig choice
(peripheral-only, multi-role, observer, etc.)
- Provides proper open/close lifecycle with RX queue draining
Also adds the DT binding (bflb,bl70x-bt-hci) and a bt-hci node in
the BL70X SoC dtsi (disabled by default).
Signed-off-by: William Markezana <william.markezana@gmail.com>
# Conflicts:
# drivers/bluetooth/hci/CMakeLists.txt
Add driver for the QST QMI8658A 6-axis inertial measurement unit
with accelerometer and gyroscope. Supports I2C bus, configurable
full-scale range and ODR via devicetree, temperature readout, and
optional data-ready interrupt trigger on INT2.
Signed-off-by: William Markezana <william.markezana@gmail.com>
Adds runtime device power management support to MAX32 Wake-up Timer
driver. The suspend routine is intentionally left unimplemented to
allow the Wake-up Timer to continue counting while the device is in
sleep mode.
Signed-off-by: Tahsin Mutlugun <Tahsin.Mutlugun@analog.com>
MSIS and MSIK requires either LSE at 32.768kHz or HSE at 16MHz or 32MHz
to enable their PLL mode for auto-calibration.
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Correct assertion on MSIS/MSIK PLL mode configuration regarding
dependency on LSE clock rate and MSIS/MSIK source clock.
While at it, replace the runtime assertion with a build time assertion
and move all the MSIS/MSIK configuration assertion outside
set_up_fixed_clock_sources() local function.
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Change STM32_LSE_ENABLED, STM32_MSIS_ENABLED and STM32_MSIK_ENABLED
macros to not be defined when the related clock is not enable in Zephyr
scope. This is their expected state where used in the implementation
(e.g., relying on #ifdef) but at a few places regarding STM32_LSE_ENABLED
that are also fixed by this change. While at it, replace two runtime
assertions with build time assertions.
This change makes these macros more consistent with the other
main clock enable state macros (STM32_LSI_ENABLED, STM32_HSI_ENABLED,
STM32_HSE_ENABLED, etc...).
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Fix two bugs in the timer counter driver that prevent tests
from passing.
-EBUSY should be returned from set_top_value() if there are
active alarms, not if the counter has been started.
The ISR should only process interrupts that are currently enabled,
not all pending flags.
Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
start rx and link status thread in iface init,
as only then the iface pointer in the data
struct is set.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
start rx and link status thread in iface init,
as only then the iface pointer in the data
struct is set.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
start rx and link status thread in iface init,
as only then the iface pointer in the data
struct is set.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>