Atmel SAMA5D4 support in the mainline Linux kernel

Atmel SAMA5D4Atmel announced its new ARM Cortex-A5-based SoC on October 1, the SAMA5D4. Compared to the previous Cortex-A5 SoC from Atmel, the SAMA5D3, this new version brings a L2 cache, NEON, a slightly different clock tree, a hardware video decoder, and Trustzone support.

Bootlin engineers have worked since several months with Atmel engineers to prepare and submit the support for this new SoC to the mainline Linux kernel. We have actually submitted the patches on September, 11th, almost a month before the official release of the new chip! This means that most of the support for this new SoC will already be part of the upcoming 3.18 kernel release. Meanwhile, it is already possible to test it out by using the linux-next repository.

There are however a few pieces missing pieces to support all aspects of the chip:

  • A few patches are needed to get proper NAND flash controller support.
  • The DMA controller is brand new in this SAMA5D4 SoC, and the DMA controller driver has not yet been merged, even though the patches have been posted a long time ago, and are currently in their sixth iteration.
  • Display support, through a DRM/KMS driver, is also being reviewed. The driver, written by Bootlin engineer Boris Brezillon, was initially designed for the sam9x5 and sam5d3, but will be compatible with sama5d4 as well. The patch series is currently in its seventh iteration.

The last big missing part is support for non-secure mode: for the moment, the system always runs in secure mode. Running the kernel in non-secure mode will require some more work but an initial version will probably be pushed during the next development cycle.

Besides this work on SAMA5D4 support ahead of its public release, Bootlin is also doing a lot of maintenance work on all the Atmel ARM platforms in the Linux kernel: migration to the Device Tree, to the clock framework, to several other new subsystems, etc. See the summary of our kernel contributions to 3.16, 3.15 and 3.14.

Through this work, the Bootlin engineering team has a very deep knowledge of the Linux support for Atmel ARM processors. Do not hesitate to contact us if you need help to bring up the bootloader or kernel on your custom Atmel ARM platform! It is also worth mentioning that Free-Electrons is part of the Atmel partner ecosystem.

2014 Q3 newsletter

Bootlin is happy to share some news about the latest training and contribution activities of the company.

Kernel contributions

Since our last newsletter, our engineering team continued to make significant contributions to the Linux kernel, especially in the area of supporting ARM processors and platforms:

  • 218 patches from Bootlin were merged into Linux 3.15, making Bootlin the 12th contributing company for this release by number of patches. See our blog post.
  • 388 patches from Bootlin were merged into Linux 3.16, making Bootlin the 7th contributing company for this release, by number of patches. See our blog post.
  • For the upcoming 3.17 release, we already have 146 patches merged, and we have a lot more work being done for future kernel releases.

The major areas of our contributions were:

  • The addition of an ubiblk driver, which allows traditional block filesystems to be used on top of UBI devices, and therefore on NAND flash storage. Only read-only support is available, but it already allows to make use of the super efficient SquashFS filesystem on top of NAND flash in a safe way.
  • Another major addition is support for the new Marvell Armada 375 and Armada 38x processors. In just two releases (3.15 and 3.16) we almost pushed entire support for these new processors. The network driver for Armada 375 is one missing piece, coming in 3.17.
  • Our maintenance work on the Atmel AT91 and SAMA5 processors has continued, with more conversion to the Device Tree, the common clock framework, and other modern kernel mechanisms. We have also developed the DRM/KMS (graphics) driver for the SAMA5D3 SoC, which has already been posted and should hopefully be merged soon.
  • Our work to support the Marvell Berlin processor has started to be merged in 3.16. This processor is used in various TVs, set-top boxes or devices like the Google Chromecast. Basic support was merged including Device Trees, clock drivers, pin-muxing driver, GPIO and SDHCI support. AHCI support will be in 3.17, and USB and network support should be in 3.18.
  • Additional work was done on support for Allwinner ARM SoCs, especially the A31 processor: SPI and I2C support, drivers for the P2WI bus and the PRCM controller, and support for USB.

We now have broad experience in writing kernel drivers and getting code merged into the mainline tree. Do not hesitate to contact us if you need help to develop Linux kernel drivers, or to support a new board or processor.

Buildroot contributions

Our involvement into the Buildroot project, a popular embedded Linux build system, is going on. We have merged 159 patches in the 2014.05 release of the project (total of 1293 patches), and 129 patches in the 2014.08 release of the project (total of 1353 patches). Moreover, our engineer Thomas Petazzoni is regularly an interim maintainer of the project, when the official maintainer Peter Korsgaard is not available. Some of the major features we contributed: major improvements to Python 3 support, addition of EFI bootloaders, addition of support for the Musl C library.

Regular embedded Linux projects

Of course, we also conducted embedded Linux development and boot time optimization projects for various embedded system makers, with less visible impact on community projects. However, we will try to share generic technical experience from such projects through future blog posts.

New training course: Yocto Project and OpenEmbedded

A large number of embedded Linux projects use embedded Linux build systems to integrate the various software components of the system into a working root filesystem image. Among the solutions available to achieve this, the Yocto Project and OpenEmbedded are very popular.

We have therefore launched a new 3 day Yocto Project and OpenEmbedded training course to help engineers and companies who are using, or are interested in using these solutions for their embedded Linux projects. Starting from the basics of understanding the core principles of Yocto, the training course goes into the details of writing package recipes, integrating support for a board into Yocto, creating custom images, and more.

The detailed agenda of the training course is available. You can order this training course at your location, or participate to the first public session organized on November 18-20 in France.

Embedded Linux training course updated

The embedded Linux ecosystem is evolving very quickly, and therefore we are continuously updating our training courses to match the latest developments. As part of this effort, we have recently conducted a major update to our Embedded Linux course: the hardware platform used for the practical labs has been changed to the popular and very interesting Atmel Xplained SAMA5D3, and many practical labs have been improved to provide a more useful learning experience. See our blog post for more details.

Mailing list for training participants

We have launched a new service for the participants to our training sessions: a mailing list dedicated to them, and through which they can ask additional questions after the course, share their experience, get in touch with other training participants and Bootlin engineers. Of course, all Bootlin engineers are on the mailing list and participate to the discussions. Another useful service offered by our training courses!

This resource is no longer available, but participants to our training sessions are still welcome to contact us by e-mail.

Conferences: ELC, ELCE, Kernel Recipes

The Bootlin engineering team will participate to the Embedded Linux Conference Europe and Linux Plumbers, next month in Düsseldorf, Germany. Several Bootlin engineers will also be giving talks during ELCE:

In addition, Thomas will participate to the Buildroot Developers Day, taking place right before the Embedded Linux Conference Europe in Düsseldorf.

See also our blog post about ELCE for more details.

Maxime Ripard and Michael Opdenacker will participate to the Kernel Recipes 2014 conference, on September 25-26 in Paris. Maxime will be giving his Allwinner kernel talk at this conference. See our blog post for more details.

Last but not least, we have recently published the videos of a number of talks from the previous Embedded Linux Conference, held earlier this year in San Jose. A lot of interesting material about embedded Linux! Check out our blog post for more details.

Upcoming training sessions

We have a number of public training sessions dates, with seats available:

Sessions and dates

Bootlin at Kernel Recipes 2014

Kernel RecipesThe Kernel Recipes conference is holding its third edition next week in Paris, on September 25th and 26th. With speakers like Greg Kroah-Hartmann, Hans Peter Anvin, Martin Peres, Hans Verkuil or Jean Delvare and many others, it is going to be a very interesting kernel-oriented conference.

Bootlin will participate to this conference, as our engineer Maxime Ripard will give a talk about Supporting a new ARM platform: the Allwinner example, and Maxime will be attending the event on both days.

Also, Bootlin’sCEO Michael Opdenacker will be attending the conference as well.

A good opportunity to meet Bootlin folks, and discuss business or career opportunities! We are always interested in getting to know more engineers with embedded Linux or Linux kernel knowledge to join our engineering team, so do not hesitate to meet us during the conference, or contact us ahead of time to plan a discussion. If you don’t have a seat yet, unfortunately the conference is fully booked, but meeting in the area is possible too.

Videos from Embedded Linux Conference 2014

San Jose, CaliforniaAs the summer is coming to an end, we finally managed to publish the videos we recorded during the last Embedded Linux Conference, held earlier this year in San Jose, California.

This year, the Linux Foundation was only recording the audio of the talks, and we’ve been recording the video only for a few talks. Sorry to all the speakers that won’t be able to see their footage, but we were not able to attend (and record) all of the talks this year. Still, we include below the links to all the talks, slides and their audio recording, in order to cover all of this year’s schedule.

Our videos

Alan OttVideo capture
Signal 11 Software
USB and the Real World
Slides
Audio Recording
Video (49 minutes):
full HD (365M), 800×450 (224M)

Alexandre BelloniVideo capture
Bootlin
Using Yocto for Modules Manufacturers
Slides
Audio Recording
Video (56 minutes):
full HD (421M), 800×450 (224M)

David Anders, Matt RanostayVideo capture
CircuitCo, Intel
Hardware Debugging Tools, Sigrok: Using Logic to Debug Logic
Slides
Audio Recording
Video (42 minutes):
full HD (314M), 800×450 (223M)

David Anders, Matt Porter, Matt Ranostay, Karim YaghmourVideo capture
CircuitCo, Linaro, Intel, Opersys
Debugging – Panel Discussion
Audio Recording
Video (43 minutes):
full HD (322M), 800×450 (228M)

Gregory ClementVideo capture
Bootlin
SMP Bring Up On ARM SOCs
Slides
Audio Recording
Video (48 minutes):
full HD (359M), 800×450 (253M)

Linus WalleijVideo capture
Linaro
Fear and Loathing in the Media Transfer Protocol
Slides
Audio Recording
Video (55 minutes):
full HD (414M), 800×450 (224M)

Martti PiirainenVideo capture
Tieto
Productizing Telephony and Audio in a GNU/Linux (Sailfish OS) Smartphone
Slides
Audio Recording
Video (46 minutes):
full HD (343M), 800×450 (204M)

Matt PorterVideo capture
Linaro
Debugging – Linux Kernel Testing
Audio Recording
Video (47 minutes):
full HD (357M), 800×450 (254M)

Matt PorterVideo capture
Linaro
Kernel USB Gadget Configfs Interface
Slides
Audio Recording
Video (42 minutes):
full HD (317M), 800×450 (224M)

Maxime RipardVideo capture
Bootlin
Supporting a New ARM Platform: The Allwinner SoCs Example
Slides
Audio Recording
Video (48 minutes):
full HD (364M), 800×450 (203M)

Micheal E AndersonVideo capture
The PTR Group, Inc.
Extending Linux using Arduinos
Slides
Audio Recording
Video (57 minutes):
full HD (430M), 800×450 (230M)

Michael OpdenackerVideo capture
Bootlin
Update on Boot Time Reduction Techniques with Figures
Slides
Audio Recording
Video (45 minutes):
full HD (340M), 800×450 (198M)

Thomas PetazzoniVideo capture
Bootlin
Buildroot: What’s New?
Slides
Audio Recording
Video (52 minutes):
full HD (392M), 800×450 (278M)

Thomas PetazzoniVideo capture
Bootlin
Two Years of ARM SoC Support mainlining: Lessons Learned
Slides
Audio Recording
Video (52 minutes):
full HD (388M), 800×450 (221M)

Tomasz FigaVideo capture
Samsung R&D Institute
Trees need care: A Solution to Device Tree Validation Problem
Slides
Audio Recording
Video (50 minutes):
full HD (377M), 800×450 (234M)

Tristan LelongVideo capture
Adeneo Embedded
Linux Quickboot
Slides
Audio Recording
Video (54 minutes):
full HD (406M), 800×450 (288M)

Other talks

Adrian Perez de Castro
Igalia
Improving Performance Of A WebKit Port MIPS Platform
Slides
Audio Recording

Adrien Verge
Ecole Polytechnique Montreal
Hardware-Assisted Software Tracing
Slides
Audio Recording

Behan Webster
Converse in Code Inc.
LLVMLinux: Embracing the Dragon
Slides
Audio Recording

Belen Barros Pena
Intel’s Open Source Technology Center
Building Tools From the Outside In: Bringing User-Centered Design to Embedded Linux
Slides
Audio Recording

Bradley M. Kuhn
Software Freedom Conservancy
Collaborative GPL Enforcement Through Non-Profit Entities
Slides
Audio Recording

Joe Kontur
Panasonic
CE Workgroup (BoFs)
Audio Recording

Chase Maupin
Texas Instruments
Using Agile Development Practices For Kernel Development
Audio Recording

Chris Simmonds
2net
A Timeline For Embedded Linux
Audio Recording

David Anders, Tim Bird, Matt Porter, Benjamin Zores, Karim Yaghmour
CircuitCo, Sony Mobile, Linaro, Alcatel-Lucent, OperSys
Keynote Panel: IoT and the Role of Embedded Linux and Android
Audio Recording

David Greaves
Mer Project
The #qt/#wayland/#systemd/#btrfs-phone … the Jolla phone
Slides
Audio Recording

Denys Dmytriyenko
Texas Instruments
Qt5 & Yocto – adding SDK and easy app migration from Qt4
Slides
Audio Recording

Gabriel Huau
Adeneo Embedded
Hardware Accelerated Video Streaming with V4L2
Slides
Audio Recording

Geert Uytterhoeven
Glider bvba
Engaging Device Trees
Slides
Audio Recording

Hans Verkuil
Cisco Systems Norway
An Introduction to the Video4Linux Framework
Slides
Audio Recording

Hisao Munakata, Tsugikazu Shibata
Renesas Electronics, NEC
LTSI Project Update for 3.10 Kernel and Future Plan
Audio Recording

Insop Song
Gainspeed
Can A Board Bringing Up Be Less Painful, if with Yocto and Linux?
Slides
Audio Recording

Iyad Qumei
LG Electronics
webOS, An Openembedded Use Case
Slides
Audio Recording

Jeff Osier-Mixon
Intel Corporation
Yocto Project / OpenEmbedded BoF
Audio Recording

Josh Cartwright
Qualcomm Innovation Center
System Power Management Interface (SPMI)
Audio Recording

Khem Raj
Juniper Networks
(Tutorial) Some GCC Optimizations for Embedded Software
Slides
Audio Recording

Laurent Pinchart
Renesas Linux Kernel Team
Mastering the DMA and IOMMU APIs
Slides
Audio Recording

John ‘Warthog9’ Hawley, Nitin Kamble
Intel
Making a Splash: Digital Signage Powered by MinnowBoard and the Yocto Project
Slides
Audio Recording

Mark Brown
Linaro
What’s going on with SPI
Audio Recording

Mark Skarpness
Intel
Keynote: Scaling Android at the Speed of Mobility
Audio Recording

Marta Rybczynska
Kalray
Porting Linux to a New Architecture
Slides
Audio Recording

Michael Christofferson
Enea
User Space Drivers in Linux ? Pros, Cons, and Implementation Issues
Audio Recording

Michael E Anderson
The PTR Group, Inc.
How to Build a Linux-Based Robot
Slides
Audio Recording

Minchan Kim
LG Electronics
Volatile Ranges
Audio Recording

Tim Bird
Sony Mobile
(BoFs) QCOM SoC Mainlining
Audio Recording

Patrick Titiano
BayLibre
Use-Case Power Management Optimization: Identifying & Tracking Key Power Indicators
Slides
Audio Recording

Philip Balister
OpenSDR
Open-Source Tools for Software-Defined Radio on Multicore ARM+DSP
Slides
Audio Recording

Ricardo Salveti de Araujo
Ubuntu Touch low level stack
Ubuntu Touch Internals
Slides
Audio Recording

Thomas Petazzoni
Bootlin
Device Tree for Dummies
Slides
Audio Recording

Tim Bird
Sony Mobile
Keynote: The Paradox of embedded and Open Source
Slides
Audio Recording

Tom Zanussi
Intel’s Open Source Technology Center
MicroYocto and the ‘Internet of Tiny’
Slides
Audio Recording

Victor Rodriguez
Intel
Introducing Embedded Linux to Universities
Slides
Audio Recording

Vitaly Wool
Softprise Consulting OU
Linux for Microcontrollers: Spreading the Disease
Slides
Audio Recording

Wolfgang Mauerer
Siemens
Understanding the Embedded Linux Ecosystem with Codeface
Slides
Audio Recording

Yoshitake Kobayashi
Toshiba
Using Real-Time Patch with LTSI Kernel
Slides
Audio Recording

Embedded Linux Development with Yocto Project

Embedded Linux Development with Yocto Project Cover

We were kindly provided a copy of Embedded Linux Development with Yocto Project, written by Otavio Salvador and Daiane Angolini. It is available at Packt Publishing, either in an electronic format (DRM free) or printed.

This book will help you start with your embedded system development and integration using the Yocto Project or OpenEmbedded.

The first chapter sheds some light on the meaning of commonly misused names: Yocto Project, Poky, OpenEmbedded, BitBake. Then, it doesn’t waste time and explains how to install and use Poky to build and then run an image. The entire book is full of examples that can easily be tested, providing useful hands-on experience, using Yocto Project 1.6 (Poky 11).

The following chapters cover:

  • Hob: a user friendly interface, however, it will soon be deprecated and replaced by Toaster.
  • BitBake and Metadata: how to use BitBake, how to write recipes for packages or images, how to extend existing recipes, how to write new classes, how to create a layer, where to find existing layers and use them.
  • The build directory layout: what the generated files are, and what their use is.
  • Packaging: how to generate different package formats, how to handle a package feed and the package versions.
  • The various SDKs that can be generated and their integration in Eclipse.
  • Debugging the metadata: what the common issues are, how to find what is going wrong, and solving these issues.
  • Debugging the applications on the target: how to generate an image with debugging tools installed.
  • Available tools to help achieve copyleft compliance: in particular, how to cope with the GPL requirements.

Finally, there is a chapter dedicated to explaining how to generate and run an image on the Wandboard, an i.MX6 based community board.

The book is easy to read, with plenty of examples and useful tips. It requires some knowledge about generic embedded Linux system development (see our training) as only the Yocto Project specifics are covered. I would recommend it both for beginners wanting to learn about the Yocto Project and for developers wanting to improve their current knowledge and their recipes and also understand the BitBake internals.

Speaking of the Yocto Project, it is worth noting that Bootlin is now offering a Yocto Project and OpenEmbedded training course (detailed agenda). If you’re interested, join one of the upcoming public training sessions, or order a session at your location!

Bootlin at the Embedded Linux Conference Europe

DüsseldorfThe Embedded Linux Conference Europe will take place on October 13-15 in Düsseldorf, Germany. As usual, a large part of the Bootlin engineering team will participate to the conference, with no less than 7 engineers: Alexandre Belloni, Boris Brezillon, Grégory Clement, Michael Opdenacker, Thomas Petazzoni, Maxime Ripard and Antoine Ténart.

Several of our talk proposals have been accepted, so we’ll be presenting about the following topics:

In addition to this participation to the Embedded Linux Conference Europe:

  • Many of us will also participate to the Linux Plumbers conference, on October 15-17. It’s another great opportunity to talk about topics around real-time, power management, storage, multimedia, and more.
  • Thomas Petazzoni will participate to the next Buildroot Developers Meeting.

As usual, we’re looking forward to this event! Do not hesitate to get in touch with us if you’re interested in meeting us during these events for specific discussions.

Embedded Linux training update: Atmel Xplained, and more!

Atmel SAMA5D3 Xplained boardWe are happy to announce that we have published a significant update of our Embedded Linux training course. As all our training materials, this update is freely available for everyone, under a Creative Commons (CC-BY-SA) license.

This update brings the following major improvements to the training session:

  • The hardware platform used for all the practical labs is the Atmel SAMA5D3 Xplained platform, a popular platform that features the ARMv7 compatible Atmel SAMA5D3 processor on a board with expansion headers compatible with Arduino shields. The fact that the platform is very well supported by the mainline Linux kernel, and the easy access to a wide range of Arduino shields makes it a very useful prototyping platform for many projects. Of course, as usual, participants to our public training sessions keep their board after the end of the course! Note we continue to support the IGEPv2 board from ISEE for customers who prefer this option.
  • The practical labs that consist in Cross-compiling third party libraries and applications and Working with Buildroot now use a USB audio device connected to the Xplained board on the hardware side, and various audio libraries/applications on the software side. This replaces our previous labs which were using DirectFB as an example of a graphical library used in a system emulated under QEMU. We indeed believe that practical labs on real hardware are much more interesting and exciting.
  • Many updates were made to various software components used in the training session: the toolchain components were all updated and we now use a hard float toolchain, more recent U-Boot and Linux kernel versions are used, etc.

The training materials are available as pre-compiled PDF (slides, labs, agenda), but their source code in also available in our Git repository.

If you are interested in this training session, see the dates of our public training sessions, or order one to be held at your location. Do not hesitate to contact us at training@bootlin.com for further details!

It is worth mentioning that for the purpose of the development of this training session, we did a few contributions to open-source projects:

Thanks a lot to our engineers Maxime Ripard and Alexandre Belloni, who worked on this major update of our training session.

Linux 3.16 released, Bootlin 7th contributing company

Linus Torvalds has released the 3.16 kernel a few weeks ago. Unfortunately, the KernelNewbies LinuxChanges page has not been updated, but LWN.net summaries of the merge window (part 1, part 2 and final part) give a good summary of the important changes available in Linux 3.16.

On Bootlin’sside, 3.16 has been our most active kernel cycle ever: we have merged 388 patches in this cycle, making Bootlin the 7th company contributing to the Linux kernel by number of patches according to the statistics. Bootlin is ranked right after Texas Instruments, and before Novell, Renesas or Google. (Note that the statistics rank Bootlin as 9th, but this includes the “Unknown” and “Hobbyists” categories which are not companies). This strong participation clearly shows Bootlin’sability to get code merged in the mainline Linux kernel, as we’ve progressively done since kernel 3.6 over the last two years.

We are therefore available to help companies willing to add support for their hardware (processor, system-on-chip, module, or board) to the mainline Linux kernel. Do not hesitate to contact to get the discussion started.

Our major contributions have again been focused on the support of various ARM processor families:

  • On the Atmel SoC family
    • Conversion of the SAM9RL processor to the Device Tree. Done by Alexandre Belloni.
    • Huge cleanup of ADC/touchscreen handling: improvements in the IIO at91_adc driver to support more SoC families, and conversions of several Atmel platforms to use this driver, and then finally removal of the old atmel_tsadcc driver. Done by Alexandre Belloni.
    • Numerous fixes to the clock handling on various SoCs, following their conversion to the Common Clock Framework. Done by Alexandre Belloni.
    • Conversion of the SAM9RL, SAM9x5 and SAM9n12 SoCs to the Common Clock Framework. Done by Boris Brezillon.
    • Boris Brezillon is now one of the official maintainers for AT91 clock support.
  • On the Allwinner SoC family
    • Addition of PWM support to sun4i and sun7i. Done by Alexandre Belloni.
    • Addition of SMBus support to the regmap subsystem. This was needed to support the P2WI bus of Allwinner A31. Done by Boris Brezillon.
    • New I2C driver for the P2WI bus of Allwinner A31, used to communicate with the PMIC. Done by Boris Brezillon.
    • Improvements to the Allwinner pinctrl driver needed to support the P2WI bus. Done by Boris Brezillon.
    • Addition of a driver for the PRCM (Power, Reset and Clock Management) unit of the Allwinner A31. Done by Boris Brezillon.
    • Numerous cleanups of the pinctrl driver for Allwinner. Done by Maxime Ripard.
    • Addition of the ARM PMU description in the Device Tree of Allwinner platforms. Done by Maxime Ripard.
    • Add USB support for Allwinner A31. Done by Maxime Ripard, with some help from Boris Brezillon.
    • Various improvements to Allwinner clock drivers. Done by Maxime Ripard.
  • On the Marvell Berlin SoC family
    • Addition of basic Device Tree descriptions for several Marvell Berlin processors and boards. Done by Antoine Ténart.
    • Addition of clock drivers and DT clock descriptions of the Marvell Berlin processors. Done by Alexandre Belloni.
    • Addition of the pinctrl drivers for the Marvell Berlin processors. Done by Antoine Ténart.
    • Enabling of SDHCI and GPIO support on Marvell Berlin. Done by Antoine Ténart.
  • On the Marvell EBU SoC family
    • Addition of watchdog support for Armada 375 and Armada 38x, which required some changes to the existing watchdog driver. Done by Ezequiel Garcia.
    • Addition of thermal support for Armada 375 and Armada 38x, which required some changes in the existing armada_thermal driver. Done by Ezequiel Garcia.
    • Improvements of the pxa3xx_nand driver used for NAND support on Armada 370/375/38x/XP to use the newly introduced ECC strength and step size Device Tree bindings, which allows from the Device Tree to override the ECC constraints described by ONFI, when needed to match the bootloader constraints. Done by Ezequiel Garcia.
    • Addition of a generic software TSO (TCP Segmentation Offload) layer, and the corresponding changes to enable this feature in the mv643xx_eth and mvneta network drivers. This gives a huge performance boost in transmit operations! Done by Ezequiel Garcia.
    • SMP support for Armada 375 and Armada 38x has been added. Done by Grégory Clement.
    • cpuidle support for Armada XP has been added. Done by Grégory Clement.
    • USB support (USB2 and USB3) for Armada 375 and Armada 38x has been added. Done by Grégory Clement.
    • Hardware I/O coherency support for Armada 375 and Armada 38x. Done by Thomas Petazzoni.
    • Enabling of the SDHCI and AHCI interfaces on Armada 38x. Done by Thomas Petazzoni.
    • Major clean-up of Marvell Orion5x support. This is an older ARMv5 family of processors from Marvell, having a lot of similarities with Kirkwood and more recent Armada. This cleanup include many Device Tree conversions, up to the point where a few Marvell Orion5x platforms can now be fully described using a Device Tree, with no board file. Done by Thomas Petazzoni.
    • Addition of a new Device Tree binding for fixed network links, i.e links that do not use a MDIO-controlled PHY. This involved both some generic PHY layer improvements, and corresponding changes in the Marvell-specific mvneta network driver. Done by Thomas Petazzoni.
    • Addition of a work-around for a relatively complex PCIe/L2 errata affecting Armada 375/38x, which fixes heavy PCIe traffic when the system is running with hardware I/O coherency enabled. Done by Thomas Petazzoni.

Here is the complete list of patches from Bootlin merged into the 3.16 kernel:

Marvell publishes the datasheet of the Armada XP processor

thumb-armada-xpA bit more than a month after publishing the datasheet of the Armada 370 processor, Marvell has now released a similar datasheet for the more powerful Armada XP processor. The datasheet is available as a PDF document, with no registration, at http://www.marvell.com/embedded-processors/armada-xp/assets/ARMADA-XP-Functional-SpecDatasheet.pdf, with a link to it clearly visible on the Armada XP product page.

As most of our readers probably know, Bootlin has been working and continues to work significantly on the Linux kernel support for Marvell processors. Thanks to this work done for more than two years now, the mainline Linux kernel has pretty good support for the Armada XP processor. This processor is a nice monster: up to 4 cores (PJ4B cores, which are roughly equivalent to Cortex-A9 but with LPAE support), up to 10 PCIe interfaces, multiple SATA interfaces, up to four Gigabit network interfaces, and many, many other things (XOR engine, cryptographic engine, etc.). Many of the processor features are already supported in mainline, and lately we’ve been focusing on power management features: cpuidle support for Armada XP will be part of 3.16, cpufreq support will either be part of 3.17 or 3.18, and suspend/resume should hopefully be part of 3.18.

The Armada XP processor is used in publicly available products:

At Bootlin, we are again really happy to see Marvell opening this datasheet, as it will allow all community developers to further improve support for this processor in the Linux kernel, but also in other open-source projects.

Linux 3.15 released, an overview of Bootlin contributions

The 3.15 of the Linux kernel was released just a few days ago by Linus Torvalds. As explained by LWN.net, the headline features in 3.15 include some significant memory management improvements, the renameat2() system call, file-private POSIX locks, a new device mapper target called dm-era, faster resume from suspend, and more. One can also read the coverage by LWN.net of the first part and the second part of the merge window to get more details about the major new features in this release.

As usual, Bootlin contributed to the Linux kernel during this 3.15 cycle, and with a total of 218 patches contributed, it’s a new record for Bootlin. According to the KPS statistics, Bootlin ranked #12 in the list of companies contributing to the Linux kernel for the 3.15 kernel (if you exclude the “Unknown” and “Hobbyists” categories, which aren’t really companies).

The main features contributed by Bootlin again centered around the support for ARM processors:

  • By far, the largest contribution this cycle was the initial support for the new Armada 375 and Armada 38x processors from Marvell. Gregory Clement, Ezequiel Garcia and Thomas Petazzoni have been working on the code to support these processors since a few months ago, and started pushing the patches to the public in February this year. For the Marvell Armada 38x processor, it means that the code was pushed in mainline even before the processor was announced publicly! The features supported in 3.15 for these processors are: interrupts, GPIO, clocks, pin-muxing, serial, I2C, SPI, timer, L2 cache, SDIO (only for 375), SATA (only 375), XOR, PCIe, MBus, networking (only for 38x), NOR and NAND support. Many other features such as SMP, I/O coherency and various other peripherals will be supported in 3.16.
  • Convert support for the Atmel AT91SAM9RL processor to the Device Tree, done by Alexandre Belloni.
  • Addition of iio-hwmon to the Freescale i.MX23 and i.MX28 processors, which allows to use the internal temperature sensor of the processor. Done by Alexandre Belloni.
  • Multiple fixes and improvements to the AT91 ADC support. Done by Alexandre Belloni.
  • Support for the watchdog in Armada 370 and Armada XP was added, done by Ezequiel Garcia.
  • A driver for the SPI controller found in Allwinner A31 SoC was added, as well as all the Device Tree information to describe this controller and related clocks. Done by Maxime Ripard.
  • Support for the I2C controller found in the Allwinner A31 SoC was added into the existing mv64xxx-i2c driver, as well as the necessary Device Tree information to use I2C on this SoC. Done by Maxime Ripard.
  • Audio support was enabled on the Armada 370 SoC, re-using existing code for Kirkwood, and therefore making audio work on the Armada 370 DB platform. Done by Thomas Petazzoni.
  • A number of issues in the PCIe support for Marvell processors have been fixed, thanks to the reports from a number of users. Done by Thomas Petazzoni, with help from these users.

We also contributed other things than just support for ARM processors:

  • The main contribution in this area is the addition of UBI block, a driver that allows to use read-only block filesystems such as squashfs on top of a UBI volume. The code was originally written by David Wagner who was an intern at Bootlin, and later taken by Ezequiel Garcia who did a lot of additional cleanup work and community discussion to get the driver merged. Some details about this feature can be found in the Linux-MTD documentation.
  • A generic Device Tree binding to express NAND ECC related information in the Device Tree was contributed by Ezequiel Garcia.
  • The quest to remove IRQF_DISABLED continued, by Michael Opdenacker.

In details, all our contributions are: