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

Leave a Reply

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