This time around, we’re quite late to the party, but Linux 5.4 was indeed released a number of weeks ago, and once again, Bootlin contributed a number of patches to this Linux kernel release. As usual, the most useful source of information to learn about the major features brought by Linux 5.4 are the LWN articles (part 1, part 2) and the KernelNewbies Wiki.
With a total of 143 patches contributed to this release, Bootlin is the 17th contributing company by number of commits acccording to the Linux Kernel Patch Statistic.
Here are the highlights of our contributions:
- Antoine Ténart contributed support for IEEE 1588 Precision Time Protocol (PTP) to the Microsemi Ocelot Ethernet switch driver, which Bootlin developed and upstreamed in 2018 (see our blog post)
- In the MTD subsystem, a number of contributions to the
spi-nor
support, written originally by Boris Brezillon, made their way upstream. - In the support of Microchip (formerly Atmel) platforms, Kamel Bouhara, who joined Bootlin in September 2019, sees his first kernel contribution merged as a Bootlin engineer: dropping useless support for
platform_data
from the Atmel PWM driver. - In the support of Allwinner platforms
- Maxime Ripard contributed a brand new driver for the Allwinner A10 camera interface driver, a driver that we started at Bootlin for the CHIP platform back in the days, and that we finished more recently.
- Maxime Ripard contributed a significant number of improvements to the
sun4i-i2s
audio interface driver, especially TDM support, which was developed as part of a customer project at Bootlin. - Maxime Ripard also contributed numerous enhancements to Allwinner platform Device Tree files, especially in the area of using YAML schemas.
- In the support for Marvell platforms
- Grégory Clement added cpufreq support to the Marvell Armada 7K/8K platform by extending some of its clock drivers.
- Miquèl Raynal contributed improvements to the Marvell CP110 COMPHY driver, which is used to control SERDES lanes on the Marvell Armada 7K/8K platforms, and added the description of the SERDES lanes used by various IP blocks in those processors.
- Alexandre Belloni, as the RTC subsystem maintainer, did a number of fixes and improvements in several RTC drivers (mainly pcf2123 and pcf8563)
- For the LPC3250 platform, for which Bootlin delivered a modern BSP to a customer last year, Alexandre Belloni fixed an issue in the
lpc_eth
network driver, which was preventing the system from booting if the network had been initialized by the bootloader.
In addition to being contributors, some Bootlin engineers are also maintainers of various parts of the Linux kernel, and as such review and merge code from other contributors:
- As the RTC subsystem maintainer and Microchip platform co-maintainer, Alexandre Belloni merged 47 patches from other contributors
- As the MTD subsystem co-maintainer, Miquèl Raynal merged 33 patches from other contributors
- As the Marvell platform co-maintainer, Grégory Clement merged 11 patches from other contributors
Here are the details of all our contributions to Linux 5.4:
- Alexandre Belloni (24):
- rtc: pcf2123: don’t use weekday alarm
- rtc; pcf2123: fix possible alarm race condition
- rtc: pcf2123: implement .alarm_irq_enable
- rtc: pcf2123: stop using dev.platform_data
- rtc: pcf2123: rename struct and variables
- rtc: pcf2123: remove useless error path goto
- rtc: pcf2123: convert to devm_rtc_allocate_device
- rtc: pcf2123: let the core handle range offsetting
- rtc: pcf2123: add proper compatible string
- rtc: class: add debug message when registration fails
- rtc: remove superfluous error message
- rtc: ds1672: remove unnecessary check
- ARM: dts: pbab01: correct rtc vendor
- clocksource/drivers/tcb_clksrc: Register delay timer
- rtc: snvs: set range
- rtc: snvs: switch to rtc_time64_to_tm/rtc_tm_to_time64
- rtc: pcf8563: add Epson RTC8564 compatible
- rtc: pcf8563: add Microcrystal RV8564 compatible
- rtc: pcf8563: convert to devm_rtc_allocate_device
- rtc: pcf8563: remove useless indirection
- rtc: pcf8563: let the core handle range offsetting
- net: lpc_eth: avoid resetting twice
- coccinelle: api/devm_platform_ioremap_resource: remove useless script
- clk: at91: avoid sleeping early
- Antoine Tenart (8):
- Documentation/bindings: net: ocelot: document the PTP bank
- Documentation/bindings: net: ocelot: document the PTP ready IRQ
- net: mscc: describe the PTP register range
- net: mscc: improve the frame header parsing readability
- net: mscc: remove the frame_info cpuq member
- net: mscc: PTP Hardware Clock (PHC) support
- MIPS: dts: mscc: describe the PTP register range
- MIPS: dts: mscc: describe the PTP ready interrupt
- Boris Brezillon (9):
- mtd: spi-nor: Move m25p80 code in spi-nor.c
- mtd: spi-nor: Rework hwcaps selection for the spi-mem case
- mtd: spi-nor: Add a default_init() fixup hook for gd25q256
- mtd: spi-nor: Create a ->set_4byte() method
- mtd: spi-nor: Rework the SPI NOR lock/unlock logic
- mtd: spi-nor: Add post_sfdp() hook to tweak flash config
- mtd: spi-nor: Add spansion_post_sfdp_fixups()
- mtd: spi-nor: Add a ->convert_addr() method
- mtd: spi-nor: Add the SPI_NOR_XSR_RDY flag
- Gregory CLEMENT (9):
- dt-bindings: ap806: add the cluster clock node in the syscon file
- clk: mvebu: add helper file for Armada AP and CP clocks
- clk: mvebu: add CPU clock driver for Armada 7K/8K
- clk: mvebu: ap806: Fix clock name for the cluster
- dt-bindings: regulator: twl6030: Add retain-on-reset property
- regulator: twl6030: use variable for device node
- regulator: twl6030: workaround the VMMC reset behavior
- arm64: dts: marvell: Add cpu clock node on Armada 7K/8K
- ASoC: atmel_ssc_dai: Remove wrong spinlock usage
- Kamel Bouhara (1):
- Maxime Ripard (71):
- drm/connector: Fix warning in debug message
- ARM: dts: sunxi: Switch to the generic PHY properties
- ARM: dts: sunxi: Switch from phy to phy-handle
- ARM: dts: sunxi: Unify the DE2 bus clocks order
- arm64: dts: allwinner: h6: Fix SID node name
- dt-bindings: rtc: Remove the PCF8563 from the trivial RTCs
- ARM: dts: sunxi: Remove simple-panel compatible
- ARM: dts: sunxi: Fix the HDMI PHY name
- dt-bindings: dmaengine: Add YAML schemas for the generic DMA bindings
- dt-bindings: dmaengine: Convert Allwinner A10 DMA to a schema
- dt-bindings: dmaengine: Convert Allwinner A31 and A64 DMA to a schema
- dt-bindings: input: Convert Allwinner LRADC to a schema
- dt-bindings: bus: Convert Allwinner DE2 bus to a schema
- dt-bindings: crypto: Convert Allwinner A10 Security Engine to a schema
- ASoC: sun4i-i2s: Register regmap and PCM before our component
- ASoC: sun4i-i2s: Switch to devm for PCM register
- ASoC: sun4i-i2s: Don’t use the oversample to calculate BCLK
- ASoC: sun4i-i2s: Replace call to params_channels by local variable
- ASoC: sun4i-i2s: Rework MCLK divider calculation
- ASoC: sun4i-i2s: Move the channel configuration to a callback
- ASoC: sun4i-i2s: Move the format configuration to a callback
- ASoC: sun4i-i2s: Use module clock as BCLK parent on newer SoCs
- ASoC: sun4i-i2s: Fix the MCLK and BCLK dividers on newer SoCs
- ASoC: sun4i-i2s: RX and TX counter registers are swapped
- ASoC: sun4i-i2s: Fix LRCK and BCLK polarity offsets on newer SoCs
- ASoC: sun4i-i2s: Fix the LRCK polarity
- ASoC: sun4i-i2s: Fix WSS and SR fields for the A83t
- ASoC: sun4i-i2s: Fix MCLK Enable bit offset on A83t
- ASoC: sun4i-i2s: Fix the LRCK period on A83t
- ASoC: sun4i-i2s: Remove duplicated quirks structure
- ASoC: sun4i-i2s: Pass the channels number as an argument
- ASoC: sun4i-i2s: Support more channels
- ASoC: sun4i-i2s: Add support for TDM slots
- ASoC: sun4i-i2s: Use the physical / slot width for the clocks
- ASoC: sun4i-i2s: Use the actual format width instead of an hardcoded one
- ASoC: sun4i-i2s: Replace call to params_width by local variable
- ASoC: sun4i-i2s: Add support for DSP formats
- media: dt-bindings: media: Add YAML schemas for the generic RC bindings
- media: dt-bindings: media: Convert Allwinner A10 IR to a schema
- dt-bindings: mfd: Convert Allwinner GPADC bindings to a schema
- ARM: dts: sun4i: Add missing timers interrupts
- ARM: dts: sun5i: Add missing timers interrupts
- ARM: dts: sun6i: Add missing timers interrupts
- ARM: dts: a23/a33: Change the timers compatible
- ARM: dts: a83t: Change the timers compatible
- ARM: dts: h3: Change the timers compatible
- ARM: dts: v3s: Change the timers compatible
- ARM: dts: sun7i: Add CSI0 controller
- ARM: dts: sunxi: Add missing watchdog interrupts
- ARM: dts: sunxi: Add missing watchdog clocks
- media: dt-bindings: media: Add Allwinner A10 CSI binding
- media: sunxi: Refactor the Makefile and Kconfig
- media: sunxi: Add A10 CSI driver
- dt-bindings: timer: Convert Allwinner A10 Timer to a schema
- dt-bindings: timer: Add missing compatibles
- clocksource: sun4i: Add missing compatibles
- dt-bindings: timer: Convert Allwinner A13 HSTimer to a schema
- ASoC: sunxi: Revert initial A83t support
- dt-bindings: irq: Convert Allwinner IRQ Controller to a schema
- dt-bindings: irq: Convert Allwinner NMI Controller to a schema
- ASoC: sun4i: Revert A83t description
- ASoC: dt-bindings: sun4i-spdif: Fix dma-names warning
- ASoC: dt-bindings: Convert Allwinner A33 codec to a schema
- ASoC: dt-bindings: Convert Allwinner A64 analog codec to a schema
- media: sun4i: Make sun4i_csi_formats static
- dt-bindings: mmc: sunxi: reorder MMC compatibles
- dt-bindings: mmc: sunxi: Add H5 compatibles
- dt-bindings: watchdog: Add YAML schemas for the generic watchdog bindings
- dt-bindings: watchdog: Convert Allwinner watchdog to a schema
- dt-bindings: watchdog: sun4i: Add the watchdog interrupts
- dt-bindings: watchdog: sun4i: Add the watchdog clock
- Miquel Raynal (20):
- usb: host: xhci-plat: Prevent an abnormally restrictive PHY init skipping
- dt-bindings: ata: fix typo in Allwinner R40 reset specific paragraph
- phy: mvebu-a3700-comphy: Inform users if their firmware is too old
- phy: mvebu-cp110-comphy: Add clocks support
- phy: mvebu-cp110-comphy: Explicitly initialize the lane submode
- phy: mvebu-cp110-comphy: List already supported Ethernet modes
- phy: mvebu-cp110-comphy: Rename the macro handling only Ethernet modes
- phy: mvebu-cp110-comphy: Allow non-Ethernet modes to be configured
- phy: mvebu-cp110-comphy: Cosmetic change in a helper
- phy: mvebu-cp110-comphy: Update comment about powering off all lanes at boot
- dt-bindings: phy: Add Marvell COMPHY clocks
- dt-bindings: pci: add PHY properties to Armada 7K/8K controller bindings
- arm64: dts: marvell: Add CP110 COMPHY clocks
- arm64: dts: marvell: Add 7k/8k per-port PHYs in SATA nodes
- arm64: dts: marvell: Add 7k/8k PHYs in USB3 nodes
- arm64: dts: marvell: Add 7k/8k PHYs in PCIe nodes
- arm64: dts: marvell: Convert 7k/8k usb-phy properties to phy-supply
- dt-bindings: ap80x: Document AP807 CPU clock compatible
- dt-bindings: ap806: Document AP807 clock compatible
- clk: mvebu: ap806: be more explicit on what SaR is
- Paul Kocialkowski (1):