Buildroot Long Term Support releases: from 2017.02 to 2017.02.6 and counting

Buildroot LogoBuildroot is a widely used embedded Linux build systems. A large number of companies and projects use Buildroot to produce customized embedded Linux systems for a wide range of embedded devices. Most of those devices are now connected to the Internet, and therefore subject to attacks if the software they run is not regularly updated to address security vulnerabilities.

The Buildroot project publishes a new release every three months, with each release providing a mix of new features, new packages, package updates, build infrastructure improvements… and security fixes. However, until earlier this year, as soon as a new version was published, the maintenance of the previous version stopped. This means that in order to stay up to date in terms of security fixes, users essentially had two options:

  1. Update their Buildroot version regularly. The big drawback is that they get not only security updates, but also many other package updates, which may be problematic when a system is in production.
  2. Stick with their original Buildroot version, and carefully monitor CVEs and security vulnerabilities in the packages they use, and update the corresponding packages, which obvisouly is a time-consuming process.

Starting with 2017.02, the Buildroot community has decided to offer one long term supported release every year: 2017.02 will be supported one year in terms of security updates and bug fixes, until 2018.02 is released. The usual three-month release cycle still applies, with 2017.05 and 2017.08 already being released, but users interested in a stable Buildroot version that is kept updated for security issues can stay on 2017.02.

Since 2017.02 was released on February 28th, 2017, six minor versions were published on a fairly regularly basis, almost every month, except in August:

  • 2017.02, released February 28th 2017
  • 2017.02.1, released April 5th 2017
  • 2017.02.2, released May 2nd 2017
  • 2017.02.3, released June 2nd 2017
  • 2017.02.4, released July 4th 2017
  • 2017.02.5, released July 26th 2017
  • 2017.02.6, released September 24th 2017

With about 60 to 130 commits between each minor version, it is relatively easy for users to check what has been changed, and evaluate the impact of upgrading to the latest minor version to benefit from the security updates. The commits integrated in those minor versions are carefully chosen with the idea that users should be able to easily update existing systems.

In total, those six minor versions include 526 commits, of which 183 commits were security updates, representing roughly one third of the total number of commits. The other commits have been:

  • 140 commits to fix build issues
  • 57 commits to bump versions of packages for bug fixes. These almost exclusively include updates to the Linux kernel, using its LTS versions. For other packages, we are more conservative and generally don’t upgrade them.
  • 17 commits to address issues in the licensing description of the packages
  • 186 commits to fix miscellaneous issues, ranging from runtime issues affecting packages to bugs in the build infrastructure

The Buildroot community has already received a number of bug reports, patches or suggestions specifically targetting the 2017.02 LTS version, which indicates that developers and companies have started to adopt this LTS version.

Therefore, if you are interested in using Buildroot for a product, you should probably consider using the LTS version! We very much welcome feedback on this version, and help in monitoring the security vulneravibilities affecting software packages in Buildroot.

Free Electrons opens a new office in Lyon, France

After Toulouse and Orange, Lyon is the third city chosen for opening a Free Electrons office. Since September 1st of this year (2017), Alexandre Belloni and Grégory Clement have been working more precisely in Oullins close to the subway and the train station. It is the first step to make the Lyon team grow, with the opportunity to welcome interns and engineers.


Their new desks are already crowded by many boards running our favorite system.

Mali OpenGL support on Allwinner platforms with mainline Linux

As most people know, getting GPU-based 3D acceleration to work on ARM platforms has always been difficult, due to the closed nature of the support for such GPUs. Most vendors provide closed-source binary-only OpenGL implementations in the form of binary blobs, whose quality depend on the vendor.

This situation is getting better and better through vendor-funded initiatives like for the Broadcom VC4 and VC5, or through reverse engineering projects like Nouveau on Tegra SoCs, Etnaviv on Vivante GPUs, Freedreno on Qualcomm’s. However there are still GPUs where you do not have the option to use a free software stack: PowerVR from Imagination Technologies and Mali from ARM (even though there is some progress on the reverse engineering effort).

Allwinner SoCs are using either a Mali GPU from ARM or a PowerVR from Imagination Technologies, and therefore, support for OpenGL on those platforms using a mainline Linux kernel has always been a problem. This is also further complicated by the fact that Allwinner is mostly interested in Android, which uses a different C library that avoids its use in traditional glibc-based systems (or through the use of libhybris).

However, we are happy to announce that Allwinner gave us clearance to publish the userspace binary blobs that allows to get OpenGL supported on Allwinner platforms that use a Mali GPU from ARM, using a recent mainline Linux kernel. Of course, those are closed source binary blobs and not a nice fully open-source solution, but it nonetheless allows everyone to have OpenGL support working, while taking advantage of all the benefits of a recent mainline Linux kernel. We have successfully used those binary blobs on customer projects involving the Allwinner A33 SoCs, and they should work on all Allwinner SoCs using the Mali GPU.

In order to get GPU support to work on your Allwinner platform, you will need:

  • The kernel-side driver, available on Maxime Ripard’s Github repository. This is essentially the Mali kernel-side driver from ARM, plus a number of build and bug fixes to make it work with recent mainline Linux kernels.
  • The Device Tree description of the GPU. We introduced Device Tree bindings for Mali GPUs in the mainline kernel a while ago, so that Device Trees can describe such GPUs. Such description has been added for the Allwinner A23 and A33 SoCs as part of this commit.
  • The userspace blob, which is available on Free Electrons GitHub repository. It currently provides the r6p2 version of the driver, with support for both fbdev and X11 systems. Hopefully, we’ll gain access to newer versions in the future, with additional features (such as GBM support).

If you want to use it in your system, the first step is to have the GPU definition in your device tree if it’s not already there. Then, you need to compile the kernel module:

git clone https://github.com/mripard/sunxi-mali.git
cd sunxi-mali
export CROSS_COMPILE=$TOOLCHAIN_PREFIX
export KDIR=$KERNEL_BUILD_DIR
export INSTALL_MOD_PATH=$TARGET_DIR
./build.sh -r r6p2 -b
./build.sh -r r6p2 -i

It should install the mali.ko Linux kernel module into the target filesystem.

Now, you can copy the OpenGL userspace blobs that match your setup, most likely the fbdev or X11-dma-buf variant. For example, for fbdev:

git clone https://github.com/free-electrons/mali-blobs.git
cd mali-blobs
cp -a r6p2/fbdev/lib/lib_fb_dev/lib* $TARGET_DIR/usr/lib

You should be all set. Of course, you will have to link your OpenGL applications or libraries against those user-space blobs. You can check that everything works using OpenGL test programs such as es2_gears for example.

Free Electrons at the Embedded Linux Conference Europe

The next Embedded Linux Conference Europe will take place on October 23-25 in Prague, Czech Republic.

Embedded Linux Conference Europe 2017

As usual, a significant part of the Free Electrons engineering team will participate to the conference and give talks on various topics:

  • Grégory Clement will give a talk on SD/eMMC: New Speed Modes and Their Support in Linux
  • Boris Brezillon will give an An Overview of the Linux Kernel Crypto Subsystem
  • Michael Opdenacker will organize a BoF session on Embedded Linux Size
  • Thomas Petazzoni will give a talk titled Buildroot: what’s new?
  • Free Electrons engineers Quentin Schulz, Maxime Ripard and Miquèl Raynal will also be attending the event, which means that 7 people from Free Electrons will participate to ELCE!

In addition to the main ELCE conference, Thomas Petazzoni will participate to the Buildroot Developers Days, a 2-day hackaton organized on Saturday and Sunday prior to ELCE, and will participate to the Device Tree workshop organized on Thursday afternoon.

Once again, we’re really happy to participate to this conference, and looking forward to meeting again with a large number of Linux kernel and embedded Linux developers!

Linux 4.13 released, Free Electrons contributions

Linux 4.13 was released last Sunday by Linus Torvalds, and the major new features of this release were described in details by LWN in a set of articles: part 1 and part 2.

This release gathers 13006 non-merge commits, amongst which 239 were made by Free Electrons engineers. According to the LWN article on 4.13 statistics, this makes Free Electrons the 13th contributing company by number of commits, the 10th by lines changed.

The most important contributions from Free Electrons for this release have been:

  • In the RTC subsystem
    • Alexandre Belloni introduced a new method for registering RTC devices, with one step for the allocation, and one step for the registration itself, which allows to solve race conditions in a number of drivers.
    • Alexandre Belloni added support for exposing the non-volatile memory found in some RTC devices through the Linux kernel nvmem framework, making them usable from userspace. A few drivers were changed to use this new mechanism.
  • In the MTD/NAND subsystem
    • Boris Brezillon did a large number of fixes and minor improvements in the NAND subsystem, both in the core and in a few drivers.
    • Thomas Petazzoni contributed the support for on-die ECC, specifically with Micron NANDs. This allows to use the ECC calculation capabilities of the NAND chip itself, as opposed to using software ECC (calculated by the CPU) or ECC done by the NAND controller.
    • Thomas Petazzoni contributed a few improvements to the FSMC NAND driver, used on ST Spear platforms. The main improvement is to support the ->setup_data_interface() callback, which allows to configure optimal timings in the NAND controller.
  • Support for Allwinner ARM platforms
    • Alexandre Belloni improved the sun4i PWM driver to use the so-called atomic API and support hardware read out.
    • Antoine Ténart improved the sun4i-ss cryptographic engine driver to support the Allwinner A13 processor, in addition to the already supported A10.
    • Maxime Ripard contributed HDMI support for the Allwinner A10 processor (in the DRM subsystem) and a number of related changes to the Allwinner clock support.
    • Quentin Schulz improved the support for battery charging through the AXP20x PMIC, used on Allwinner platforms.
  • Support for Atmel ARM platforms
    • Alexandre Belloni added suspend/resume support for the Atmel SAMA5D2 clock driver. This is part of a larger effort to implement the backup mode for the SAMA5D2 processor.
    • Alexandre Belloni added suspend/resume support in the tcb_clksrc driver, used as for clocksource and clockevents on Atmel SAMA5D2.
    • Alexandre Belloni cleaned up a number of drivers, removing support for non-DT probing, which is possible now that the AVR32 architecture has been dropped. Indeed, the AVR32 processors used to share the same drivers as the Atmel ARM processors.
    • Alexandre Belloni added the core support for the backup mode on Atmel SAMA5D2, a suspend/resume state with significant power savings.
    • Boris Brezillon switched Atmel platforms to use the new binding for the EBI and NAND controllers.
    • Boris Brezillon added support for timing configuration in the Atmel NAND driver.
    • Quentin Schulz added suspend/resume support to the Bosch m_can driver, used on Atmel platforms.
  • Support for Marvell ARM platforms
    • Antoine Ténart contributed a completely new driver (3200+ lines of code) for the Inside Secure EIP197 cryptographic engine, used in the Marvell Armada 7K and 8K processors. He also subsequently contributed a number of fixes and improvements for this driver.
    • Antoine Ténart improved the existing mvmdio driver, used to communicate with Ethernet PHYs over MDIO on Marvell platforms to support the XSMI variant found on Marvell Armada 7K/8K, used to communicate with 10G capable PHYs.
    • Antoine Ténart contributed minimal support for 10G Ethernet in the mvpp2 driver, used on Marvell Armada 7K/8K. For now, the driver still relies on low-level initialization done by the bootloader, but additional changes in 4.14 and 4.15 will remove this limitation.
    • Grégory Clement added a new pinctrl driver to configure the pin-muxing on the Marvell Armada 37xx processors.
    • Grégory Clement did a large number of changes to the clock drivers used on the Marvell Armada 7K/8K processors to prepare the addition of pinctrl support.
    • Grégory Clement added support for Marvell Armada 7K/8K to the existing mvebu-gpio driver.
    • Thomas Petazzoni added support for the ICU, a specialized interrupt controller used on the Marvell Armada 7K/8K, for all devices located in the CP110 part of the processor.
    • Thomas Petazzoni removed a work-around to properly resume per-CPU interrupts on the older Marvell Armada 370/XP platforms.
  • Support for RaspberryPi platforms
    • Boris Brezillon added runtime PM support to the HDMI encoder driver used on RaspberryPi platforms, and contributed a few other fixes to the VC4 DRM driver.

It is worth mentioning that Miquèl Raynal, recently hired by Free Electrons, sees his first kernel patch merged: nand: fix wrong default oob layout for small pages using soft ecc.

Free Electrons engineers are not only contributors, but also maintainers of various subsystems in the Linux kernel, which means they are involved in the process of reviewing, discussing and merging patches contributed to those subsystems:

  • Maxime Ripard, as the Allwinner platform co-maintainer, merged 113 patches from other contributors
  • Boris Brezillon, as the MTD/NAND maintainer, merged 62 patches from other contributors
  • Alexandre Belloni, as the RTC maintainer and Atmel platform co-maintainer, merged 57 patches from other contributors
  • Grégory Clement, as the Marvell EBU co-maintainer, merged 47 patches from other contributors

Here is the commit by commit detail of our contributors to 4.13:

  • Alexandre Belloni (44)
    • rtc: Remove wrong deprecation comment
    • rtc: ds1307: remove ds1307_remove
    • rtc: ds1307: use generic nvmem
    • rtc: ds1307: switch to rtc_register_device
    • rtc: rv8803: remove rv8803_remove
    • rtc: rv8803: use generic nvmem support
    • rtc: rv8803: switch to rtc_register_device
    • rtc: add generic nvmem support
    • rtc: at91rm9200: remove race condition
    • rtc: introduce new registration method
    • rtc: class separate id allocation from registration
    • rtc: class separate device allocation from registration
    • pwm: sun4i: Drop legacy callbacks
    • pwm: sun4i: Switch to atomic PWM
    • pwm: sun4i: Improve hardware read out
    • clk: at91: Add sama5d2 suspend/resume
    • clocksource/drivers/tcb_clksrc: Make IO endian agnostic
    • usb: gadget: udc: atmel: Remove unnecessary macros
    • tty/serial: atmel: make the driver DT only
    • tty/serial: atmel: remove atmel_default_console_device handling
    • clocksource/drivers/tcb_clksrc: Save timer context on suspend/resume
    • ARM: at91: remove atmel_nand_data
    • mtd: nand: atmel: drop unused include
    • power: reset: at91-sama5d2_shdwc: fix clobber list
    • power: reset: at91-poweroff: fix clobber list
    • clk: at91: fix clk-generated compilation
    • watchdog: sama5d4: Add comment explaining what happens on resume
    • watchodg: sama5d4: simplify probe
    • rtc: remove rtc_device.name
    • rtc: ds1307: avoid using rtc-name
    • rtc: pcf8563: avoid using rtc->name
    • rtc: dev: remove rtc->name from debug message
    • rtc: sysfs: make name uniform
    • ARM: at91: handle CONFIG_PM for armv7m configurations
    • ARM: at91: Document armv7m compatibles
    • ARM: at91: Documentation: add armv7m families
    • clk: at91: fix clk-generated parenting
    • ARM: dts: am335x-phycore-som: fix rv4162 compatible
    • ARM: at91: pm: fallback to slowclock when backup mode fails
    • ARM: at91: pm: allow selecting standby and suspend modes
    • ARM: at91: pm: Add sama5d2 backup mode
    • ARM: dts: imx7d-nitrogen7: fix rv4162 compatible
    • ARM: dts: imx6qdl-nitrogen6_som2: fix rv4162 compatible
    • ARM: dts: imx6qdl-nitrogen6_max: fix rv4162 compatible
  • Antoine Tenart (51)
    • net: mvpp2: fix the mac address used when using PPv2.2
    • crypto: inside-secure – fix the sha state length in hmac_sha1_setkey
    • crypto: inside-secure – fix invalidation check in hmac_sha1_setkey
    • arm64: dts: marvell: mark the cp110 crypto engine as dma coherent
    • Documentation/bindings: crypto: remove the dma-mask property
    • crypto: inside-secure – do not parse the dma mask from dt
    • Documentation/bindings: Document the SafeXel cryptographic engine driver
    • arm64: dts: marvell: use new bindings for xor clocks on ap806
    • arm64: dts: marvell: mcbin: enable the mdio node
    • crypto: inside-secure – use the base_end pointer in ring rollback
    • crypto: inside-secure – increase the batch size
    • crypto: inside-secure – only dequeue when needed
    • crypto: inside-secure – get the backlog before dequeueing the request
    • crypto: inside-secure – stop requeueing failed requests
    • crypto: inside-secure – use one queue per hw ring
    • crypto: inside-secure – update the context and request later
    • crypto: inside-secure – fix incorrect DSE data cache setting
    • crypto: inside-secure – fix the ring wr_cache offset
    • crypto: inside-secure – use hmac ipad/opad constants
    • crypto: sun4i-ss – fix large block size support
    • crypto: sun4i-ss – add the CRYPTO_ALG_KERN_DRIVER_ONLY flag
    • crypto: sun4i-ss – move from ablkcipher to skcipher API
    • crypto: sun4i-ss – use GENMASK to generate masks
    • crypto: sun4i-ss – simplify the appended bit assignment
    • crypto: sun4i-ss – simplify the pad length calculation
    • crypto: sun4i-ss – do not dynamically set parts of the last buffer to 0
    • crypto: sun4i-ss – cannot use DMA is the request is 0 length
    • crypto: sun4i-ss – use lower/upper_32_bits helpers
    • crypto: sun4i-ss – remove conditional checks against 0
    • crypto: sun4i-ss – group variable definitions in sun4i_hash()
    • arm64: dts: marvell: add xmdio nodes for 7k/8k
    • arm64: dts: marvell: add a comment on the cp110 slave node status
    • arm64: dts: marvell: remove cpm crypto nodes from dts files
    • arm64: dts: marvell: cp110: enable the crypto engine at the SoC level
    • arm64: dts: marvell: disable the mdio nodes by default
    • arm64: dts: marvell: explicitly enable the mdio nodes for 7k/8k DB
    • arm64: dts: marvell: add dma-mask in crypto nodes for 7k/8k
    • dt-bindings: orion-mdio: document the new xmdio compatible
    • net: mvmdio: simplify the smi read and write error paths
    • net: mvmdio: add xmdio xsmi support
    • net: mvmdio: check the MII_ADDR_C45 bit is not set for smi operations
    • net: mvmdio: put the poll intervals in the ops structure
    • net: mvmdio: introduce an ops structure
    • net: mvmdio: use GENMASK for masks
    • net: mvmdio: use tabs for defines
    • net: mvmdio: reorder headers alphabetically
    • net: mvpp2: enable basic 10G support
    • MAINTAINERS: add a maintainer for the Inside Secure crypto driver
    • crypto: inside-secure – add SafeXcel EIP197 crypto engine driver
    • ARM: dts: sunxi: add SoC specific compatibles for the crypto nodes
    • ARM: sun5i: add a cryptographic engine node
  • Boris Brezillon (33)
    • mtd: nand: atmel: Relax tADL_min constraint
    • mtd: nand: atmel: Fix EDO mode check
    • mtd: nand: Declare tBERS, tR and tPROG as u64 to avoid integer overflow
    • mtd: nand: Fix timing setup for NANDs that do not support SET FEATURES
    • mtd: nand: atmel: Fix DT backward compatibility in pmecc.c
    • drm/vc4: Fix VBLANK handling in crtc->enable() path
    • mtd: Fix check in mtd_unpoint()
    • irqchip/atmel-aic: Remove root argument from ->fixup() prototype
    • irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
    • irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
    • drm/vc4: Mimic drm_atomic_helper_commit() behavior
    • mtd: nand: fsl_ifc: fix handing of bit flips in erased pages
    • drm/atmel-hlcdc: Fix panel registration
    • mtd: nand: Support ‘EXIT GET STATUS’ command in nand_command[_lp]()
    • mtd: nand: Wait for PAGEPROG to finish in drivers setting NAND_ECC_CUSTOM_PAGE_ACCESS
    • mtd: nand: tango: Fix incorrect use of SEQIN command
    • mtd: nand: sunxi: Remove unneeded ->cmdfunc(NAND_CMD_READ0, 0, page)
    • mtd: nand: sunxi: Actually use DMA for subpage reads
    • mtd: nand: Drop the ->errstat() hook
    • mtd: nand: Drop unused cached programming support
    • mtd: nand: atmel: Add PM ops
    • mtd: nand: atmel: Add ->setup_data_interface() hooks
    • mtd: nand: Pass the CS line to ->setup_data_interface()
    • mtd: nand: gpmi: Kill gpmi_nand_exit()
    • mtd: nand: gpmi: Fix gpmi_nand_init() error path
    • drm/vc4: Fix comment in vc4_drv.h
    • ARM: dts: at91: Add the NOR flash available on sama5d3 dev kits
    • ARM: dts: at91: Switch to the new NAND bindings
    • ARM: dts: at91: Declare EBI/NAND controllers
    • dt-bindings: mtd: atmel-nand: Document the nfc-io bindings
    • mtd: nand: Make sure drivers not supporting SET/GET_FEATURES return -ENOTSUPP
    • mtd: nand: jz4780: Use mtd_set_ooblayout() to set the ooblayout
    • drm/vc4: Add runtime PM support to the HDMI encoder driver
  • Gregory Clement (41)
    • gpio: mvebu: Fix cause computation in irq handler
    • pinctrl: armada-37xx: Fix number of pin in south bridge
    • pinctrl: armada-37xx: Fix the pin 23 on south bridge
    • ARM64: dts: marvell: armada-37xx: Fix the number of GPIO on south bridge
    • ARM: dts: armada-38x: Fix irq type for pca955
    • ARM: mvebu: use __pa_symbol in the mv98dx3236 platform SMP code
    • pinctrl: armada-37xx: Fix number of pin in sdio_sb
    • gpio: dt-bindings: Add documentation for gpio controllers on Armada 7K/8K
    • arm64: marvell: enable the Armada 7K/8K pinctrl driver
    • arm64: dts: marvell: add gpio support for Armada 7K/8K
    • arm64: dts: marvell: add pinctrl support for Armada 7K/8K
    • arm64: dts: marvell: use new binding for the system controller on cp110
    • arm64: dts: marvell: remove *-clock-output-names on cp110
    • clk: mvebu: cp110: introduce a new binding
    • clk: mvebu: cp110: do not depend anymore of the *-clock-output-names
    • pinctrl: dt-bindings: add documentation for CP110 pin controllers
    • pinctrl: dt-bindings: add documentation for AP806 pin controllers
    • dt-bindings: cp110: add sdio clock to cp-110 system controller
    • dt-bindings: cp110: introduce a new binding
    • dt-bindings: cp110: do not depend anymore of the *-clock-output-names
    • arm64: dts: marvell: armada-3720-db: Add vqmmc regulator for SD slot
    • arm64: dts: marvell: armada-37xx: Use angle bracket for each register set
    • arm64: dts: marvell: armada-37xx: Align the compatible string
    • arm64: dts: marvell: armada-3720-db: Add information about the V2 board
    • arm64: dts: marvell: armada-3720-db: Sort the dts node alphabetically
    • arm64: dts: marvell: use new binding for the system controller on ap806
    • arm64: dts: marvell: remove clock-output-names on ap806
    • gpio: mvebu: Add support for the Armada 7K/8K SoCs
    • pinctrl: mvebu: remove the offset property for regmap
    • gpio: mvebu: fix regmap_update_bits usage
    • clk: mvebu: cp110: make failure labels more meaningful
    • clk: mvebu: ap806: introduce a new binding
    • clk: mvebu: ap806: do not depend anymore of the *-clock-output-names
    • clk: mvebu: ap806: cosmetic improvement
    • dt-bindings: ap806: introduce a new binding
    • dt-bindings: ap806: do not depend anymore of the *-clock-output-names
    • gpio: mvebu: Select REGMAP_MMIO now that regmap is used
    • MAINTAINERS: extend mvebu SoC entry with pinctrl drivers
    • gpio: mvebu: allow building driver for Armada 7K/8K
    • gpio: mvebu: sort header include
    • pinctrl: armada-37xx: Add irqchip support
  • Thomas Petazzoni (28)
    • arm64: dts: marvell: fix number of GPIOs in Armada AP806 description
    • sparc: kernel/pcic: silence gcc 7.x warning in pcibios_fixup_bus()
    • MIPS: mm: remove duplicate “const” qualifier on insn_table
    • arm64: dts: marvell: use ICU for the CP110 slave RTC
    • irqchip/irq-mvebu-icu: Add new driver for Marvell ICU
    • irqchip/irq-mvebu-gicp: Add new driver for Marvell GICP
    • dt-bindings/interrupt-controller: Add DT binding for the Marvell ICU
    • net: mvpp2: remove mvpp2_pool_refill()
    • net: mvpp2: remove unused mvpp2_bm_cookie_pool_set() function
    • net: mvpp2: add comments about smp_processor_id() usage
    • dt-bindings/interrupt-controller: Add DT binding for the Marvell GICP
    • Revert “irqchip/armada-370-xp: Fix regression by clearing IRQ_NOAUTOEN”
    • irqchip/armada-370-xp: Re-enable per-CPU interrupts at resume time
    • irqchip/armada-370-xp: Document the overall driver logic
    • irqchip/armada-370-xp: Re-order register definitions
    • arm64: marvell: enable ICU and GICP drivers
    • arm64: dts: marvell: enable GICP and ICU on Armada 7K/8K
    • arm64: dts: marvell: add clocks for Armada AP806 XOR engines
    • mtd: nand: fsmc_nand: handle on-die ECC case
    • mtd: nand: add support for Micron on-die ECC
    • gpio: mvebu: switch to regmap for register access
    • of: irq: use of_irq_get() in of_irq_to_resource()
    • mtd: nand: export nand_{read,write}_page_raw()
    • mtd: nand: add core support for on-die ECC
    • dt-bindings: mtd: document new “on-die” nand-ecc-mode
    • mtd: nand: fsmc: remove default timings
    • mtd: nand: fsmc: add support for SDR timings
    • mtd: nand: fsmc: reduce number of arguments of fsmc_nand_setup()
  • Maxime Ripard (27)
    • net: stmmac: sun8i: Remove the compatibles
    • arm: dts: sunxi: Revert EMAC changes
    • arm64: dts: allwinner: Revert EMAC changes
    • dt-bindings: net: Revert sun8i dwmac binding
    • clk: sunxi-ng: sun5i: Add clk_set_rate_parent to the CPU clock
    • arm: sunxi: Revert changes merged through net-next.
    • clk: sunxi-ng: sun5i: Export video PLLs
    • clk: sunxi-ng: mux: Re-adjust parent rate
    • clk: sunxi-ng: mux: Change pre-divider application function prototype
    • clk: sunxi-ng: mux: split out the pre-divider computation code
    • clk: sunxi-ng: mux: Don’t just rely on the parent for CLK_SET_RATE_PARENT
    • clk: sunxi-ng: div: Switch to divider_round_rate
    • clk: sunxi-ng: Pass the parent and a pointer to the clocks round rate
    • clk: divider: Make divider_round_rate take the parent clock
    • drm/sun4i: Add compatible for the A10s pipeline
    • drm/sun4i: Add HDMI support
    • dt-bindings: display: sun4i: Add allwinner,tcon-channel property
    • dt-bindings: display: sun4i: Add HDMI display bindings
    • drm/sun4i: Ignore the generic connectors for components
    • drm/sun4i: tcon: multiply the vtotal when not in interlace
    • drm/sun4i: tcon: Change vertical total size computation inconsistency
    • drm/sun4i: tcon: Fix tcon channel 1 backporch calculation
    • drm/sun4i: tcon: Switch mux on only for composite
    • drm/sun4i: tcon: Move the muxing out of the mode set function
    • drm/sun4i: tcon: Add channel debug
    • ARM: sun5i: a10s-olinuxino: Enable HDMI
    • ARM: sun5i: a10s: Add the HDMI controller node
  • Quentin Schulz (14)
    • iio: adc: sun4i-gpadc-iio: fix unbalanced irq enable/disable
    • PCI: imx6: Add regulator support
    • power: supply: axp20x_battery: add DT support for battery max constant charge current
    • power: supply: axp20x_battery: add support for DT battery
    • can: m_can: add deep Suspend/Resume support
    • can: m_can: factorize clock gating and ungating
    • can: m_can: make m_can_start and m_can_stop symmetric
    • can: m_can: move Message RAM initialization to function
    • ARM: configs: at91: enable HIGH_RES_TIMERS
    • ARM: configs: at91: make system tickless when idle
    • ARM: sun5i: chip: enable battery power supply subnode
    • ARM: dts: sun8i: sina33: enable battery power supply subnode
    • ARM: dtsi: axp22x: add battery power supply subnode
    • ARM: dtsi: axp209: add battery power supply subnode
  • Miquel Raynal (1)
    • nand: fix wrong default oob layout for small pages using soft ecc