Linux 6.11 has been released a week ago, the day before Open Source Summit Europe started, but as a large part of the Bootlin team was attending this conference and the immediately following Linux Plumbers conference, we are only posting now our usual blog post about our Linux 6.11 contributions.
As usual, we warmly recommend our readers to look at the articles from LWN.net covering the 6.11 merge window (part 1, part 2) to get a good high-level overview of the major new features and hardware support added in 6.11. CNX-Software also has a useful article on the 6.11 features relevant for embedded platforms.
From a Bootlin perspective, we contributed a total of 120 commits in this release, making us the 19th contributing company by number of commits, worldwide, according to the statistics. In addition to those 120 commits authored by Bootlin engineers, we reviewed and merged 76 patches from other contributors, as part of the Linux kernel maintainer role of several Bootlin engineers (Alexandre Belloni as the RTC and I3C maintainers, Miquèl Raynal as the MTD co-maintainer, and Grégory Clement as the Marvell platform maintainer).
If we look more closely at our contributions:
- Alexis Lothoré continued his tireless work on improving the Wireless driver for the Microchip WILC1000 chip, which was (and still) in desperate need for improvement.
- Bastien Curutchet continued to upstream fixes and improvements related to a Linux BSP upgrade he is doing on an Texas Instruments OMAP L138 (also called Davinci DA850 platform). This includes: power management support for the phy-da83xx-usb driver, improvements to the musb driver, to the pca9532 LED driver, a fix for the davinci_mmc driver, another fix for the DaVinci clock driver, and support for a settle-time-us property in the GPIO I2C mux driver
- An old patch from Clément Léger describing the GMAC1 interface in the Device Tree of the Renesas RZN1 platform has finally been merged
- Hervé Codina was the most prolific Bootlin contributor to this release with no less than 43 patches. He introduced
irq_domain_instanciate()
in a large series that got the following comment from kernel maintainer Thomas Gleixner: “I’m truly impressed by the quality of this patch set. The only nitpicks I found was the formatting of the struct initializers. I fixed them up for you this time. Keep up the good work!”. In addition to that, Hervé contributed an interrupt controller driver for the Microchip LAN966x OIC, introduced support for non-interleaved audio to his previously contributed fsl_qmc_audio driver, and contributed improvements to the Device Tree core and unit tests, with the goal of using Device Tree overlays - Köry Maincent has seen a small part of his work on PTP timestamping selection merged, and more importantly saw the second batch of Power over Ethernet features merged, as part of an effort funded by the DENT Project
- Luca Ceresoli contributed a few assorted fixes, and a refactoring of a Device Tree API
- Miquèl Raynal contributed a similar fix to several SPI controller drivers
- Richard Genoud contributed power management support to the TPS6594 RTC driver and fixed some broken documentation
- Thomas Bonnefille contributed updates to Device Tree binding documents for various RISC-V platforms
- Thomas Richard worked on suspend/resume support in the phy-j721e-wiz and cadence-torrent PHY drivers used on Texas Instruments platforms, and also improved suspend/resume in the i2c-omap driver
- Théo Lebrun got the Device Tree binding and description of the OLB system controller found on Mobileye processors merged… but not yet the drivers that hopefully will land in 6.12. He also contributed suspend/resume support to the Texas Instruments k3_j72xx_bandgap thermal driver
Here is the full list of 120 commits of this release:
- Alexis Lothoré (10):
- wifi: wilc1000: set net device registration as last step during interface creation
- wifi: wilc1000: register net device only after bus being fully initialized
- wifi: wilc1000: set wilc_set_mac_address parameter as const
- wifi: wilc1000: add function to read mac address from eFuse
- wifi: wilc1000: make sdio deinit function really deinit the sdio card
- wifi: wilc1000: let host->chip suspend/resume notifications manage chip wake/sleep
- wifi: wilc1000: do not keep sdio bus claimed during suspend/resume
- wifi: wilc1000: move sdio suspend method next to resume and pm ops definition
- wifi: wilc1000: remove suspend/resume from cfg80211 part
- wifi: wilc1000: disable SDIO func IRQ before suspend
- Bastien Curutchet (13):
- phy: ti: phy-da8xx-usb: Add runtime PM support
- Revert “usb: musb: da8xx: Set phy in OTG mode by default”
- usb: musb: da8xx: Remove try_idle implementation from host-only mode
- usb: musb: da8xx: Implement BABBLE recovery
- leds: pca9532: Use defines to select PWM instance
- leds: pca9532: Use PWM1 for hardware blinking
- leds: pca9532: Explicitly disable hardware blink when PWM1 is unavailable
- leds: pca9532: Change default blinking frequency to 1Hz
- mmc: davinci_mmc: report all possible bus widths
- clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use
- dt-bindings: i2c: mux-gpio: Add ‘settle-time-us’ property
- i2c: mux: gpio: Re-order #include to match alphabetic order
- i2c: mux: gpio: Add support for the ‘settle-time-us’ property
- Clément Léger (1):
- Gregory CLEMENT (4):
- Herve Codina (43):
- irqdomain: Add missing parameter descriptions in kernel-doc comments
- irqdomain: Fixed unbalanced fwnode get and put
- irqdomain: Introduce irq_domain_free()
- irqdomain: Introduce irq_domain_instantiate()
- irqdomain: Constify parameter in is_fwnode_irqchip()
- irqdomain: Use a dedicated function to set the domain name
- irqdomain: Convert __irq_domain_create() to use struct irq_domain_info
- irqdomain: Handle additional domain flags in irq_domain_instantiate()
- irqdomain: Handle domain hierarchy parent in irq_domain_instantiate()
- irqdomain: Use irq_domain_instantiate() for hierarchy domain creation
- irqdomain: Make __irq_domain_create() return an error code
- irqdomain: Handle domain bus token in irq_domain_create()
- irqdomain: Introduce init() and exit() hooks
- genirq/generic_chip: Introduce irq_domain_{alloc,remove}_generic_chips()
- genirq/generic_chip: Introduce init() and exit() hooks
- irqdomain: Add support for generic irq chips creation before publishing a domain
- irqdomain: Add a resource managed version of irq_domain_instantiate()
- irqdomain: Convert __irq_domain_add() wrappers to irq_domain_instantiate()
- irqdomain: Convert domain creation functions to irq_domain_instantiate()
- _PATCH_19_23_um_virt_pci_Use_irq_domain_instantiate_
- irqdomain: Remove __irq_domain_add()
- dt-bindings: interrupt-controller: Add support for Microchip LAN966x OIC
- irqchip: Add support for LAN966x OIC
- MAINTAINERS: Add the Microchip LAN966x OIC driver entry
- dt-bindings: net: mscc-miim: Add resets property
- net: mdio: mscc-miim: Handle the switch reset
- ASoC: fsl: fsl_qmc_audio: Check devm_kasprintf() returned value
- ASoC: fsl: fsl_qmc_audio: Fix issues detected by checkpatch
- ASoC: fsl: fsl_qmc_audio: Split channel buffer and PCM pointer handling
- ASoC: fsl: fsl_qmc_audio: Identify the QMC channel involved in completion routines
- ASoC: fsl: fsl_qmc_audio: Introduce qmc_audio_pcm_{read,write}_submit()
- ASoC: fsl: fsl_qmc_audio: Introduce qmc_dai_constraints_interleaved()
- soc: fsl: cpm1: qmc: Introduce functions to get a channel from a phandle list
- soc: fsl: cpm1: qmc: Introduce qmc_chan_count_phandles()
- dt-bindings: sound: fsl,qmc-audio: Add support for multiple QMC channels per DAI
- ASoC: fsl: fsl_qmc_audio: Add support for non-interleaved mode.
- of: dynamic: Constify parameter in of_changeset_add_prop_string_array()
- of: unittest: Add tests for changeset properties adding
- of: dynamic: Introduce of_changeset_add_prop_bool()
- of: unittest: Add a test case for of_changeset_add_prop_bool()
- PCI: of_property: Add interrupt-controller property in PCI device nodes
- net: wan: fsl_qmc_hdlc: Convert carrier_lock spinlock to a mutex
- net: wan: fsl_qmc_hdlc: Discard received CRC
- Kory Maincent (9):
- net: Move dev_set_hwtstamp_phylib to net/core/dev.h
- media: i2c: Kconfig: Fix missing firmware upload config select
- net: pse-pd: Do not return EOPNOSUPP if config is null
- net: ethtool: pse-pd: Fix possible null-deref
- net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask
- net: Change the API of PHY default timestamp to MAC
- net: net_tstamp: Add unspec field to hwtstamp_source enumeration
- net: Add struct kernel_ethtool_ts_info
- MAINTAINERS: Add ethtool pse-pd to PSE NETWORK DRIVER
- Kory Maincent (Dent Project) (7):
- net: ethtool: pse-pd: Expand C33 PSE status with class, power and extended state
- netlink: specs: Expand the PSE netlink command with C33 new features
- net: pse-pd: pd692x0: Expand ethtool status message
- net: pse-pd: Add new power limit get and set c33 features
- net: ethtool: Add new power limit get and set features
- netlink: specs: Expand the PSE netlink command with C33 pw-limit attributes
- net: pse-pd: pd692x0: Enhance with new current limit and voltage read callbacks
- Luca Ceresoli (5):
- Maxime Chevallier (1):
- Miquel Raynal (4):
- Richard Genoud (7):
- rtc: tps6594: Fix memleak in probe
- rtc: tps6594: introduce private structure as drvdata
- rtc: tps6594: Add power management support
- dt-bindings: ti: fix TISCI protocol URL link
- firmware: ti_sci: fix TISCI protocol URL link
- remoteproc: k3-r5: Fix IPC-only mode detection
- writing_musb_glue_layer.rst: Fix broken URL
- Thomas Bonnefille (2):
- Thomas Richard (10):
- phy: ti: phy-j721e-wiz: use dev_err_probe() instead of dev_err()
- phy: ti: phy-j721e-wiz: split wiz_clock_init() function
- phy: ti: phy-j721e-wiz: add resume support
- phy: cadence-torrent: extract calls to clk_get from cdns_torrent_clk
- phy: cadence-torrent: register resets even if the phy is already configured
- phy: cadence-torrent: add already_configured to struct cdns_torrent_phy
- phy: cadence-torrent: remove noop_ops phy operations
- phy: cadence-torrent: add suspend and resume support
- i2c: omap: switch to NOIRQ_SYSTEM_SLEEP_PM_OPS() and RUNTIME_PM_OPS()
- i2c: omap: wakeup the controller during suspend() callback
- Théo Lebrun (4):