Linus Torvalds has released the 4.12 Linux kernel a week ago, in what is the second biggest kernel release ever by number of commits. As usual, LWN had a very nice coverage of the major new features and improvements: first part, second part and third part.
LWN has also published statistics about the Linux 4.12 development cycles, showing:
- Bootlin as the #14 contributing company by number of commits, with 221 commits, between Broadcom (230 commits) and NXP (212 commits)
- Bootlin as the #14 contributing company number of changed lines, with 16636 lines changed, just two lines less than Mellanox
- Bootlin engineer and MTD NAND maintainer Boris Brezillon as the #17 most active contributor by number of lines changed.
Our most important contributions to this kernel release have been:
- On Atmel AT91 and SAMA5 platforms:
- Alexandre Belloni has continued to upstream the support for the SAMA5D2 backup mode, which is a very deep suspend to RAM state, offering very nice power savings. Alexandre touched the core code in
arch/arm/mach-at91
as well as pinctrl and irqchip drivers - Boris Brezillon has converted the Atmel PWM driver to the atomic API of the PWM subsystem, implemented suspend/resume and did a number of fixes in the Atmel display controller driver, and also removed the no longer used AT91 Parallel ATA driver.
- Quentin Schulz improved the suspend/resume hooks in the
atmel-spi
driver to support the SAMA5D2 backup mode.
- Alexandre Belloni has continued to upstream the support for the SAMA5D2 backup mode, which is a very deep suspend to RAM state, offering very nice power savings. Alexandre touched the core code in
- On Allwinner platforms:
- Mylène Josserand has made a number of improvements to the
sun8i-codec
audio driver that she contributed a few releases ago. - Maxime Ripard added
devfreq
support to dynamically change the frequency of the GPU on the Allwinner A33 SoC. - Quentin Schulz added battery charging and ADC support to the X-Powers AXP20x and AXP22x PMICs, found on Allwinner platforms.
- Quentin Schulz added a new IIO driver to support the ADCs found on numerous Allwinner SoCs.
- Quentin Schulz added support for the Allwinner A33 built-in thermal sensor, and used it to implement thermal throttling on this platform.
- Mylène Josserand has made a number of improvements to the
- On Marvell platforms:
- Antoine Ténart contributed Device Tree changes to describe the cryptographic engines found in the Marvell Armada 7K and 8K SoCs. For now only the Device Tree description has been merged, the driver itself will arrive in Linux 4.13.
- Grégory Clement has contributed a pinctrl and GPIO driver for the Marvell Armada 3720 SoC (Cortex-A53 based)
- Grégory Clement has improved the Device Tree description of the Marvell Armada 3720 and Marvell Armada 7K/8K SoCs and corresponding evaluation boards: SDHCI and RTC are now enabled on Armada 7K/8K, USB2, USB3 and RTC are now enabled on Armada 3720.
- Thomas Petazzoni made a significant number of changes to the
mvpp2
network driver, finally adding support for the PPv2.2 version of this Ethernet controller. This allowed to enable network support on the Marvell Armada 7K/8K SoCs. - Thomas Petazzoni contributed a number of fixes to the
mv_xor_v2
dmaengine driver, used for the XOR engines on the Marvell Armada 7K/8K SoCs. - Thomas Petazzoni cleaned-up the MSI support in the Marvell
pci-mvebu
andpcie-aardvark
PCI host controller drivers, which allowed to remove a no-longer used MSI kernel API.
- On the ST SPEAr600 platform:
- Thomas Petazzoni added support for the ADC available on this platform, by adding its Device Tree description and fixing a clock driver bug
- Thomas did a number of small improvements to the Device Tree description of the SoC and its evaluation board
- Thomas cleaned up the
fsmc_nand
driver, which is used for the NAND controller driver on this platform, removing lots of unused code
- In the MTD NAND subsystem:
- Boris Brezillon implemented a mechanism to allow vendor-specific initialization and detection steps to be added, on a per-NAND chip basis. As part of this effort, he has split into multiple files the vendor-specific initialization sequences for Macronix, AMD/Spansion, Micron, Toshiba, Hynix and Samsung NANDs. This work will allow in the future to more easily exploit the vendor-specific features of different NAND chips.
- Other contributions:
- Maxime Ripard added a display panel driver for the ST7789V LCD controller
In addition, several Bootlin engineers are also maintainers of various kernel subsystems. During this release cycle, they reviewed and merged a number of patches from kernel contributors:
- Maxime Ripard, as the Allwinner co-maintainer, merged 94 patches
- Boris Brezillon, as the NAND maintainer and MTD co-maintainer, merged 64 patches
- Alexandre Belloni, as the RTC maintainer and Atmel co-maintainer, merged 38 patches
- Grégory Clement, as the Marvell EBU co-maintainer, merged 32 patches
The details of all our contributions for this release:
- Alexandre Belloni (27)
- watchdog: sama5d4: fix race condition
- watchdog: sama5d4: fix WDDIS handling
- MAINTAINERS: update RTC mailing list
- net: macb: fix phy interrupt parsing
- rtc: m41t80: Add proper compatible for rv4162
- rtc: ds1307: Add m41t0 to OF device ID table
- irqchip/atmel-aic5: Handle suspend to RAM
- pinctrl: at91-pio4: handle suspend to ram
- ARM: at91: move SoC detection to its own driver
- ARM: at91: pm: correct typo
- ARM: at91: pm: Remove at91_pm_set_standby
- ARM: at91: pm: Merge all at91sam9*_pm_init
- ARM: at91: pm: Tie the USB clock mask to the pmc
- ARM: at91: pm: Tie the memory controller type to the ramc id
- ARM: at91: pm: Workaround DDRSDRC self-refresh bug with LPDDR1 memories.
- ARM: at91: pm: Simplify at91rm9200_standby
- ARM: at91: pm: Use struct at91_pm_data in pm_suspend.S
- ARM: at91: pm: Move global variables into at91_pm_data
- ARM: at91: pm: Move at91_ramc_read/write to pm.c
- ARM: at91: pm: Cleanup headers
- MAINTAINERS: Add memory drivers to AT91 entry
- MAINTAINERS: Update AT91 entry
- atmel: remove time_t usage
- tty/serial: atmel: remove cache when unnecessary
- tty/serial: atmel: increase ATMEL_MAX_UART
- ARM: dts: at91: sama5d2_xplained: enable RTC wakeup
- ARM: dts: at91: sama5d2: add sfrbu
- Antoine Tenart (9)
- net: mvpp2: do not bypass the mvpp22_port_mii_set function
- arm64: marvell: dts: fix interrupts in 7k/8k crypto nodes
- arm64: defconfig: enable the Safexcel crypto engine as a module
- arm64: marvell: dts: enable the crypto engine on the Armada 8040 DB
- arm64: marvell: dts: enable the crypto engine on the Armada 7040 DB
- arm64: marvell: dts: add crypto engine description for 7k/8k
- ARM: dts: alpine: add valid clock-frequency values
- ARM: dts: alpine: add spaces before the uart node units.
- ARM: dts: alpine: remove 0x’s from the uart1 node unit address
- Boris Brezillon (38)
- clk: sunxi-ng: sun5i: Fix ahb_bist_clk definition
- drm/atmel-hlcdc: Fix output initialization
- MAINTAINERS: Update NAND subsystem git repositories
- memory: atmel-ebi: Add PM ops
- memory: atmel-ebi: Add missing ->numcs assignment
- memory: atmel-ebi: Change naming scheme
- mfd: syscon: atmel-smc: Remove unused helpers/macros
- memory: atmel-ebi: Stop using reg_field objects for simple things
- memory: atmel-ebi: Simplify SMC config code
- mfd: syscon: atmel-smc: Add new helpers to ease SMC regs manipulation
- mtd: nand: Remove unused chip->write_page() hook
- mtd: nand: atmel: Document the new DT bindings
- mtd: nand: Cleanup/rework the atmel_nand driver
- pwm: atmel-hlcdc: Implement the suspend/resume hooks
- pwm: atmel-hlcdc: Convert to the atomic PWM API
- pata: remove the at91 driver
- ARM: dts: bcm283x: Add HDMI audio related properties
- dt-bindings: Document the dmas and dma-names properties for VC4 HDMI
- drm/atmel-hlcdc: Fix suspend/resume implementation
- mtd: nand: tango: Enforce DMA direction type
- mtd: nand: hynix: Add read-retry support for 1x nm MLC NANDs
- mtd: nand: hynix: Rework NAND ID decoding to extract more information
- mtd: nand: Move Macronix specific initialization in nand_macronix.c
- mtd: nand: Move AMD/Spansion specific init/detection logic in nand_amd.c
- mtd: nand: Move Micron specific init logic in nand_micron.c
- mtd: nand: Move Toshiba specific init/detection logic in nand_toshiba.c
- mtd: nand: Move Hynix specific init/detection logic in nand_hynix.c
- mtd: nand: Move Samsung specific init/detection logic in nand_samsung.c
- mtd: nand: Add manufacturer specific initialization/detection steps
- mtd: nand: Do not expose the NAND manufacturer table directly
- mtd: nand: Kill the MTD_NAND_IDS Kconfig option
- mtd: nand: Rename the nand_manufacturers struct
- mtd: nand: Rename nand_get_flash_type() into nand_detect()
- mtd: nand: Get rid of busw parameter
- mtd: nand: Store nand ID in struct nand_chip
- mtd: nand: Get rid of the mtd parameter in all auto-detection functions
- ARM: dts: at91: Fix matrix compatible
- drm/atmel-hlcdc: Simplify the HLCDC layer logic
- Gregory Clement (22)
- ARM64: dts: marvell: armada37xx: add pinctrl definition
- ARM64: dts: marvell: Add pinctrl nodes for Armada 3700
- arm64: marvell: enable the Armada 37xx pinctrl driver
- clk: apn806: Turn the eMMC clock as optional for dts backwards compatible
- pinctrl: armada-37xx: Add gpio support
- pinctrl: armada-37xx: Add pin controller support for Armada 37xx
- pinctrl: dt-bindings: Add documentation for Armada 37xx pin controllers
- arm64: configs: enable SDHCI driver for Xenon
- arm64: dts: marvell: add sdhci support for Armada 7K/8K
- arm64: dts: marvell: add eMMC support for Armada 37xx
- ARM64: dts: marvell: armada-3720 add RTC support
- ARM64: dts: marvell: armada-3720-db: Add phy for USB3
- ARM64: dts: marvell: armada-37xx: Add clock resource for USB3
- ARM64: dts: marvell: armada-37xx: Fix interrupt mapping for USB3
- ARM64: dts: marvell: armada-37xx: Add USB2 node
- usb: host: Allow to build ehci orion with mvebu SoCs
- ARM64: dts: marvell: armada-3720-db: add gpio expander
- ARM64: dts: marvell: armada37xx: add address and size property for i2c cells
- arm64: dts: marvell: add RTC description for Armada 7K/8K
- ARM: dts: armada-38x: Adjust mbus controller description on Armada 38x
- arm64: defconfig: enable I2C_PXA
- arm64: defconfig: enable MVNETA
- Mylene Josserand (5)
- Thomas Petazzoni (59)
- net: mvpp2: use {get, put}_cpu() instead of smp_processor_id()
- net: mvpp2: remove mvpp2_bm_cookie_{build,pool_get}
- MAINTAINERS: add irqchip related drivers to Marvell EBU maintainers
- MAINTAINERS: sort F entries for Marvell EBU maintainers
- usb: host: xhci-plat: propagate return value of platform_get_irq()
- i2c: mv64xxx: don’t override deferred probing when getting irq
- ata: libahci: properly propagate return value of platform_get_irq()
- dmaengine: mv_xor_v2: set DMA mask to 40 bits
- dmaengine: mv_xor_v2: remove interrupt coalescing
- dmaengine: mv_xor_v2: fix tx_submit() implementation
- dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx
- dmaengine: mv_xor_v2: properly handle wrapping in the array of HW descriptors
- dmaengine: mv_xor_v2: handle mv_xor_v2_prep_sw_desc() error properly
- clk: spear: fix ADC clock definition on SPEAr600
- arm: spear6xx: add DT description of the ADC on SPEAr600
- arm: spear6xx: remove unneeded pinctrl properties in spear600-evb
- arm: spear6xx: switch spear600-evb to the new flash partition DT binding
- arm: spear6xx: fix spaces in spear600-evb.dts
- arm: spear6xx: use node labels in spear600-evb.dts
- arm: spear6xx: add labels to various nodes in spear600.dtsi
- arm64: defconfig: enable MVPP2
- arm64: marvell: dts: add PPv2.2 description to Armada 7K/8K
- mtd: nand: fsmc: remove CONFIG_OF conditional
- mtd: nand: fsmc: remove unused definitions
- mtd: nand: fsmc: use devm_clk_get()
- mtd: nand: fsmc: finally remove fsmc_nand_platform_data
- mtd: nand: fsmc: remove duplicate nand_set_flash_node()
- mtd: nand: fsmc: kill {nr_, }partitions structure fields
- mtd: nand: fmsc: kill {read, write}_dma_priv from fsmc_nand_platform_data
- mtd: nand: fsmc: remove fsmc_select_chip()
- mtd: nand: fsmc: remove ->select_bank() from fsmc_nand_platform_data
- mtd: nand: fsmc: move fsmc_nand_data definition
- mtd: nand: fsmc: fix NAND width handling
- hwrng: omap – move clock related code to omap_rng_probe()
- of/pci: Remove unused MSI controller helpers
- PCI: mvebu: Remove useless MSI enabling code
- PCI: aardvark: Move to MSI handling using generic MSI support
- net: mvpp2: finally add the PPv2.2 compatible string
- net: mvpp2: set dma mask and coherent dma mask on PPv2.2
- net: mvpp2: add support for an additional clock needed for PPv2.2
- net: mvpp2: adapt rxq distribution to PPv2.2
- net: mvpp2: rework RXQ interrupt group initialization for PPv2.2
- net: mvpp2: add AXI bridge initialization for PPv2.2
- net: mvpp2: handle misc PPv2.1/PPv2.2 differences
- net: mvpp2: handle register mapping and access for PPv2.2
- net: mvpp2: adjust mvpp2_{rxq, txq}_init for PPv2.2
- net: mvpp2: adapt mvpp2_defaults_set() to PPv2.2
- net: mvpp2: adapt the mvpp2_rxq_*_pool_set functions to PPv2.2
- net: mvpp2: adjust the allocation/free of BM pools for PPv2.2
- net: mvpp2: introduce PPv2.2 HW descriptors and adapt accessors
- net: mvpp2: introduce an intermediate union for the TX/RX descriptors
- net: mvpp2: add hw_version field in “struct mvpp2”
- net: mvpp2: add and use accessors for TX/RX descriptors
- net: mvpp2: store physical address of buffer in rx_desc->buf_cookie
- net: mvpp2: remove mvpp2_txq_pend_desc_num_get() function
- net: mvpp2: remove unused register definition MVPP2_TXQ_THRESH_REG
- net: mvpp2: remove support for buffer header
- net: mvpp2: use “dma” instead of “phys” where appropriate
- dt-bindings: net: update Marvell PPv2 binding for PPv2.2 support
- Maxime Ripard (21)
- arm64: allwinner: h5: Remove syslink to shared DTSI
- MAINTAINERS: nvmem: Remove myself from maintainers
- drm/panel: Add driver for sitronix ST7789V LCD controller
- dt-bindings: display: panel: Add bindings for the Sitronix ST7789V panel
- ARM: sun8i: a33: Add devfreq-based GPU cooling
- MAINTAINERS: Add sun4i-drm git repo
- MAINTAINERS: Update the Allwinner sunXi entry
- drm/sun4i: Grab reserved memory region
- ARM: sun8i: a33: Add the Mali OPPs
- dt-bindings: gpu: mali: Add optional OPPs
- dt-bindings: gpu: mali: Add optional memory-region
- ARM: sun5i: gr8: Use common sun5i DTSI
- ARM: sun5i: r8: Merge common controllers into the common DTSI
- ARM: sun5i: a10s: Merge common controllers into the common DTSI
- ARM: sun5i: a13: Merge common controllers into the common DTSI
- ARM: sun5i: Rename UART3 flow control pins
- ARM: sun5i: Add UART2 pin group
- ARM: sun5i: a10s: switch simple framebuffer indices
- ARM: sun5i: A10s: Switch the EMAC pins indices
- ARM: sunxi: Select PM_OPP
- drm/fb-helper: implement ioctl FBIO_WAITFORVSYNC
- Quentin Schulz (27)
- net: fec: add post PHY reset delay DT property
- iio: adc: sun4i-gpadc-iio: fix parent device being used in devm function
- ASoC: atmel-classd: sync regcache when resuming
- power: supply: add battery driver for AXP20X and AXP22X PMICs
- dt-bindings: power: supply: add AXP20X/AXP22X battery DT binding
- iio: adc: add support for X-Powers AXP20X and AXP22X PMICs ADCs
- dt-bindings: input: touschcreen: Remove sun4i documentation
- dt-bindings: mfd: Add A33 GPADC binding
- mfd: axp20x: Add MFD cells for AXP20X and AXP22X battery driver
- mfd: axp20x: Add CHRG_CTRL1/2/3 to writeable regs for AXP20X/AXP22X
- mfd: axp20x: Add AC power supply cells for AXP22X PMICs
- mfd: axp20x: Add ADC cells for AXP20X and AXP22X PMICs
- mfd: axp20x: Correct name of temperature data ADC registers
- spi: atmel: add deepest PM support to SAMA5D2
- spi: atmel: factorize reusable code for SPI controller init
- iio: adc: sun4i-gpadc-iio: add support for A33 thermal sensor
- iio: adc: sun4i-gpadc-iio: move code used in MFD probing to new function
- ARM: sun8i: sina33: add highest OPP of CPUs
- ARM: sun8i: a33: add CPU thermal throttling
- ARM: sun8i: a33: add thermal sensor
- ARM: sun8i: sina33: add cpu-supply
- ARM: sun8i: a33: add all operating points
- ARM: sun5i: chip: enable ACIN power supply subnode
- ARM: dts: sun8i: sina33: enable ACIN power supply subnode
- ARM: dtsi: axp22x: add AC power supply subnode
- ARM: dtsi: axp209: add AC power supply subnode
- iio: adc: add support for Allwinner SoCs ADC