Back from Kernel Recipes: slides and videos

As we announced previously, we participated to the Embedded Recipes and Kernel Recipes conferences in September in Paris. Three people from Free Electrons attended the event: Free Electrons CEO Michael Opdenacker, and Free Electrons engineers Mylène Josserand and Maxime Ripard.

Introduction to Yocto Project / OpenEmbedded, by Mylène Josserand

Mylène Josserand gave an Introduction to the Yocto Project / OpenEmbedded-core. The slides are available in PDF or as LaTeX code.

An introduction to the Linux DRM subsystem, by Maxime Ripard

Maxime Ripard gave an Introduction to the Linux DRM subsystem. The slides are available in PDF or as LaTeX code.

Other videos and slides

The slides of all talks are available on the Embedded Recipes and Kernel Recipes conference websites. Youtube playlists are available for Embedded Recipes 2017 and Kernel Recipes 2017 as well.

Conclusion

With its special one track format, an attendance limited to 100 people, excellent choice of talks and nice social events, Kernel Recipes remains a very good conference that we really enjoyed. Embedded Recipes, which was in its first edition this year, followed the same principle, with the same success. We’re looking forward to attending next year editions, and hopefully contributing a few talks as well. See you all at Embedded and Kernel Recipes in 2018!

Free Electrons at NetDev 2.2

NetDev 2.2Back in April 2017, Free Electrons engineer Antoine Ténart participated to NetDev 2.1, the most important conference discussing Linux networking support. After the conference, Antoine published a summary of it, reporting on the most interesting talks and topics that have been discussed.

Next week, NetDev 2.2 takes place in Seoul, South Korea, and this time around, two Free Electrons engineers will be attending the event: Alexandre Belloni and Antoine Ténart. We are getting more and more projects with networking related topics, and therefore the wide range of talks proposed at NetDev 2.2 will definitely help grow our expertise in this field.

Do not hesitate to get in touch with Alexandre or Antoine if you are also attending this event!

Back from ELCE 2017: slides and videos

Free Electrons participated to the Embedded Linux Conference Europe last week in Prague. With 7 engineers attending, 4 talks, one BoF and a poster at the technical showcase, we had a strong presence to this major conference of the embedded Linux ecosystem. All of us had a great time at this event, attending interesting talks and meeting numerous open-source developers.

Free Electrons team at the Embedded Linux Conference Europe 2017

Free Electrons team at the Embedded Linux Conference Europe 2017. Top, from left to right: Maxime Ripard, Grégory Clement, Boris Brezillon, Quentin Schulz. Bottom, from left to right: Miquèl Raynal, Thomas Petazzoni, Michael Opdenacker.

Buildroot training course updated to Buildroot 2017.08

BuildrootBack in June 2015, we announced the availability of a training course on Buildroot, a popular and easy to use embedded Linux build system. A year later, we updated it to cover Buildroot 2016.05. We are happy to announce a new update: we now cover Buildroot 2017.08.

The most significant updates are:

  • Presentation of the Long Term Supported releases of Buildroot, a topic we also presented in a previous blog post
  • Appearance of the new top-level utils/ directory, containing various utilities directly useful for the Buildroot user, such as test-pkg, check-package, get-developers or scanpypi
  • Removal of $(HOST_DIR)/usr/, as everything has been moved up one level to $(HOST_DIR), to make the Buildroot SDK/toolchain more conventional
  • Document the new organization of the skeleton package, now split into several packages, to properly support various init systems. A new diagram has been added to clarify this topic.
  • List all package infrastructures that are available in Buildroot, since their number is growing!
  • Use SPDX license codes for licensing information in packages, which is now mandatory in Buildroot
  • Remove the indication that dependencies of host (i.e native) packages are derived from the dependencies of the corresponding package, since it’s no longer the case
  • Indicate that the check for hashes has been extended to also allow checking the hash of license files. This allows to detect changes in the license text.
  • Update the BR2_EXTERNAL presentation to cover the fact that multiples BR2_EXTERNAL trees are supported now.
  • Use the new relocatable SDK functionality that appeared in Buildroot 2017.08.

The practical labs have of course been updated to use Buildroot 2017.08, but also Linux 4.13 and U-Boot 2017.07, to remain current with upstream versions. In addition, they have been extended with two additional steps:

  • Booting the Buildroot generated system using TFTP and NFS, as an alternative to the SD card we normally use
  • Using genimage to generate a complete and ready to flash SD card image

We will be delivering this course to one of our customers in Germany next month, and are of course available to deliver it on-site anywhere in the world if you’re interested! And of course, we continue to publish, for free, all the materials used in this training session: slides and labs.

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

Free Electrons at the Linux Plumbers 2017 conference

The Linux Plumbers conference has established itself as a major conference in the Linux ecosystem, discussing numerous aspects of the low-level layers of the Linux software stack. Linux Plumbers is organized around a number of micro-conferences, plus a number of more regular talks.

Linux Plumbers 2017

Free Electrons already participated to several previous editions of Linux Plumbers, and will again participate to this year’s edition that takes place in Los Angeles on September 13-15. Free Electrons engineers Boris Brezillon, Alexandre Belloni, Grégory Clement and Thomas Petazzoni will attend the conference.

If you’re attending this conference, or are located in the Los Angeles area, and want to meet us, do not hesitate to drop us a line at info@free-electrons.com. You can also follow Free Electrons Twitter feed for updates during the conference.