:orphan:

.. _zephyr_3.5:

Zephyr 3.5.0
############

We are pleased to announce the release of Zephyr version 3.5.0.

Major enhancements with this release include:

* Added support for linkable loadable extensions (llext)
* Added native_sim simulator target (successor to native_posix)
* Added new battery charger driver API
* Added new hardware spinlock driver API
* Added new modem subsystem
* Added support for 45+ new boards
* Networking: improvements to CoAP, Connection Manager, DHCP, Ethernet, gPTP, ICMP,
  IPv6 and LwM2M
* Bluetooth: improvements to the Controller, Audio, Mesh, as well as the host stack in
  general
* Improved LVGL graphics library integration
* Integrated support with the CodeChecker static analyzer
* Picolibc is now the default C standard library

An overview of the changes required or recommended when migrating your application from Zephyr
v3.4.0 to Zephyr v3.5.0 can be found in the separate :ref:`migration guide<migration_3.5>`.

The following sections provide detailed lists of changes by component.

Security Vulnerability Related
******************************
The following CVEs are addressed by this release:

More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html

* CVE-2023-3725 `Zephyr project bug tracker GHSA-2g3m-p6c7-8rr3
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2g3m-p6c7-8rr3>`_

* CVE-2023-4257 `Zephyr project bug tracker GHSA-853q-q69w-gf5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-853q-q69w-gf5j>`_

* CVE-2023-4258 `Zephyr project bug tracker GHSA-m34c-cp63-rwh7
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m34c-cp63-rwh7>`_

* CVE-2023-4259 `Zephyr project bug tracker GHSA-gghm-c696-f4j4
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gghm-c696-f4j4>`_

* CVE-2023-4260 `Zephyr project bug tracker GHSA-gj27-862r-55wh
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gj27-862r-55wh>`_

* CVE-2023-4263 `Zephyr project bug tracker GHSA-rf6q-rhhp-pqhf
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rf6q-rhhp-pqhf>`_

* CVE-2023-4264 `Zephyr project bug tracker GHSA-rgx6-3w4j-gf5j
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rgx6-3w4j-gf5j>`_

* CVE-2023-4424: Under embargo until 2023-11-01

* CVE-2023-5055: Under embargo until 2023-11-01

* CVE-2023-5139: Under embargo until 2023-10-25

* CVE-2023-5184 `Zephyr project bug tracker GHSA-8x3p-q3r5-xh9g
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8x3p-q3r5-xh9g>`_

* CVE-2023-5563 `Zephyr project bug tracker GHSA-98mc-rj7w-7rpv
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-98mc-rj7w-7rpv>`_

* CVE-2023-5753 `Zephyr project bug tracker GHSA-hmpr-px56-rvww
  <https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hmpr-px56-rvww>`_

Kernel
******

* Added support for dynamic thread stack allocation via :c:func:`k_thread_stack_alloc`
* Added support for :c:func:`k_spin_trylock`
* Added :c:func:`k_object_is_valid` to check if a kernel object is valid. This replaces
  code that has been duplicated throughout the tree.

Architectures
*************

* ARC

 * Introduced the scalar port for ARC VPX processors
 * Introduced support for ARCv3 HS (both 32 and 64 bit) SMP platforms with up to 12 CPU cores
 * Reworked GNU helper tools usage for ARC MWDT toolchain. Now helper tools can be used from
   Zephyr SDK (if SDK is installed)
 * Fixed dynamic thread stack allocation
 * Fixed STR assembly macro offset calculation issue which may cause build error for ARCv3 64bit
 * Cleaned-up and made more user friendly handling of the ARC MWDT toolchain path
   (ARCMWDT_TOOLCHAIN_PATH)

* ARM

  * Architectural support for Arm Cortex-M has been separated from Arm
    Cortex-A and Cortex-R. This includes separate source modules to handle
    tasks like IRQ management, exception handling, thread handling and swap.
    For implementation details see :github:`60031`.

* ARM64

* RISC-V

  * Added support for detecting null pointer exception using PMP.
  * Added the :kconfig:option:`CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET`
    option to allow IRQ vector at a specified offset to meet the requirements
    set by the Core-Local Interrupt Controller RISC-V specification.
  * Added the :kconfig:option:`CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO` option to
    allow the use of custom system input/output functions.
  * Introduced the :kconfig:option:`CONFIG_RISCV_TRAP_HANDLER_ALIGNMENT` option
    to set the correct alignment of the trap handling code which is dependent on
    the ``MTVEC.BASE`` field size and is platform or application-specific.

* Xtensa

  * Added basic MMU v2 Support.

* x86

  * Added support for Intel Alder Lake boards
  * Added support for Intel Sensor Hub (ISH)

* POSIX

  * Has been reworked to use the native simulator.
  * New boards have been added.
  * For the new boards, embedded C libraries can be used, and conflicts with the host symbols
    and libraries avoided.
  * The :ref:`POSIX OS abstraction<posix_support>` is supported in these new boards.
  * AMP targets are now supported.
  * Added support for LLVM source profiling/coverage.

Bluetooth
*********

* Audio

  Improved memory usage of codec configurations and codec capabilities. Fixed several bugs in BAP
  and the BAP-related services (ASCS, PACS, BASS), as well as missing features such as proper
  notification handling.

  * Added BAP ``bt_bap_stream_get_tx_sync``
  * Added CAP stream send and tx sync
  * Added ``bt_audio_codec_cap_get`` helper functions
  * Added support for long read/write in CAP
  * Fixed ASCS Source ASE link loss state transition
  * Fixed ASCS possible ASE leak
  * Fixed ASCS to drop ISO PDUs if ASE is not in streaming state
  * Fixed BAP ``bt_bap_scan_delegator_find_state`` implementation
  * Fixed BAP issue with PA sync and ID in ``broadcast_sink_create``
  * Fixed TMAS characteristic permissions
  * Fixed ``tbs_client`` missing discovery complete event
  * Fixed audio stack to accept empty CCID list in audio metadata
  * Fixed bad size of metadata_backup in ASCS
  * Fixed possible ASCS ASE stuck in releasing state
  * Refactored ``bt_audio_codec_cap`` to flat arrays
  * Refactored ``bt_audio_codec_cfg`` to flat arrays
  * Removed ``CONFIG_BT_PACS_{SNK,SRC}_CONTEXT``
  * Removed scanning and PA sync from broadcast sink
  * Renamed ``bt_codec`` to ``bt_audio_codec_{cap, conf, data}``
  * Renamed codec qos framing
  * Replaced ``BT_AUDIO_CODEC_LC3_ID`` -> ``BT_HCI_CODING_FORMAT_LC3``
  * Replaced ``BT_AUDIO_CODEC_PARSE_ERR_`` values with errno values.
  * Reworked PACS notify system
  * Updated ASCS ISO QOS based on BAP QOS
  * Updated BAP to filter PA data duplicates by default
  * Updated CSIP to unlock Non-bonded devices immediately.
  * Updated PACS to notify bonded clients on reconnect
  * Updated ``bt_cap_stream_ops_register`` to always register BAP callbacks
  * Updated the ASCS ACL disconnect behavior
  * Updated to split ``bt_audio_codec_meta_get`` to ``cfg`` and ``cap``

* Direction Finding

* Host

  * Added SMP bondable flag overlay per connection
  * Added USE_NRPA advertising option
  * Added ``BT_CONN_PARAM_ANY`` to allow setting any value to connection parameters
  * Added advanced broadcast ISO parameters
  * Added advanced unicast ISO parameters
  * Added new API to manage Bluetooth settings storage
  * Fixed HCI ISO Data packets fragmentation
  * Fixed HCI ISO SDU length sent to controller
  * Fixed OTS ``bt_ots_init`` parameter struct naming
  * Fixed OTS memory leak while procedure is not finished
  * Fixed a connection reference leak
  * Fixed forced pairing request handling
  * Fixed host to invalidate the Resolvable Private Address when starting legacy advertising
  * Fixed issue with ``bt_iso_cig_reconfigure``
  * Fixed possible buffer overflow in ``bt_conn_le_start_encryption``
  * Fixed some SMP issues
  * Fixed to abort pairing if connection disconnected
  * Updated L2CAP accept callbacks
  * Updated LE L2CAP connected callback to be after connection response
  * Updated PAwR implementation to use RPA as responder address if BT_PRIVACY=y

* Mesh

  * Added TF-M support.
  * Added support to use both tinycrypt and PSA based crypto
  * Added full virtual addresses support with the collisions resolution. The
    :kconfig:option:`CONFIG_BT_MESH_LABEL_NO_RECOVER` Kconfig option is introduced to restore the
    addresses for the subscription list and model publication.
  * Added statistic module.
  * Fixed an issue where a node acting as a LPN was triggering Friend Poll messages when sending a
    segmented message over the loopback interface.
  * Fixed an issue where provisioning completes successfully on a node when the identical Public Key
    is used by a  provisioner.
  * Fixed an issue where the :c:func:`settings_load` function called from a cooperative thread other
    than the system workqueue caused the GATT Mesh Proxy Service registration to fail.
  * Fixed an issue where a node could enter IV Update in Progress state if an old SNB with the
    current IV Index and IV Update flag set to 1 was resent.

  * Mesh Protocol v1.1 changes

    * Added storing Private GATT Proxy state persistently.
    * Added support for Firmware Distribution Upload OOB Start message in the Firwmware Distribution
      Server model. The message support can be enabled with the
      :kconfig:option:`CONFIG_BT_MESH_DFD_SRV_OOB_UPLOAD` Kconfig option.
    * Added extended provisioning protocol timeout when OOB methods are used in the provisioning.
    * Added support for Composition Data Pages 2, 129 and 130.
    * Added documentation for Composition Data Pages 0, 1, 2, 128, 129 and 130.
    * Added documentation for the Segmentation and Reassembly in the Transport layer.
    * Added documentation for the SAR Configuration models
    * Fixed an issue where the Opcode Aggregator Server model did not compile without the Opcode
      Aggregator Client model.
    * Fixed an issue where the identity address was used in Private GATT Proxy advertisements
      instead of Non-Resolvable Private Addresses.
    * Fixed the Proxy Privacy parameter support.
    * Fixed an issue where the Composition Data Page 128 was not present on a node that has
      instantiated the Remote Provisioning Server model.
    * Fixed an issue where the Large Composition Data Server model did not support Composition Data
      Pages other then 0.
    * Fixed an issue where the Remote Provisioning Client model instanted on a node together with
      the Remote Provisioning Server model could not reprovision itself.
    * Fixed an issue where the acknowledgment timer in the Segmentation and Reassembly was not
      restarted when the incoming Segment Acknowledgment message did not contain at least one
      segment newly marked as acknowledged.
    * Fixed an issue where the On-Demand Private Proxy Server and Client models had interdependency
      that did not allow to compile them separately.

* Controller

  Improved support for Broadcast and Connected Isochronous channels in the Controller, enabling
  LE audio application development. The Controller is experimental, is missing implementations for
  interleaved packing in Isochronous channels' lower link layer.

  * Added Checks for minimum sizes of Adv PDUs
  * Added Kconfig Option to ignore Tx HCI ISO Data Packet Seq Num
  * Added Kconfig for avoiding ISO SDU fragmentation
  * Added Kconfig to maximize BIG event length and preempt PTO & CTRL subevents
  * Added ``BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX`` Kconfig
  * Added memory barrier to ticker transactions
  * Added missing nRF53x Tx Power Kconfig
  * Added support for Flush Timeout in Connected ISO
  * Fixed BIS payload sliding window overrun check
  * Fixed CIS Central FT calculation
  * Fixed CIS Central error handling
  * Fixed CIS asymmetric PHY usage
  * Fixed CIS encryption when DF support enabled
  * Fixed ISO-AL for quality tests and time stamps
  * Fixed PHY value in HCI LE CIS Established Event
  * Fixed ULL stuck in semaphore under rare conditions
  * Fixed assertion due to late PER CIS active set
  * Fixed compiler instruction re-ordering that caused assertions
  * Fixed connected ISO dynamic tx power
  * Fixed failing advertising conformance tests
  * Fixed handling received Auxiliary PDUs when Coded PHY not supported
  * Fixed leak in scheduled ticker node when rescheduling ticker nodes
  * Fixed missing host feature reset
  * Fixed nRF53 SoC back-to-back PDU chaining
  * Fixed nRF53 SoC back-to-back Tx Rx implementation
  * Fixed regression in Adv PDU overflow calculation
  * Fixed regression in observer that caused assertions and scheduling stall
  * Fixed use of pre-programmed PPI on nRF SoCs
  * Removed HCI ISO data with invalid status in preparation for FT support
  * Updated Extended Advertising Report to not be generated when ``AUX_ADV_IND`` not received
  * Updated to have ``EVENT_OVERHEAD_START_US`` verbose assertion in each state/role LLL
  * Updated to stop following ``aux_ptr`` if ``DATA_LEN_MAX`` is reached during extended scanning

Boards & SoC Support
********************

* Added support for these SoC series:

  * Nuvoton NuMaker M46x series
  * Added support for STM32F072X8 SoC variants
  * Added support for STM32L051X6 SoC variants
  * Added support for STM32L451XX SoC variants
  * Added support for STM32L4Q5XX SoC variants
  * Added support for STM32WBA SoC series

* Removed support for these SoC series:

* Made these changes in other SoC series:

  * i.MX RT SOCs no longer enable CONFIG_DEVICE_CONFIGURATION_DATA by default.
    boards using external SDRAM should set CONFIG_DEVICE_CONFIGURATION_DATA
    and CONFIG_NXP_IMX_EXTERNAL_SDRAM to enabled.
  * i.MX RT SOCs no longer support CONFIG_OCRAM_NOCACHE, as this functionality
    can be achieved using devicetree memory regions
  * Refactored ESP32 SoC folders. So now these are a proper SoC series.
  * RP2040: Changed to reset the I2C device on initializing

* Added support for these ARC boards:

  * Added support for nsim_vpx5 - simulation (nSIM) platform with ARCv2 VPX5 core, close to
    vpx5_integer_full template
  * Added support for nsim_hs5x_smp_12cores - simulation (nSIM) platform with 12 cores SMP 32-bit
    ARCv3 HS
  * Added support for nsim_hs6x_smp_12cores - simulation (nSIM) platform with 12 cores SMP 64-bit
    ARCv3 HS

* Added support for these ARM boards:

  * Nuvoton NuMaker Platform M467
  * ST Nucleo U5A5ZJ Q
  * ST Nucleo WBA52CG

* Added support for these ARM64 boards:

* Added support for these RISC-V boards:

* Added support for these X86 boards:

* Added support for these Xtensa boards:

  * Added ``esp32_devkitc_wroom`` and ``esp32_devkitc_wrover``.

  * Added ``esp32s3_luatos_core``.

  * Added ``m5stack_core2``.

  * Added ``qemu_xtensa_mmu`` utilizing Diamond DC233c SoC to support
    testing Xtensa MMU.

  * Added ``xiao_esp32s3``.

  * Added ``yd_esp32``.

* Added support for these POSIX boards:

  * :ref:`native_sim(_64) <native_sim>`
  * nrf5340bsim_nrf5340_cpu(net|app). A simulated nrf5340 SOC, which uses Babblesim for its radio
    traffic.

* Made these changes for ARC boards:

  * Turned off unsupported stack checking option for hsdk4xd platform
  * Changed vendor prefix for ARC QEMU platforms from "qemu" to "snps"

* Made these changes for ARM boards:

  * ST morpho connector description was added on ST nucleo boards.

  * rpi_pico:

    * The default adapter when debugging with openocd has been changed to cmsis-dap.

* Made these changes for ARM64 boards:

* Made these changes for RISC-V boards:

* Made these changes for X86 boards:

* Made these changes for Xtensa boards:

  * esp32s3_devkitm:

    * Added USB-CDC support.

    * Added CAN support.

* Made these changes for POSIX boards:

  * nrf52_bsim:

    * Has been reworked to use the native simulator as its runner.
    * Multiple HW models improvements and fixes. GPIO & GPIOTE peripherals added.

* Removed support for these ARC boards:

* Removed support for these ARM boards:

* Removed support for these ARM64 boards:

* Removed support for these RISC-V boards:

* Removed support for these X86 boards:

* Removed support for these Xtensa boards:

  * Removed ``esp32``. Use ``esp32_devkitc_*`` instead.

* Made these changes in other boards:

* Added support for these following shields:

  * Adafruit PiCowbell CAN Bus Shield for Pico
  * Arduino UNO click shield
  * G1120B0MIPI MIPI Display
  * MikroElektronika MCP2518FD Click shield (CAN-FD)
  * RK055HDMIPI4M MIPI Display
  * RK055HDMIPI4MA0 MIPI Display
  * Semtech SX1276MB1MAS LoRa Shield

Build system and infrastructure
*******************************

* SCA (Static Code Analysis)

  * Added support for CodeChecker

* Twister now supports ``required_snippets`` in testsuite .yml files, this can
  be used to include a snippet when a test is ran (and exclude any boards from
  running that the snippet cannot be applied to).

* Interrupts

  * Added support for shared interrupts

* Added support for setting MCUboot encryption key in sysbuild which is then
  propagated to the bootloader and target images to automatically create
  encrypted updates.

* Build time priority checking: enable build time priority checking by default.
  This fails the build if the initialization sequence in the final ELF file
  does not match the devicetree hierarchy. It can be turned off by disabling
  the :kconfig:option:`COFNIG_CHECK_INIT_PRIORITIES` option.

* Added a new ``initlevels`` target for printing the final device and
  :c:macro:`SYS_INIT` initialization sequence from the final ELF file.

* Reworked syscall code generations so that not all marshalling functions
  will be included in the final binary. Syscalls associated with disabled
  subsystems no longer have their marshalling functions generated.

* Partially enabled compiler warning about shadow variables for subset of
  in-tree code. Out-of-tree code needs to be patched before we can fully
  enable shadow variable warnings.

Drivers and Sensors
*******************

* ADC

  * Added support for STM32F0 HSI14 clock (dedicated ADC clock)
  * Added support for STM32 ADC source clock and prescaler. On STM32F1 and STM32F3
    series, ADC prescaler can be configured using dedicated RCC Clock Controller
    option.
  * Added support for the ADC sequencer for all STM32 series (except F1)
  * Fixed STM32F4 ADC temperature and Vbat measurement.
  * Added driver for TI ADS1112.
  * Added driver for TI TLA2021.
  * Added driver for Gecko ADC.
  * Added driver for NXP S32 ADC SAR.
  * Added driver for MAX1125x family.
  * Added driver for MAX11102-MAX1117.

* CAN

  * Added support for TI TCAN4x5x CAN-FD controller with integrated transceiver
    (:dtcompatible:`ti,tcan4x5x`).
  * Added support for Microchip MCP251xFD CAN-FD controller (:dtcompatible:`microchip,mcp251xfd`).
  * Added support for CAN statistics to the Bosch M_CAN controller driver backend.
  * Switched the NXP S32 CANXL driver to use clock control for the CAN clock instead of hard-coding
    a CAN clock frequency in the devicetree.

* Clock control

  * Added support for Nuvoton NuMaker M46x

* Counter

  * Added :kconfig:option:`CONFIG_COUNTER_RTC_STM32_SUBSECONDS` to enable subsecond as
    the basic time tick on STM32 RTC based counter driver.

  * Added support for Raspberry Pi Pico Timer

* DAC

  * Added support for Analog Devices AD56xx
  * Added support for NXP lpcxpresso55s36 (LPDAC)

* Disk

  * Ramdisk driver is now configured using devicetree, and supports multiple
    instances

* Display

  * Added support for ST7735S (in ST7735R driver)

* DMA

  * Added support for NXP S32K to the eDMA driver
  * Added support for NXP SMARTDMA
  * Added support for NXP Pixel Pipeline (PXP) for display acceleration
  * Added support for DMA get_status() to the SAM XDMAC driver
  * Fixes for Intel HDA driver for L1 entry/exit, explicit SCS (sample container) settings
  * Fixes for STM32U5 enables error interrupts, fixes block size and data size configuration
  * Better Kconfig options for tuning static memory usage in NXP LPC driver

* EEPROM

  * Added support for Fujitsu MB85RCxx series I2C FRAM (:dtcompatible:`fujitsu,mb85rcxx`).

* Entropy

  * Added a requirement for ``entropy_get_entropy()`` to be thread-safe because
    of random subsystem needs.

* Ethernet

  * Added :kconfig:option:`CONFIG_ETH_NATIVE_POSIX_RX_TIMEOUT` to set rx timeout for native posix.
  * Added support for adin2111.
  * Added support for NXP S32 GMAC.
  * Added support for promiscuous mode in eth_smsc91x.
  * Added support for STM32H5X SOC series.
  * Added support for MDIO Clause 45 APIs.
  * Added support for YD-ESP32 board Ethernet.
  * Fixed stm32 to generate more unique MAC address by using device id as a base for the MAC.
  * Fixed mcux to increase the PTP timestamp accuracy from 20us to 200ns.
  * Fixed Ethernet max header size when using VLAN.
  * Removed the ``mdio`` DT property. Please use :c:macro:`DT_INST_BUS()` in the driver instead.
  * Reworked the device node hierarchy in smsc91x.
  * Renamed the phy-dev property with phy-handle to match the Linux ethernet-controller binding
    and move it up to ethernet.yaml so that it can be used by other drivers.
  * Updated Ethernet PHY to use ``reg`` property in DT bindings.
  * Updated driver DT bindings to use ``ethernet-phy`` devicetree node name consistently.
  * Updated esp32 and sam-gmac DT so that the phy is pointed by a phandle rather than
    a child node, this makes the phy device a child of mdio.

* Flash

  * Introduce npcx flash driver that supports two or more spi nor flashes via a
    single Flash Interface Unit (FIU) module and Direct Read Access (DRA) mode
    for better performance.
  * Added support for Nuvoton NuMaker M46x embedded flash
  * STM32 QSPI driver now supports Jedec SFDP parameter reading.
  * STM32 OSPI driver now supports both Low and High ports of IO manager.

* GPIO

  * Added support for Nuvoton NuMaker M46x

* I2C

  * STM32 V1 driver now supports large transactions (more than 256 bytes chunks)
  * STM32 V2 driver now supports 10-bit addressing.
  * I2C devices can now be used as wakeup source from STOP modes on STM32.
  * Fix long ISR execution in Silicon Labs I2C target callback
  * Fail gracefully on DMA max size for nRF52 devices in the TWIM driver
  * Added support for Intel LPSS DMA usage in the DesignWare driver
  * Added filtering of dumped messages for debugging using DeviceTree
  * Added target mode to Silicon Labs Gecko driver
  * Added Intel SEDI driver
  * Added Infineon XMC4 driver
  * Added Microchip PolarFire SoC driver
  * Added Ambiq driver for Apollo4 SoCs

* I2S

  * Fixed handling of the PCM data format in the NXP MCUX driver.

* I3C

  * ``i3c_cdns``:

    * Fixed build error when :kconfig:option:`CONFIG_I3C_USE_IBI` is disabled.

    * Fixed transfer issue when controller is busy. Now wait for controller to
      idle before proceeding with another transfer.

* IEEE 802.15.4

  * A new mandatory method attr_get() was introduced into ieee802154_radio_api.
    Drivers need to implement at least
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES and
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES.
  * The hardware capabilities IEEE802154_HW_2_4_GHZ and IEEE802154_HW_SUB_GHZ
    were removed as they were not aligned with the standard and some already
    existing drivers couldn't properly express their channel page and channel
    range (notably SUN FSK and HRP UWB drivers). The capabilities were replaced
    by the standard conforming new driver attribute
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES that fits all in-tree drivers.
  * The method get_subg_channel_count() was removed from ieee802154_radio_api.
    This method could not properly express the channel range of existing drivers
    (notably SUN FSK drivers that implement channel pages > 0 and may not have
    zero-based channel ranges or UWB drivers that could not be represented at
    all). The method was replaced by the new driver attribute
    IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES that fits all in-tree drivers.

* Interrupt Controller

  * GIC: Architecture version selection is now based on the device tree

* Input

  * New drivers: :dtcompatible:`gpio-qdec`, :dtcompatible:`st,stmpe811`.

  * Drivers converted from Kscan to Input: :dtcompatible:`goodix,gt911`
    :dtcompatible:`xptek,xpt2046` :dtcompatible:`hynitron,cst816s`
    :dtcompatible:`microchip,cap1203`.

  * Added a Kconfig option for dumping all events to the console
    :kconfig:option:`CONFIG_INPUT_EVENT_DUMP` and new shell commands
    :kconfig:option:`CONFIG_INPUT_SHELL`.

  * Merged ``zephyr,gpio-keys`` into :dtcompatible:`gpio-keys` and added
    ``zephyr,code`` codes to all in-tree board ``gpio-keys`` nodes.

  * Renamed the callback definition macro from ``INPUT_LISTENER_CB_DEFINE`` to
    :c:macro:`INPUT_CALLBACK_DEFINE`.

* PCIE

  * Added support in shell to display PCIe capabilities.

  * Added virtual channel support.

  * Added kconfig :kconfig:option:`CONFIG_PCIE_INIT_PRIORITY` to specify
    initialization priority for host controller.

  * Added support to get IRQ from ACPI PCI Routing Table (PRT).

* ACPI

  * Adopted the ACPICA library as a new module to further enhance ACPI support.

* Pin control

  * Added support for Nuvoton NuMaker M46x

* PWM

  * Added 4 channels capture on STM32 PWM driver.
  * Added driver for Intel Blinky PWM.
  * Added driver for MAX31790.
  * Added driver for Infineon XMC4XXX CCU4.
  * Added driver for Infineon XMC4XXX CCU8.
  * Added MCUX CTimer based PWM driver.
  * Added PWM driver based on TI CC13xx/CC26xx GPT timer.
  * Reworked the pwm_nrf5_sw driver so that it can be used also on nRF53 and
    nRF91 Series. Consequently, the driver was renamed to pwm_nrf_sw.
  * Added driver for Nuvoton NuMaker family.
  * Added PWM driver based on NXP S32 EMIOS peripheral.

* Regulators

  * Added support for GPIO-controlled voltage regulator

  * Added support for AXP192 PMIC

  * Added support for NXP VREF regulator

  * Fixed regulators can now specify their operating voltage

  * PFM mode is now support for nPM1300

  * Added new API to configure "ship" mode

  * Regulator shell allows to configure DVS modes

* Reset

  * Added support for Nuvoton NuMaker M46x

* Retained memory

  * Added support for allowing mutex support to be forcibly disabled with
    :kconfig:option:`CONFIG_RETAINED_MEM_MUTEX_FORCE_DISABLE`.

  * Fixed issue with user mode support not working.

* RTC

  * Added support for STM32 RTC API driver. This driver is not compatible with
    the use of RTC based implementation of COUNTER API.

* SDHC

  * Added driver for EMMC Host controller present on Alder lake platforms
  * Added driver for Atmel HSMCI controller present on SAM4E MCU series

* Sensor

  * Reworked the :dtcompatible:`ti,bq274xx` to add ``BQ27427`` support, fixed
    units for capacity and power channels.
  * Added ADC current sense amplifier and voltage sensor drivers.
  * Added ADI LTC2990 voltage, current, and temperature sensor driver.
  * Added AMS TSL2540 ambient light sensor driver.
  * Added Bosch BMI08x accelerometer/gyroscope driver.
  * Added DFRobot A01NYUB distance sensor driver.
  * Added Fintek F75303 temperature sensor driver.
  * Added Isentek IST8310 magnetometer driver.
  * Added Microchip TCN75A temperature sensor driver.
  * Added NXP TEMPMON driver.
  * Added Seeed HM330X dust sensor driver.
  * Added TI TMAG5170 3D Hall sensor driver.
  * Added power management support to BMM150, LM75, and Microchip tachometer
    drivers.
  * Added trigger support to the BMM150 magnetometer driver.
  * Added tap trigger support to the LIS2DH accelerometer driver.
  * Updated ST sensor drivers to use STMEMSC HAL i/f v2.3
  * Updated the decoder APIs to vertically decode raw sensor data.
  * Various fixes and enhancements in the NTC thermistor and INA23x drivers.

* Serial

  * Added support for Nuvoton NuMaker M46x

  * NS16550: Reworked how device initialization macros.

    * ``CONFIG_UART_NS16550_ACCESS_IOPORT`` and ``CONFIG_UART_NS16550_SIMULT_ACCESS``
      are removed. For UART using IO port access, add ``io-mapped`` property to
      device tree node.

  * Added async support for ESP32S3.

  * Added support for serial TTY under ``native_posix``.

  * Added support for UART on Efinix Sapphire SoCs.

  * Added Intel SEDI UART driver.

  * Added support for UART on BCM2711.

  * ``uart_stm32``:

    * Added RS485 support.

    * Added wide data support.

  * ``uart_pl011``: added support for Ambiq SoCs.

  * ``serial_test``: added support for interrupt and async APIs.

  * ``uart_emul``: added support for interrupt API.

  * ``uart_rpi_pico``: fixed handling Modbus DE-RE signal

* SPI

  * Remove npcx spi driver implemented by Flash Interface Unit (FIU) module.
  * Added support for Raspberry Pi Pico PIO based SPI.

* Timer

  * The TI CC13xx/26xx system clock timer compatible was changed from
    :dtcompatible:`ti,cc13xx-cc26xx-rtc` to :dtcompatible:`ti,cc13xx-cc26xx-rtc-timer`
    and the corresponding Kconfig option from :kconfig:option:`CC13X2_CC26X2_RTC_TIMER`
    to :kconfig:option:`CC13XX_CC26XX_RTC_TIMER` for improved consistency and
    extensibility. No action is required unless the internal timer was modified.

* USB

  * Added UDC driver for STM32 based MCU, relying on HAL/PCD. This driver is compatible
    with UDC API (experimental).
  * Added support for STM32H5 series on USB driver.

* WiFi

  * Increased esp32 default network (TCP workq, RX and mgmt event) stack sizes to 2048 bytes.
  * Reduced the RAM usage for esp32s2_saola in Wi-Fi samples.
  * Fixed undefined declarations in winc1500.
  * Fixed SPI buffer length in eswifi.
  * Fixed esp32 data sending and channel selection in AP mode.
  * Fixed esp_at driver init and network interface dormant state setting.

Networking
**********

* CoAP:

  * Optimized CoAP client library to use only a single thread internally.
  * Converted CoAP client library to use ``zsock_*`` API internally.
  * Fixed a bug in CoAP client library, which resulted in an incorrect
    retransmission timeout calculation.
  * Use 64 bit timer values for calculating transmission timeouts. This fixes potential problems for
    devices that stay on for more than 49 days when the 32 bit uptime counter might roll over and
    cause CoAP packets to not timeout at all on this event.
  * API documentation improvements.
  * Added new API functions:

    * :c:func:`coap_has_descriptive_block_option`
    * :c:func:`coap_remove_descriptive_block_option`
    * :c:func:`coap_packet_remove_option`
    * :c:func:`coap_packet_set_path`

* Connection Manager:

  * Added support for auto-connect and auto-down behaviors (controlled by
    :c:enum:`CONN_MGR_IF_NO_AUTO_CONNECT` and :c:enum:`CONN_MGR_IF_NO_AUTO_DOWN`
    flags).
  * Split Connection Manager APIs into separate header files.
  * Extended Connection Manager documentation to cover new functionalities.

* DHCP:

  * Added support for DHCPv4 unicast replies processing.
  * Added support for DHCPv6 protocol.

* Ethernet:

  * Fixed ARP queueing so that the queued network packet is sent immediately
    instead of queued 2nd time in the core network stack.

* gPTP:

  * Added support for detecting gPTP packets that use the default multicast destination address.
  * Fixed Announce and Follow Up message handling.

* ICMP:

  * Fixed ICMPv6 error message type check.
  * Reworked ICMP callback registration and handling, which allows to register
    multiple handlers for the same ICMP message.
  * Introduced an API to send ICMP Echo Request (ping).
  * Added possibility to register offloaded ICMP ping handlers.
  * Added support for setting packet priority for ping.

* IPv6:

  * Made sure that ongoing DAD procedure is cancelled when IPv6 address is removed.
  * Fixed a bug, where Solicited-Node multicast address could be removed while
    still in use.

* LwM2M:

  * Added support for tickless mode. This removes the 500 ms timeout from the socket loop
    so the engine does not constantly wake up the CPU. This can be enabled by
    :kconfig:option:`CONFIG_LWM2M_TICKLESS`.
  * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_DEREGISTER` event.
  * Block-wise sending now supports LwM2M read and composite-read operations as well.
    When :kconfig:option:`CONFIG_LWM2M_COAP_BLOCK_TRANSFER` is enabled, any content that is larger
    than :kconfig:option:`CONFIG_LWM2M_COAP_MAX_MSG_SIZE` is split into a block-wise transfer.
  * Block-wise transfers don't require tokens to match anymore as this was not in line
    with CoAP specification (CoAP doesn't require tokens reuse).
  * Various fixes to bootstrap. Now client ensures that Bootstrap-Finish command is sent,
    before closing the DTLS pipe. Also allows Bootstrap server to close the DTLS pipe.
    Added timeout when waiting for bootstrap commands.
  * Added support for X509 certificates.
  * Various fixes to string handling. Allow setting string to zero length.
    Ensure string termination when using string operations on opaque resources.
  * Added support for Connection Monitoring object version 1.3.
  * Added protection for Security object to prevent read/writes by the server.
  * Fixed a possible notification stall in case of observation token change.
  * Added new shell command, ``lwm2m create``, which allows to create LwM2M object instances.
  * Added LwM2M interoperability test-suite against Leshan server.
  * API documentation improvements.
  * Several other minor fixes and improvements.

* Misc:

  * Time and timestamps in the network subsystem, PTP and IEEE 802.15.4
    were more precisely specified and all in-tree call sites updated accordingly.
    Fields for timed TX and TX/RX timestamps have been consolidated. See
    :c:type:`net_time_t`, :c:struct:`net_ptp_time`, :c:struct:`ieee802154_config`,
    :c:struct:`ieee802154_radio_api` and :c:struct:`net_pkt` for extensive
    documentation. As this is largely an internal API, existing applications will
    most probably continue to work unchanged.
  * Added support for additional net_pkt filter hooks:

    * :kconfig:option:`CONFIG_NET_PKT_FILTER_IPV4_HOOK`
    * :kconfig:option:`CONFIG_NET_PKT_FILTER_IPV6_HOOK`
    * :kconfig:option:`CONFIG_NET_PKT_FILTER_LOCAL_IN_HOOK`

  * Reworked several networking components to use timepoint API.
  * Added API functions facilitate going through all IPv4/IPv6 registered on an
    interface (:c:func:`net_if_ipv4_addr_foreach`, :c:func:`net_if_ipv6_addr_foreach`).
  * ``NET_EVENT_IPV6_PREFIX_ADD`` and ``NET_EVENT_IPV6_PREFIX_DEL`` events now provide
    more detailed information about the prefix (:c:struct:`net_event_ipv6_prefix`).
  * General cleanup of the shadowed variables across the networking subsystem.
  * Added ``qemu_cortex_a53`` networking support.
  * Introduced new modem subsystem.
  * Added new :zephyr:code-sample:`cellular-modem` sample.
  * Added support for network interface names (instead of reusing underlying device name).
  * Removed support for Google Cloud IoT sample due to service retirement.
  * Fixed a bug where packets passed in promiscuous mode could have been modified
    by L2 in certain cases.
  * Added support for setting syslog server (used for networking log backend)
    IP address at runtime.
  * Removed no longer used ``queued`` and ``sent`` net_pkt flags.
  * Added support for binding zperf TCP/UDP server to a specific IP address.

* MQTT-SN:

  * Improved thread safety of internal buffers allocation.
  * API documentation improvements.

* OpenThread:

  * Reworked :c:func:`otPlatEntropyGet` to use :c:func:`sys_csrand_get` internally.
  * Introduced ``ieee802154_radio_openthread.h`` radio driver extension interface
    specific for OpenThread. Added new transmit mode, specific to OpenThread,
    :c:enum:`IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA`.

* PPP:

  * Fixed PPP L2 usage of the network interface carrier state.
  * Made PPP L2 thread priority configurable (:kconfig:option:`CONFIG_NET_L2_PPP_THREAD_PRIO`).
  * Moved PPP L2 out of experimental stage.
  * Prevent PPP connection reestablish when carrier is down.

* Sockets:

  * Added support for statically allocated socketpairs (in case no heap is available).
  * Made send timeout configurable (:kconfig:option:`CONFIG_NET_SOCKET_MAX_SEND_WAIT`).
  * Added support for ``FIONREAD`` and ``FIONBIO`` :c:func:`ioctl` commands.
  * Fixed input filtering for connected datagram sockets.
  * Fixed :c:func:`getsockname` operation on unconnected sockets.
  * Added new secure socket options for DTLS Connection ID support:

    * :c:macro:`TLS_DTLS_CID`
    * :c:macro:`TLS_DTLS_CID_VALUE`
    * :c:macro:`TLS_DTLS_PEER_CID_VALUE`
    * :c:macro:`TLS_DTLS_CID_STATUS`

  * Added support for :c:macro:`SO_REUSEADDR` and :c:macro:`SO_REUSEPORT` socket options.

* TCP:

  * Fixed potential stall in data retransmission, when data was only partially acknowledged.
  * Made TCP work queue priority configurable (:kconfig:option:`CONFIG_NET_TCP_WORKER_PRIO`).
  * Added support for TCP new Reno collision avoidance algorithm.
  * Fixed source address selection on bound sockets.
  * Fixed possible memory leak in case listening socket was closed during active handshake.
  * Fixed RST packet handling during handshake.
  * Refactored the code responsible for connection teardown to fix found bugs and
    simplify future maintenance.

* TFTP:

  * Added new :zephyr:code-sample:`tftp-client` sample.
  * API documentation improvements.

* WebSocket

  * WebSocket library no longer closes underlying TCP socket automatically on disconnect.
    This aligns with the connect behavior, where the WebSocket library expects an already
    connected TCP socket.

* Wi-Fi:

  * Added Passive scan support.
  * The Wi-Fi scan API updated with Wi-Fi scan parameter to allow scan mode selection.
  * Updated TWT handling.
  * Added support for generic network manager API.
  * Added support for Wi-Fi mode setting and selection.
  * Added user input validation for SSID and PSK in Wi-Fi shell.
  * Added scan extension for specifying channels, limiting scan results, filtering SSIDs,
    setting active and passive channel dwell times and frequency bands.

USB
***

* USB device HID
  * Kconfig option USB_HID_PROTOCOL_CODE, deprecated in v2.6, is finally removed.

Devicetree
**********

API
===

New general-purpose macros:

- :c:macro:`DT_REG_ADDR_U64`
- :c:macro:`DT_REG_ADDR_BY_NAME_U64`
- :c:macro:`DT_INST_REG_ADDR_BY_NAME_U64`
- :c:macro:`DT_INST_REG_ADDR_U64`
- :c:macro:`DT_FOREACH_STATUS_OKAY_NODE_VARGS`
- :c:macro:`DT_FOREACH_NODE_VARGS`
- :c:macro:`DT_HAS_COMPAT_ON_BUS_STATUS_OKAY`

New special-purpose macros introduced for dependency ordinals:

- :c:macro:`DT_DEP_ORD_STR_SORTABLE`

New general purpose macros introduced for fixed flash partitions:

- :c:macro:`DT_MEM_FROM_FIXED_PARTITION`
- :c:macro:`DT_FIXED_PARTITION_ADDR`

Bindings
========

* Generic or vendor-independent:

  * New bindings:

    * :dtcompatible:`current-sense-amplifier`
    * :dtcompatible:`current-sense-shunt`
    * :dtcompatible:`gpio-qdec`
    * :dtcompatible:`regulator-gpio`
    * :dtcompatible:`usb-audio-feature-volume`

  * Modified bindings:

    * CAN (Controller Area Network) controller bindings:

          * property ``phase-seg1-data`` deprecation status changed from False to True
          * property ``phase-seg1`` deprecation status changed from False to True
          * property ``phase-seg2-data`` deprecation status changed from False to True
          * property ``phase-seg2`` deprecation status changed from False to True
          * property ``prop-seg-data`` deprecation status changed from False to True
          * property ``prop-seg`` deprecation status changed from False to True
          * property ``sjw-data`` default value changed from None to 1
          * property ``sjw-data`` deprecation status changed from False to True
          * property ``sjw`` default value changed from None to 1
          * property ``sjw`` deprecation status changed from False to True

    * Ethernet controller bindings: new ``phy-handle`` property (in some
      bindings, this was renamed from ``phy-dev``), matching the Linux
      ethernet-controller binding.

    * The ``riscv,isa`` property used by RISC-V CPU bindings no longer has an
      ``enum`` value.

    * :dtcompatible:`neorv32-cpu`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`regulator-fixed`:

          * new property: ``regulator-min-microvolt``
          * new property: ``regulator-max-microvolt``
          * property ``enable-gpios`` is no longer required

    * :dtcompatible:`ethernet-phy`:

          * removed property: ``address``
          * removed property: ``mdio``
          * property ``reg`` is now required

    * :dtcompatible:`usb-audio-hs` and :dtcompatible:`usb-audio-hp`:

          * new property: ``volume-max``
          * new property: ``volume-min``
          * new property: ``volume-res``
          * new property: ``status``
          * new property: ``compatible``
          * new property: ``reg``
          * new property: ``reg-names``
          * new property: ``interrupts``
          * new property: ``interrupts-extended``
          * new property: ``interrupt-names``
          * new property: ``interrupt-parent``
          * new property: ``label``
          * new property: ``clocks``
          * new property: ``clock-names``
          * new property: ``#address-cells``
          * new property: ``#size-cells``
          * new property: ``dmas``
          * new property: ``dma-names``
          * new property: ``io-channels``
          * new property: ``io-channel-names``
          * new property: ``mboxes``
          * new property: ``mbox-names``
          * new property: ``wakeup-source``
          * new property: ``power-domain``
          * new property: ``zephyr,pm-device-runtime-auto``

    * :dtcompatible:`ntc-thermistor-generic`:

          * removed property: ``r25-ohm``

    * :dtcompatible:`ns16550`:

          * new property: ``resets``
          * new property: ``reset-names``

    * :dtcompatible:`fixed-clock`:

          * removed property: ``clocks``

    * All CPU bindings got a new ``enable-method`` property. `pull request
      60210 <https://github.com/zephyrproject-rtos/zephyr/pull/60210>`_ for
      details.

* Analog Devices, Inc. (adi):

  * New bindings:

    * :dtcompatible:`adi,ad5628`
    * :dtcompatible:`adi,ad5648`
    * :dtcompatible:`adi,ad5668`
    * :dtcompatible:`adi,ad5672`
    * :dtcompatible:`adi,ad5674`
    * :dtcompatible:`adi,ad5676`
    * :dtcompatible:`adi,ad5679`
    * :dtcompatible:`adi,ad5684`
    * :dtcompatible:`adi,ad5686`
    * :dtcompatible:`adi,ad5687`
    * :dtcompatible:`adi,ad5689`
    * :dtcompatible:`adi,adin1110`
    * :dtcompatible:`adi,adltc2990`

  * Modified bindings:

    * :dtcompatible:`adi,adin2111-mdio` (on adin2111 bus):

          * removed property: ``protocol``

* Altera Corp. (altr):

  * New bindings:

    * :dtcompatible:`altr,pio-1.0`

* Ambiq Micro, Inc. (ambiq):

  * New bindings:

    * :dtcompatible:`ambiq,am1805`
    * :dtcompatible:`ambiq,apollo4-pinctrl`
    * :dtcompatible:`ambiq,counter`
    * :dtcompatible:`ambiq,i2c`
    * :dtcompatible:`ambiq,mspi`
    * :dtcompatible:`ambiq,pwrctrl`
    * :dtcompatible:`ambiq,spi`
    * :dtcompatible:`ambiq,stimer`
    * :dtcompatible:`ambiq,uart`
    * :dtcompatible:`ambiq,watchdog`

* AMS AG (ams):

  * New bindings:

    * :dtcompatible:`ams,tsl2540`

* Andes Technology Corporation (andestech):

  * New bindings:

    * :dtcompatible:`andestech,atcwdt200`
    * :dtcompatible:`andestech,plic-sw`
    * :dtcompatible:`andestech,qspi-nor`

* ARM Ltd. (arm):

  * New bindings:

    * :dtcompatible:`arm,cortex-a76`
    * :dtcompatible:`arm,gic-v1`
    * :dtcompatible:`arm,gic-v2`
    * :dtcompatible:`arm,gic-v3`
    * :dtcompatible:`arm,psci-1.1`

* ASPEED Technology Inc. (aspeed):

  * Modified bindings:

    * :dtcompatible:`aspeed,ast10x0-reset`:

          * specifier cells for space "reset" are now named: ['id'] (old value: None)
          * specifier cells for space "clock" are now named: None (old value: ['reset_id'])

* Atmel Corporation (atmel):

  * New bindings:

    * :dtcompatible:`atmel,sam-hsmci`

  * Modified bindings:

    * :dtcompatible:`atmel,sam-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

* Bosch Sensortec GmbH (bosch):

  * New bindings:

    * :dtcompatible:`bosch,bmi08x-accel`
    * :dtcompatible:`bosch,bmi08x-accel`
    * :dtcompatible:`bosch,bmi08x-gyro`
    * :dtcompatible:`bosch,bmi08x-gyro`

  * Modified bindings:

    * :dtcompatible:`bosch,bmm150`:

          * new property: ``drdy-gpios``

    * :dtcompatible:`bosch,bmi270`:

          * new property: ``irq-gpios``

* Broadcom Corporation (brcm):

  * New bindings:

    * :dtcompatible:`brcm,bcm2711-aux-uart`

* Cadence Design Systems Inc. (cdns):

  * New bindings:

    * :dtcompatible:`cdns,tensilica-xtensa-lx3`

* DFRobot (dfrobot):

  * New bindings:

    * :dtcompatible:`dfrobot,a01nyub`

* Efinix Inc (efinix):

  * New bindings:

    * :dtcompatible:`efinix,sapphire-gpio`
    * :dtcompatible:`efinix,sapphire-timer0`
    * :dtcompatible:`efinix,sapphire-uart0`

* EPCOS AG (epcos):

  * Modified bindings:

    * :dtcompatible:`epcos,b57861s0103a039`:

          * removed property: ``r25-ohm``

* Espressif Systems (espressif):

  * Modified bindings:

    * :dtcompatible:`espressif,esp-at` (on uart bus):

          * new property: ``external-reset``

    * :dtcompatible:`espressif,esp32-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`espressif,riscv`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`espressif,esp32-spi`:

          * new property: ``line-idle-low``

* Feature Integration Technology Inc. (fintek):

  * New bindings:

    * :dtcompatible:`fintek,f75303`

* FocalTech Systems Co.,Ltd (focaltech):

  * Modified bindings:

    * :dtcompatible:`focaltech,ft5336` (on i2c bus):

          * new property: ``reset-gpios``

* Fujitsu Ltd. (fujitsu):

  * New bindings:

    * :dtcompatible:`fujitsu,mb85rcxx`

* Shenzhen Huiding Technology Co., Ltd. (goodix):

  * Modified bindings:

    * :dtcompatible:`goodix,gt911` (on i2c bus):

          * bus list changed from ['kscan'] to []
          * new property: ``alt-addr``

* Himax Technologies, Inc. (himax):

  * New bindings:

    * :dtcompatible:`himax,hx8394`

* Infineon Technologies (infineon):

  * New bindings:

    * :dtcompatible:`infineon,cat1-counter`
    * :dtcompatible:`infineon,cat1-spi`
    * :dtcompatible:`infineon,xmc4xxx-ccu4-pwm`
    * :dtcompatible:`infineon,xmc4xxx-ccu8-pwm`
    * :dtcompatible:`infineon,xmc4xxx-i2c`

* Intel Corporation (intel):

  * New bindings:

    * :dtcompatible:`intel,agilex5-clock`
    * :dtcompatible:`intel,alder-lake`
    * :dtcompatible:`intel,apollo-lake`
    * :dtcompatible:`intel,blinky-pwm`
    * :dtcompatible:`intel,elkhart-lake`
    * :dtcompatible:`intel,emmc-host`
    * :dtcompatible:`intel,ish`
    * :dtcompatible:`intel,loapic`
    * :dtcompatible:`intel,sedi-gpio`
    * :dtcompatible:`intel,sedi-i2c`
    * :dtcompatible:`intel,sedi-ipm`
    * :dtcompatible:`intel,sedi-uart`
    * :dtcompatible:`intel,socfpga-agilex-sip-smc`
    * :dtcompatible:`intel,socfpga-reset`
    * :dtcompatible:`intel,timeaware-gpio`

  * Removed bindings:

    * ``intel,agilex-socfpga-sip-smc``
    * ``intel,apollo_lake``
    * ``intel,elkhart_lake``
    * ``intel,gna``

  * Modified bindings:

    * :dtcompatible:`intel,niosv`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`intel,adsp-imr`:

          * new property: ``zephyr,memory-attr``
          * property ``zephyr,memory-region-mpu`` enum value changed from ['RAM', 'RAM_NOCACHE', 'FLASH', 'PPB', 'IO', 'EXTMEM'] to None
          * property ``zephyr,memory-region-mpu`` deprecation status changed from False to True

    * :dtcompatible:`intel,lpss`:

          * new property: ``dma-parent``

    * :dtcompatible:`intel,adsp-shim-clkctl`:

          * new property: ``adsp-clkctl-clk-ipll``

* Isentek Inc. (isentek):

  * New bindings:

    * :dtcompatible:`isentek,ist8310`

* Integrated Silicon Solutions Inc. (issi):

  * New bindings:

    * :dtcompatible:`issi,is31fl3216a`
    * :dtcompatible:`issi,is31fl3733`

* ITE Tech. Inc. (ite):

  * New bindings:

    * :dtcompatible:`ite,it8xxx2-sha`

  * Modified bindings:

    * :dtcompatible:`ite,it8xxx2-pinctrl-func`:

          * new property: ``func3-ext``
          * new property: ``func3-ext-mask``

    * :dtcompatible:`ite,riscv-ite`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`ite,enhance-i2c`:

          * new property: ``target-enable``
          * new property: ``target-pio-mode``

* Linaro Limited (linaro):

  * New bindings:

    * :dtcompatible:`linaro,ivshmem-ipm`

* Maxim Integrated Products (maxim):

  * New bindings:

    * :dtcompatible:`maxim,max11102`
    * :dtcompatible:`maxim,max11103`
    * :dtcompatible:`maxim,max11105`
    * :dtcompatible:`maxim,max11106`
    * :dtcompatible:`maxim,max11110`
    * :dtcompatible:`maxim,max11111`
    * :dtcompatible:`maxim,max11115`
    * :dtcompatible:`maxim,max11116`
    * :dtcompatible:`maxim,max11117`
    * :dtcompatible:`maxim,max11253`
    * :dtcompatible:`maxim,max11254`
    * :dtcompatible:`maxim,max31790`

* Microchip Technology Inc. (microchip):

  * New bindings:

    * :dtcompatible:`microchip,mcp251xfd`
    * :dtcompatible:`microchip,mpfs-i2c`
    * :dtcompatible:`microchip,tcn75a`

  * Modified bindings:

    * :dtcompatible:`microchip,xec-pwmbbled`:

          * new property: ``enable-low-power-32k``

    * :dtcompatible:`microchip,cap1203` (on i2c bus):

          * bus list changed from ['kscan'] to []
          * new property: ``input-codes``

    * :dtcompatible:`microchip,xec-ps2`:

          * new property: ``wakerx-gpios``

* Motorola, Inc. (motorola):

  * Modified bindings:

    * :dtcompatible:`motorola,mc146818`:

          * new property: ``clock-frequency``

* Murata Manufacturing Co., Ltd. (murata):

  * New bindings:

    * :dtcompatible:`murata,ncp15wb473`

* Nordic Semiconductor (nordic):

  * New bindings:

    * :dtcompatible:`nordic,npm1300-led`
    * :dtcompatible:`nordic,npm1300-wdt`

  * Removed bindings:

    * ``nordic,nrf-cc310``
    * ``nordic,nrf-cc312``

  * Modified bindings:

    * :dtcompatible:`nordic,nrf-ccm`:

          * new property: ``headermask-supported``

    * :dtcompatible:`nordic,nrf-twi`:

          * new property: ``easydma-maxcnt-bits``

    * :dtcompatible:`nordic,nrf-twim` and :dtcompatible:`nordic,nrf-twis`:

          * new property: ``easydma-maxcnt-bits``
          * new property: ``memory-regions``
          * new property: ``memory-region-names``

    * :dtcompatible:`nordic,nrf-spi`, :dtcompatible:`nordic,nrf-spis`, and
      :dtcompatible:`nordic,nrf-spim`:

          * new property: ``wake-gpios``

    * :dtcompatible:`nordic,npm1300-charger`:

          * new property: ``thermistor-cold-millidegrees``
          * new property: ``thermistor-cool-millidegrees``
          * new property: ``thermistor-warm-millidegrees``
          * new property: ``thermistor-hot-millidegrees``
          * new property: ``trickle-microvolt``
          * new property: ``term-current-percent``
          * new property: ``vbatlow-charge-enable``
          * new property: ``disable-recharge``

    * :dtcompatible:`nordic,nrf-uicr`:

          * new property: ``nfct-pins-as-gpios``
          * new property: ``gpio-as-nreset``

    * :dtcompatible:`nordic,npm1300` (on i2c bus):

          * new property: ``host-int-gpios``
          * new property: ``pmic-int-pin``

* Nuclei System Technology (nuclei):

  * Modified bindings:

    * :dtcompatible:`nuclei,bumblebee`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

* Nuvoton Technology Corporation (nuvoton):

  * New bindings:

    * :dtcompatible:`nuvoton,nct38xx`
    * :dtcompatible:`nuvoton,nct38xx-gpio`
    * :dtcompatible:`nuvoton,npcx-fiu-nor`
    * :dtcompatible:`nuvoton,npcx-fiu-qspi`
    * :dtcompatible:`nuvoton,numaker-fmc`
    * :dtcompatible:`nuvoton,numaker-gpio`
    * :dtcompatible:`nuvoton,numaker-pcc`
    * :dtcompatible:`nuvoton,numaker-pinctrl`
    * :dtcompatible:`nuvoton,numaker-pwm`
    * :dtcompatible:`nuvoton,numaker-rst`
    * :dtcompatible:`nuvoton,numaker-scc`
    * :dtcompatible:`nuvoton,numaker-spi`
    * :dtcompatible:`nuvoton,numaker-uart`

  * Removed bindings:

    * ``nuvoton,nct38xx-gpio``
    * ``nuvoton,npcx-spi-fiu``

  * Modified bindings:

    * :dtcompatible:`nuvoton,npcx-sha`:

          * new property: ``context-buffer-size``

    * :dtcompatible:`nuvoton,npcx-adc`:

          * new property: ``vref-mv``
          * removed property: ``threshold-reg-offset``

    * :dtcompatible:`nuvoton,adc-cmp`:

          * new property: ``thr-sel``

    * :dtcompatible:`nuvoton,npcx-pcc`:

          * new property: ``pwdwn-ctl-val``
          * property ``clock-frequency`` enum value changed from [100000000, 96000000, 90000000, 80000000, 66000000, 50000000, 48000000, 40000000, 33000000] to [120000000, 100000000, 96000000, 90000000, 80000000, 66000000, 50000000, 48000000]
          * property ``ram-pd-depth`` enum value changed from [12, 15] to [8, 12, 15]

* NXP Semiconductors (nxp):

  * New bindings:

    * :dtcompatible:`nxp,ctimer-pwm`
    * :dtcompatible:`nxp,fs26-wdog`
    * :dtcompatible:`nxp,imx-flexspi-w956a8mbya`
    * :dtcompatible:`nxp,irqsteer-intc`
    * :dtcompatible:`nxp,lpdac`
    * :dtcompatible:`nxp,mbox-imx-mu`
    * :dtcompatible:`nxp,mcux-dcp`
    * :dtcompatible:`nxp,mcux-edma-v3`
    * :dtcompatible:`nxp,pcf8563`
    * :dtcompatible:`nxp,pxp`
    * :dtcompatible:`nxp,s32-adc-sar`
    * :dtcompatible:`nxp,s32-clock`
    * :dtcompatible:`nxp,s32-emios`
    * :dtcompatible:`nxp,s32-emios-pwm`
    * :dtcompatible:`nxp,s32-gmac`
    * :dtcompatible:`nxp,s32-qspi`
    * :dtcompatible:`nxp,s32-qspi-device`
    * :dtcompatible:`nxp,s32-qspi-nor`
    * :dtcompatible:`nxp,s32k3-pinctrl`
    * :dtcompatible:`nxp,smartdma`
    * :dtcompatible:`nxp,tempmon`
    * :dtcompatible:`nxp,vref`

  * Modified bindings:

    * :dtcompatible:`nxp,s32-netc-emdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`nxp,mipi-dsi-2l`:

          * property ``nxp,lcdif`` is no longer required

    * :dtcompatible:`nxp,imx-mipi-dsi`:

          * property ``nxp,lcdif`` is no longer required

    * :dtcompatible:`nxp,pca9633` (on i2c bus):

          * new property: ``disable-allcall``

    * :dtcompatible:`nxp,s32-sys-timer`:

          * removed property: ``clock-frequency``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,imx-lpspi`:

          * new property: ``data-pin-config``

    * :dtcompatible:`nxp,s32-spi`:

          * property ``clock-frequency`` is no longer required
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,imx-wdog`:

          * pinctrl support

    * :dtcompatible:`nxp,s32-swt`:

          * removed property: ``clock-frequency``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,lpc-lpadc`:

          * new property: ``nxp,reference-supply``

    * :dtcompatible:`nxp,kinetis-pit`:

          * new property: ``max-load-value``
          * property ``clocks`` is now required

    * :dtcompatible:`nxp,mcux-edma`:

          * new property: ``dmamux-reg-offset``
          * new property: ``channel-gap``
          * new property: ``irq-shared-offset``

    * :dtcompatible:`nxp,imx-elcdif`:

          * new property: ``nxp,pxp``

* ON Semiconductor Corp. (onnn):

  * New bindings:

    * :dtcompatible:`onnn,ncp5623`

* Princeton Technology Corp. (ptc):

  * New bindings:

    * :dtcompatible:`ptc,pt6314`

* Quectel Wireless Solutions Co., Ltd. (quectel):

  * New bindings:

    * :dtcompatible:`quectel,bg95`

* QuickLogic Corp. (quicklogic):

  * New bindings:

    * :dtcompatible:`quicklogic,eos-s3-pinctrl`

  * Modified bindings:

    * :dtcompatible:`quicklogic,usbserialport-s3b`:

      * pinctrl support

* Raspberry Pi Foundation (raspberrypi):

  * New bindings:

    * :dtcompatible:`raspberrypi,pico-header`
    * :dtcompatible:`raspberrypi,pico-i2c`
    * :dtcompatible:`raspberrypi,pico-spi-pio`
    * :dtcompatible:`raspberrypi,pico-timer`

* Raydium Semiconductor Corp. (raydium):

  * New bindings:

    * :dtcompatible:`raydium,rm67162`

* Renesas Electronics Corporation (renesas):

  * New bindings:

    * :dtcompatible:`renesas,smartbond-lp-osc`
    * :dtcompatible:`renesas,smartbond-timer`

  * Modified bindings:

    * :dtcompatible:`renesas,smartbond-flash-controller`:

          * new property: ``read-cs-idle-delay``
          * new property: ``erase-cs-idle-delay``

* Smart Battery System (sbs):

  * New bindings:

    * :dtcompatible:`sbs,default-sbs-gauge`
    * :dtcompatible:`sbs,sbs-charger`

* Seeed Technology Co., Ltd (seeed):

  * New bindings:

    * :dtcompatible:`seeed,hm330x`

* SiFive, Inc. (sifive):

  * Modified bindings:

    * :dtcompatible:`sifive,i2c0`:

          * pinctrl support

* Silicon Laboratories (silabs):

  * New bindings:

    * :dtcompatible:`silabs,gecko-adc`

* Sino Wealth Electronic Ltd (sinowealth):

  * New bindings:

    * :dtcompatible:`sinowealth,sh1106`
    * :dtcompatible:`sinowealth,sh1106`

* Sitronix Technology Corporation (sitronix):

  * Modified bindings:

    * :dtcompatible:`sitronix,st7735r` (on spi bus):

          * property ``reset-gpios`` is no longer required

* Standard Microsystems Corporation (smsc):

  * Modified bindings:

    * :dtcompatible:`smsc,lan91c111-mdio`:

          * removed property: ``protocol``
          * property ``#address-cells`` const value changed from None to 1
          * property ``#size-cells`` const value changed from None to 0
          * property ``#address-cells`` is now required
          * property ``#size-cells`` is now required

    * :dtcompatible:`smsc,lan91c111`:

          * new property: ``local-mac-address``
          * new property: ``zephyr,random-mac-address``
          * property ``reg`` is no longer required

* Synopsys, Inc. (snps):

  * New bindings:

    * :dtcompatible:`snps,dw-timers`

* Solomon Systech Limited (solomon):

  * Modified bindings:

    * :dtcompatible:`solomon,ssd1306fb`

          * new property: ``inversion-on``
          * new property: ``ready-time-ms``

* Sequans Communications (sqn):

  * New bindings:

    * :dtcompatible:`sqn,hwspinlock`

* STMicroelectronics (st):

  * New bindings:

    * :dtcompatible:`st,stm32-bxcan`
    * :dtcompatible:`st,stm32-spi-host-cmd`
    * :dtcompatible:`st,stm32f1-rcc`
    * :dtcompatible:`st,stm32f3-rcc`
    * :dtcompatible:`st,stm32wba-flash-controller`
    * :dtcompatible:`st,stm32wba-hse-clock`
    * :dtcompatible:`st,stm32wba-pll-clock`
    * :dtcompatible:`st,stm32wba-rcc`
    * :dtcompatible:`st,stmpe811`

  * Removed bindings:

    * ``st,stm32-can``

  * Modified bindings:

    * :dtcompatible:`st,stm32-pwm`:

          * new property: ``four-channel-capture-support``

    * :dtcompatible:`st,stm32f4-adc`:

          * new property: ``st,adc-clock-source``
          * new property: ``st,adc-prescaler``
          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32-adc`:

          * new property: ``st,adc-clock-source``
          * new property: ``st,adc-prescaler``
          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32f1-adc`:

          * new property: ``st,adc-sequencer``
          * removed property: ``temp-channel``
          * removed property: ``vref-channel``
          * removed property: ``vbat-channel``

    * :dtcompatible:`st,stm32-ospi`:

          * new property: ``io-low-port``
          * new property: ``io-high-port``

    * :dtcompatible:`st,stm32c0-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32-hse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32wl-hse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32g0-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32h7-hsi-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32-lse-clock`:

          * removed property: ``clocks``

    * :dtcompatible:`st,stm32u5-pll-clock`:

          * new property: ``fracn``

* Telink Semiconductor (telink):

  * Modified bindings:

    * :dtcompatible:`telink,b91-pwm`:

          * pinctrl support

    * :dtcompatible:`telink,b91`:

          * new property: ``mmu-type``
          * new property: ``riscv,isa``

    * :dtcompatible:`telink,b91-i2c`:

          * pinctrl support

    * :dtcompatible:`telink,b91-spi`:

          * pinctrl support

    * :dtcompatible:`telink,b91-uart`:

          * pinctrl support

* Texas Instruments (ti):

  * New bindings:

    * :dtcompatible:`ti,ads1112`
    * :dtcompatible:`ti,bq27z746`
    * :dtcompatible:`ti,cc13xx-cc26xx-rtc-timer`
    * :dtcompatible:`ti,cc13xx-cc26xx-timer`
    * :dtcompatible:`ti,cc13xx-cc26xx-timer-pwm`
    * :dtcompatible:`ti,cc32xx-pinctrl`
    * :dtcompatible:`ti,davinci-gpio`
    * :dtcompatible:`ti,davinci-gpio-nexus`
    * :dtcompatible:`ti,lp5009`
    * :dtcompatible:`ti,lp5012`
    * :dtcompatible:`ti,lp5018`
    * :dtcompatible:`ti,lp5024`
    * :dtcompatible:`ti,lp5030`
    * :dtcompatible:`ti,lp5036`
    * :dtcompatible:`ti,lp5569`
    * :dtcompatible:`ti,tas6422dac`
    * :dtcompatible:`ti,tcan4x5x`
    * :dtcompatible:`ti,tla2021`
    * :dtcompatible:`ti,tmag5170`
    * :dtcompatible:`ti,vim`

  * Removed bindings:

    * ``ti,cc13xx-cc26xx-rtc``
    * ``ti,lp503x``

  * Modified bindings:

    * :dtcompatible:`ti,cc32xx-i2c`:

          * pinctrl support

    * :dtcompatible:`ti,ina230` (on i2c bus):

          * new property: ``alert-config``
          * new property: ``adc-mode``
          * new property: ``vbus-conversion-time-us``
          * new property: ``vshunt-conversion-time-us``
          * new property: ``avg-count``
          * new property: ``rshunt-micro-ohms``
          * removed property: ``rshunt-milliohms``
          * property ``config`` default value changed from None to 0
          * property ``config`` deprecation status changed from False to True
          * property ``config`` is no longer required

    * :dtcompatible:`ti,ina237` (on i2c bus):

          * new property: ``adc-mode``
          * new property: ``vbus-conversion-time-us``
          * new property: ``vshunt-conversion-time-us``
          * new property: ``temp-conversion-time-us``
          * new property: ``avg-count``
          * new property: ``high-precision``
          * new property: ``rshunt-micro-ohms``
          * removed property: ``rshunt-milliohms``
          * property ``adc-config`` default value changed from None to 0
          * property ``config`` default value changed from None to 0
          * property ``adc-config`` deprecation status changed from False to True
          * property ``config`` deprecation status changed from False to True
          * property ``adc-config`` is no longer required
          * property ``config`` is no longer required

    * :dtcompatible:`ti,cc32xx-uart`:

          * pinctrl support

* A stand-in for a real vendor which can be used in examples and tests (vnd):

  * New bindings:

    * :dtcompatible:`vnd,memory-attr`
    * :dtcompatible:`vnd,reg-holder-64`
    * :dtcompatible:`vnd,reserved-compat`

  * Modified bindings:

    * :dtcompatible:`vnd,serial`:

          * property ``reg`` is no longer required

* X-Powers (x-powers):

  * New bindings:

    * :dtcompatible:`x-powers,axp192`
    * :dtcompatible:`x-powers,axp192-gpio`
    * :dtcompatible:`x-powers,axp192-regulator`

* Xen Hypervisor (xen):

  * New bindings:

    * :dtcompatible:`xen,xen`

  * Removed bindings:

    * ``xen,xen-4.15``

* Xilinx (xlnx):

  * New bindings:

    * :dtcompatible:`xlnx,zynqmp-ipi-mailbox`

* Shenzhen Xptek Technology Co., Ltd (xptek):

  * Modified bindings:

    * :dtcompatible:`xptek,xpt2046` (on spi bus):

          * bus list changed from ['kscan'] to []

* Zephyr-specific binding (zephyr):

  * New bindings:

    * :dtcompatible:`zephyr,fake-rtc`
    * :dtcompatible:`zephyr,i2c-dump-allowlist`
    * :dtcompatible:`zephyr,lvgl-button-input`
    * :dtcompatible:`zephyr,lvgl-encoder-input`
    * :dtcompatible:`zephyr,lvgl-pointer-input`
    * :dtcompatible:`zephyr,mdio-gpio`
    * :dtcompatible:`zephyr,native-tty-uart`
    * :dtcompatible:`zephyr,ram-disk`
    * :dtcompatible:`zephyr,sensing`
    * :dtcompatible:`zephyr,sensing-phy-3d-sensor`

  * Removed bindings:

    * ``zephyr,gpio-keys``

  * Modified bindings:

    * :dtcompatible:`zephyr,mmc-disk` (on sd bus):

          * new property: ``bus-width``

    * :dtcompatible:`zephyr,bt-hci-spi` (on spi bus):

          * new property: ``controller-data-delay-us``

    * :dtcompatible:`zephyr,sdhc-spi-slot` (on spi bus):

          * new property: ``pwr-gpios``

    * :dtcompatible:`zephyr,memory-region`:

          * new property: ``zephyr,memory-attr``
          * property ``zephyr,memory-region-mpu`` enum value changed from ['RAM', 'RAM_NOCACHE', 'FLASH', 'PPB', 'IO', 'EXTMEM'] to None
          * property ``zephyr,memory-region-mpu`` deprecation status changed from False to True
          * property ``reg`` is now required

Libraries / Subsystems
**********************

* Management

  * Introduced MCUmgr client support with handlers for img_mgmt and os_mgmt.

  * Added response checking to MCUmgr's :c:enumerator:`MGMT_EVT_OP_CMD_RECV`
    notification callback to allow applications to reject MCUmgr commands.

  * MCUmgr SMP version 2 error translation (to legacy MCUmgr error code) is now
    supported in function handlers by setting ``mg_translate_error`` of
    :c:struct:`mgmt_group` when registering a group. See
    :c:type:`smp_translate_error_fn` for function details.

  * Fixed an issue with MCUmgr img_mgmt group whereby the size of the upload in
    the initial packet was not checked.

  * Fixed an issue with MCUmgr fs_mgmt group whereby some status codes were not
    checked properly, this meant that the error returned might not be the
    correct error, but would only occur in situations where an error was
    already present.

  * Fixed an issue whereby the SMP response function did not check to see if
    the initial zcbor map was created successfully.

  * Fixes an issue with MCUmgr shell_mgmt group whereby the length of a
    received command was not properly checked.

  * Added optional mutex locking support to MCUmgr img_mgmt group, which can
    be enabled with :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_MUTEX`.

  * Added MCUmgr settings management group, which allows for manipulation of
    zephyr settings from a remote device, see :ref:`mcumgr_smp_group_3` for
    details.

  * Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_SECONDARY`
    and :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_ANY`
    that allow to control whether MCUmgr client will be allowed to confirm
    non-active images.

  * Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_ERASE_PENDING` that allows
    to erase slots pending for next boot, that are not revert slots.

  * Added ``user_data`` as an optional field to :c:struct:`mgmt_handler` when
    :kconfig:option:`CONFIG_MCUMGR_MGMT_HANDLER_USER_DATA` is enabled.

  * Added optional ``force`` parameter to os mgmt reset command, this can be checked in the
    :c:enum:`MGMT_EVT_OP_OS_MGMT_RESET` notification callback whose data structure is
    :c:struct:`os_mgmt_reset_data`.

  * Added configurable number of SMP encoding levels via
    :kconfig:option:`CONFIG_MCUMGR_SMP_CBOR_MIN_ENCODING_LEVELS`, which automatically increments
    minimum encoding levels for in-tree groups if :kconfig:option:`CONFIG_ZCBOR_CANONICAL` is
    enabled.

  * Added STM32 SPI backend for EC Host command protocol.

  * Fixed settings_mgmt returning unknown error instead of invalid key specified error.

  * Fixed fs_mgmt returning parameter too large error instead of file is empty error when
    attempting to hash/checksum a file which is empty.

* File systems

  * Added support for ext2 file system.
  * Added support of mounting littlefs on the block device from the shell/fs.
  * Added alignment parameter to FS_LITTLEFS_DECLARE_CUSTOM_CONFIG macro, it can speed up read/write
    operation for SDMMC devices in case when we align buffers on CONFIG_SDHC_BUFFER_ALIGNMENT,
    because we can avoid extra copy of data from card buffer to read/prog buffer.

* Random

  * ``CONFIG_XOROSHIRO_RANDOM_GENERATOR``, deprecated a long time ago, is finally removed.

* Retention

  * Added the :ref:`blinfo_api` subsystem.

  * Added support for allowing mutex support to be forcibly disabled with
    :kconfig:option:`CONFIG_RETENTION_MUTEX_FORCE_DISABLE`.

* Binary descriptors

  * Added the :ref:`binary_descriptors` (``bindesc``) subsystem.

* POSIX API

  * Added dynamic thread stack support for :c:func:`pthread_create`
  * Fixed :c:func:`stat` so that it returns file stats instead of filesystem stats
  * Implemented :c:func:`pthread_barrierattr_destroy`, :c:func:`pthread_barrierattr_getpshared`,
    :c:func:`pthread_barrierattr_init`, :c:func:`pthread_barrierattr_setpshared`,
    :c:func:`pthread_condattr_destroy`, :c:func:`pthread_condattr_init`,
    :c:func:`pthread_mutexattr_destroy`, :c:func:`pthread_mutexattr_init`, :c:func:`uname`,
    :c:func:`sigaddset`, :c:func:`sigdelset`, :c:func:`sigemptyset`, :c:func:`sigfillset`,
    :c:func:`sigismember`, :c:func:`strsignal`, :c:func:`pthread_spin_destroy`,
    :c:func:`pthread_spin_init`, :c:func:`pthread_spin_lock`, :c:func:`pthread_spin_trylock`,
    :c:func:`pthread_spin_unlock`, :c:func:`timer_getoverrun`, :c:func:`pthread_condattr_getclock`,
    :c:func:`pthread_condattr_setclock`, :c:func:`clock_nanosleep`
  * Added support for querying the number of bytes available to read via the
    :c:macro:`FIONREAD` request to :c:func:`ioctl`
  * Added :kconfig:option:`CONFIG_FDTABLE` to conditionally compile file descriptor table
  * Added logging to POSIX threads, mutexes, and condition variables
  * Fixed :c:func:`poll` issue with event file descriptors

* LoRa/LoRaWAN

  * Updated ``loramac-node`` from v4.6.0 to v4.7.0

* CAN ISO-TP

  * Added support for CAN FD.

* RTIO

  * Added atomic completion counter fixing a race caught by unit tests
  * Added a :c:macro:`RTIO_SQE_NO_RESPONSE` flag for submissions when no completion notification
    is needed
  * Removed unused Kconfig options for different executors

* ZBus

  * Changed channels' and observers' metadata to comply with the data/config approach. ZBus stores
    immutable config in iterable sections in Flash and the mutable portion of data in the RAM.
  * The relationship between channels and observers is mapped using a new entity called
    observation. The observation enables us to increase the granularity of masking observation.
    Developers can mask individual observations, disable the observer, or use runtime observers.
  * Added API :c:macro:`ZBUS_CHAN_ADD_OBS` macro for adding post-definition static observers of a
    channel. That can replace the runtime observer feature, enabling developers to add static
    observers after the channel definition in different files. It increases the composability of
    the system using ZBus, making post-definition channel observation rely on the stack instead of
    the heap.
  * Added a new type of observer called Message Subscriber. ZBus' VDED will send a copy of the
    message during the publication/notification process.
  * Changed the VDED delivery sequence. Check the ref:`documentation<zbus delivery sequence>`.
  * ZBus runtime observers now rely on the heap instead of a memory pool.
  * Added new iterable section iterators APIs (for channels and observers) can now receive a
    ``user_data`` pointer to keep context between the function calls.
  * Added APIs :c:macro:`ZBUS_LISTENER_DEFINE_WITH_ENABLE` and
    :c:macro:`ZBUS_SUBSCRIBER_DEFINE_WITH_ENABLE` that allows developers to define observers'
    statuses (enabled/disabled) programmatically. With the API, developers can create observers
    initially disabled and enable them in runtime.

* Power management

  * Added :kconfig:option:`CONFIG_PM_NEED_ALL_DEVICES_IDLE`. When this
    option is set the power management will keep the system active
    if there is any device busy.
  * :c:func:`pm_device_runtime_get` can be called from ISR now.
  * Power states can be disabled directly in devicetree doing ``status = "disabled";``
  * Added the helper function, :c:func:`pm_device_driver_init`, for
    initializing devices into a specific power state.

* Modem modules

  * Added the :ref:`modem` subsystem.

HALs
****

* Nordic

  * Updated nrfx to version 3.1.0.

* Nuvoton

  * Added Nuvoton NuMaker M46x

MCUboot
*******

  * Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_NO_DOWNGRADE`
    that allows to inform application that the on-board MCUboot has been configured
    with downgrade  prevention enabled. This option is automatically selected for
    DirectXIP mode and is available for both swap modes.

  * Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_OVERWRITE_ONLY`
    that allows to inform application that the on-board MCUboot will overwrite
    the primary slot with secondary slot contents, without saving the original
    image in primary slot.

  * Fixed issue with serial recovery not showing image details for decrypted images.

  * Fixed issue with serial recovery in single slot mode wrongly iterating over 2 image slots.

  * Fixed an issue with boot_serial repeats not being processed when output was sent, this would
    lead to a divergence of commands whereby later commands being sent would have the previous
    command output sent instead.

  * Fixed an issue with the boot_serial zcbor setup encoder function wrongly including the buffer
    address in the size which caused serial recovery to fail on some platforms.

  * Fixed wrongly building in optimize for debug mode by default, this saves a significant amount
    of flash space.

  * Fixed issue with serial recovery use of MBEDTLS having undefined operations which led to usage
    faults when the secondary slot image was encrypted.

  * Fixed issue with bootutil asserting on maximum alignment in non-swap modes.

  * Added error output when flash device fails to open and asserts are disabled, which will now
    panic the bootloader.

  * Added currently running slot ID and maximum application size to shared data function
    definition.

  * Added P384 and SHA384 support to imgtool.

  * Added optional serial recovery image state and image set state commands.

  * Added ``dumpinfo`` command for signed image parsing in imgtool.

  * Added ``getpubhash`` command to dump the sha256 hash of the public key in imgtool.

  * Added support for ``getpub`` to print the output to a file in imgtool.

  * Added support for dumping the raw versions of the public keys in imgtool.

  * Added support for sharing boot information with application via retention subsystem.

  * Added support for serial recovery to read and handle encrypted seondary slot partitions.

  * Removed ECDSA P224 support.

  * Removed custom image list boot serial extension support.

  * Reworked boot serial extensions so that they can be used by modules or from user repositories
    by switching to iterable sections.

  * Reworked image encryption support for Zephyr, static dummy key files are no longer in the code,
    a pem file must be supplied to extract the private and public keys. The Kconfig menu has
    changed to only show a single option for enabling encryption and selecting the key file.

  * Reworked the ECDSA256 TLV curve agnostic and renamed it to ``ECDSA_SIG``.

  * CDDL auto-generated function code has been replaced with zcbor function calls, this now allows
    the parameters to be supplied in any order.

  * The MCUboot version in this release is version ``2.0.0+0-rc1``.

Nanopb
******

  * Changed project status to maintained.

  * Added a separate nanopb.cmake file to be included by applications.

  * Added helper cmake function ``zephyr_nanopb_sources`` to simplify ``.proto`` file inclusion.

LVGL
****

  * Changed project status to maintained.

  * Library has been updated to release v8.3.7.

  * Added ``zephyr,lvgl-{pointer,button,encoder}-input`` pseudo device bindings.
    :kconfig:option:`CONFIG_LV_Z_KSCAN_POINTER` is still supported but touch controllers
    need a :dtcompatible:`zephyr,kscan-input` child node to emit input events.

  * LVGL shell allows for monkey testing (requires :kconfig:option:`CONFIG_LV_USE_MONKEY`)
    and inspecting memory usage.

Trusted Firmware-A
******************

* Updated to TF-A 2.9.0.

Documentation
*************

* Upgraded Sphinx to 6.2

Tests and Samples
*****************

* Created common sample for file systems (`fs_sample`). It originates from sample for FAT
  (`fat_fs`) and supports both FAT and ext2 file systems.

* Created the zbus confirmed channel sample to demonstrate how to implement a delivery-guaranteed
  channel using subscribers.

* Created the zbus message subscriber sample to demonstrate how to use message subscribers.
