BayLibre contributions to Zephyr v3.6

The Zephyr Project recently released version 3.6 on February 23rd 2024. BayLibre is proud to have contributed to this release in several areas.

RISC-V

Nicolas Pitre made several improvements to the RISC-V floating-point support in Zephyr. As a frequent contributor to RISC-V, Nicolas is now listed as a collaborator in the project’s MAINTAINERS file.

POSIX

Semaphores

Nicolas Pitre optimized the implementation of POSIX semaphores within Zephyr.

sysconf()

As part of a larger effort to enhance Zephyr’s POSIX API layer, Adam Wojasinski introduced a basic sysconf() function. To minimize runtime overhead, Adam implemented the function’s complexity at compile time. Due to Zephyr’s resource-constrained environment, error checking was intentionally omitted. This makes the function non-compliant with the full POSIX standard but better suited for Zephyr’s typical use cases. The possibility of a fully compliant implementation through Kconfig was discussed. Contributions are welcome, and a compliant POSIX sysconf() implementation could be a great project for newcomers.

_POSIX_MESSAGE_PASSING option

To fully support the API provided by the POSIX _POSIX_MESSAGE_PASSING option, Adam Wojasinski implemented the mq_notify() function. This function alerts a process when a message becomes available. It offers two modes: basic mode, where a notification function is called upon message transmission, and thread mode, where a thread is spawned for incoming messages. In addition to the function itself, Adam included comprehensive tests demonstrating mq_notify() usage.

I2C DesignWare Controller

The I2C reading code previously used an undersized signed Adrien Ricciardi fixed a bug causing computation overflow in the DesignWare I2C integer to calculate free bytes in the receive FIFO. This could lead to negative values even when space was available. Negative results mistakenly exited the function before clearing receive interrupt flags, resulting in an infinite interrupt loop.

ADI support

Analog Devices (ADI) produces the ADIN2111/1110 series, low-power single/dual-port 10BASE-T1L transceivers designed for industrial Ethernet applications. These chips comply with the IEEE® 802.3cg-2019™ standard for long-reach, 10 Mbps single-pair Ethernet (SPE).

Angelo Dureghello and Philip Molloy contributed support for the ADIN2111/1110 evaluation boards (eval-adin2111ebz and eval-adin1110ebz) to this Zephyr release. The related eth_adin2111 driver is functional and continues to see improvements in features and performance.

Summary of BayLibre contributions in Zephyr v3.6.0

Authored 22
Co-developed-by 2
Signed-off-by 3