blob: daa9bab05538ced2a60b021bf0e1912405b45c59 [file] [log] [blame]
:orphan:
..
See
https://docs.zephyrproject.org/latest/releases/index.html#migration-guides
for details of what is supposed to go into this document.
.. _migration_4.3:
Migration guide to Zephyr v4.3.0 (Working Draft)
################################################
This document describes the changes required when migrating your application from Zephyr v4.2.0 to
Zephyr v4.3.0.
Any other changes (not directly related to migrating applications) can be found in
the :ref:`release notes<zephyr_4.3>`.
.. contents::
:local:
:depth: 2
Build System
************
Kernel
******
* :c:func:`device_init` Earlier releases returned a positive +errno value in case
of device init failure due to a bug. This is now fixed to return the correct
negative -errno value. Applications that implemented workarounds for this
issue should now update their code accordingly.
Base Libraries
**************
* UTF-8 utils declarations (:c:func:`utf8_trunc`, :c:func:`utf8_lcpy`) have
been moved from ``util.h`` to a separate
:zephyr_file:`include/zephyr/sys/util_utf8.h` file.
* ``Z_MIN``, ``Z_MAX`` and ``Z_CLAMP`` macros have been renamed to
:c:macro:`min` :c:macro:`max` and :c:macro:`clamp`.
Boards
******
* b_u585i_iot02a/ns: The flash layout was changed to be in sync with the upstream TF-M 2.2.1 board
configurations. The new layout expands the flash partitions, moving the secondary ones to the
external NOR flash. This change currently prevents upgrade from older Zephyr release images to
Zephyr 4.3 release images. More details in the TF-M migration and release notes.
* mimxrt11x0: renamed lpadc1 to lpadc2 and renamed lpadc0 to lpadc1.
* NXP ``frdm_mcxa166`` is renamed to ``frdm_mcxa346``.
* NXP ``frdm_mcxa276`` is renamed to ``frdm_mcxa266``.
* Panasonic ``panb511evb`` is renamed to ``panb611evb``.
Device Drivers and Devicetree
*****************************
.. zephyr-keep-sorted-start re(^\w)
ADC
===
* ``iadc_gecko.c`` driver is replaced by ``adc_silabs_iadc.c``.
:dtcompatible:`silabs,gecko-iadc` is replaced by :dtcompatible:`silabs,iadc`.
Comparator
==========
* :dtcompatible:`nordic,nrf-comp` and :dtcompatible:`nordic,nrf-lpcomp` ``psel`` and ``extrefsel``
properties type has been changed to integer. The value of these properties is in the range
of :c:macro:`NRF_COMP_AIN0` to :c:macro:`NRF_COMP_AIN_VDDH_DIV5`, where :c:macro:`NRF_COMP_AIN0`
to :c:macro:`NRF_COMP_AIN7` represent the external inputs AIN0 to AIN7,
:c:macro:`NRF_COMP_AIN_VDD_DIV2` represents internal reference VDD/2,
and :c:macro:`NRF_COMP_AIN_VDDH_DIV5` represents VDDH/5.
The old ``string`` properties type is deprecated.
MFD
===
* Driver support for AXP2101 has been separated from the AXP192 one. As a consequence the
kconfig symbol ``MFD_AXP192_AXP2101`` is removed. :kconfig:option:`MFD_AXP192` is now to be
used for AXP192 device while :kconfig:option:`MFD_AXP2101` for the AXP2101 one.
MISC
====
* The nrf_etr driver has been migrated to drivers/debug. As a consequence the related Kconfig
symbol was renamed from ``NRF_ETR`` to :kconfig:option:`DEBUG_NRF_ETR`, along with the rest of
the ``NRF_ETR`` symbols. Also the driver needs to be explicitly enabled via
:kconfig:option:`DEBUG_DRIVER` as it is no longer built by default.
PWM
===
* :dtcompatible:`nxp,pca9685` ``invert`` property has been removed and you can now use the
:c:macro:`PWM_POLARITY_INVERTED` or :c:macro:`PWM_POLARITY_NORMAL` flags as specifier cells for
space "pwm" are now named: ``['channel', 'period', 'flags']`` (old value:
``['channel', 'period']``) and ``#pwm-cells`` const value changed from 2 to 3.
Phy
===
* Nodes with compatible property :dtcompatible:`st,stm32u5-otghs-phy` now need to select the
CLKSEL (phy reference clock) in the SYSCFG_OTGHSPHYCR register using the new property
clock-reference. The selection directly depends on the value on OTGHSSEL (OTG_HS PHY kernel
clock source selection) located in the RCC_CCIPR2 register.
SPI
===
* The macros :c:macro:`SPI_CS_CONTROL_INIT` :c:macro:`SPI_CS_CONTROL_INIT_INST`,
:c:macro:`SPI_CONFIG_DT`, :c:macro:`SPI_CONFIG_DT_INST`, :c:macro:`SPI_DT_SPEC_GET`,
and :c:macro:`SPI_DT_SPEC_INST_GET` have been changed so that they do not need to be
provided a delay parameter anymore. This is because the timing parameters of a SPI peripheral
chip select should now be specified in DT with the
``spi-cs-setup-delay-ns`` and ``spi-cs-hold-delay-ns`` properties.
(:github:`87427`).
Sensors
=======
* Nodes with compatible property :dtcompatible:`invensense,icm42688` now additionally need to also
include :dtcompatible:`invensense,icm4268x` in order to work.
Stepper
=======
* :dtcompatible:`zephyr,gpio-stepper` has been replaced by :dtcompatible:`zephyr,h-bridge-stepper`.
.. zephyr-keep-sorted-stop
Bluetooth
*********
* :c:struct:`bt_le_cs_test_param` and :c:struct:`bt_le_cs_create_config_params` now require
providing both the main and sub mode as a single parameter.
* :c:struct:`bt_conn_le_cs_config` now reports both the main and sub mode as a single parameter.
* :c:struct:`bt_conn_le_cs_main_mode` and :c:struct:`bt_conn_le_cs_sub_mode` have been replaced
with :c:struct:`bt_conn_le_cs_mode`.
Bluetooth Controller
====================
* The following Kconfig option have been renamed:
* :kconfig:option:`CONFIG_BT_CTRL_ADV_ADI_IN_SCAN_RSP` to
:kconfig:option:`CONFIG_BT_CTLR_ADV_ADI_IN_SCAN_RSP`
* :c:func:`bt_ctlr_set_public_addr` is deprecated. To set the public Bluetooth device address,
sending a vendor specific HCI command with :c:struct:`bt_hci_cp_vs_write_bd_addr` can be used.
.. zephyr-keep-sorted-start re(^\w)
Bluetooth Audio
===============
* :c:struct:`bt_audio_codec_cfg` now requires setting the target latency and target PHY explicitly,
rather than always setting the target latency to "Balanced" and the target PHY to LE 2M.
To keep current functionality, set the ``target_latency`` to
:c:enumerator:`BT_AUDIO_CODEC_CFG_TARGET_LATENCY_BALANCED` and ``target_phy`` to
:c:enumerator:`BT_AUDIO_CODEC_CFG_TARGET_PHY_2M`.
The :c:macro:`BT_AUDIO_CODEC_CFG` macro defaults to these values.
(:github:`93825`)
* Setting the BGS role for GMAP now requires also supporting and implementing the
:kconfig:option:`CONFIG_BT_BAP_BROADCAST_ASSISTANT`.
See the :zephyr:code-sample:`bluetooth_bap_broadcast_assistant` sample as a reference.
* The BAP Scan Delegator will no longer automatically update the PA sync state, and
:c:func:`bt_bap_scan_delegator_set_pa_state` must be used to update the state. If the
BAP Scan Delegator is used together with the BAP Broadcast Sink, then the PA state of the
receive state of a :c:struct:`bt_bap_broadcast_sink` will still be automatically updated when the
PA state changes. (:github:`95453`)
.. zephyr-keep-sorted-stop
Bluetooth HCI
=============
* The deprecated ``ipm`` value was removed from ``bt-hci-bus`` devicetree property.
``ipc`` should be used instead.
Ethernet
========
* The :dtcompatible:`microchip,vsc8541` PHY driver now expects the reset-gpios entry to specify
the GPIO_ACTIVE_LOW flag when the reset is being used as active low. Previously the active-low
nature was hard-coded into the driver. (:github:`91726`).
* CRC checksum generation offloading to hardware is now explicitly disabled rather then explicitly
enabled in the Xilinx GEM Ethernet driver (:dtcompatible:`xlnx,gem`). By default, offloading is
now enabled by default to improve performance, however, offloading is always disabled for QEMU
targets due to the checksum generation in hardware not being emulated regardless of whether it
is explicitly disabled via the devicetree or not. (:github:`95435`)
* Replaced devicetree property ``rx-checksum-offload`` which enabled RX checksum offloading
``disable-rx-checksum-offload`` which now actively disables it.
* Replaced devicetree property ``tx-checksum-offload`` which enabled TX checksum offloading
``disable-tx-checksum-offload`` which now actively disables it.
Power management
****************
* :kconfig:option:`CONFIG_PM_S2RAM` and :kconfig:option:`PM_S2RAM_CUSTOM_MARKING` have been
refactored to be automatically managed by SoCs and the devicetree. Applications shall no
longer enable them directly, instead, enable or disable the "suspend-to-ram" power states
in the devicetree.
* For the NXP RW61x, the devicetree property ``exit-latency-us`` has been updated to reflect more
accurate, measured wake-up times. For applications utilizing Standby mode (PM3), this update and
an increase to the ``min-residency-us`` devicetree property may influence how the system
transitions between power modes. In some cases, this could lead to changes in power consumption.
Networking
**********
* The :c:type:`coap_client_response_cb_t` signature has changed. The list of arguments
is passed as a :c:struct:`coap_client_response_data` pointer instead.
* The HTTP server now respects the configured ``_config`` value. Check that
you provide applicable value to :c:macro:`HTTP_SERVICE_DEFINE_EMPTY`,
:c:macro:`HTTPS_SERVICE_DEFINE_EMPTY`, :c:macro:`HTTP_SERVICE_DEFINE` and
:c:macro:`HTTPS_SERVICE_DEFINE`.
* The size of socket address length type :c:type:`socklen_t` has changed. It is now defined to
be always 32 bit ``uint32_t`` in order to be aligned with Linux. Previously it was defined as
``size_t`` which meant that the size could be either 32 bit or 64 bit depending on system
configuration.
.. zephyr-keep-sorted-start re(^\w)
.. zephyr-keep-sorted-stop
Modem
*****
* ``CONFIG_MODEM_AT_SHELL_USER_PIPE`` has been renamed to :kconfig:option:`CONFIG_MODEM_AT_USER_PIPE`.
* ``CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE`` has been updated to :kconfig:option:`CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE_EXTRA`,
which only takes the number of extra bytes desired over the default of (:kconfig:option:`CONFIG_MODEM_CMUX_MTU` + 7).
Display
*******
* The RGB565 and BGR565 pixel formats were used interchangeably in the display sample.
This has now been fixed. Boards and applications that were tested or developed based on the
previous sample may be affected by this change (see :github:`79996` for more information).
* SSD1363's properties using 'greyscale' now use 'grayscale'.
PTP Clock
*********
* The doc of :c:func:`ptp_clock_rate_adjust` API didn't provide proper and clear function description.
Drivers implemented it to adjust rate ratio relatively based on current frequency.
Now PI servo is introduced in both PTP and gPTP, and this API function is changed to use for rate
ratio adjusting based on nominal frequency. Drivers implementing :c:func:`ptp_clock_rate_adjust`
should be adjusted to account for the new behavior.
Video
*****
* The ``min_line_count`` and ``max_line_count`` fields have been removed from :c:struct:`video_caps`.
Application should base on the new :c:member:`video_format.size` to allocate buffers.
Other subsystems
****************
.. zephyr-keep-sorted-start re(^\w)
Cellular
========
* :c:enum:`cellular_access_technology` values have been redefined to align with 3GPP TS 27.007.
* :c:enum:`cellular_registration_status` values have been extended to align with 3GPP TS 27.007.
Logging
=======
* The UART dictionary log parsing script
:zephyr_file:`scripts/logging/dictionary/log_parser_uart.py` has been deprecated. Instead, the
more generic script of :zephyr_file:`scripts/logging/dictionary/live_log_parser.py` should be
used. The new script supports the same functionality (and more), but requires different command
line arguments when invoked.
MCUmgr
======
* The :ref:`OS mgmt<mcumgr_smp_group_0>` :ref:`mcumgr_os_application_info` command's response for
hardware platform has been updated to output the board target instead of the board and board
revision, which now includes the SoC and board variant. The old behaviour has been deprecated,
but can still be used by enabling
:kconfig:option:`CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM`.
RTIO
====
* Callback operations now take an additional argument corresponding to the result code of the first
error in the chain.
* Callback operations are always called regardless of success/error status of previous submissions
in the chain.
Secure storage
==============
* The size of :c:type:`psa_storage_uid_t`, used to identify storage entries, was changed from 64 to
30 bits.
This change breaks backward compatibility with previously stored entries for which authentication
will start failing.
Enable :kconfig:option:`CONFIG_SECURE_STORAGE_64_BIT_UID` if you are updating an existing
installation from an earlier version of Zephyr and want to keep the pre-existing entries.
(:github:`94171`)
Shell
=====
* The MQTT topics related to :kconfig:option:`SHELL_BACKEND_MQTT` have been renamed. Renamed
``<device_id>_rx`` to ``<device_id>/sh/rx`` and ``<device_id>_tx`` to ``<device_id>/sh/rx``. The
part after the ``<device_id>`` is now configurable via :kconfig:option:`SHELL_MQTT_TOPIC_RX_ID`
and :kconfig:option:`SHELL_MQTT_TOPIC_TX_ID`. This allows keeping the previous topics for backward
compatibility.
(:github:`92677`).
* The :c:func:`shell_set_bypass` now requires a user data pointer to be passed. And accordingly the
:c:type:`shell_bypass_cb_t` now has a user data argument.
.. zephyr-keep-sorted-stop
Modules
*******
* The TinyCrypt library was removed as the upstream version is no longer maintained.
PSA Crypto API is now the recommended cryptographic library for Zephyr.
Silabs
======
* Aligned the name of the Rail options with the other SiSDK related options:
* :kconfig:option:`CONFIG_RAIL_PA_CURVE_HEADER` to
:kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_CURVE_HEADER`
* :kconfig:option:`CONFIG_RAIL_PA_CURVE_TYPES_HEADER` to
:kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_CURVE_TYPES_HEADER`
* :kconfig:option:`CONFIG_RAIL_PA_ENABLE_CALIBRATION` to
:kconfig:option:`CONFIG_SILABS_SISDK_RAIL_PA_ENABLE_CALIBRATION`
* Fixed name of the :kconfig:option:`CONFIG_SOC_*`. These option contained PART_NUMBER in their
while they shouldn't.
* The separate ``em3`` power state was removed from Series 2 SoCs. The system automatically
transitions to EM2 or EM3 depending on hardware peripheral requests for the oscillators.
LVGL
====
* The PIXEL_FORMAT_MONO10 and PIXEL_FORMAT_MONO01 formats were swapped
in :zephyr_file:`modules/lvgl/lvgl_display_mono.c`, which caused
black and white to be inverted when using LVGL with monochrome displays.
This issue has now been fixed. Any workarounds previously applied to achieve the expected
behavior should be removed, otherwise black and white will be inverted again.
Architectures
*************