It’s been a while that Linus Torvalds has released Linux 3.19 and we already know that the next version of Linux will be called 4.0. It’s not too late though to learn more about the 3.19 release, by reading the following three LWN articles: part 1, part 2 and part 3. KernelNewbies has also updated its page about 3.19.
In terms of statistics for the 3.19 release cycle, LWN has published an article which ranks Bootlin the 13th contributing company, with 205 patches merged. We have been in the top 30th contributing company by number of patches for all kernel releases since Linux 3.8, a sign of our continuous involvement in the upstream kernel community.
Our most important contributions in this kernel release are:
- For the Atmel ARM processors, numerous cleanup patches from Alexandre Belloni to prepare the platform for ARM multiplatform compliance (the possibility of building the support for Atmel ARM processors together with the support of other ARM processors in a single kernel image). From Boris Brezillon, addition of Device Tree support in the AT91 RTC driver, improvements to the AT91 irqchip driver, addition of a PWM driver for the PWM built into the Atmel HLCDC display controller, addition of Device Tree support for the AT91 hardware random number generator driver, addition of an MFD driver for the Atmel HLCDC display controller, and many other Device Tree fixes and improvements.
- For the Marvell Berlin ARM processors, addition of USB, SATA and reset controller support. The USB support required numerous core improvements to the USB subsystem, and the addition of a specific USB PHY driver.
- For the Marvell EBU ARM processors, Gregory Clement added USB PHY support for Armada 375, and CPU hotplug support for Armada 38x as well as several other fixes and improvements. Thomas Petazzoni added suspend to RAM support for Armada XP, fixed a serious problem in the I2C driver that required some major refactoring, and did some HW I/O coherency related fixes.
- For the Allwinner ARM processors, Maxime Ripard did the relicensing of many Device Tree files from GPL only to GPL+X11 licenses. He also added pinctrl support on Allwinner A80.
- After writing a dmaengine driver which was merged in 3.17, Maxime Ripard started to get involved in the dmaengine subsystem itself. He contributed a documentation for this subsystem, which was merged in Linux 3.19, as well as several fixes for dmaengine drivers.
- Addition of a generic
linux/media-bus-format.h
header file, containing definitions of the various possible pixel formats. This header file was until then specific to the Video4Linux subsystem, but will start being used by the DRM/KMS subsystem. This addition was done in preparation of the introduction of a DRM/KMS driver for the AT91 HLCDC display controller (to come in Linux 4.0). - A few small improvements to the core DRM/KMS subsystem, also preparation work for the AT91 HLCDC display controller driver.
- Fixes for the i.MX28 NAND flash controller driver, the
gpmi-nand
to properly support the raw access operations, which allow to use the userspace MTD testing utilities to validate the MTD setup. This was part of a customer project we did to assess the quality of the MTD and UBI setup on a Freescale i.MX28 custom platform.
The details of our contributions are:
- Alexandre Belloni (11):
- pinctrl: at91: use own header
- USB: OHCI: ohci-at91: remove unnecessary headers
- mmc: atmel-mci: move mach header to platform_data
- ARM: at91: remove mach/atmel-mci.h
- avr32: remove mach/atmel-mci.h
- ARM: at91: remove CONFIG_MACH_SAMA5_DT
- ARM: at91: move sdramc/ddrsdr header to include/soc/at91
- ARM: at91/dt: at91sam9rl: add rtc
- mmc: core: stop trying to switch width when only one bit is supported
- net/at91_ether: prepare and unprepare clock
- ata: pata_at91: depend on !ARCH_MULTIPLATFORM
- Antoine Tenart (21):
- usb: move the OTG state from the USB PHY to the OTG structure
- usb: rename phy to usb_phy in OTG
- usb: add support to the generic PHY framework in OTG
- usb: allow to supply the PHY in the drivers when using HCD
- usb: chipidea: add support to the generic PHY framework
- ARM: berlin: do not select RESET_CONTROLLER
- ARM: dts: berlin: add BG2Q nodes for USB support
- ARM: dts: Berlin: enable USB on the BG2Q DMP
- phy: add the Berlin USB PHY driver
- Documentation: bindings: add doc for the Berlin USB PHY
- usb: chipidea: fix phy handling
- usb: chipidea: add a usb2 driver for ci13xxx
- Documentation: bindings: add doc for the USB2 ChipIdea USB driver
- reset: add the Berlin reset controller driver
- ARM: Berlin: select the reset controller
- ARM: dts: berlin: add the AHCI node for the BG2Q
- ARM: dts: berlin: enable the eSATA interface on the BG2Q DMP
- Documentation: bindings: add reset bindings docs for Marvell Berlin SoCs
- ARM: dts: berlin: add a required reset property in the chip controller node
- ARM: dts: berlin: enable timer 1 for sched_clock
- ARM: dts: berlin: Add phy-connection-type to BG2Q Ethernet
- Boris BREZILLON (51):
- mtd: nand: add sunxi NAND flash controller support
- mtd: nand: add sunxi NFC dt bindings doc
- irqchip: atmel-aic: Add irq fixup for RTT block
- irqchip: atmel-aic: Add irq fixups for at91sam926x SoCs
- irqchip: atmel-aic: Add specific irq fixup function for sam9g45 and sam9rl
- irqchip: atmel-aic: Rename at91sam9_aic_irq_fixup for naming consistency
- irqchip: atmel-aic: Add missing entry for rm9200 irq fixups
- rtc: at91sam9: remove references to mach specific headers
- rtc: at91sam9: use standard readl/writel functions instead of raw versions
- rtc: at91sam9: replace devm_ioremap by devm_ioremap_resource
- rtc: at91sam9: add DT support
- rtc: at91sam9: make use of syscon/regmap to access GPBR registers
- rtc: at91sam9: rework the Kconfig description
- ARM: at91: add clk_lookup entry for RTT devices
- rtc: at91sam9: use clk API instead of relying on AT91_SLOW_CLOCK
- rtc: at91sam9: add DT bindings documentation
- [media] Move mediabus format definition to a more standard place
- [media] v4l: Update subdev-formats doc with new MEDIA_BUS_FMT values
- [media] Make use of the new media_bus_format definitions
- [media] i2c: Make use of media_bus_format enum
- [media] pci: Make use of MEDIA_BUS_FMT definitions
- [media] platform: Make use of media_bus_format enum
- [media] usb: Make use of media_bus_format enum
- [media] staging: media: Make use of MEDIA_BUS_FMT_ definitions
- [media] gpu: ipu-v3: Make use of media_bus_format enum
- [media] v4l: Forbid usage of V4L2_MBUS_FMT definitions inside the kernel
- drm: rework flip-work helpers to avoid calling func when the FIFO is full
- drm: flip-work: change drm_flip_work_init prototype
- drm: omapdrm: remove unused variable
- mtd: nand: provide detailed description for raw read/write page methods
- mtd: nand: gpmi: add gpmi_copy_bits function
- mtd: nand: gpmi: add proper raw access support
- mtd: nand: gpmi: add raw oob access functions
- pwm: atmel-hlcdc: add at91sam9x5 and sama5d3 errata handling
- ARM: at91: remove useless init_time for DT-only SoCs
- pwm: add support for atmel-hlcdc-pwm device
- pwm: add DT bindings documentation for atmel-hlcdc-pwm driver
- ARM: at91/dt: add RTT nodes to at91 dtsis
- ARM: at91/dt: add GPBR nodes
- ARM: at91/dt: enable the RTT block on the sam9g20ek board
- ARM: at91/dt: enable the RTT block on the at91sam9m10g45ek board
- ARM: at91/dt: at91sam9g45: add ISI node
- ARM: at91: remove useless init_time for DT-only SoCs
- hwrng: atmel – use clk_prepapre_enable/_disable_unprepare
- hwrng: atmel – add DT support
- hwrng: atmel – Add TRNG DT binding doc
- ARM: at91/dt: add trng node to at91sam9g45
- mfd: Add atmel-hlcdc driver
- mfd: Add documentation for atmel-hlcdc DT bindings
- mfd: atmel-hlcdc: Add Kconfig option description and name
- clk: at91: keep slow clk enabled to prevent system hang
- Ezequiel Garcia (8):
- ethernet: mvneta: Use PHY status standard message
- ARM: mvebu: Enable the reference clock for timer and watchdog on Armada 375 SoC
- ARM: mvebu: Remove thermal quirk for A375 Z1 revision
- thermal: armada: Remove support for A375-Z1 SoC
- clocksource: armada-370-xp: Add missing clock enable
- watchdog: orion: Use the reference clock on Armada 375 SoC
- clocksource: armada-370-xp: Use the reference clock on A375 SoC
- net: mv643xx_eth: Fix highmem support in non-TSO egress path
- Gregory CLEMENT (12):
- ARM: mvebu: Fix the Aurora L2 cache node with the required cache-unified property
- ARM: mvebu: Clean-up the Armada XP support
- ARM: mvebu: Move SCU power up in a function
- ARM: mvebu: Fix the secondary startup for Cortex A9 SoC
- ARM: mvebu: Implement the CPU hotplug support for the Armada 38x SoCs
- ARM: orion: convert the irq_reg_{readl,writel} calls to the new API
- ARM: mvebu: add Device Tree description of USB cluster controller on Armada 375
- ARM: mvebu: add PHY support to the dts for the USB controllers on Armada 375
- phy: Use PTR_ERR_OR_ZERO to fix warning raised by coccinelle
- Phy: DT binding documentation for the Armada 375 USB cluster binding
- phy: add support for USB cluster on the Armada 375 SoC
- ARM: mvebu: Fix pinctrl configuration for Armada 370 DB
- Maxime Ripard (66):
- ARM: sunxi: regulators: Relicense the device tree under GPLv2/X11
- ARM: sun4i: ba10: Relicense the device tree under GPLv2/X11
- ARM: sun4i: hackberry: Relicense the device tree under GPLv2/X11
- ARM: sun4i: inet97fv2: Relicense the device tree under GPLv2/X11
- ARM: sun4i: mini xplus: Relicense the device tree under GPLv2/X11
- ARM: sun4i: olinuxino lime: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino micro: Relicense the device tree under GPLv2/X11
- ARM: sun5i: r7: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino micro: Relicense the device tree under GPLv2/X11
- ARM: sun6i: colombus: Relicense the device tree under GPLv2/X11
- ARM: sun6i: hummingbird: Relicense the device tree under GPLv2/X11
- ARM: sun6i: m9: Relicense the device tree under GPLv2/X11
- ARM: sun7i: i12: Relicense the device tree under GPLv2/X11
- ARM: sun8i: q8h: Relicense the device tree under GPLv2/X11
- ARM: sun6i: app4: Relicense the device tree under GPLv2/X11
- ARM: sunxi: Fix GPLv2 wording
- ARM: sun4i: a1000: Relicense the device tree under GPLv2/X11
- pinctrl: sunxi: Add PN bank base pin
- pinctrl: sunxi: Add A80 pinctrl muxing options
- ARM: sun9i: Enable the A80 pinctrl driver
- ARM: sun9i: optimus: Set UART0 muxing
- ARM: sun7i: olinuxino lime: Relicense the device tree under GPLv2/X11
- ARM: sun4i: pcduino: Relicense the device tree under GPLv2/X11
- ARM: sun7i: pcduino3: Relicense the device tree under GPLv2/X11
- Documentation: dmaengine: Move the current doc to a folder of its own
- Documentation: dmaengine: Add a documentation for the dma controller API
- dmaengine: pl08x: Remove chancnt affectations
- dmaengine: bcm2835: Remove chancnt affectations
- dmaengine: jz4740: Remove chancnt affectations
- dmaengine: fsldma: Remove chancnt affectations
- dmaengine: k3: Remove chancnt affectations
- dmaengine: mpc512x: Remove chancnt affectations
- dmaengine: omap: Remove chancnt affectations
- dmaengine: sa11x0: Remove chancnt affectations
- dmaengine: sh: Remove chancnt affectations
- dmaengine: sirf: Remove chancnt affectations
- dmaengine: sun6i: Remove chancnt affectations
- serial: at91: Use dmaengine_slave_config API
- ARM: sun4i: cubieboard: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino: Relicense the device tree under GPLv2/X11
- ARM: sunxi: regulators: Relicense the device tree under GPLv2/X11
- ARM: sun4i: ba10: Relicense the device tree under GPLv2/X11
- ARM: sun4i: hackberry: Relicense the device tree under GPLv2/X11
- ARM: sun4i: inet97fv2: Relicense the device tree under GPLv2/X11
- ARM: sun4i: mini xplus: Relicense the device tree under GPLv2/X11
- ARM: sun4i: olinuxino lime: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino micro: Relicense the device tree under GPLv2/X11
- ARM: sun5i: r7: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino micro: Relicense the device tree under GPLv2/X11
- ARM: sun6i: colombus: Relicense the device tree under GPLv2/X11
- ARM: sun6i: hummingbird: Relicense the device tree under GPLv2/X11
- ARM: sun6i: m9: Relicense the device tree under GPLv2/X11
- ARM: sun7i: i12: Relicense the device tree under GPLv2/X11
- ARM: sun8i: q8h: Relicense the device tree under GPLv2/X11
- ARM: sun6i: app4: Relicense the device tree under GPLv2/X11
- ARM: sunxi: Fix GPLv2 wording
- ARM: sun4i: a1000: Relicense the device tree under GPLv2/X11
- ARM: sun9i: Enable the A80 pinctrl driver
- ARM: sun9i: optimus: Set UART0 muxing
- ARM: sun7i: olinuxino lime: Relicense the device tree under GPLv2/X11
- ARM: sun4i: pcduino: Relicense the device tree under GPLv2/X11
- ARM: sun7i: pcduino3: Relicense the device tree under GPLv2/X11
- ARM: sun4i: cubieboard: Relicense the device tree under GPLv2/X11
- ARM: sun5i: olinuxino: Relicense the device tree under GPLv2/X11
- usb: phy: Fix deferred probing
- ARM: sunxi: dt: Fix aliases
- Michael Opdenacker (4):
- Thomas Petazzoni (32):
- ASoC: cs42l51: make driver user-selectable
- gpio: mvebu: add suspend/resume support
- ARM: mvebu: remove conflicting muxing on Armada 370 DB
- ARM: mvebu: use simple-card DT binding for audio on Armada 370 DB
- ARM: mvebu: update mvebu_v7_defconfig for Armada 370 audio
- irqchip: irq-armada-370-xp: Use proper return value for ->set_affinity()
- Documentation: dt-bindings: minimal documentation for MVEBU SDRAM controller
- ARM: mvebu: make the coherency_ll.S functions work with no coherency fabric
- ARM: mvebu: disable I/O coherency on non-SMP situations on Armada 370/375/38x/XP
- ARM: mvebu: remove unused register offset definition
- ARM: mvebu: remove Armada 375 Z1 workaround for I/O coherency
- ARM: mvebu: update comments in coherency.c
- ARM: mvebu: add MTD_BLOCK to mvebu_v7_defconfig
- irqchip: armada-370-xp: Add suspend/resume support
- clocksource: time-armada-370-xp: add suspend/resume support
- bus: mvebu-mbus: suspend/resume support
- bus: mvebu-mbus: provide a mechanism to save SDRAM window configuration
- clk: mvebu: add suspend/resume for gatable clocks
- ARM: mvebu: implement suspend/resume support for Armada XP
- ARM: mvebu: reserve the first 10 KB of each memory bank for suspend/resume
- ARM: mvebu: Armada XP GP specific suspend/resume code
- ARM: mvebu: make sure MMU is disabled in armada_370_xp_cpu_resume
- ARM: mvebu: synchronize secondary CPU clocks on resume
- ARM: mvebu: add suspend/resume DT information for Armada XP GP
- ARM: mvebu: adjust mbus controller description on Armada 370/XP
- ARM: mvebu: add SDRAM controller description for Armada XP
- ARM: mvebu: use the cpufreq-dt platform_data for independent clocks
- i2c: mv64xxx: use BIT() macro for register value definitions
- i2c: mv64xxx: rework offload support to fix several problems
- mmc: sdhci-pxav3: do the mbus window configuration after enabling clocks
- ARM: mvebu: completely disable hardware I/O coherency
- ARM: mvebu: don’t set the PL310 in I/O coherency mode when I/O coherency is disabled