The Linux 4.20 kernel has been released just before Christmas, on December 23. As usual, LWN had a very nice coverage of the most significant features and improvements provided by this new release as part of the merge window articles: part 1 and part 2.
Bootlin once again contributed to this Linux 4.20 release, with a total of 216 non-merge commits, which puts us the 13th contributing company by number of commits and the 8th contributing company by number of lines changed, according to LWN statistics for the 4.20 release.
Significant Bootlin contributions
For Linux 4.20, the most significant contributions from Bootlin have been:
- On the support for Marvell platforms
- Antoine Ténart reworked how the “software thread” mechanism is handled in the
mvpp2
network driver, used on Marvell Armada 375 and 7K/8K. - Maxime Chevallier enabled XPS support in the same
mvpp2
driver - Maxime Chevallier added logic to support 2.5G speed in the
mvneta
driver, but this logic is not enabled yet, as we don’t have the necessary COMPHY driver for Armada 38x to really allow using 2.5G speed. - Miquèl Raynal added suspend/resume support for the Armada 37xx clock driver. This is part of a larger work to enable suspend/resume on the Armada 37xx platform.
- Miquèl Raynal improved the Marvell ICU driver to support SEI interrupts. The ICU is the Interrupt Collector Unit, found on Marvell Armada 7K/8K. It turns wired interrupts from a part of the chip called the “Communication Processor” (CP) into message interrupts so that they can be notified to the other part of the chip called the “Application Processor” (AP), which contains the CPU core and GIC.
- Thomas Petazzoni introduced some common code in the PCI subsystem to emulate a PCI root port bridge, and converted the
pci-mvebu
andpci-aardvark
drivers to use it.pci-mvebu
already had such an emulation logic, but since it became also needed forpci-aardvark
, we turn it into a piece of common code so that it can be shared by both drivers (and perhaps others in the future).pci-mvebu
is used on Marvell Armada XP, 370, 375, 38x, whilepci-aardvark
is used on Marvell Armada 37xx.
- Antoine Ténart reworked how the “software thread” mechanism is handled in the
- On the support for Allwinner platforms
- Paul Kocialkowski contributed the
Cedrus VPU driver
, with for now just MPEG2 decoding support. This work was done thanks to the successful crowd-funding campaign we did in February/March 2018. - Paul Kocialkowski contributed a few fixes to the
sun4i
DRM display driver.
- Paul Kocialkowski contributed the
- On the support for Microchip/Microsemi MIPS platforms
- Alexandre Belloni added support for the Microsemi Jaguar2 in the Designware SPI controller driver
- Alexandre Belloni added support for the Microsemi Ocelot in the Designware I2C controller driver
- Quentin Schulz contributed a new driver in the PHY subsystem to configure the SERDES muxing on Microsemi Ocelot platforms
- Quentin Schulz contributed a new Device Tree description for the Microsemi Ocelot PCB120 platform
- On the support Microchip/Atmel ARM platforms
- Alexandre Belloni got the first step of the clock drivers rework merged. The purpose of this rework is to move from a Device Tree representation with one Device Tree node per clock to a much simpler representation with only one Device Tree node for the whole clock controller. The SAMA5D2, SAMA5D4, AT91SAM9260, AT91SAM9x5 at AT91SAM9RL clock drivers have already been converted. Other platforms and DT changes will arrive in future releases.
- In the support for RaspberryPi platforms
- Boris Brezillon contributed a few minor fixes for the
vc4
DRM driver.
- Boris Brezillon contributed a few minor fixes for the
- In the RTC subsystem
- As the subsystem maintainer, Alexandre Belloni as usual did a number of cleanups and improvements in numerous drivers, especially to use more modern APIs where possible.
- In the network subsystem
- Quentin Schulz contributed extensive support for the Microsemi VSC8574 and VSC8584 Ethernet PHYs.
- In the MTD subsystem
- Subsystem maintainer Boris Brezillon did a lot of changes to pass a
nand_chip
object to numerous NAND subsystem hooks, and fixed all the drivers accordingly. - Boris Brezillon also deprecated a significant number of NAND subsystem hooks, by introducing a
nand_legacy
structure with legacy hooks. This should encourage developers to move their drivers to the more modern MTD/NAND APIs.
- Subsystem maintainer Boris Brezillon did a lot of changes to pass a
Bootlin maintainers activity
A number of Bootlin engineers are maintainers in the Linux kernel, so their work is not visible as patch authors, but rather as developers reviewing and merging patches contributed by others. As part of this maintainer work:
- Maxime Ripard reviewed and merged 47 patches from other developers, as the Allwinner platform co-maintainer
- Boris Brezillon reviewed and merged 36 patches from other developers, as the MTD subsystem co-maintainer
- Alexandre Belloni reviewed and merged 64 patches from other developers, as the RTC subsystem maintainer and the Microchip/Atmel platform co-maintainer
- Grégory Clement reviewed and merged 25 patches from other developers, as the Marvell platform co-maintainer
- Miquèl Raynal reviewed and merged 71 patches from other developers, as the NAND subsystem co-maintainer
Detailed list of Bootlin contributions
- Alexandre Belloni (60):
- rtc: rv8803: fix the rv8803 id in the OF table
- rtc: rv8803: add Epson RX8803 support
- spi: dw-mmio: add MSCC Jaguar2 support
- spi: dw-mmio: avoid hardcoded field mask
- i2c: designware: use generic table matching
- i2c: designware: move #ifdef CONFIG_OF to the top
- i2c: designware: allow IP specific sda_hold_time
- dt-bindings: i2c: designware: document MSCC Ocelot bindings
- i2c: designware: add MSCC Ocelot support
- MIPS: dts: mscc: Add i2c on ocelot
- MIPS: dts: mscc: enable i2c on ocelot_pcb123
- rtc: mt6397: fix possible race condition
- rtc: pl030: fix possible race condition
- rtc: pl031: switch to devm_rtc_allocate_device/rtc_register_device
- mfd: menelaus: Fix possible race condition and leak
- uio: ensure class is registered before devices
- rtc: unexport non devm managed registration
- rtc: remove irq_task from kerneldoc
- rtc: isl1208: avoid possible sysfs race
- rtc: reorder Makefile entries
- rtc: move rtc_add_group/s definitions
- rtc: isl1208: don’t include core header file
- rtc: tx4939: fixup nvmem name and register size
- rtc: test: make license text and module license match.
- rtc: test: Switch to SPDX identifier
- rtc: ds1685: drop RTC_DS1685_PROC_REGS
- rtc: ds1685: use generic nvmem
- rtc: ds1685: use rtc_add_group
- rtc: ds1307: use rtc_add_group
- rtc: lib: correct documentation typo
- rtc: armada38x: fix possible race condition
- rtc: armada38x: add range
- rtc: armada38x: switch to rtc_time64_to_tm/rtc_tm_to_time64
- rtc: rs5c348: remove useless label
- rtc: rs5c348: remove forward declaration
- rtc: rs5c348: report error when time is invalid
- rtc: ab8500: use rtc_add_group
- rtc: ab8500: let the core handle range
- rtc: ab8500: remove useless check
- MIPS: stop using _PTRS_PER_PGD
- usb: gadget: udc: atmel: handle at91sam9rl PMC
- rtc: vr41xx: switch to rtc_time64_to_tm/rtc_tm_to_time64
- rtc: mv: let the core handle invalid alarms
- MIPS: generic: Add Network, SPI and I2C to ocelot_defconfig
- clk: at91: audio-pll: fix audio pmc type
- clk: at91: generated: SSCs don’t have a gclk
- clk: at91: h32mx: separate registration from DT parsing
- clk: at91: audio-pll: separate registration from DT parsing
- clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated()
- clk: at91: allow clock registration from C code
- clk: at91: add pmc_data struct and helpers
- dt-bindings: clk: at91: Document new PMC binding
- clk: at91: add new DT lookup function
- clk: at91: add sama5d4 pmc driver
- clk: at91: add sama5d2 PMC driver
- clk: at91: add at91sam9260 PMC driver
- clk: at91: add at91sam9x5 PMCs driver
- clk: at91: add at91sam9rl PMC driver
- clk: at91: move DT compatibility code to its own file
- net: mvneta: correct typo
- Antoine Tenart (20):
- net: mvpp2: increase the number of s/w threads to 9
- net: mvpp2: rename the IRQs to match the hardware
- Documentation/bindings: net: marvell-pp2: update the IRQs description
- net: mvpp2: do not update the queue mode while probing
- net: mvpp2: fix the number of queues per cpu for PPv2.2
- net: mvpp2: cpu should always be unsigned
- net: mvpp2: make the per-cpu helpers static
- net: mvpp2: make mvpp2_read_relaxed static
- net: mvpp2: do not use the CPU number to access the per-thread registers
- net: mvpp2: map the CPUs to threads
- net: mvpp2: handle cases where more CPUs are available than s/w threads
- net: mvpp2: rename mvpp2_percpu function to mvpp2_thread
- net: phy: phylink: ensure the carrier is off when starting phylink
- net: mvpp2: do not explicitly set the carrier state in open
- net: mvneta: do not explicitly set the carrier state in open
- arm64: dts: marvell: armada-cp110: change the PPv2 IRQ names
- arm64: dts: marvell: armada-cp110: describe more PPv2 interrupts
- net: mscc: allow extracting the FCS into the skb
- net: mvpp2: 10G modes aren’t supported on all ports
- net: mvpp2: fix the phylink mode validation
- Boris Brezillon (57):
- mtd: rawnand: Add the nand_wait_readrdy() helper and use it
- mtd: rawnand: Add the nand_wait_rdy_op() helper and use it
- mtd: rawnand: Get rid of the ->read_word() hook
- spi: spi-mem: Add extra sanity checks on the op param
- mtd: rawnand: plat_nand: Pass a nand_chip object to all platform_nand_ctrl hooks
- mtd: rawnand: Pass a nand_chip object to nand_scan()
- mtd: rawnand: Pass a nand_chip object to nand_release()
- mtd: rawnand: Pass a nand_chip object to nand_wait_ready()
- mtd: rawnand: Pass a nand_chip object to ecc->hwctl()
- mtd: rawnand: Pass a nand_chip object to ecc->calculate()
- mtd: rawnand: Pass a nand_chip object to ecc->correct()
- mtd: rawnand: Pass a nand_chip object to ecc->read_xxx() hooks
- mtd: rawnand: Pass a nand_chip object to ecc->write_xxx() hooks
- mtd: rawnand: Pass a nand_chip object to chip->read_xxx() hooks
- mtd: rawnand: Pass a nand_chip object to chip->write_xxx() hooks
- mtd: rawnand: Pass a nand_chip object to chip->select_chip()
- mtd: rawnand: Pass a nand_chip object to chip->block_xxx() hooks
- mtd: rawnand: Pass a nand_chip object to chip->cmd_ctrl()
- mtd: rawnand: Pass a nand_chip object to chip->dev_ready()
- mtd: rawnand: Pass a nand_chip object to chip->cmdfunc()
- mtd: rawnand: Pass a nand_chip object to chip->waitfunc()
- mtd: rawnand: Pass a nand_chip object to chip->erase()
- mtd: rawnand: Pass a nand_chip object to chip->{get, set}_features()
- mtd: rawnand: Pass a nand_chip object to chip->setup_read_retry()
- mtd: rawnand: Pass a nand_chip object to chip->setup_data_interface()
- mtd: rawnand: Pass a nand_chip object to all nand_xxx_bbt() helpers
- mtd: rawnand: Pass a nand_chip object nand_erase_nand()
- mtd: rawnand: Remove docg4
- ARM: pxa: palmtreo: Drop docg4 specific init
- mtd: rawnand: Make maxchips an unsigned int
- mtd: rawnand: Do not treat !maxchips specially in nand_scan_with_ids()
- mtd: rawnand: Leave chip->IO_ADDR_{R, W} to NULL when unused
- mtd: rawnand: Create a legacy struct and move ->IO_ADDR_{R, W} there
- mtd: rawnand: Deprecate ->{read, write}_{byte, buf}() hooks
- mtd: rawnand: Deprecate ->cmd_ctrl() and ->cmdfunc()
- mtd: rawnand: Deprecate ->dev_ready() and ->waitfunc()
- mtd: rawnand: Deprecate ->block_{bad,markbad}() hooks
- mtd: rawnand: Deprecate ->erase()
- mtd: rawnand: Deprecate ->{set,get}_features() hooks
- mtd: rawnand: Deprecate ->chip_delay
- mtd: rawnand: Move function prototypes after struct declarations
- mtd: rawnand: Get rid of nand_flash_dev forward declation
- mtd: rawnand: Get rid of the duplicate nand_chip forward declaration
- mtd: rawnand: Get rid of a few unused definitions
- mtd: rawnand: Move platform_nand_xxx definitions out of rawnand.h
- mtd: rawnand: Inline onfi_get_async_timing_mode()
- mtd: rawnand: Keep all internal stuff private
- mtd: rawnand: Move legacy code to nand_legacy.c
- mtd: rawnand: Move ONFI code to nand_onfi.c
- mtd: rawnand: Move JEDEC code to nand_jedec.c
- mtd: rawnand: Allow selection of ECC byte ordering at runtime
- mtd: nand: Fix nanddev_neraseblocks()
- mtd: spi-nor: Reset nor->addr_width when SFDP parsing failed
- mtd: sa1100: avoid VLA in sa1100_setup_mtd
- mtd: nand: Fix nanddev_pos_next_page() kernel-doc header
- drm/vc4: Fix NULL pointer dereference in the async update path
- drm/vc4: Set ->legacy_cursor_update to false when doing non-async updates
- Gregory CLEMENT (4):
- Maxime Chevallier (4):
- Maxime Ripard (1):
- Miquel Raynal (25):
- clk: mvebu: armada-37xx-periph: save the IP base address in the driver data
- clk: mvebu: armada-37xx-periph: add suspend/resume support
- mtd: rawnand: marvell: document a bit more the driver
- Documentation: mtd: remove stale pxa3xx NAND controller documentation
- arm64: dts: marvell: move AP806/CP110 thermal nodes into a new syscon
- arm64: dts: marvell: add thermal-zone node in ap806 DTSI file
- arm64: dts: marvell: add macro to make distinction between node names
- arm64: dts: marvell: add thermal-zone node in cp110 DTSI file
- dt-bindings/interrupt-controller: Fix Marvell ICU length in the example
- irqchip/irq-mvebu-icu: Fix wrong private data retrieval
- irqchip/irq-mvebu-icu: Clarify the reset operation of configured interrupts
- irqchip/irq-mvebu-icu: Disociate ICU and NSR
- irqchip/irq-mvebu-icu: Support ICU subnodes
- irqchip/irq-mvebu-sei: Add new driver for Marvell SEI
- arm64: marvell: Enable SEI driver
- irqchip/irq-mvebu-icu: Add support for System Error Interrupts (SEI)
- dt-bindings/interrupt-controller: Update Marvell ICU bindings
- dt-bindings/interrupt-controller: Add documentation for Marvell SEI controller
- arm64: dts: marvell: add AP806 SEI subnode
- arm64: dts: marvell: use new bindings for CP110 interrupts
- arm64: dts: marvell: add CP110 ICU SEI subnode
- mtd: rawnand: marvell: rework BCH engine failure path
- mtd: rawnand: marvell: support 8b/512B strength for 2kiB pages layout
- mtd: rawnand: toshiba: Pass a single nand_chip object to the status helper
- mtd: rawnand: marvell: fix the IRQ handler complete() condition
- Paul Kocialkowski (11):
- drm/sun4i: sun4i: Register quirks with the backend structure
- drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support
- ARM: dts: sun5i: Add Video Engine and reserved memory nodes
- ARM: dts: sun7i-a20: Add Video Engine and reserved memory nodes
- ARM: dts: sun8i-a33: Add Video Engine and reserved memory nodes
- media: v4l: Add definitions for MPEG-2 slice format and metadata
- media: v4l: Add definition for the Sunxi tiled NV12 format
- media: dt-bindings: media: Document bindings for the Cedrus VPU driver
- media: platform: Add Cedrus VPU decoder driver
- ARM: dts: sun8i-h3: Add Video Engine and reserved memory nodes
- drm/fb-helper: Blacklist writeback when adding connectors to fbdev
- Quentin Schulz (28):
- net: phy: mscc: factorize code for LEDs mode
- net: phy: mscc: factorize function for getting LED mode from DT
- net: phy: mscc: read ‘vsc8531,vddmac’ as an u32
- net: phy: mscc: read ‘vsc8531, edge-slowdown’ as an u32
- net: phy: mscc: read ‘vsc8531, led-%d-mode’ as an u32
- dt-bindings: net: phy: mscc: vsc8531: remove compatible from required properties
- dt-bindings: net: phy: mscc: vsc8531: factorize vsc8531, led-N-mode
- MIPS: mscc: ocelot: make HSIO registers address range a syscon
- dt-bindings: net: ocelot: remove hsio from the list of register address spaces
- net: mscc: ocelot: get HSIO regmap from syscon
- net: mscc: ocelot: move the HSIO header to include/soc
- net: mscc: ocelot: simplify register access for PLL5 configuration
- phy: add QSGMII and PCIE modes
- dt-bindings: phy: add DT binding for Microsemi Ocelot SerDes muxing
- MIPS: mscc: ocelot: add SerDes mux DT node
- dt-bindings: add constants for Microsemi Ocelot SerDes driver
- phy: add driver for Microsemi Ocelot SerDes muxing
- net: mscc: ocelot: make use of SerDes PHYs for handling their configuration
- net: phy: mscc: migrate to phy_select/restore_page functions
- net: phy: mscc: remove unneeded parenthesis
- net: phy: mscc: shorten `x != 0` condition to `x`
- net: phy: mscc: remove unneeded temporary variable
- dt-bindings: net: vsc8531: add two additional LED modes for VSC8584
- net: phy: mscc: add support for VSC8584 PHY
- net: phy: mscc: add support for VSC8574 PHY
- MIPS: mscc: add DT for Ocelot PCB120
- MIPS: mscc: add PCB120 to the ocelot fitImage
- net: phy: mscc: fix deadlock in vsc85xx_default_config
- Thomas Petazzoni (6):
- mtd: rawnand: marvell: use regmap_update_bits() for syscon access
- MAINTAINERS: remove myself as staging FBTFT maintainer
- MAINTAINERS: replace free-electrons.com by bootlin.com for Thomas Petazzoni
- PCI: Introduce PCI bridge emulated config space common logic
- PCI: mvebu: Drop unused PCI express capability code
- PCI: mvebu: Convert to PCI emulated bridge config space