Linux 5.0 was released two weeks ago by Linus Torvalds, and as it is now always the case, Bootlin has contributed a number of patches to this release. For an overview of the new features and improvements brought by Linux 5.0, we as usual recommend to read the LWN articles: merge window summary part 1, merge window summary part 2. The KernelNewbies.org page about this kernel release is also nicely documented.
In terms of contribution to Linux 5.0, according to the LWN statistics, Bootlin is the 12th contributing company by number of commits (261 commits), and 8th contributing company by number of changed lines. Bootlin engineer Maxime Ripard is 11th contributing developer by number of commits, and former Bootlin engineer Boris Brezillon is 12th contributing developer by number of commits, and 8th by number of changed lines. In this release, we are also happy to see numerous contributions from Paul Kocialkoswki who joined Bootlin in November 2018 after his internship working on the Linux kernel support for the Allwinner VPU.
Here are the main highlights of our contributions to Linux 5.0:
- After 1.5 years of work, the I3C subsystem was finally merged and visible in drivers/i3c in your favorite kernel tree! We are proud to have pioneered the Linux kernel support for this new MIPI standard, which aims at providing an alternate solution to I2C and SPI, with interesting new features (higher speed, device discovery and enumeration, in-band interrupts, and more). See also our initial blog post about I3C, and our blog post about I3C being upstream.
- In the RTC subsystem, Bootlin engineer and RTC kernel maintainer Alexandre Belloni reworked the way nvmem devices are handled, allowing for multiple nvmem devices to be registered for a single RTC as some have both battery-backed RAM and an on-chip EEPROM.
devm_rtc_device_register()
has been reimplemented to use the new registration path and is now deprecated. Its counterpart,devm_rtc_device_unregister()
has been removed. - In the MTD subsystem
- Boris Brezillon contributed a number of patches to the support for raw NAND mainly related to refactoring the subsystem. For example, some of the patches make the
->select_chip()
ofnand_chip
a legacy hook, and removes its implementation from a number of drivers. All those patches do not bring any new feature per-se, but are part of a larger effort to clean up and modernize the MTD subsystem. - Boris Brezillon also contributed to the SPI NOR support a mechanism to fixup the information provided in the BFPT table of SPI NOR flashes. This is used to ensure that some Macronix SPI NOR flashes are properly recognized as supporting 4-byte opcodes.
- Boris Brezillon contributed a number of patches to the support for raw NAND mainly related to refactoring the subsystem. For example, some of the patches make the
- Maxime Ripard contributed a number of improvements to the OV5640 camera sensor driver, especially to remove the hardcoded initialization sequence by a much more flexible initialization code, which allowed to support 60fps and more resolutions.
- Maxime Ripard extended the PHY subsystem with two new functions,
phy_configure()
andphy_validate()
, which allow to pass configuration details to PHY drivers. This was then used by Maxime to implement MIPI D-PHY drivers, which need a significant number of configuration parameters. See this commit and this commit for details. MIPI D-PHY are typically used in video display or capture HW pipelines. - As part of our work on RaspberryPi display support, Boris Brezillon contributed a number of fixs to the VC4 display controller driver.
- For the support of Microchip MPU (Atmel) platforms, Alexandre Belloni migrated the AT91SAM9260, AT91SAM9261, AT91SAM9263, AT91SAM9RL, AT91SAM9x5, SAMA5D2 and SAMA5D4 platforms to the new clock Device Tree binding that he introduced in Linux 4.20.
- For the support of Microchip UNG (formerly Microsemi) platforms, Alexandre Belloni added support for the Jaguar2 platform to the pinctrl driver already used for the Ocelot platform.
- For the support of Allwinnner platforms:
- Maxime Ripard did a huge amount of Device Tree cleanups and improvements, fixing DTC warnings, but generally making sure those Device Tree files are consistent.
- Paul Kocialkowski implemented support for YUV planes in the Allwinner display controller driver. This allows to display a video decoded by the VPU directly into a display controller plane, and let the hardware compose it with other display planes, without CPU intervention.
- Paul Kocialkowski enabled the VPU (for hardware-accelerated video decoding) on the Allwinner H5 and A64. This work was part of our crowdfunding campaign around the Allwinner VPU support.
- For the support of Marvell platforms
- Miquèl Raynal added support for suspend/resume to the SATA support on Armada 3720 (the SoC used for the popular EspressoBin platform), as part of a larger effort of bringing full suspend/resume support on Armada 3720
- Miquèl Raynal implemented support for the thermal overheat interrupt on Armada 7K/8K.
Here is the detailed list of commits we contributed to Linux 5.0:
- Alexandre Belloni (32):
- rtc: class: remove devm_rtc_device_unregister
- EDAC, i82975x: Fix spelling mistake “reserverd” -> “reserved”
- MAINTAINERS, EDAC: Drop bouncing email
- drm/i915: fix spelling mistake “reserverd” -> “reserved”
- ARM: dts: at91: sama5d4: switch to new clock bindings
- ARM: dts: at91: sama5d2: switch to new clock binding
- ARM: dts: at91: at91sam9260: switch to new clock bindings
- ARM: dts: at91: at91sam9261: switch to new clock bindings
- ARM: dts: at91: at91sam9263: switch to new clock bindings
- ARM: dts: at91: at91sam9x5: switch to new clock bindings
- ARM: dts: at91: at91sam9rl: switch to new clock bindings
- rtc: nvmem: use devm_nvmem_register()
- rtc: nvmem: remove nvmem from struct rtc_device
- dt-bindings: rtc: add generic bindings
- dt-bindings: rtc: Move trivial RTCs to rtc.txt
- power: reset: ocelot: switch the SI to boot mode
- nvmem: add type attribute
- rtc: enforce rtc_timer_init private_data type
- rtc: class: reimplement devm_rtc_device_register
- rtc: pcf2123: Add Microcrystal rv2123
- MAINTAINERS: Add a maintainer for Microsemi switches
- powerpc/fsl-rio: fix spelling mistake “reserverd” -> “reserved”
- pinctrl: ocelot: add MSCC Jaguar2 support
- alpha: rtc: simplify alpha_rtc_init
- powerpc/fsl-rio: fix spelling mistake “reserverd” -> “reserved”
- MAINTAINERS: Add a maintainer for MSCC MIPS SoCs
- rtc: nvmem: fix possible use after free
- rtc: rename core files
- selftests: rtc: rtctest: fix alarm tests
- selftests: rtc: rtctest: add alarm test on minute boundary
- clk: at91: fix at91sam9x5 peripheral clock number
- clk: at91: fix masterck name
- Boris Brezillon (83):
- drm/vc4: Use drm_atomic_helper_check_plane_state() to simplify the logic
- drm/vc4: Move ->offsets[] adjustment out of setup_clipping_and_scaling()
- drm/vc4: Fix X/Y positioning of planes using T_TILES modifier
- drm/vc4: Set ->is_yuv to false when num_planes == 1
- mtd: maps: physmap: Add SPDX header
- mtd: maps: physmap: Rename ->map and ->mtd into ->maps and ->mtds
- mtd: maps: physmap: Use platform_get_resource() to retrieve iomem resources
- mtd: maps: physmap: Use dev_notice() and a %pR specifier
- mtd: maps: physmap: Use devm_ioremap_resource()
- mtd: maps: physmap: Remove the MAX_RESOURCES limitation
- mtd: maps: physmap: Check mtd_device_{parse_register, unregister}() ret code
- mtd: maps: physmap: Return -ENOMEM directly when info allocation fails
- mtd: maps: physmap: Fix coding style issues reported by checkpatch
- mtd: maps: Prepare merging of physmap and physmap_of
- mtd: maps: Merge physmap_of.c into physmap-core.c
- mtd: maps: Rename physmap_of_{versatile, gemini} into physmap-{versatile, gemini}
- mtd: maps: Merge gpio-addr-flash.c into physmap-core.c
- staging: Remove the mt29f_spinand driver
- mtd: maps: Get rid of the latch-addr-flash driver
- drm/vc4: ->x_scaling[1] should never be set to VC4_SCALING_NONE
- drm/vc4: Prefer PPF over TPZ when dst >= 2/3 src
- i3c: Add core I3C infrastructure
- docs: driver-api: Add I3C documentation
- i3c: Add sysfs ABI spec
- dt-bindings: i3c: Document core bindings
- spi: spi-mem: Add missing word in the SPI_MEM_DATA_OUT description
- spi: spi-mem: Add SPI_MEM_NO_DATA to the spi_mem_data_dir enum
- spi: spi-mem: Split spi_mem_exec_op() code
- spi: spi-mem: Add a new API to support direct mapping
- drm/vc4: Make vc4_lbm_size() return 0 when vertical scaling is disabled
- drm/vc4: Move LBM creation out of vc4_plane_mode_set()
- drm/vc4: Don’t check plane state more than once
- drm/vc4: Rework the async update logic
- drm/vc4: Allow scaling on cursor plane
- drm/vc4: Allow YUV formats on cursor planes
- MAINTAINERS: Add myself as the I3C subsystem maintainer
- i3c: master: Add driver for Cadence IP
- dt-bindings: i3c: Document Cadence I3C master bindings
- mtd: rawnand: Stop passing mtd_info objects to internal functions
- mtd: rawnand: Reorganize code to avoid forward declarations
- mtd: rawnand: legacy: Drop useless test in nand_legacy_set_defaults()
- mtd: rawnand: Move nand_exec_op() to internal.h
- mtd: rawnand: Remove unused NAND_CONTROLLER_ALLOC flag
- mtd: rawnand: ams-delta: Allow this driver to be compiled when COMPILE_TEST=y
- mtd: rawnand: ams-delta: Add an SPDX tag to replace the license text
- mtd: rawnand: ams-delta: Fix various coding style issues
- mtd: rawnand: ams-delta: cleanup ams_delta_init() error path
- mtd: rawnand: ams-delta: Check mtd_device_register() return code
- mtd: rawnand: ams-delta: Explicitly inherit from nand_controller
- mtd: rawnand: Add nand_[de]select_target() helpers
- mtd: rawnand: Pass the CS line to be selected in struct nand_operation
- mtd: rawnand: Make ->select_chip() optional when ->exec_op() is implemented
- mtd: rawnand: fsmc: Stop implementing ->select_chip()
- mtd: rawnand: marvell: Stop implementing ->select_chip()
- mtd: rawnand: tegra: Stop implementing ->select_chip()
- mtd: rawnand: vf610: Stop implementing ->select_chip()
- mtd: rawnand: ams-delta: Stop implementing ->select_chip()
- mtd: rawnand: Deprecate the ->select_chip() hook
- mtd: rawnand: Move the ->exec_op() method to nand_controller_ops
- mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops
- mtd: rawnand: fsmc: Stop passing mtd_info objects to internal functions
- mtd: rawnand: fsmc: Fix the fsmc_nand_data kernel-doc
- mtd: rawnand: fsmc: Make conversion from chip to fsmc consistent
- mtd: rawnand: fsmc: Stop using the dummy controller obj
- mtd: rawnand: fsmc: Add an SPDX tag to replace the license text
- mtd: rawnand: fsmc: Fix all coding style issues reported by checkpatch
- mtd: rawnand: vf610: Stop passing mtd_info to internal functions
- mtd: rawnand: vf610: Stop using the dummy controller obj
- mtd: rawnand: vf610: Add an SPDX tag to replace the license text
- mtd: rawnand: Deprecate the dummy_controller field
- mtd: spi-nor: Add the SNOR_F_4B_OPCODES flag
- mtd: spi-nor: Add a post BFPT parsing fixup hook
- mtd: spi-nor: Add a post BFPT fixup for MX25L25635E
- mtd: spi-nor: Drop inline on all internal helpers
- mtd: spi-nor: Avoid forward declaration of internal functions
- mtd: spi-nor: Stop passing flash_info around
- mtd: spi-nor: Make the enable argument passed to set_byte() a bool
- mtd: spi-nor: Add an SPDX tag to spi-nor.{c,h}
- regulator: act8945a-regulator: Implement PM functionalities
- mtd: rawnand: Fix JEDEC detection
- mtd: rawnand: omap2: Pass the parent of pdev to dma_request_chan()
- MAINTAINERS: Update my email address
- mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET
- Maxime Chevallier (2):
- Maxime Ripard (91):
- drm/sun4i: hdmi: Fix unitialized variable
- drm/sun4i: hdmi: Fix double flag assignation
- media: dt-bindings: media: sun6i: Add A31 and H3 compatibles
- media: sun6i: Add A31 compatible
- ARM: dts: sun4i: Fix gpio-keys warning
- ARM: dts: sun4i: Fix HDMI output DTC warning
- ARM: dts: sun5i: Change framebuffer node names to avoid warnings
- ARM: dts: sun5i: Change clock node names to avoid warnings
- ARM: dts: sun5i: Remove skeleton to avoid warnings
- ARM: dts: sun5i: Remove SoC node unit-name to avoid warnings
- ARM: dts: sun5i: Remove redundant interrupt-controller
- ARM: dts: sun5i: Change LRADC node names to avoid warnings
- ARM: dts: sun5i: Remove all useless pinctrl nodes
- ARM: dts: sun5i: Remove card detect pull-up
- ARM: dts: sun5i: Change pinctrl nodes to avoid warning
- ARM: dts: sun5i: a10s: Fix HDMI output DTC warning
- ARM: dts: sunxi: Change default CMA pool node name
- ARM: dts: sunxi: Remove the CMA node label
- ARM: dts: sun5i: Remove underscores from nodes names
- ARM: dts: sunxi: Change LRADC node names to avoid warnings
- ARM: dts: sun5i: A10s: Remove empty SRAM node
- ARM: dts: sun5i: Provide default muxing for relevant controllers
- ARM: dts: sun6i: Remove skeleton and memory to avoid warnings
- ARM: dts: sun6i: Change framebuffer node names to avoid warnings
- ARM: dts: sun6i: Change clock node names to avoid warnings
- ARM: dts: sun6i: Remove SoC node unit-name to avoid warnings
- ARM: dts: sun6i: Change LRADC node names to avoid warnings
- ARM: dts: sun6i: Remove all useless pinctrl nodes
- ARM: dts: sun6i: Remove card detect pull-up
- ARM: dts: sun6i: Remove redundant MMC pinmux tuning
- ARM: dts: sun6i: Change pinctrl nodes to avoid warning
- ARM: dts: sun6i: Remove underscores from nodes names
- ARM: dts: sun6i: colombus: Change i2c node name to avoid warnings
- ARM: dts: sun6i: Provide default muxing for relevant controllers
- ARM: dts: sun7i: Remove skeleton and memory to avoid warnings
- ARM: dts: sun7i: Remove SoC node unit-name to avoid warnings
- ARM: dts: sun7i: Change clock node names to avoid warnings
- ARM: dts: sun7i: Change framebuffer node names to avoid warnings
- ARM: dts: sun7i: Remove all useless pinctrl nodes
- ARM: dts: sun7i: Remove card detect pull-up
- ARM: dts: sun7i: Change LRADC node names to avoid warnings
- ARM: dts: sun7i: Remove gpio-keys warnings
- ARM: dts: sun7i: Change pinctrl nodes to avoid warning
- ARM: dts: sun7i: Split the RTS and CTS pins out of the UART nodes
- ARM: dts: sun7i: som204: Use the UART3 TX and RX pin group
- ARM: dts: sun7i: Remove underscores from nodes names
- ARM: dts: sun7i: Fix HDMI output DTC warning
- ARM: dts: sun7i: Provide default muxing for relevant controllers
- ARM: dts: sun7i: Remove redundant MMC pinmux tuning
- ARM: dts: sun7i: lamobo-r1: Remove unused address-cells/size-cells
- ARM: dts: sun8i: a23/a33: Remove skeleton and memory to avoid warnings
- ARM: dts: sun8i: a23/a33: Remove SoC node unit-name to avoid warnings
- ARM: dts: sun8i: a23/a33: Fix OPP DTC warnings
- ARM: dts: sun8i: a23/a33: Remove unused address-cells/size-cells
- ARM: dts: sun8i: a23/a33: Remove leading zeros from unit-addresses
- ARM: dts: sun8i: a23/a33: Change framebuffer node names to avoid warnings
- ARM: dts: sun8i: a23/a33: Remove redundant MMC pinmux tuning
- ARM: dts: sun8i: a23/a33: Remove all useless pinctrl nodes
- ARM: dts: sun8i: a23/a33: Change LRADC node names to avoid warnings
- ARM: dts: sun8i: a23/a33: Reorder the pin groups
- ARM: dts: sun8i: a23/a33: Remove card detect pull-up
- ARM: dts: sun8i: a23/a33: Change pinctrl nodes to avoid warning
- ARM: dts: sun8i: a23/a33: Remove underscores from nodes names
- ARM: dts: sunxi: reference: Move the muxing back to the common DTSI
- ARM: dts: sun8i: a23/a33: Provide default muxing for relevant controllers
- ARM: dts: sun8i: BPI-M2M: Remove i2c nodes
- ARM: dts: sun8i: h3: Remove leading zeros from unit-addresses
- ARM: dts: sun8i: v3s: Change LRADC node names to avoid warnings
- ARM: dts: sun8i: v3s: Change pinctrl nodes to avoid warning
- ARM: dts: sun8i: v3s: Provide default muxing for relevant controllers
- ARM: dts: sun8i: v3s: Remove skeleton and memory to avoid warnings
- media: ov5640: Adjust the clock based on the expected rate
- media: ov5640: Remove the clocks registers initialization
- media: ov5640: Remove redundant defines
- media: ov5640: Remove redundant register setup
- media: ov5640: Compute the clock rate at runtime
- media: ov5640: Remove pixel clock rates
- media: ov5640: Enhance FPS handling
- media: ov5640: Make the return rate type more explicit
- media: ov5640: Make the FPS clamping / rounding more extendable
- media: ov5640: Add 60 fps support
- media: ov5640: Remove duplicate auto-exposure setup
- phy: Add MIPI D-PHY mode
- phy: Add configuration interface
- phy: Add MIPI D-PHY configuration options
- phy: dphy: Add configuration helpers
- pinctrl: sunxi: Deal with per-bank regulators
- Bluetooth: hci_bcm: Add BCM20702A1 variant
- ARM: dts: suniv: Fix improper bindings include patch
- ARM: dts: suniv: Fix improper bindings include patch
- dt-bindings: pinctrl: sunxi: Add supply properties
- Miquel Raynal (17):
- serial: mvebu-uart: clarify the baud rate derivation
- serial: mvebu-uart: initialize over sampling stack register
- mtd: fix mtd_oobavail() incoherent returned value
- mtd: fix Coverity integer handling issue
- mtd: rawnand: marvell: fix spelling mistake in kernel doc
- phy: mvebu-cp110-comphy: fix spelling in structure name
- platform-msi: Free descriptors in platform_msi_domain_free()
- mtd: rawnand: marvell: prevent timeouts on a loaded machine
- thermal: armada: add overheat interrupt support
- MAINTAINERS: thermal: add entry for Marvell MVEBU thermal driver
- dt-bindings: ap806: document the thermal interrupt capabilities
- dt-bindings: cp110: document the thermal interrupt capabilities
- ata: libahci_platform: comply to PHY framework
- ata: ahci: mvebu: remove stale comment
- ata: ahci: mvebu: do Armada 38x configuration only on relevant SoCs
- ata: ahci: mvebu: add Armada 3700 initialization needed for S2RAM
- ata: ahci: mvebu: request PHY suspend/resume for Armada 3700
- Mylène Josserand (1):
- Paul Kocialkowski (39):
- drm/sun4i: Cleanup video/YUV source before enabling a layer
- drm/sun4i: frontend: Replace ARGB with XRGB as supported format
- drm/sun4i: Add TODO comment about supporting scaling with the backend
- drm/sun4i: backend: Add a helper and a list for supported formats
- drm/sun4i: frontend: Add a helper and a list for supported formats
- drm/sun4i: backend: Refine the logic behind using the frontend
- drm/sun4i: backend: Use a specific function to check if a plane is supported
- drm/sun4i: backend: Avoid counting YUV planes that use the frontend
- drm/sun4i: Rename sun4i_backend_layer_formats to sun4i_layer_formats
- drm/sun4i: frontend: Move CSC bypass setup to format update routine
- drm/sun4i: frontend: Add helpers for input data mode and pixel sequence
- drm/sun4i: frontend: Add proper definitions for format registers
- drm/sun4i: frontend: Determine input mode based on the number of planes
- drm/sun4i: frontend: Add support for the BGRX8888 input format
- drm/sun4i: frontend: Apply format sub-sampling to CH1 dimensions
- drm/sun4i: Make pitch even for GEM dumb alloc as per hardware constraint
- drm/sun4i: frontend: Add support for the BGRX8888 output format
- drm/sun4i: Pass modifier to backend and frontend format support helpers
- ARM: dts: sun8i: h3: Fix the system-control register range
- soc: sunxi: sram: Enable EMAC clock access for H3 variant
- soc: sunxi: sram: Add support for the H5 SoC system control
- arm64: dts: allwinner: h5: Add system-control node with SRAM C1
- ARM/arm64: dts: allwinner: Move H3/H5 syscon label over to soc-specific nodes
- arm64: dts: allwinner: h5: Add Video Engine node
- dt-bindings: sram: sunxi: Add bindings for the H5 with SRAM C1
- dt-bindings: sram: sunxi: Add compatible for the A64 SRAM C1
- ARM: dts: sun8i: a33: Remove unnecessary reserved memory node
- ARM: dts: sun8i: h3: Remove unnecessary reserved memory node
- arm64: dts: allwinner: a64: Add support for the SRAM C1 section
- arm64: dts: allwinner: a64: Add Video Engine node
- media: cedrus: Remove global IRQ spin lock from the driver
- media: dt-bindings: media: cedrus: Add compatibles for the A64 and H5
- media: cedrus: Add device-tree compatible and variant for H5 support
- media: cedrus: Add device-tree compatible and variant for A64 support
- arm64: dts: allwinner: a64: Fix the video engine compatible
- clk: sunxi-ng: v3s: Fix TCON reset de-assert bit
- drm/sun4i: tcon: Prepare and enable TCON channel 0 clock at init
- i2c: bcm2835: Clear current buffer pointers and counts after a transfer
- net: phy: xgmiitorgmii: Support generic PHY status read
- Quentin Schulz (1):
- Thomas Petazzoni (2):