Linux 3.16 released, Free Electrons 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 Free Electrons’ side, 3.16 has been our most active kernel cycle ever: we have merged 388 patches in this cycle, making Free Electrons the 7th company contributing to the Linux kernel by number of patches according to the statistics. Free Electrons is ranked right after Texas Instruments, and before Novell, Renesas or Google. (Note that the statistics rank Free Electrons as 9th, but this includes the “Unknown” and “Hobbyists” categories which are not companies). This strong participation clearly shows Free Electrons’ ability 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 Free Electrons merged into the 3.16 kernel:

About Thomas Petazzoni

Thomas Petazzoni is an embedded Linux and kernel engineer at Free Electrons. He is a lead developer of Buildroot and also a contributor to the Linux kernel. More details...
This entry was posted in Technical and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *