Migration guide to Zephyr v4.4.0 (Working Draft)

This document describes the changes required when migrating your application from Zephyr v4.3.0 to Zephyr v4.4.0.

Any other changes (not directly related to migrating applications) can be found in the release notes.

Build System

  • Zephyr now officially defaults to C17 (ISO/IEC 9899:2018) as its minimum required C standard version. If your toolchain does not support this standard you will need to use one of the existing and now deprecated options: CONFIG_STD_C99 or CONFIG_STD_C11.

  • The full_name property of board/boards entries corresponding to new boards in board.yml files is now required.

  • The CMake variable BOARD_QUALIFIERS is aligned with the corresponding CONFIG_BOARD_QUALIFIERS so that it is no longer prefixed with a /. This means that any use of ${BOARD}${BOARD_QUALIFIERS} must be updated to include /, like this: ${BOARD}/${BOARD_QUALIFIERS}.

Kernel

Boards

  • The OpenOCD runner now uses the standard --file and --file-type interface for specifying flash files, aligning with other runners like JLink. The following changes apply:

    • The --use-hex, --use-elf, and --use-bin flags are deprecated. Use --file-type instead:

      • --use-elf--file-type=elf

      • --use-bin--file-type=bin

      • --use-hex--file-type=hex (or omit, as hex is the default)

    • The --file option is now supported to specify a custom file path, similar to the JLink runner.

    • Board cmake files using the deprecated flags will continue to work but will emit a deprecation warning.

    • The --file-type option can now be used without --file to select between build artifacts (hex, elf, bin).

  • m5stack_fire: Removed unused pinctrl entries for UART2, and updated the UART1 pin mapping from GPIO32/GPIO33 to GPIO16/GPIO17 to match the documented Grove PORT.C wiring.

  • Compile definitions ‘XIP_EXTERNAL_FLASH’, ‘USE_HYPERRAM’ and ‘XIP_BOOT_HEADER_XMCD_ENABLE’ are only used in boards/nxp/mimxrt1180_evk/xip/evkmimxrt1180_flexspi_nor_config.c and boards/nxp/mimxrt1170_evk/xmcd/xmcd.c, we have changed them to local scope in the respective board CMakeLists.txt files. Applications that depended on these definitions being globally available may need to be updated. (GitHub #101322)

  • Renesas ek_ra8t2/r7ka8t2lfecac/cm85 is renamed to ek_ra8t2/r7ka8t2lflcac/cm85.

  • NXP has changed the scope of some in-tree compile flags to limit their visibility to only where they are needed. Out-of-tree applications or boards that depended on these flags being globally available may need to add them to their own CMakeLists.txt files to ensure they continue to build correctly. (GitHub #100252) The affected flags are listed below:

    • For the RT10xx and RT11xx families, the compile flag BOARD_FLASH_SIZE, originally defined in boards/nxp/mimxrt10xx_evk/CMakeLists.txt and boards/nxp/mimxrt11xx_evk/CMakeLists.txt, is used only by the HAL header fsl_flexspi_nor_boot.h, which is included by soc/nxp/imxrt/imxrt10xx/soc.c and soc/nxp/imxrt/imxrt11xx/soc.c. To avoid potential collisions with other global flags, the macro is now defined at the SoC layer using zephyr_library_compile_definitions() in soc/nxp/imxrt/imxrt10xx/CMakeLists.txt and soc/nxp/imxrt/imxrt11xx/CMakeLists.txt. This change has been applied to all RTxxxx boards.

    • For the RTxxx family, the compile flag BOARD_FLASH_SIZE, originally defined in boards/nxp/mimxrtxxx_evk/CMakeLists.txt, is not used in the Zephyr tree and has therefore been removed from all RTxxx board CMakeLists.txt files.

    • For the RTxxx family, the compile flag BOOT_HEADER_ENABLE, previously defined in boards/nxp/mimxrtxxx_evk/CMakeLists.txt and used in boards/nxp/rtxxx/<boot_header>.c, has been replaced by a Kconfig option. Consequently, the line zephyr_compile_definitions(BOOT_HEADER_ENABLE=1) has been removed from the RTxxx board CMakeLists.txt files.

    • Removed compile flag BOOT_HEADER_ENABLE definition from boards/nxp/rd_rw612_bga/CMakeLists.txt, as it is not used in the Zephyr tree.

    • Originally, the compile flags XIP_BOOT_HEADER_ENABLE and XIP_BOOT_HEADER_DCD_ENABLE were used in boards/nxp/rt1xxx/<boot_header>.c. These flags have been converted to Kconfig options across NXP RTxxxx evaluation boards, allowing boot-header configuration via the Kconfig build system instead of compile-time defines. Consequently, we removed zephyr_compile_definitions(XIP_BOOT_HEADER_ENABLE=1) and zephyr_compile_definitions(XIP_BOOT_HEADER_DCD_ENABLE=1) from the RTxxxx board-level CMakeLists.txt files. Because these macros are also required by hal_nxp/rt10xx/fsl_flexspi_nor_boot.h and hal_nxp/rt11xx/fsl_flexspi_nor_boot.h, they were added to the corresponding SoC-layer CMakeLists.txt files using zephyr_library_compile_definitions() to limit their scope.

  • The following Nordic SoC Kconfigs have been deprecated and replaced, and Kconfig/CMake/code needs to be updated if they reference the deprecated Kconfigs:

  • ITE it515xx_evb is renamed to it51xxx_evb.

Device Drivers and Devicetree

ADC

  • The renesas,ra-adc compatible has been replaced by renesas,ra-adc12. Applications using the old compatible must update their devicetree nodes.

  • The renesas,ra-adc16 compatible was added. This must be used when working with the EK-RA2A1 board, which provides a 16-bit ADC resolution.

  • Renamed the CONFIG_ADC_MCUX_SAR_ADC to CONFIG_ADC_NXP_SAR_ADC.

  • Renamed the driver file from adc_mcux_sar_adc.c to drivers/adc/adc_nxp_sar_adc.c.

  • Applications using the SAR ADC driver need to update the nodes in the devicetree to include zephyr,input-positive to specify the hardware channel. For SoCs that currently support SAR ADC, the reference voltage should use ADC_REF_VDD_1 instead of ADC_REF_INTERNAL. This driver update also corrects this issue, so users also need to update the value of this property in the devicetree accordingly. (GitHub #100978)

  • st,stm32-adc no longer has the resolutions property. It is replaced by the st,adc-resolutions property. For STM32H7 devices in revision Y, it is no longer needed to replace the 14 and 12-bit resolution values. This change may have an impact on power consumption if 14 or 12-bit resolutions are used. Previously, power-optimized values were used, now the standard values (not power-optimized but better accuracy) are used. No impact on other series.

Controller Area Network (CAN)

Counter

  • Drivers that implement get_value_64 API will now need to select CONFIG_COUNTER_SUPPORTS_64BITS_TICKS and applications will need CONFIG_COUNTER_64BITS_TICKS to enable the API. (GitHub #94189).

  • The NXP LPTMR driver (nxp,lptmr) has been updated to fix incorrect prescaler and glitch filter configuration:

    • The prescale-glitch-filter property valid range changed from [0-16] to [0-15]. The value 16 was invalid for pulse counter mode and has been removed. Device trees using value 16 must be updated to use values in the range [0-15].

    • A new boolean property prescale-glitch-filter-bypass has been introduced to explicitly control prescaler/glitch filter bypass. Previously, setting prescale-glitch-filter = <0> implicitly enabled bypass mode, which was ambiguous.

      In v4.4 and later, bypass is controlled only by the presence of prescale-glitch-filter-bypass. If the property is absent, the prescaler/glitch filter is active and prescale-glitch-filter is applied.

    • The prescaler/glitch filter behavior has been clarified:

      • In Time Counter mode: prescaler divides the clock by 2^(prescale-glitch-filter + 1)

      • In Pulse Counter mode: glitch filter recognizes change after 2^prescale-glitch-filter rising edges (value 0 is not supported for glitch filtering)

    • All in-tree device tree nodes have been updated to use prescale-glitch-filter-bypass; instead of prescale-glitch-filter = <0>;. Out-of-tree boards should be updated accordingly.

    • If both prescale-glitch-filter-bypass and prescale-glitch-filter are set, bypass mode takes precedence and the prescale-glitch-filter value is ignored.

    Example migration:

    /* Old (deprecated) */
    lptmr0: counter@40040000 {
        compatible = "nxp,lptmr";
        /* Implicitly bypassed */
        prescale-glitch-filter = <0>;
    };
    
    /* New (correct) */
    lptmr0: counter@40040000 {
        compatible = "nxp,lptmr";
        /* Explicitly bypassed */
        prescale-glitch-filter-bypass;
    };
    

    Examples of using prescale-glitch-filter

    Note

    prescale-glitch-filter-bypass is a boolean. If present, bypass is enabled. If absent, bypass is disabled and prescale-glitch-filter is applied.

    In Pulse Counter mode, prescale-glitch-filter = <0> is not a supported glitch filter configuration. To request no filtering, use prescale-glitch-filter-bypass;.

    • Time Counter mode: divide the counter clock

      In Time Counter mode the prescaler divides by 2^(N + 1).

      /* Divide by 2^(0+1) = 2 */
      lptmr0: counter@40040000 {
          compatible = "nxp,lptmr";
          /* Time Counter mode */
          timer-mode-sel = <0>;
          clk-source = <1>;
          clock-frequency = <32768>;
          /* /2 */
          prescale-glitch-filter = <0>;
          resolution = <16>;
      };
      
      /* Divide by 2^(3+1) = 16 */
      lptmr1: counter@40041000 {
          compatible = "nxp,lptmr";
          /* Time Counter mode */
          timer-mode-sel = <0>;
          clk-source = <1>;
          clock-frequency = <32768>;
          /* /16 */
          prescale-glitch-filter = <3>;
          resolution = <16>;
      };
      
    • Time Counter mode: explicit bypass (no division)

      lptmr0: counter@40040000 {
          compatible = "nxp,lptmr";
          /* Time Counter mode */
          timer-mode-sel = <0>;
          clk-source = <1>;
          clock-frequency = <32768>;
          /* no prescaler */
          prescale-glitch-filter-bypass;
          resolution = <16>;
      };
      
    • Pulse Counter mode: glitch filtering

      In Pulse Counter mode the glitch filter recognizes a change after 2^N rising edges. Value 0 is not supported for glitch filtering; use bypass if you want no filtering.

      /* Recognize change after 2^2 = 4 rising edges */
      lptmr0: counter@40040000 {
          compatible = "nxp,lptmr";
          /* Pulse Counter mode */
          timer-mode-sel = <1>;
          clk-source = <1>;
          input-pin = <0>;
          prescale-glitch-filter = <2>;
          resolution = <16>;
      };
      
      /* No filtering (explicit bypass) */
      lptmr1: counter@40041000 {
          compatible = "nxp,lptmr";
          /* Pulse Counter mode */
          timer-mode-sel = <1>;
          clk-source = <1>;
          input-pin = <0>;
          prescale-glitch-filter-bypass;
          resolution = <16>;
      };
      
  • The NXP i.MX GPT counter driver (nxp,imx-gpt) now defaults to run-mode = "restart" instead of the previous hardcoded free-run behavior.

    • Previous behavior (Zephyr ≤ 4.3): GPT counter always ran in free-run mode (enableFreeRun = true). The counter continued counting without reset on compare events.

    • New behavior (Zephyr ≥ 4.4): GPT counter defaults to restart mode unless explicitly configured. A new run-mode devicetree property controls the behavior:

      • "restart" (default): Counter resets to 0 when reaching Compare Channel 1 value

      • "free-run": Counter continues counting without reset (previous behavior)

    Migration Required: Out-of-tree boards and applications using GPT counters must add run-mode = "free-run"; to their devicetree nodes to preserve the previous behavior.

    /* Out-of-tree boards: add this to preserve previous behavior */
    gpt2: gpt@400f0000 {
        compatible = "nxp,imx-gpt";
        /* Explicitly restore Zephyr ≤4.3 behavior */
        run-mode = "free-run";
        /* ... other properties ... */
    };
    

    Warning

    The driver uses Compare Channel 1 for Zephyr counter alarm functionality. When using run-mode = "restart", setting alarms will cause the counter to reset at the alarm compare point. If your application relies on alarms and continuous counting, you must use run-mode = "free-run".

    Note

    This change standardizes NXP counter driver run mode configuration. GPT now uses explicit devicetree properties rather than hardcoded values, allowing per-instance customization.

Display

  • For ILI9XXX controllers, the usage of ILI9XXX_PIXEL_FORMAT_x in devicetrees for panel color format selection has been updated to PANEL_PIXEL_FORMAT_x. Out-of-tree boards and shields should be updated accordingly. (GitHub #99267).

  • For ILI9341 controller, display mirroring configuration has been updated to conform with the described behavior of the sample samples/drivers/display. (GitHub #99267).

  • The PIXEL_FORMAT_BGR_565 pixel format has been renamed to PIXEL_FORMAT_RGB_565X to correctly reflect that it is a byte-swapped version of RGB_565, not a channel-swapped format. Applications using PIXEL_FORMAT_BGR_565 must update to use PIXEL_FORMAT_RGB_565X. (GitHub #99276)

  • The devicetree macro PANEL_PIXEL_FORMAT_BGR_565 has been renamed to PANEL_PIXEL_FORMAT_RGB_565X. (GitHub #99276)

  • The Kconfig options SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_565 and ST7789V_BGR565 have been renamed to SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_RGB_565X and ST7789V_RGB565X respectively. (GitHub #99276)

  • CONFIG_SSD1327 symbol has been renamed to CONFIG_SSD1327_5 to include SSD1325 as well.

  • solomon,ssd1327fb devicetree compatible has been renamed solomon,ssd1327 to harmonize with other display controllers and eliminate the zephyr-irrelevant fb suffix.

  • solomon,ssd1306fb and solomon,ssd1309fb devicetree compatibles has been renamed solomon,ssd1306 and solomon,ssd1309 respectively, to harmonize with other display controllers and eliminate the zephyr-irrelevant fb suffix.

DMA

  • Removed the CONFIG_DMA_MCUX_EDMA_V5 (GitHub #100341). This macro previously distinguished between nxp,version(5) and nxp,version(4). It now supports unified maintenance for both versions. Users can modify DMA_MCUX_EDMA_V5 to DMA_MCUX_EDMA_V4.

EEPROM

ESP32-S3

  • The former espressif,esp32-lcd-cam binding has been restructured. The LCD_CAM peripheral is now represented by a common lcd_cam node, with its functional blocks split into two separate child nodes:

    The original espressif,esp32-lcd-cam compatible node keeps the common pinctrl, clock, and interrupt properties, while camera-specific properties have moved into the new lcd_cam_dvp child node.

    Camera-related properties must be moved from lcd_cam node to the new lcd_cam_dvp child node, and zephyr,camera chosen property should point to lcd_cam_dvp instead.

Ethernet

GPIO

  • The LiteX GPIO driver litex,gpio has been reworked to support changing direction. The driver now uses the reg-names property to detect supported modes of the GPIO controller. The Devicetree property port-is-output has been removed. The reg-names are now taken directly from LiteX. (GitHub #99329)

  • The irqs property of renesas,rz-gpio has been reworked to map a pin to an interrupt phandle explicitly instead of an interrupt index (GitHub #101256).

    /* Old (Zephyr ≤ 4.3) */
    &gpio16 {
        /* Map port16 pin3 to tint7 */
        irqs = <3 7>;
    };
    
    /* New (Zephyr ≥ 4.4) */
    &tint7 {
        status = "okay";
    };
    
    &gpio16 {
        /* Map port16 pin3 to tint7 */
        irqs = <&tint7 3>;
    };
    

Infineon

  • Infineon driver file names have been renamed to remove cat1 from their names to support reusability across multiple device categories. The following drivers have been renamed (GitHub #99174):

    • adc_ifx_cat1.cadc_ifx.c

    • clock_control_ifx_cat1.cclock_control_ifx.c

    • counter_ifx_cat1.ccounter_ifx.c

    • dma_ifx_cat1.cdma_ifx.c

    • dma_ifx_cat1_pdl.cdma_ifx_pdl.c

    • flash_ifx_cat1.cflash_ifx.c

    • flash_ifx_cat1_qspi.cflash_ifx_qspi.c

    • flash_ifx_cat1_qspi_mtb_hal.cflash_ifx_qspi_mtb_hal.c

    • gpio_ifx_cat1.cgpio_ifx.c

    • i2c_ifx_cat1.ci2c_ifx.c

    • i2c_ifx_cat1_pdl.ci2c_ifx_pdl.c

    • mbox_ifx_cat1.cmbox_ifx.c

    • pinctrl_ifx_cat1.cpinctrl_ifx.c

    • rtc_ifx_cat1.crtc_ifx.c

    • ifx_cat1_sdio.cifx_sdio.c

    • sdio_ifx_cat1_pdl.csdio_ifx_pdl.c

    • serial_ifx_cat1_uart.cserial_ifx_uart.c

    • spi_ifx_cat1.cspi_ifx.c

    • spi_ifx_cat1_pdl.cspi_ifx_pdl.c

    • uart_ifx_cat1.cuart_ifx.c

    • uart_ifx_cat1_pdl.cuart_ifx_pdl.c

    • wdt_ifx_cat1.cwdt_ifx.c

    Corresponding Kconfig symbols and binding files have also been updated:

    • CONFIG_*_INFINEON_CAT1CONFIG_*_INFINEON

    • compatible: "infineon,cat1-adc"compatible: "infineon,adc"

MDIO

  • The mdio_bus_enable() and mdio_bus_disable() functions have been removed. MDIO bus enabling/disabling is now handled internally by the MDIO drivers. (GitHub #99690).

QSPI

  • st,stm32-qspi compatible nodes configured with dual-flash property now need to also include the ssht-enable property to reenable sample shifting. Sample shifting is configurable now and disabled by default. (GitHub #98999).

Radio

  • The following devicetree bindings have been renamed for consistency with the radio- prefix:

  • A new radio.yaml base binding has been introduced for generic radio hardware capabilities. The tx-high-power-supported property has been renamed to radio-tx-high-power-supported for consistency.

  • Device trees and overlays using the old compatible strings must be updated to use the new names.

SD Host Controller

Shell

Stepper

STM32

  • STM32 power supply configuration is now performed using Devicetree properties. New bindings st,stm32h7-pwr, st,stm32h7rs-pwr and st,stm32-dualreg-pwr have been introduced, and all Kconfig symbols related to power supply configuration have been removed:

    • CONFIG_POWER_SUPPLY_LDO

    • CONFIG_POWER_SUPPLY_DIRECT_SMPS,

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_LDO

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_LDO,

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT_AND_LDO

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT_AND_LDO

    • CONFIG_POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT

    • CONFIG_POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT

    • CONFIG_POWER_SUPPLY_EXTERNAL_SOURCE

  • The ST-specific chosen property /chosen/zephyr,ccm is replaced by /chosen/zephyr,dtcm. Attribute macros __ccm_data_section, __ccm_bss_section and __ccm_noinit_section are deprecated, but retained for backwards compatibility; they will be removed in Zephyr 4.5. The generic __dtcm_{data,bss,noinit}_section macros should be used instead. (GitHub #100590)

  • STM32 platforms now use the default MCUboot operating mode swap using offset (SB_CONFIG_MCUBOOT_MODE_SWAP_USING_OFFSET). To support this bootloader mode, some changes to the board devicetrees are required. Several boards already support this mode (see GitHub #100385). The previous swap using move mode can still be selected in sysbuild by enabling SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE.

  • For STM32F2x/F4x/F7x, the different PLL bindings (st,stm32f2-pll-clock, st,stm32f4-pll-clock, st,stm32f4-plli2s-clock, st,stm32f411-plli2s-clock, st,stm32f7-pll-clock and st,stm32fx-pllsai-clock ) has been merged into a single one st,stm32fx-pll-clock. This merge brings some changes, notably div-divq and div-divr properties have been renamed respectively to post-div-q and post-div-r. Besides, when applicable to the SoC, these properties need to be defined if the corresponding div-q or div-r properties are used.

USB

Video

  • CONFIG_VIDEO_OV7670 is now gone and replaced by CONFIG_VIDEO_OV767X. This allows supporting both the OV7670 and 0V7675.

  • CONFIG_VIDEO_BUFFER_POOL_SZ_MAX is replaced by CONFIG_VIDEO_BUFFER_POOL_HEAP_SIZE which represent the size in byte allocated for the whole video buffer pool.

  • The ovti,ov2640 reset pin handling has been corrected, resulting in an inverted active level compared to before, to match the active level expected by the sensor.

Bluetooth

Bluetooth Host

  • CONFIG_BT_SIGNING has been deprecated.

  • BT_GATT_CHRC_AUTH has been deprecated.

  • bt_conn_le_info.interval has been deprecated. Use bt_conn_le_info.interval_us instead. Note that the units have changed: interval was in units of 1.25 milliseconds, while interval_us is in microseconds.

  • Legacy Bluetooth LE pairing using the passkey entry method no longer grants authenticated (MITM) protection as of the Bluetooth Core Specification v6.2. Stored bonds that were generated using this method will be downgraded to unauthenticated when loaded from persistent storage, resulting in a lower security level.

Bluetooth Audio

Bluetooth Mesh

Networking

  • Networking APIs found in

    and relevant code in subsys/net etc. is namespaced. This means that either net_, NET_ or ZSOCK_ prefix is added to the network API name. This is done in order to avoid circular dependency with POSIX or libc that might define the same symbol. A compatibility header file include/zephyr/net/net_compat.h is created that provides the old symbols allowing the user to continue use the old symbols. External network applications can continue to use POSIX defined network symbols and include relevant POSIX header files like sys/socket.h to get the POSIX symbols as Zephyr networking header files will no longer include those. If the application or Zephyr internal code cannot use POSIX APIs, then the relevant network API prefix needs to be added to the code calling a network API.

  • The enum for HTTP server transaction status has been renamed from http_data_status to http_transaction_status to better reflect its purpose. The enum values have also been renamed as follows:

    • HTTP_SERVER_DATA_ABORTEDHTTP_SERVER_TRANSACTION_ABORTED

    • HTTP_SERVER_DATA_MOREHTTP_SERVER_REQUEST_DATA_MORE

    • HTTP_SERVER_DATA_FINALHTTP_SERVER_REQUEST_DATA_FINAL

    The handler callback type for dynamic resources has been updated accordingly to use the new enum and its renamed values. Applications using dynamic HTTP resources must update their handler callbacks to use the new enum and handle the renamed values.

  • The HTTP server now reports for dynamic resources the HTTP_SERVER_TRANSACTION_COMPLETE status when the response has been sent completely to the client. Applications should now also handle this status in the handler callback to properly reset resource state after successful response transmission.

  • The protocol version passed to zsock_socket() when creating a secure socket is now enforced as the minimum TLS version to use for the TLS session.

  • Automatic selection of crypto Kconfigs has been removed from NET_SOCKETS_SOCKOPT_TLS as they strongly depend on the final application’s needs. As a consequence the desired TLS protocol version and ciphersuite(s) must be explicitly selected. Available CONFIG_MBEDTLS_CIPHERSUITE_TLS_.* Kconfig helpers can be used to automatically enable all the dependencies of a given ciphersuite, and more can be added as needed following the same pattern.

Modem

Modem HL78XX

  • The Kconfig options related to HL78XX startup timing have been renamed in CONFIG_MODEM_HL78XX_DEV_* as follows:

    • MODEM_HL78XX_DEV_POWER_PULSE_DURATIONMODEM_HL78XX_DEV_POWER_PULSE_DURATION_MS

    • MODEM_HL78XX_DEV_RESET_PULSE_DURATIONMODEM_HL78XX_DEV_RESET_PULSE_DURATION_MS

    • MODEM_HL78XX_DEV_STARTUP_TIMEMODEM_HL78XX_DEV_STARTUP_TIME_MS

    • MODEM_HL78XX_DEV_SHUTDOWN_TIMEMODEM_HL78XX_DEV_SHUTDOWN_TIME_MS

  • The default startup timing was changed from 1000 ms to 120 ms to improve initialization reliability across all supported boards.

    Applications depending on the previous defaults must update their configuration.

LoRaWAN

Other subsystems

Flash

  • Previously deprecated CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS is now removed.

  • CONFIG_FLASH_AREA_CHECK_INTEGRITY_PSA is also removed since there is now no alternative for the crypto library backend.

JWT

  • Previously deprecated CONFIG_JWT_SIGN_RSA_LEGACY is removed. This removal happens before the usual deprecation period of 2 releases because it has been agreed (see GitHub #97660) that Mbed TLS is an external module, so normal deprecation rules do not apply in this case.

Libsbc

  • Libsbc (sbc.c and sbc.h) is moved under the Bluetooth subsystem. The sbc.h is in include/zephyr/bluetooth now.

Management

Tracing

  • CTF: Changed uint8_t id to uint16_t id in the CTF metadata event header. This doubles the space used for event IDs but allows 65,535 events instead of 255.

    With this change, existing CTF traces with 8-bit IDs won’t be compatible.

Serial

  • pl011 UART driver: Remove Read Status Register (RSR) error handling from pl011_poll_in(). RSR handling is already implemented in pl011_err_check(), which is the appropriate place to detect, and report receive error conditions. (GitHub #101715)

Settings

Modules

HostAP

OpenThread

Trusted Firmware-M

  • The SECURE_UART1 TF-M define is now controlled by Zephyr’s CONFIG_TFM_SECURE_UART. This option will override any platform values previously specified in the TF-M repository.

Architectures

  • Renamed CONFIG_ARCH_HAS_COHERENCE to CONFIG_CACHE_CAN_SAY_MEM_COHERENCE as the feature is cache related so move it under cache.

  • CONFIG_RISCV now requires, that the riscv is present in the devicetree.

  • The riscv,isa-base and riscv,isa-extensions devicetree properties of riscv are now used to set the Base Integer Instruction Set and the RISC-V extensions. They are no longer set by the SoC. The devicetree property riscv,isa has been deprecated in favor of the two new properties. (GitHub #97540)

    • CONFIG_SOC_CV64A6_IMAFDC and CONFIG_SOC_CV64A6_IMAC are now combined into CONFIG_SOC_CV64A6, as the RISC-V extensions are now set by the devicetree.

    • The following options of CONFIG_SOC_SERIES_AE350 had been removed, as they now can be set via the devicetree:

      • CONFIG_RV32I_CPU

      • CONFIG_RV32E_CPU

      • CONFIG_RV64I_CPU

      • CONFIG_NO_FPU

      • CONFIG_SINGLE_PRECISION_FPU

      • CONFIG_DOUBLE_PRECISION_FPU