First of all, the entire team at Bootlin wishes you a Happy New Year, and best wishes for 2019 in your personal and professional life. The beginning of the new year is a good time to look back and see the achievements of the past year, which is why we review the 2018 year in terms of Bootlin news and activity:
We’re now called Bootlin
Due to a legal battle related to trademarks, we decided to change our name to Bootlin at the beginning of 2018. The company was not sold or purchased, it is still owned by the same people, and driven by the same team of engineers. This change of name obviously took a lot of time, which could have been used for other more productive contribution activities, but it’s finally done, and in 2019 we can move on and leave this legal battle behind us. See our blog post for more details.
In 2018, we contributed to the 4.15, 4.16, 4.17, 4.18, 4.19 and 4.20 kernel releases a total of 1365 commits, putting Bootlin regularly in the top 20 companies contributing to the Linux kernel.
Our most significant contributions have been:
- Thanks to a successful crowdfunding campaign launched in February, we have been able to dedicate enough time to develop and upstream a Linux kernel driver and associated user-space library to support hardware-accelerated video decoding on Allwinner processors. This was a massive effort as it required discussing with the Linux kernel community a new set of userspace interfaces to support stateless video decoders. The base of our driver was merged in Linux 4.20 and supports only MPEG2 decoding. Support for H264 and H265 decoding is ready and has been posted several times, but discussions on the userspace interface are still on-going. See our numerous blog posts and especially the end of year status.
- We have developed and contributed a brand new Linux kernel subsystem to support the MIPI I3C bus, a modern bus offering an alternative to SPI or I2C. Being vastly different from I2C, it required a completely separate subsystem located in drivers/i3c/. Along with the core subsystem itself, we developed a driver for the Cadence I3C master, and a driver for a Cadence I3C GPIO expander. See our blog posts on I3C for more details.
- We contributed a new interface called
exec_op for NAND flash controller drivers, which allows the MTD subsystem to more easily support optimized NAND flash controllers and vendor-specific NAND commands. This new interface was originally developed for the Marvell NAND controller driver, but a number of other drivers have been converted since then, and all new drivers make use of his interface. See our blog post for more details.
- We contributed support for the Microsemi VSC7513 and VSC7514 MIPS processors, with the base support (irqchip, pinctrl, gpio, reset, DT) but more importantly a massive switchdev driver to support the major feature of these processors: a built-in gigabit Ethernet switch. Our switchdev driver supports bridging, STP, IGMP snooping, VLAN filtering and link aggregation. See our blog posts about platform support and switchdev support.
- We contributed a new subsystem called spi-mem, which allows to support SPI flash memories in a generic way, re-using SPI controller drivers for regular SPI devices, SPI NOR flashes and SPI NAND flashes, instead of having separate controller drivers as was done until now for SPI NOR support. On top of spi-mem, we added support for SPI NAND flash memories to Linux. See our blog post on spi-mem: bringing some consistency to the SPI memory ecosystem.
- We contributed a number of drivers for Cadence hardware IPs: Cadence MIPI CSI receiver, Cadence MIPI CSI transceiver, Cadence DSI encoder, Cadence PCIe host controller, Cadence PCIe endpoint controller and as detailed above Cadence I3C master controller.
- We continued to work on improving the support for Marvell ARM processors
- Improvements in the inside-secure crypto accelerator driver: support for new crypto algorithms, support for the EIP97 variant which enabled using the driver on Armada 37xx in addition to the already support EIP197 variant used on Armada 7K/8K, numerous fixes and performance improvements
- Improvements in the mvpp2 network controller driver, used on Armada 7K/8K: RSS support, support for SFP ports, HW offloading for VLAN filtering, 1000baseX and 2500baseX support
- On Armada 7K/8K, we added support for the NAND controller and the thermal sensors.
- On Armada 37xx, we added cpufreq support and the first pieces of suspend/resume support.
- Allwinner platform support improvements: of course the Allwinner VPU driver detailed above, but also general improvements to the Allwinner A83 support (for which we delivered a complete BSP for a customer), improvements to the sun4i display driver (especially support for YUV planes, and MIPI DSI support on Allwinner A33), improvements to the sun8i-codec audio driver, and improvements to the AXP209 and AXP813 PMIC drivers.
- For Microchip/Atmel platforms, we continued our maintenance work, with a focus this year on reworking the representation of the platform clocks in the Device Tree.
Even if Bootlin is mainly active as a Linux kernel contributor, we also contribute to U-Boot, and we have been more active in 2018 than we were in the past. In a recent blog post, we summarized our most significant contributions:
- Support for SPI NAND memories, as well as a significant sync of the MTD stack in U-Boot with the one from Linux, and the introduction of a generic
mtd U-Boot command to manipulate all types of flash memories
- Generic support for TPMv2 and for TPMv2 chips connected over SPI
- Brand new subsystem to support 1-wire controllers and devices
- Support for the Microsemi Ocelot and Luton MIPS processors. We also contributed support for Microsemi Ocelot to Linux, as discussed above
- Support for the ARM PL022 SPI controller
- Support for multiple U-Boot environment backends
- Support for Microsemi VSC8574 and VSC8584 Ethernet PHYs
In total, we contributed 172 commits to U-Boot in 2018.
Beyond Linux and U-Boot, we also contributed to a few other open-source projects:
- We continued to be very active in the Buildroot project, with Bootlin CTO Thomas Petazzoni acting as a co-maintainer of this project. We contributed 431 commits to Buildroot in 2018, but more importantly as a co-maintainer, Thomas reviewed and merged close to 3000 patches in 2018. Thomas also participated to the Buildroot Developers Meeting after FOSDEM, the Buildroot Hackathon, and the Buildroot Developers meeting before ELCE.
- We contributed to the Intel GPU Tools project, adding support for testing more pixel formats, to test the display pipeline of the RaspberryPi, in combination with the Chamelium testing hardware. See our blog post and intel-gpu-tools commits
- As part of using the Linux Test Project for one of our customers, we contributed a small number of fixes, and we have more to contribute in 2019.
- We made our Elixir Cross Referencer project easier to customize, so that contributors can add support for a new source code repository through a single plugin file, instead of having to modify the main source files. Thanks to this, we currently index 8 projects on https://elixir.bootlin.com/.
Other engineering projects
While many of our engineering projects are directly related to upstream contributions, which have been described above, some are not always leading to direct contributions. Here is a small selection of other interesting projects we worked on in 2018:
- For a German customer in the healthcare industry, wrote a complete U-Boot, Linux and Buildroot BSP for a custom NXP i.MX6 platform.
- For an international company in the TV/set-top box industry, worked on adding support for top-level parallel build to Buildroot.
- For a Netherlands based customer in the gaming industry, wrote a complete U-Boot, Linux and Buildrot BSP for a custom Allwinner A33 platform, with significant boot time optimization to quickly boot up to a Qt5 OpenGL application.
- For a Spanish customer, brought up a PCM1789 audio codec connected to a NXP i.MX6 processor, and for an Italian customer, brought up a CS4272 audio codec connected to an Allwinner A20 processor. Under Linux, of course!
- We continued working for a major US customer, delivering an i.MX6 and SPEAr600 Linux BSP based on Yocto. Our work in 2018 was mainly focused on supporting secure boot on i.MX6 (see our talk at ELC on this topic) and porting a modern version of U-Boot on the SPEAr600 platform.
- For a customer in Chile, we worked on supporting a OV5640 camera sensor connected over CSI to an Allwinner H3 platform. Thanks to this, we made a significant number of improvements to the OV5640 driver.
- We have continued to maintain toolchains.bootlin.com, by keeping the toolchains reguarly updated, and adding support for the RISC-V 64 bit architecture. See our blog posts.
In 2018, Bootlin was at a large number of conferences and events:
- At FOSDEM, where Miquèl Raynal gave a talk Drive your NAND within Linux, forget the word “nightmare”. See our blog post
- At Embedded Linux Conference, where we gave 5 talks, 2 tutorials and 1 BoF. Talks were related to secure boot, I3C, NAND support, Buildroot and switchdev driver. Tutorials on kernel driver development and Buildroot, and the BoF on system size. See the blog post about our talks and the blog post with our selection of talks from other speakers
- At Kernel Recipes, Grégory Clement gave a talk about MMC support in Linux. See our blog post about this event.
- At Alpine Linux Persistence and Storage Summit, where Miquèl Raynal and Boris Brezillon gave a talk about their work to bring SPI NAND support to Linux. See our blog post.
- Maxime Ripard attended the X.org Developers Conference, see his report from the event.
- A large part of the team attended the Embedded Linux Conference Europe, where we gave three talks (support for stateless video codecs in Linux, networking from the MAC to the link partner, SPI memory support in U-Boot and Linux), 2 tutorials (introduction to kernel driver development, introduction to Buildroot) and 2 demonstrations (Allwinner VPU work, and switchdev driver for Microsemi platforms). See our report from the event and our selection of talks from other speakers.
- Right next to the Embedded Linux Conference Europe, Maxime Ripard attended the Media Summit to discuss the V4L Linux subsystem, see his report, while Maxime Chevallier attended the Real-Time Summit, see his report.
- Antoine Ténart attended the Linux Plumbers conference, see also his report.
In 2018, we gave our Embedded Linux, Linux kernel, Yocto Project and Buildroot training courses on-site in the United States, Portugal, Belgium, Germany, France, Spain, Serbia, Greece, Bosnia, Finland and Switzerland. As you can see, we travel all around the world to teach our training courses.
Of course, we continued our public training sessions organized in Avignon (France), given in English by Bootlin founder and CEO Michael Opdenacker.
In 2018, we made 217 commits to our training materials Git repository, showing our continuous work to keep them updated. Our training materials remain all freely available under a Creative Commons CC-BY-SA license, as they have been since Bootlin creation fifteen years ago.
In 2018, we expanded both our Toulouse and Lyon offices:
- We moved our office in Toulouse mid-2018 from a 100m² surface to a 180m² one, offering more room for the existing team, and room to expand the team in the coming years. As of January 1, 2019, we have a team of 8 engineers working in Toulouse.
- We moved our office in Lyon end of 2018 from a small one room office of 30m² to a full office of 100m², here as well to expand the team in the coming years. As of January 1, 2019, the team in Lyon has 2 engineers, but we hope to increase this number soon (see Recruiting below).
In terms of recruiting:
- Maxime Chevallier joined us in February 2018, and has since then been mostly working on networking topics on Marvell platforms, but also a few other engineering projects.
- Paul Kocialkowski joined us in March 2018 for an internship focused on the Allwinner VPU development and then was hired as a full-time engineer starting November 2018.
- Thanks to our office expansion in Lyon, we have an open position for a Embedded Linux and Kernel engineer with existing experience in Lyon. See our blog post (in French) for more details.
- We have openings for several internships in 2019, on Linux, U-Boot, Buildroot and Elixir related topics. See our blog post (in French).
In 2018, we continued to support organizations and events who promote and defend Free Software:
Donating 1,024 EUR to Framasoft, an organization whose goal (in addition to supporting Free Software) is to decentralize Internet services. For example, they made a huge effort to release PeerTube in 2018, a peer-to-peer and of course Free Software alternative to centralized video hosting solutions.
Donating 1,024 EUR to Wikimedia France, to support free knowledge sharing through projects such as Wikipedia and Wikimedia Commons.
Donating 1,024 EUR to April, a French organization doing terrific work to promote Free Software, to follow the evolution of national and European law, and to animate campaigns to keep our political representatives aware of the needs of Free Software developers and users.
We also sponsored the Capitole du Libre 2018 (250 EUR) and Buildroot Developers Meeting 2018 in Edinburgh (250 EUR) events.
And of course, we support the LWN.net on-line weekly column through a corporate subscription (810 USD).
We have plenty of ideas for 2019, so stay tuned for more news. We hope that 2019 will be a great year for you too, with many contributions of all kinds to the lives of others.