Nícolas F. R. A. Prado
September 07, 2021
Reading time:
With the release of the 5.14 kernel, the Linux community celebrates 30 years since the birth of the biggest collaborative software project in the world. Since then, this open collaboration by thousands of engineers has produced an operating system kernel that is more reliable, efficient, and better suited for countless applications than any single organization could ever achieve.
While the high quality of this huge collaborative effort is definitely apparent by the widespread presence of Linux in the market today, this also means there is an ever-increasing interest in more modern hardware support, as well as a more reliable kernel that is thoroughly tested. This is where Collabora's developers come in to help make this a reality. Here's a look at their contributions to this latest kernel release.
While futex is a complex subsystem itself, its multiplexed syscall interface increases the complexity even further. Still it is the base of a lot of userspace's synchronization mechanisms like mutex and semaphores, so it's essential to ensure that it works correctly. To help track regressions on futex, André increased the selftest's coverage. This effort is part of a long term development of a new set of futex syscalls, known as futex2.
ANX7688 is a Type-C controller which implements all the features of USB Type-C: Power Delivery, Alternate Mode, USB. The chip is found on PinePhone devices and the Chromebook Acer R13 Laptop (a.k.a elm).
The Acer R13 Chromebook has a peculiar design in which the ANX7688 sits behind the ChromeOS Embedded Controller (EC). The configuration of the controller and the communication with it is done by the EC while the CPU has limited access to the chip using an I2C tunnel through the EC. On the Linux kernel side, it uses a simple DRM bridge driver for the HDMI to DP conversion feature. The driver rejects some possible resolutions according to the controller configuration.
In this release, Dafna merged the driver for the ChromeOS EC's ANX7688 bridge used on the elm device as well as its device-tree binding. This required using a different compatible string to describe the device, "google,cros-ec-anx7688", as the usual ANX7688 isn't behind an EC and works as a full Type-C controller in devices like the PinePhone.
As previously mentioned, we're working on adding HEVC/H.265 support for NXP's i.MX 8M. With this release, Benjamin kept at it and got HEVC support merged for VeriSilicon's Hantro video decoder. This gets us one step closer to the goal of graduating the HEVC API into a stable uAPI.
On the hardware support side, patches to enable compressed frames (for better decoding performance), 10 bits decoding and scaling lists have been submitted but haven't yet been merged.
The Microchip SAMA5D4 SoC also features another VeriSilicon's Hantro decoder - the G1. A versatile decoder capable of handling MPEG2, VP8 and H264 streams. With the 5.14 release, Emil adapted the existing Hantro driver to support the hardware, instead of the out-of-tree driver required previously. Thus improving the out-of-the-box experience, as people no longer need to patch their Linux kernel, GStreamer and/or FFmpeg - but instead can just use the official upstream versions.
While the device enablement is complete, this work builds upon the bigger picture in the multimedia stack and allows us to better prioritise our future work, from performance improvements in GStreamer to fixing the last few conformance tests.
The MPEG-2 stateless controls were finally moved out of the media staging area thanks to the efforts of Ezequiel Garcia and others in tidying it up. This is a step forward for the community as now both drivers and userspace applications can be sure that their code will not break due to sudden changes in the uAPI. The Hantro and Cedrus drivers relied on the staging controls and were updated accordingly. A MR for a GStreamer MPEG-2 decoder has been marked as ready as a direct result of Ezequiel's work and should be merged soon, to the benefit of the Linux media ecosystem.
Other contributions by our engineers in this release include device tree support for yet another imx6 based device by Sebastian and added support for the IOMMU used in the RK3568 SoC by Benjamin.
Alyssa Rosenzweig (2):
Andrzej Pietrasiewicz (2):
André Almeida (4):
Arnaud Ferraris (1):
Benjamin Gaignard (17):
Dafna Hirschfeld (2):
Emil Velikov (9):
Enric Balletbo i Serra (4):
Ezequiel Garcia (19):
Fabien Lahoudere (2):
Ricardo Cañuelo (1):
Sebastian Reichel (10):
Sebastian Reichel (41):
Ezequiel Garcia (3):
Sebastian Reichel (18):
Carl Philipp Klemm (2):
David Wu (2):
Finley Xiao (1):
Hermann Lauer (1):
Ian Ray (1):
Jian Xin (1):
Krzysztof Kozlowski (3):
Linus Walleij (7):
Zou Wei (3):
Benjamin Gaignard (1):
Boris Brezillon (2):
Dafna Hirschfeld (2):
Emil Velikov (2):
Enric Balletbo i Serra (20):
Ezequiel Garcia (22):
Tomeu Vizoso (2):
Daniel Stone (4):
Enric Balletbo i Serra (2):
Pekka Paalanen (7):
Daniel Almeida (10):
Enric Balletbo i Serra (1):
20/12/2024
The Rockchip RK3588 upstream support has progressed a lot over the last few years. As 2024 comes to a close, it is a great time to have…
09/12/2024
Collabora will be at NeurIPs this week to dive into the latest academic findings in machine learning and research advancements that are…
05/12/2024
Now based on Debian Bookworm, Apertis is a collaborative OS platform that includes an operating system, but also tools and cloud services…
Comments (0)
Add a Comment