4.17 was released last Sunday, so it’s time for our highlight article to see daylight.
As always, LWN.net did an interesting coverage of this release cycle merge window, highlighting the most important changes: the first half of the 4.17 merge window and the rest of the 4.17 merge window. For 4.17 only, Bootlin contributed a total of 331 patches, which puts us at the 10th place in the ranking of most contributing companies according to both LWN and KPS.
Also according to LWN statistics, Bootlin’s engineer Alexandre Belloni is the 6th most active developer in terms of changesets for this release with a total of 124 commits, almost a percent of the total number.
The main highlights of our contributions are:
- For Marvell platforms:
- Antoine Ténart improved the inside-secure crypto accelerator driver by adding support for hmac(sha256) and hmac(sha224) algorithms. This driver is used on Marvell Armada 3700 and 7K/8K.
- Antoine Ténart and Gregory Clement also contributed a number of fixes to the inside-secure crypto accelerator driver,
- Maxime Chevallier added hardware offloading support for VLAN filtering to the mvpp2 network driver. This driver is used on Marvell Armada 375 and 7K/8K.
- Maxime Chevallier also contributed a number of fixes to the mvpp2 network driver,
- Miquèl Raynal migrated boards from PXA3xx NAND driver to the NAND driver he developed and got merged in 4.16,
- Gregory Clement contributed a rework of the clocks representation on Marvell Armada 7K/8K that led to the updates of several Device Trees,
- In the MTD subsystem, both Boris Brezillon and Miquèl Raynal contributed numerous fixes,
- For Microsemi Ocelot platforms:
- Alexandre Belloni added support for Microsemi Ocelot SoC’s reset,
- Alexandre Belloni added support for Microsemi Ocelot SoC’s interrupt controller,
- Alexandre Belloni added basic support for Microsemi Ocelot: core support, SoC Device Tree and board Device Tree. Alexandre is therefore the maintainer of the Microsemi Ocelot support.
- For RaspberryPi platforms, Boris Brezillon contributed the exposing of performance counters of VC4 DRM driver to userspace and numerous fixes to VC4 DRM driver,
- For Allwinner platforms:
- Quentin Schulz added support for ADC and battery power supply on the X-Powers AXP813 PMIC,
- Quentin Schulz also contributed support for cpufreq for the Allwinner A83T,
- Maxime Ripard added support for YUV planes in the DRM driver of Allwinner SoCs,
- Maxime Ripard contributed a few fixes and improvements to the DRM driver of Allwinner SoCs,
- Maxime Ripard also contributed a few improvements to the MMC core to be able to comply with Allwinner guidelines,
- For RTC subsystem, Alexandre Belloni moved
rtc_nvmem_register()
out of the core so drivers can better fine-grain tune their initialization, and fixed a few issues along the way (most notably a possible race condition), - For the SuperH architecture, Thomas Petazzoni contributed a few fixes for the PCIe controller of the Renesas SH7786
- For the ASoC subsystem, Mylène Josserand added support for the TI PCM1789 DAC,
Bootlin 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 97 patches from other contributors
- Boris Brezillon, as the MTD/NAND maintainer, merged 87 patches from other contributors
- Alexandre Belloni, as the RTC maintainer and Atmel platform co-maintainer, merged 46 patches from other contributors
- Grégory Clement, as the Marvell EBU co-maintainer, merged 14 patches from other contributors
Here is the commit by commit detail of our contributions to 4.17:
- Alexandre Belloni (124):
- dt-bindings: power: reset: Document ocelot-reset binding
- power: reset: Add a driver for the Microsemi Ocelot reset
- ARM: dts: armada: netgear-rn*: fix rtc node name
- ARM: dts: at91: sam9rl: Properly assign copyright
- rtc: documentation: correct nvmem date and version
- rtc: nvmem: pass nvmem_config to rtc_nvmem_register()
- rtc: nvmem: return error values
- rtc: nvmem: disallow registering nvmem more than once
- rtc: nvmem: allow registering the nvmem device before the rtc
- rtc: export rtc_nvmem_register() to drivers
- rtc: ds1305: call rtc_nvmem_register()
- rtc: ds1305: put ds1305_nvmem_cfg on the stack
- rtc: ds1307: call rtc_nvmem_register()
- rtc: ds1307: put struct nvmem_config on the stack
- rtc: ds1511: call rtc_nvmem_register()
- rtc: ds1511: put ds1511_nvmem_cfg on the stack
- rtc: m48t86: call rtc_nvmem_register()
- rtc: m48t86: put m48t86_nvmem_cfg on the stack
- rtc: omap: call rtc_nvmem_register()
- rtc: pcf85363: call rtc_nvmem_register()
- rtc: pcf85363: put struct nvmem_config on the stack
- rtc: rv8803: call rtc_nvmem_register()
- rtc: rv8803: put struct nvmem_config on the stack
- rtc: rv8803: fix possible race condition
- rtc: remove nvmem_config
- rtc: ds1343: simplify regmap initialization
- rtc: ds1343: switch to rtc_register_device
- rtc: ds1343: remove undocumented and useless sysfs files
- rtc: ds1343: use generic nvmem
- rtc: m48t59: switch to rtc_register_device
- rtc: m48t59: use generic nvmem
- rtc: sirfsoc: remove useless sirfsoc_rtc_ioctl
- rtc: ds1553: switch to rtc_register_device
- rtc: ds1553: use generic nvmem
- rtc: ds1553: make alarms useful
- rtc: cmos: fix possible race condition
- rtc: cmos: use generic nvmem
- rtc: ds1742: switch to rtc_register_device
- rtc: ds1742: use generic nvmem
- rtc: rp5c01: fix possible race condition
- rtc: rp5c01: use generic nvmem
- rtc: stk17ta8: make alarms useful
- rtc: stk17ta8: switch to rtc_register_device
- rtc: stk17ta8: fix possible race condition
- rtc: stk17ta8: use generic nvmem
- rtc: tx4939: remove arch/mips dependency
- rtc: tx4939: extend test coverage
- rtc: tx4939: switch to rtc_register_device
- rtc: tx4939: fix possible race condition
- rtc: tx4939: use generic nvmem
- char: rtc: remove unused rtc_control() API
- MAINTAINERS: rtc: update my email address
- rtc: ds1511: let the core handle invalid time
- rtc: ds1553: let the core handle invalid time
- rtc: cmos: let the core handle invalid time
- rtc: rs5c348: let the core handle invalid time
- rtc: stk17ta8: let the core handle invalid time
- rtc: stop validating rtc_time after rtc_time64_to_tm
- rtc: stop validating rtc_time after rtc_time_to_tm
- rtc: stop validating rtc_time in .read_time
- rtc: ab-b5ze-s3: stop validating rtc_time in .read_time
- rtc: cpcap: stop validating rtc_time in .read_time
- rtc: diasemi: stop validating rtc_time in .read_time
- rtc: nuc900: stop validating rtc_time in .read_time
- rtc: r7301: stop validating rtc_time in .read_time
- rtc: sc27xx: stop validating rtc_time in .read_time
- rtc: isl12022: remove useless indirection
- rtc: m41t93: stop validating rtc_time in .read_time
- rtc: max77686: stop validating rtc_time in .read_time
- rtc: omap: stop validating rtc_time in .set_time and .set_alarm
- rtc: spear: stop validating rtc_time in .set_time and .set_alarm
- rtc: tegra: stop validating rtc_time in .set_time
- rtc: abx80x: remove useless message
- rtc: pm8xxx: remove useless message
- rtc: rx4581: remove useless message
- rtc: rx8581: remove useless message
- ARM: reorder mach-*/Kconfig inclusions
- powerpc/time: stop validating rtc_time in .read_time
- powerpc/5200: dts: digsy_mtc.dts: fix rv3029 compatible
- char: nvram: disable on ARM
- rtc: rk808: remove useless debug message
- rtc: rk808: fix possible race condition
- rtc: s35390a: remove useless message
- rtc: s35390a: stop validating rtc_time in .read_time
- rtc: s35390a: remove useless indirection
- rtc: rs5c372: remove useless message
- rtc: rs5c372: stop validating rtc_time in .read_time
- rtc: rs5c372: remove useless indirection
- rtc: max6900: stop validating rtc_time in .read_time
- rtc: max6900: remove useless indirection
- rtc: pcf85063: stop validating rtc_time in .read_time
- rtc: pcf85063: remove useless indirection
- rtc: m41t80: fix race conditions
- rtc: m41t80: remove useless indirection
- rtc: pcf85363: add .max_register in regmap_config
- rtc: pcf85363: add alarm support
- rtc: pcf85363: set time accurately
- rtc: fix rtc_time64_to_tm for 3477
- rtc: isl12026: fixup nvmem registration
- rtc: Add RTC range
- rtc: Add useful timestamp definitions
- m68k/time: Stop validating rtc_time in .read_time
- parisc: time: stop validating rtc_time in .read_time
- dt-bindings: Add vendor prefix for Microsemi Corporation
- dt-bindings: mips: Add bindings for Microsemi SoCs
- MIPS: mscc: Add ocelot dtsi
- MIPS: mscc: Add ocelot PCB123 device tree
- MIPS: generic: Add support for Microsemi Ocelot
- MAINTAINERS: Add entry for Microsemi MIPS SoCs
- dt-bindings: interrupt-controller: Add binding for the Microsemi Ocelot interrupt controller
- irqchip: Add a driver for the Microsemi Ocelot controller
- pinctrl: ocelot: fix gpio direction
- rtc: hctosys: Ensure system time doesn’t overflow time_t
- rtc: mv: remove artificial limitation
- rtc: mrst: remove artificial limitation
- rtc: st-lpc: remove artificial limitation
- rtc: 88pm80x: remove artificial limitation
- rtc: 88pm860x: remove artificial limitation
- pwm: sun4i: Properly check current state
- alpha: rtc: remove unused set_mmss ops
- alpha: rtc: stop validating rtc_time in .read_time
- net: phy: allow scanning busses with missing phys
- MIPS: xilfpga: Stop generating useless dtb.o
- MIPS: xilfpga: Actually include FDT in fitImage
- Antoine Tenart (23):
- MAINTAINERS: update the Inside Secure maintainer email
- crypto: inside-secure – do not overwrite the threshold value
- crypto: inside-secure – fix the extra cache computation
- crypto: inside-secure – fix the cache_len computation
- crypto: inside-secure – do not process request if no command was issued
- crypto: inside-secure – fix the invalidation step during cra_exit
- crypto: inside-secure – keep the requests push/pop synced
- crypto: inside-secure – unmap the result in the hash send error path
- crypto: atmel-aes – fix the keys zeroing on errors
- net: mvpp2: enable UDP/TCP checksum over IPv6
- crypto: inside-secure – move cache result dma mapping to request
- crypto: inside-secure – wait for the request to complete if in the backlog
- crypto: inside-secure – move the digest to the request context
- crypto: inside-secure – fix typo s/allways/always/ in a define
- crypto: inside-secure – fix a typo in a register name
- crypto: inside-secure – improve the send error path
- crypto: inside-secure – do not access buffers mapped to the device
- crypto: inside-secure – improve the skcipher token
- crypto: inside-secure – the context ipad/opad should use the state sz
- crypto: inside-secure – hmac(sha256) support
- crypto: inside-secure – hmac(sha224) support
- net: phy: sfp: fix the BR,min computation
- crypto: inside-secure – do not use memset on MMIO
- Boris Brezillon (26):
- drm/vc4: Expose performance counters to userspace
- mtd: Make sure the device supports erase operations in mtd_erase()
- mtd: nand: Get rid of comments giving the file path inside the file itself
- mtd: nand: Stop using full path when referring to files placed in the same dir
- mtd: nand: ams-delta: Fix path to toto.c source file
- mtd: nand: State when references to other drivers are no longer valid
- mtd: nand: Add missing copyright information
- mtd: nand: move raw NAND related code to the raw/ subdir
- mtd: nand: Add core infrastructure to deal with NAND devices
- Update Boris Brezillon email address
- mtd: onenand: Get rid of comments giving the file path inside the file itself
- mtd: Move onenand code base to drivers/mtd/nand/onenand
- mtd: Initialize ->fail_addr early in mtd_erase()
- mtd: Get rid of unused fields in struct erase_info
- mtd: Stop assuming mtd_erase() is asynchronous
- mtd: Unconditionally update ->fail_addr and ->addr in part_erase()
- mtd: Stop updating erase_info->state and calling mtd_erase_callback()
- mtd: rawnand: sunxi: Stop supporting ECC_HW_SYNDROME mode
- mtd: rawnand: marvell: Rename ->ecc_clk into ->core_clk
- mtd: fsl-quadspi: Remove unneeded driver.bus assignment
- clk: bcm2835: De-assert/assert PLL reset signal when appropriate
- mtd: nand: Fix nanddev_mtd_erase()
- drm/vc4: Make sure vc4_bo_{inc,dec}_usecnt() calls are balanced
- drm/vc4: Fix scaling of uni-planar formats
- mtd: rawnand: Make sure we wait tWB before polling the STATUS reg
- mtd: rawnand: marvell: Fix read logic for layouts with ->nchunks > 2
- Gregory CLEMENT (41):
- ARM64: dts: marvell: armada-cp110: Add registers clock for SPI nodes
- ARM64: dts: marvell: armada-cp110: Add registers clock for I2C nodes
- arm64: dts: marvell: use SPDX-License-Identifier for Armada SoCs
- arm64: dts: marvell: armada-3720-db: use SPDX-License-Identifier
- arm64: dts: marvell: armada-3720-espressobin: use SPDX-License-Identifier
- arm64: dts: marvell: armada-7040-db: use SPDX-License-Identifier
- arm64: dts: marvell: armada-8040-db: use SPDX-License-Identifier
- arm64: dts: marvell: armada-8040-mcbin: use SPDX-License-Identifier
- arm64: dts: marvell: armada-8080-db: use SPDX-License-Identifier
- ARM64: dts: marvell: armada-cp110: Add registers clock for sata node
- hwrng: omap – Remove useless test before clk_disable_unprepare
- hwrng: omap – Fix clock resource by adding a register clock
- ARM64: dts: marvell: armada-cp110: Add apb_pclk clock for the uart nodes
- i2c: mv64xxx: Apply errata delay only in standard mode
- MAINTAINERS: i2c-mv64xxx: update email address for Gregory CLEMENT
- ARM64: dts: marvell: armada-cp110: Add registers clock for USB host nodes
- ARM64: dts: marvell: armada-cp110: Add registers clock for XOR engine nodes
- ARM64: dts: marvell: armada-cp110: Add registers clock for the trng node
- ARM64: dts: marvell: armada-cp110: Add registers clock for the crypto node
- ARM64: dts: marvell: armada-cp110: Add registers clock for the NAND node
- ARM64: dts: marvell: armada-cp110: Add registers clock for the PCIe nodes
- clk: mvebu: cp110: Fix clock tree representation
- crypto: inside-secure – fix clock management
- crypto: inside-secure – improve clock initialization
- crypto: inside-secure – fix clock resource by adding a register clock
- arm: dts: armada-*.dtsi: use SPDX-License-Identifier for most of the Armada SoCs
- arm: dts: armada-xp-98dx: use SPDX-License-Identifier for prestara 98d SoCs
- arm: dts: armada-*.dts: use SPDX-License-Identifier for most of the Armada based board
- arm: dts: armada-370-db: use SPDX-License-Identifier
- arm: dts: armada-xp-db-dxbc2: use SPDX-License-Identifier
- arm: dts: armada-xp-db-xc3-24g4xg: use SPDX-License-Identifier
- arm: dts: armada-388-rd: use SPDX-License-Identifier
- arm: dts: armada-385-db-ap: use SPDX-License-Identifier
- arm: dts: armada-385-turris-omnia: use SPDX-License-Identifier
- arm: dts: kirkwood*.dts: use SPDX-License-Identifier for boards using GPL-2.0
- arm: dts: kirkwood*.dts: use SPDX-License-Identifier for boards using GPL-2.0+/MIT
- arm: dts: kirkwood*.dts: use SPDX-License-Identifier for board using GPL-2.0+
- mtd: rawnand: marvell: Fix clock resource by adding a register clock
- cpufreq: armada-37xx: Fix clock leak
- usb: host: xhci-plat: Remove useless test before clk_disable_unprepare
- usb: host: xhci-plat: Fix clock resource by adding a register clock
- Maxime Chevallier (13):
- net: mvpp2: Add hardware offloading for VLAN filtering
- spi: Fix scatterlist elements size in spi_map_buf
- net: mvpp2: Simplify MAC filtering function parameters
- net: mvpp2: Add support for unicast filtering
- net: mvpp2: Make mvpp2_prs_hw_read a parser entry init function
- net: mvpp2: Don’t use dynamic allocs for local variables
- net: mvpp2: Fix parser entry init boundary check
- net: mvpp2: Fix TCAM filter reserved range
- net: mvpp2: Fix DMA address mask size
- net: mvpp2: Fix clk error path in mvpp2_probe
- net: mvpp2: Fix clock resource by adding missing mg_core_clk
- ARM64: dts: marvell: armada-cp110: Add clocks for the xmdio node
- ARM64: dts: marvell: armada-cp110: Add mg_core_clk for ethernet node
- Maxime Ripard (36):
- drm/sun4i: backend: Move line stride setup to buffer setup function
- drm/sun4i: backend: Document the engine operations
- drm/sun4i: backend: Allow a NULL plane pointer to retrieve the format
- drm/sun4i: backend: Add a custom plane state
- drm/sun4i: engine: Add a custom crtc atomic_check
- drm/sun4i: engine: Add a VBLANK quirk callback
- drm/sun4i: engine: Create an atomic_begin callback
- drm/sun4i: Add a driver for the display frontend
- drm/sun4i: backend: Wire in the frontend
- drm/sun4i: backend: Add a custom atomic_check for the frontend
- drm/sun4i: backend: Use runtime_pm variant of atomic_commit_tail
- drm/sun4i: backend: Make sure we don’t have a commit pending
- drm/fourcc: Add a alpha field to drm_format_info
- drm/atmel-hlcdc: Use the alpha format field in drm_format_info
- drm/atmel-exynos: Use the alpha format field in drm_format_info
- drm/rockchip: Use the alpha format field in drm_format_info
- drm/vc4: Use the alpha format field in drm_format_info
- drm/sun4i: backend: Fix structure indentation
- drm/sun4i: backend: Fix define typo
- drm/sun4i: framebuffer: Add a custom atomic_check
- drm/sun4i: backend: Move the coord function in the shared part
- drm/sun4i: backend: Set a default zpos in our reset hook
- drm/sun4i: backend: Add support for zpos
- drm/sun4i: backend: Check for the number of alpha planes
- ARM: dts: sun8i: a33 Enable our display frontend
- drm/rcar-du: dw-hdmi: Fix compilation
- drm/sun4i: backend: Assign the pipes automatically
- drm/sun4i: Remove the plane description structure
- drm/sun4i: backend: Make zpos configurable
- drm/sun4i: backend: Remove ARGB spoofing
- regmap: mmio: Add function to attach a clock
- mmc: sunxi: Move resources management to separate functions
- mmc: sunxi: Move the reset deassertion before enabling the clocks
- mmc: sunxi: Set our device drvdata earlier
- drm/sun4i: backend: Check that we only have a single YUV plane
- drm/sun4i: backend: Support YUV planes
- Miquel Raynal (41):
- mtd: nand: add ->setup_data_interface() support for Marvell NFCv1
- mtd: nand: fsmc: get rid of IO_ADDR_[R|W]
- mtd: nand: fsmc: use ->exec_op()
- MAINTAINERS: Update email address for Miquel Raynal
- mtd: nand: use Marvell reworked NAND controller driver with all platforms
- mtd: nand: remove deprecated pxa3xx_nand driver
- arm64: dts: marvell: use reworked NAND controller driver on Armada 7K
- arm64: dts: marvell: use reworked NAND controller driver on Armada 8K
- mtd: nand: remove useless fields from pxa3xx NAND platform data
- dt-bindings: mtd: remove pxa3xx NAND controller documentation
- arm: dts: pxa: use reworked NAND controller driver
- MAINTAINERS: remove entry for deleted pxa3xx_nand driver
- mtd: rawnand: makes the Kconfig entry clear when it comes to raw NANDs
- mtd: rawnand: rename default ->onfi_get/set_features() implementations
- mtd: rawnand: rename SET/GET FEATURES related functions
- mtd: rawnand: use wrappers to call onfi GET/SET_FEATURES
- mtd: rawnand: handle differently chip/controller errors about timings
- mtd: rawnand: mxc: remove useless checks in GET/SET_FEATURES functions
- mtd: rawnand: move calls to ->select_chip() in nand_setup_data_interface()
- mtd: rawnand: check ONFI timings have been acked by the chip
- mtd: rawnand: avoid setting again the timings to mode 0 after a reset
- mtd: rawnand: prepare the removal of ONFI/JEDEC parameter pages
- mtd: rawnand: prepare the removal of the ONFI parameter page
- mtd: rawnand: allow vendors to declare (un)supported features
- mtd: rawnand: macronix: nack the support of changing timings for one chip
- mtd: rawnand: get rid of the JEDEC parameter page in nand_chip
- mtd: rawnand: get rid of the ONFI parameter page in nand_chip
- mtd: rawnand: gpmi: support ->setup_data_interface()
- mtd: rawnand: gpmi: use core timings instead of an empirical derivation
- mtd: rawnand: brcmnand: fix probe function error path
- mtd: rawnand: cafe: fix probe function error path
- mtd: rawnand: davinci: fix probe function error path
- mtd: rawnand: denali: fix probe function error path
- mtd: rawnand: mxc: fix probe function error path
- mtd: rawnand: omap2: fix the probe function error path
- mtd: rawnand: sh_flctl: fix the probe function error path
- mtd: rawnand: tango: fix probe function error path
- mtd: rawnand: s3c2410: enhance the probe function error path
- mtd: rawnand: marvell: fix the chip-select DT parsing logic
- mtd: rawnand: marvell: fix command xtype in BCH write hook
- cpufreq: armada-37xx: driver relies on cpufreq-dt
- Mylène Josserand (2):
- Quentin Schulz (17):
- iio: adc: axp20x_adc: put ADC rate setting in a per-variant function
- dt-bindings: iio: adc: add binding for X-Powers AXP PMICs ADC
- iio: adc: axp20x_adc: make it possible to probe from DT
- iio: adc: axp20x_adc: add support for AXP813 ADC
- ARM: dtsi: axp209: add node for ADC
- ARM: dtsi: axp22x: add node for ADC
- ARM: dtsi: axp81x: add node for ADC
- ARM: dtsi: axp81x: add battery power supply subnode
- ARM: dtsi: sun8i: a711: enable battery power supply subnode
- ARM: dtsi: axp81x: remove IP name from DT node name
- iio: adc: axp20x_adc: remove !! in favor of ternary condition
- ARM: dts: sun8i: a83t: add cpu0 and cpu100 labels
- ARM: dts: sun8i: a83t: add stable OPP tables and CPUfreq
- ARM: dts: sun8i: a711: set regulator for each cluster of CPUs
- power: supply: axp20x_battery: use data struct for variant specific code
- dt-bindings: power: supply: axp20x: add AXP813 battery DT binding
- power: supply: axp20x_battery: add support for AXP813
- Thomas Petazzoni (8):
- arch/sh: add sh7786_mm_sel() function
- arch/sh: make the DMA mapping operations observe dev->dma_pfn_offset
- arch/sh: pci: don’t use disabled resources
- arch/sh: pcie-sh7786: mark unavailable PCI resource as disabled
- arch/sh: pcie-sh7786: exclude unusable PCI MEM areas
- arch/sh: pcie-sh7786: adjust PCI MEM and IO regions
- arch/sh: pcie-sh7786: adjust the memory mapping
- arch/sh: pcie-sh7786: handle non-zero DMA offset