Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
9b80bd1
drivers: ethernet: stm32n6: Fix phy modes declarations
erwango Oct 1, 2025
6328b1f
drivers: ethernet: stm32n6: Remove attributes from extern definitions
erwango Oct 1, 2025
2ea266d
drivers: ethernet: stm32n6: Use zephyr symbol for alignment attribute
erwango Oct 1, 2025
f90a595
boards: st: stm32n6 boards: Add netif:eth twister support
erwango Oct 1, 2025
f563634
include: driver: video: add h264 pixel format support
thecapn32 Sep 3, 2025
84b19ab
include: video: add sizeimage field to video_format structure
hfruchet-st Oct 1, 2025
e645a36
west.yml: hal_stm32: pull vc8000nanoe library
hfruchet-st Sep 24, 2025
bb411f2
dts-bindings: video: addition of stm32 venc description
hfruchet-st Jun 18, 2025
97e26de
drivers: video: introduction of the stm32 venc driver
hfruchet-st Jun 18, 2025
917b3f9
dts: arm: st: n6: add venc node
hfruchet-st Jun 18, 2025
71ae957
doc: build: dts: api: document the zephyr,videoenc chosen node
hfruchet-st Sep 23, 2025
888f3a1
samples: video: tcpserversink: sync with capture sample
hfruchet-st Jun 24, 2025
83d447a
samples: video: tcpserversink: N-buffering configuration
hfruchet-st Jul 8, 2025
a67858f
samples: video: tcpserversink: video compression support
hfruchet-st Jun 26, 2025
79e03bb
samples: video: tcpserversink: add stm32n6570_dk support
hfruchet-st Jun 24, 2025
76a4904
tcpserversink: 192.168.0.4 to fit STM32MP25 eth1 (2nd port)
hfruchet-st Jul 9, 2025
85faaac
boards: st: stm32n6 boards: Add netif:eth twister support
erwango Oct 1, 2025
14c6cf2
drivers: ethernet: stm32n6: Fix phy modes declarations
erwango Oct 1, 2025
6d23a89
samples: video: tcpserversink: video compression support
hfruchet-st Jun 26, 2025
edbe3f9
samples: video: tcpserversink: nv12 support
hfruchet-st Jun 30, 2025
5fd0412
samples: video: tcpserversink: Add stm32n6570_dk as integration platform
erwango Oct 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions boards/st/nucleo_n657x0_q/twister.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ supported:
- dma
- i2c
- gpio
- netif:eth
- spi
- uart
- usb_device
- usbd
- netif:eth
vendor: st
variants:
nucleo_n657x0_q/stm32n657xx:
Expand Down
5 changes: 4 additions & 1 deletion boards/st/stm32n6570_dk/twister.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@ supported:
- dma
- i2c
- gpio
- pwm
- memc
- netif:eth
- pwm
- spi
- uart
- usb_device
- usbd
- netif:eth
- video
variants:
stm32n6570_dk/stm32n657xx:
twister: false
Expand Down
2 changes: 2 additions & 0 deletions doc/build/dts/api/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,8 @@ device.
WS2812 GPIO driver
* - zephyr,touch
- touchscreen controller device node.
* - zephyr,videoenc
- Video encoder device, typically an H264 or MJPEG video encoder.
* - mcuboot,ram-load-dev
- When a Zephyr application is built to be loaded to RAM by MCUboot, with
:kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_SINGLE_APP_RAM_LOAD`,
Expand Down
4 changes: 2 additions & 2 deletions drivers/ethernet/eth_stm32_hal_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ uint8_t dma_rx_buffer[ETH_RXBUFNB][ETH_STM32_RX_BUF_SIZE] __eth_stm32_buf;
uint8_t dma_tx_buffer[ETH_TXBUFNB][ETH_STM32_TX_BUF_SIZE] __eth_stm32_buf;

#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32n6_ethernet)
ETH_DMADescTypeDef dma_rx_desc_tab[ETH_DMA_RX_CH_CNT][ETH_RXBUFNB] ALIGN_32BYTES(__eth_stm32_desc);
ETH_DMADescTypeDef dma_tx_desc_tab[ETH_DMA_TX_CH_CNT][ETH_TXBUFNB] ALIGN_32BYTES(__eth_stm32_desc);
ETH_DMADescTypeDef dma_rx_desc_tab[ETH_DMA_RX_CH_CNT][ETH_RXBUFNB] __eth_stm32_desc __aligned(32);
ETH_DMADescTypeDef dma_tx_desc_tab[ETH_DMA_TX_CH_CNT][ETH_TXBUFNB] __eth_stm32_desc __aligned(32);
#else
ETH_DMADescTypeDef dma_rx_desc_tab[ETH_RXBUFNB] __eth_stm32_desc;
ETH_DMADescTypeDef dma_tx_desc_tab[ETH_TXBUFNB] __eth_stm32_desc;
Expand Down
44 changes: 23 additions & 21 deletions drivers/ethernet/eth_stm32_hal_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,12 @@ extern const struct device *eth_stm32_phy_dev;
#define __eth_stm32_buf __aligned(4)
#endif

#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32n6_ethernet)
#define STM32_ETH_PHY_MODE(inst) \
((DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, rgmii) ? ETH_RGMII_MODE : \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, gmii) ? ETH_GMII_MODE : \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, mii) ? ETH_MII_MODE : \
ETH_RMII_MODE))))
#else
#define STM32_ETH_PHY_MODE(inst) \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, mii) ? \
ETH_MII_MODE : ETH_RMII_MODE)
#endif

#if defined(CONFIG_ETH_STM32_HAL_API_V1)

#define ETH_MII_MODE ETH_MEDIA_INTERFACE_MII
#define ETH_RMII_MODE ETH_MEDIA_INTERFACE_RMII

#define ETH_STM32_AUTO_NEGOTIATION_ENABLE \
#define ETH_STM32_AUTO_NEGOTIATION_ENABLE \
UTIL_NOT(DT_NODE_HAS_PROP(DT_INST_PHANDLE(0, phy_handle), fixed_link))

#else /* CONFIG_ETH_STM32_HAL_API_V2 */
Expand All @@ -77,23 +65,37 @@ struct eth_stm32_tx_context {

#endif /* CONFIG_ETH_STM32_HAL_API_V2 */

#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32n6_ethernet)

#define ETH_GMII_MODE HAL_ETH_GMII_MODE
#define ETH_RGMII_MODE HAL_ETH_RGMII_MODE

#define STM32_ETH_PHY_MODE(inst) \
((DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, rgmii) ? ETH_RGMII_MODE : \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, gmii) ? ETH_GMII_MODE : \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, mii) ? ETH_MII_MODE : \
ETH_RMII_MODE))))
#else
#define STM32_ETH_PHY_MODE(inst) \
(DT_INST_ENUM_HAS_VALUE(inst, phy_connection_type, mii) ? \
ETH_MII_MODE : ETH_RMII_MODE)
#endif

/* Definition of the Ethernet driver buffers size and count */
#define ETH_STM32_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
#define ETH_STM32_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */

BUILD_ASSERT(ETH_STM32_RX_BUF_SIZE % 4 == 0, "Rx buffer size must be a multiple of 4");

extern uint8_t dma_rx_buffer[ETH_RXBUFNB][ETH_STM32_RX_BUF_SIZE] __eth_stm32_buf;
extern uint8_t dma_tx_buffer[ETH_TXBUFNB][ETH_STM32_TX_BUF_SIZE] __eth_stm32_buf;
extern uint8_t dma_rx_buffer[ETH_RXBUFNB][ETH_STM32_RX_BUF_SIZE];
extern uint8_t dma_tx_buffer[ETH_TXBUFNB][ETH_STM32_TX_BUF_SIZE];

#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32n6_ethernet)
extern ETH_DMADescTypeDef dma_rx_desc_tab[ETH_DMA_RX_CH_CNT][ETH_RXBUFNB]
ALIGN_32BYTES(__eth_stm32_desc);
extern ETH_DMADescTypeDef dma_tx_desc_tab[ETH_DMA_TX_CH_CNT][ETH_TXBUFNB]
ALIGN_32BYTES(__eth_stm32_desc);
extern ETH_DMADescTypeDef dma_rx_desc_tab[ETH_DMA_RX_CH_CNT][ETH_RXBUFNB];
extern ETH_DMADescTypeDef dma_tx_desc_tab[ETH_DMA_TX_CH_CNT][ETH_TXBUFNB];
#else
extern ETH_DMADescTypeDef dma_rx_desc_tab[ETH_RXBUFNB] __eth_stm32_desc;
extern ETH_DMADescTypeDef dma_tx_desc_tab[ETH_TXBUFNB] __eth_stm32_desc;
extern ETH_DMADescTypeDef dma_rx_desc_tab[ETH_RXBUFNB];
extern ETH_DMADescTypeDef dma_tx_desc_tab[ETH_TXBUFNB];
#endif

/* Device constant configuration parameters */
Expand Down
5 changes: 0 additions & 5 deletions drivers/ethernet/eth_stm32_hal_v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@

LOG_MODULE_DECLARE(eth_stm32_hal, CONFIG_ETHERNET_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32n6_ethernet)
#define ETH_GMII_MODE HAL_ETH_GMII_MODE
#define ETH_RGMII_MODE HAL_ETH_RGMII_MODE
#endif

#define ETH_DMA_TX_TIMEOUT_MS 20U /* transmit timeout in milliseconds */

struct eth_stm32_rx_buffer_header {
Expand Down
1 change: 1 addition & 0 deletions drivers/video/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ zephyr_library_sources_ifdef(CONFIG_VIDEO_OV7725 ov7725.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV2640 ov2640.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_GC2145 gc2145.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_STM32_DCMI video_stm32_dcmi.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_STM32_VENC video_stm32_venc.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV5640 ov5640.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV7670 ov7670.c)
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV9655 ov9655.c)
Expand Down
2 changes: 2 additions & 0 deletions drivers/video/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ source "drivers/video/Kconfig.ov2640"

source "drivers/video/Kconfig.stm32_dcmi"

source "drivers/video/Kconfig.stm32_venc"

source "drivers/video/Kconfig.ov5640"

source "drivers/video/Kconfig.ov7670"
Expand Down
23 changes: 23 additions & 0 deletions drivers/video/Kconfig.stm32_venc
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# STM32 VENC driver configuration options

# Copyright (c) 2025 STMicroelectronics.
# SPDX-License-Identifier: Apache-2.0

config VIDEO_STM32_VENC
bool "STM32 video encoder (VENC) driver"
default y
depends on DT_HAS_ST_STM32_VENC_ENABLED
select HAS_STM32LIB
select USE_STM32_LL_VENC
select USE_STM32_HAL_RIF if SOC_SERIES_STM32N6X
select RESET
help
Enable driver for STM32 video encoder peripheral.

if VIDEO_STM32_VENC

module = VC8000NANOE
module-str = vc8000nanoe
source "subsys/logging/Kconfig.template.log_config"

endif
Loading
Loading