With the 4.18 released last Sunday which needed an rc8 to mature, we take a bit of time to review our latest contributions.
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.18 merge window and the rest of the 4.18 merge window. For 4.18 only, Bootlin contributed a total of 190 patches, which puts us at the 13th place in the ranking of most contributing companies according to KPS.
Also according to LWN statistics, Bootlin’s engineer Alexandre Belloni is the 9th most active developer in terms of changed lines for this release with a total of 6801. We see the first contribution of Paul Kocialkowski, our intern working on Allwinner VPU driver, as a Bootlin team member. Finally, we’re proud to see the Linux kernel’s NAND subsystem welcoming Miquèl Raynal as a co-maintainer.
The main highlights of our contributions are:
- For Marvell platforms:
- Antoine Ténart enabled the fourth network interface on the Marvell Macchiatobin,
- Antoine Ténart converted to phylink and added support for 1000baseX and 2500baseX modes to the PPv2 Ethernet controller driver found on Marvell 7K and 8K platforms,
- Antoine Ténart made a few fixes and improvements to the inside-secure cryptographic engine driver and contributed support for SHA1, SHA224 and SHA256,
- Miquèl Raynal added support for suspend/resume in the CPUfreq driver for Marvell Armada 37xx family,
- In the MTD subsystem:
- Boris Brezillon contributed the new spi-mem layer, to rework how SPI memories are supported, and allow to use regular SPI controller drivers not only for regular SPI devices, but also for SPI NOR and SPI NAND memories. See our detailed blog post on this topic,
- Miquèl Raynal contributed a few error path fixes,
- For Microsemi Ocelot platforms:
- Alexandre Belloni added support for the integrated network switch,
- Alexandre Belloni added support for internal MDIO busses,
- Antoine Ténart contributed a fix for the injection header in Ocelot switches,
- For Allwinner platforms:
- Mylène Josserand added support for SMP on the Allwinner A83T,
- Paul Kocialkowski fixed a runtime fault in the sun4i DRM driver,
- Miquèl Raynal added support for Nintendo NES and Super NES,
- Miquèl Raynal added the pinmux configuration for NAND on Allwinner A23/A33,
- Maxime Ripard added support for runtime power management to the Alwinner MMC controller driver,
- Maxime Ripard added support for the MIPI-DSI controller found on Allwinner A33,
- Quentin Schulz enabled ADC and battery power supply drivers for the X-Powers AXP813 PMIC,
- For RTC subsystem, Alexandre Belloni fixed a race condition that could happen in the probe function of a few drivers and made a few drivers define a range of supported dates,
- Alexandre Belloni also contributed a fix for Cadence MACB Ethernet controller driver that was crashing on the AT91RM9200 since December 2017,
- For OV5640, Maxime Ripard contributed a handful of fixes and Mylène Josserand contributed the support for light frequency control,
- For Cadence hardware IPs:
- Maxime Ripard added support for Cadence MIPI-CSI2 RX and TX controllers,
- Boris Brezillon contributed the driver for Cadence MIPI-DSI controller,
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 38 patches from other contributors
- Boris Brezillon, as the MTD/NAND maintainer, merged 76 patches from other contributors
- Alexandre Belloni, as the RTC and Microsemi maintainer and Atmel platform co-maintainer, merged 32 patches from other contributors
- Grégory Clement, as the Marvell EBU co-maintainer, merged 17 patches from other contributors
Here is the commit by commit detail of our contributions to 4.18:
- Alexandre Belloni (63):
- MIPS: mscc: Add switch to ocelot
- MIPS: mscc: Connect phys to ports on ocelot_pcb123
- dt-bindings: net: add DT bindings for Microsemi MIIM
- net: phy: mscc-miim: Add MDIO driver
- dt-bindings: net: add DT bindings for Microsemi Ocelot Switch
- net: mscc: Add initial Ocelot switch support
- MAINTAINERS: Add entry for Microsemi Ethernet switches
- rtc: nvmem: don’t return an error when not enabled
- rtc: at91rm9200: add range
- rtc: 88pm80x: stop setting a default time
- rtc: 88pm80x: remove unused pm80x_rtc_info members
- rtc: 88pm80x: fix possible race condition
- rtc: 88pm80x: let the core handle the RTC range
- rtc: 88pm80x: convert to rtc_tm_to_time64/rtc_time64_to_tm
- rtc: ab-b5ze-s3: fix possible race conditions
- rtc: ab-b5ze-s3: let the core handle the RTC range
- rtc: tps65910: fix possible race condition
- rtc: tps65910: allow platform power up
- rtc: tps65910: add range
- rtc: rx8581: switch to rtc_register_device
- rtc: rx8581: add RTC range
- rtc: rx8581: let the core handle rtc range
- rtc: rx8581: remove useless indirection
- rtc: rx8581: remove useless declaration
- rtc: rx8581: error out when time invalid
- rtc: rx8581: switch to regmap
- rtc: vr41xx: fix possible race condition
- rtc: vr41xx: add range
- rtc: tps6586x: fix possible race condition
- rtc: tps6586x: let the core handle rtc range
- rtc: ls1x: switch to rtc_register_device
- rtc: ls1x: remove useless label and goto
- rtc: ls1x: add range
- net: mscc: Add SPDX identifier
- rtc: mxc_v2: fix possible race condition
- rtc: mxc_v2: let the core handle rtc range
- rtc: mxc_v2: use rtc_time64_to_tm in mxc_rtc_read_alarm
- rtc: brcmstb-waketimer: switch to rtc_register_device
- rtc: brcmstb-waketimer: add range
- rtc: st-lpc: fix possible race condition
- rtc: st-lpc: add range
- rtc: test: remove obsolete .set_mmss
- selftests: timers: move PIE tests out of rtctest
- selftests: timers: rtcpie: restore previous PIE rate
- selftests: move RTC tests to rtc subfolder
- selftests: rtc: rework rtctest
- rtc: ds1685: fix possible race condition
- rtc: ds1685: Add range
- rtc: test: remove useless proc info
- rtc: test: allow registering many devices
- rtc: test: store time as an offset to system time
- rtc: test: emulate alarms using timers
- rtc: test: remove irq sysfs file
- rtc: sunxi: fix possible race condition
- rtc: mrst: switch to devm functions
- rtc: ftrtc010: switch to devm_rtc_allocate_device
- rtc: ftrtc010: handle dates after 2106
- rtc: ftrtc010: let the core handle range
- rtc: test: convert to devm_rtc_allocate_device
- rtc: test: remove alarm support from the first device
- rtc: ensure rtc_set_alarm fails when alarms are not supported
- net: macb: initialize bp->queues[0].bp for at91rm9200
- rtc: fix alarm read and set offset
- Antoine Tenart (28):
- net: phy: sfp: handle cases where neither BR, min nor BR, max is given
- arm64: defconfig: enable the Armada thermal driver
- arm64: dts: marvell: mcbin: enable the fourth network interface
- arm64: dts: marvell: 8040-db: describe the 10G interfaces as fixed-link
- arm64: dts: marvell: 7040-db: describe the 10G interface as fixed-link
- net: mvpp2: align the ethtool ops definition
- net: mvpp2: phylink support
- phy: add 2.5G SGMII mode to the phy_mode enum
- phy: cp110-comphy: 2.5G SGMII mode
- net: mvpp2: 1000baseX support
- net: mvpp2: 2500baseX support
- net: mvpp2: typo and cosmetic fixes
- net: phy: sfp: warn the user when no tx_disable pin is available
- net: phy: sfp: make the i2c-bus dt property mandatory
- Documentation/bindings: net: the sfp i2c-bus property is now mandatory
- crypto: inside-secure – remove VLAs
- crypto: inside-secure – rework cipher functions for future AEAD support
- crypto: inside-secure – rework the alg type settings in the context
- crypto: inside-secure – make the context control size dynamic
- crypto: inside-secure – make the key and context size computation dynamic
- crypto: inside-secure – fix the hash then encrypt/decrypt types
- crypto: inside-secure – improve error reporting
- crypto: inside-secure – authenc(hmac(sha256), cbc(aes)) support
- crypto: inside-secure – authenc(hmac(sha224), cbc(aes)) support
- crypto: inside-secure – authenc(hmac(sha1), cbc(aes)) support
- net: mscc: fix the injection header
- net: mvneta: fix the Rx desc DMA address in the Rx path
- net: mscc: make sparse happy
- Boris Brezillon (25):
- drm/atomic: Add sanity checks to drm_atomic_helper_async_commit()
- spi: Expose spi_{map,unmap}_buf() for internal use
- spi: Add an helper to flush the message queue
- drm/bridge: Add Cadence DSI driver
- dt-bindings: drm/bridge: Document Cadence DSI bridge bindings
- spi: Check presence the of ->transfer[_xxx]() before registering a controller
- mtd: rawnand: sunxi: Remove support for GPIO-based Ready/Busy polling
- spi: Extend the core to ease integration of SPI memory controllers
- spi: Make support for regular transfers optional when ->mem_ops != NULL
- spi: bcm-qspi: Implement the spi_mem interface
- spi: ti-qspi: Implement the spi_mem interface
- mtd: spi-nor: Use the spi_mem_xx() API
- spi: Get rid of the spi_flash_read() API
- spi: bcm-qspi: Fix build failure caused by spi_flash_read() API removal
- i2c: Get rid of i2c_board_info->archdata
- mtd: rawnand: Do not check FAIL bit when executing a SET_FEATURES op
- spi: ti-qspi: Make sure res_mmap != NULL before dereferencing it
- m68k: Implement ndelay() as an inline function to force type checking/casting
- mtd: devices: m25p80: Use spi_mem_set_drvdata() instead of spi_set_drvdata()
- i2c: Retain info->of_node in i2c_new_device()
- i2c: Export of_i2c_get_board_info()
- mtd: nand: Pass mode information to nand_page_io_req
- drm/atomic: Check old_plane_state->crtc in drm_atomic_helper_async_check()
- drm/atomic: Initialize variables in drm_atomic_helper_async_check() to make gcc happy
- drm/vc4: Reset ->{x, y}_scaling[1] when dealing with uniplanar formats
- Gregory CLEMENT (6):
- PCI: armada8k: Remove useless test before clk_disable_unprepare()
- PCI: armada8k: Fix clock resource by adding a register clock
- usb: host: xhci-plat: Remove useless test before clk_disable_unprepare
- usb: host: xhci-plat: Fix clock resource by adding a register clock
- arm64: defconfig: enable CONFIG_SPI_ARMADA_3700
- clk: mvebu: armada-37xx-periph: Fix switching CPU rate from 300Mhz to 1.2GHz
- Maxime Chevallier (2):
- Maxime Ripard (26):
- drm/sun4i: tcon: Add TRI finish interrupt for vblank
- dt-bindings: display: Add Allwinner MIPI-DSI bindings
- drm/sun4i: Add Allwinner A31 MIPI-DSI controller support
- drm/sun4i: Tie the DSI controller in the TCON
- ARM: dts: sun8i: a33: Add the DSI-related nodes
- drm/blend: Add a generic alpha property
- drm/atmel-hclcdc: Convert to the new generic alpha property
- drm/rcar-du: Convert to the new generic alpha property
- drm/sun4i: Add support for plane alpha
- drm/docs: Remove the rcar alpha from the csv file
- mmc: sunxi: Reorder the headers
- mmc: sunxi: Change sunxi_mmc_init_host argument type
- mmc: sunxi: Move bus width configuration to a function
- mmc: sunxi: Move clock configuration to a function
- mmc: sunxi: Move the card power configuration to a function
- mmc: sunxi: Add runtime_pm support
- mmc: sunxi: Drop the init / reset of the controller from set_ios
- media: dt-bindings: media: Add Cadence MIPI-CSI2 RX Device Tree bindings
- media: v4l: cadence: Add Cadence MIPI-CSI2 RX driver
- media: dt-bindings: media: Add Cadence MIPI-CSI2 TX Device Tree bindings
- media: v4l: cadence: Add Cadence MIPI-CSI2 TX driver
- media: ov5640: Don’t force the auto exposure state at start time
- media: ov5640: Init properly the SCLK dividers
- media: ov5640: Change horizontal and vertical resolutions name
- media: ov5640: Add horizontal and vertical totals
- media: ov5640: Program the visible resolution
- Miquel Raynal (21):
- serial: mvebu-uart: add suspend/resume support
- ARM: dts: sun8i: a23/a33: declare NAND pins
- ARM: dts: nes: add Nintendo NES/SuperNES Classic Edition support
- mtd: rawnand: fsl_elbc: fix probe function error path
- mtd: rawnand: fsl_ifc: fix probe function error path
- mtd: rawnand: fsmc: clean the probe function style
- mtd: rawnand: fsmc: fix the probe function error path
- mtd: rawnand: hisi504: clean the probe function error path
- mtd: rawnand: hisi504: fix the probe function error path
- mtd: rawnand: lpc32xx_mlc: clean the probe function
- mtd: rawnand: lpc32xx_mlc: fix the probe function error path
- mtd: rawnand: lpc32xx_slc: clean the probe function
- mtd: rawnand: lpc32xx_slc: fix the probe function error path
- mtd: rawnand: add a way to pass an ID table with nand_scan()
- mtd: nand: add myself as NAND co-maintainer
- cpufreq: add suspend/resume support in Armada 37xx DVFS driver
- ARM: dts: armada-370-xp: update NAND node with new bindings
- ARM: dts: armada-375: update NAND node with new bindings
- ARM: dts: armada-38x: update NAND node with new bindings
- ARM: dts: armada-39x: update NAND node with new bindings
- arm64: dts: marvell: fix CP110 ICU node size
- Mylène Josserand (12):
- ARM: sunxi: smp: Move assembly code into a file
- ARM: smp: Add initialization of CNTVOFF
- ARM: sunxi: Add initialization of CNTVOFF
- ARM: shmobile: Convert file to use cntvoff
- ARM: sun9i: smp: Rename clusters’s power-off
- ARM: sun9i: smp: Add is_a83t field
- ARM: sun8i: smp: Add support for A83T
- ARM: dts: sun8i: Add CPUCFG device node for A83T dtsi
- ARM: dts: sun8i: Add R_CPUCFG device node for the A83T dtsi
- ARM: dts: sun8i: a83t: Add CCI-400 node
- ARM: dts: sun8i: Add enable-method for SMP support for the A83T SoC
- media: ov5640: Add light frequency control
- Paul Kocialkowski (1):
- Quentin Schulz (4):
- Thomas Petazzoni (2):