Linux 4.7 has been released on Sunday by Linus Torvalds, with numerous new features and improvements that have been described in details on LWN: part 1, part 2 and part 3. KernelNewbies also has an updated page on the 4.7 release. We contributed a total of 222 patches to this release.
Our most significant contributions:
- Boris Brezillon has contributed a core improvement to the PWM subsystem: a mechanism that allows to update the properties of a PWM in an atomic fashion. This is needed when a PWM has been initialized by the bootloader, and the kernel needs to take over without changing the properties of the PWM. See the main patch for more details. What prompted the creation of this patch series is a problem on Rockchip based Chromebook platforms where a PWM is used for a regulator, and the PWM properties need to be preserved across the bootloader to kernel transition. In addition to the changes of the core infrastructure, Boris contributed numerous patches to fix existing PWM users.
- In the MTD subsystem, Boris Brezillon continued his cleanup efforts
- Use the common Device Tree parsing code provided by
nand_scan_ident()
in more drivers, rather than driver-specific code. - Move drivers to expose their ECC/OOB layout information using the
mtd_ooblayout_ops
structure, and use the corresponding helper functions where appropriate. This change will allow a more flexible description of the ECC and OOB layout. - Document the Device Tree binding that should now be used for all NAND controllers / NAND chip, with a clear separation between the NAND controller and the NAND chip. See this commit for more details.
- Use the common Device Tree parsing code provided by
- In the RTC subsystem, Mylène Josserand contributed numerous improvements to the
rv3029
andm41t80
drivers, including the addition of the support for the RV3049 (the SPI variant of RV3029). See also our previous blog post on the support of Microcrystal’s RTCs/. - On the support of Atmel platforms
- Boris Brezillon contributed a number of fixes and improvements to the
atmel-hlcdc
driver, the DRM/KMS driver for Atmel platforms
- Boris Brezillon contributed a number of fixes and improvements to the
- On the support of Allwinner platforms
- Maxime Ripard contributed a brand new DRM/KMS driver to support the display controller found on several Allwinner platforms, with a specific focus on Allwinner A10. This new driver allows to have proper graphics support in the Nextthing Co. C.H.I.P platform, including composite output and RGB output for LCD panels. To this effect, in addition to the driver itself, numerous clock patches and Device Tree patches were made.
- Boris Brezillon contributed a large number of improvements to the NAND controller driver used on Allwinner platforms, including performance improvements.
- Quentin Schulz made his first kernel contribution by sending a patch fixing the error handling in a PHY USB driver used by Allwinner platforms.
- On the support of Marvell platforms
- Grégory Clement made some contributions to the
mv_xor
driver to make it 64-bits ready, as the same XOR engine is used on Armada 3700, a Cortex-A53 based SoC. Grégory then enabled the use of the XOR engines on this platform by updating the corresponding Device Tree. - Romain Perier did some minor updates related to the Marvell cryptographic engine support. Many more updates will be present in the upcoming 4.8, including significant performance improvements.
- Thomas Petazzoni contributed some various fixes (cryptographic engine usage on some Armada 38x boards, HW I/O coherency related fixes).
- Thomas also improved the support for Armada 7K and 8K, with the description of more hardware blocks, and updates to drivers.
- Grégory Clement made some contributions to the
Here are in details, the different contributions we made to this release:
- Alexandre Belloni (4)
- Antoine Tenart (2)
- Boris Brezillon (132)
- clk: at91: fix clk_programmable_set_parent()
- pwm: Fix pwm_apply_args()
- drm: atmel-hlcdc: Fix OF graph parsing
- drm: atmel-hlcdc: actually disable scaling when no scaling is required
- ARM: sunxi/dt: make the CHIP inherit from allwinner,sun5i-a13
- pwm: atmel-hlcdc: Fix default PWM polarity
- drm: atmel-hlcdc: fix atmel_hlcdc_crtc_reset() implementation
- pwm: Switch to the atomic API
- pwm: Update documentation
- pwm: Add core infrastructure to allow atomic updates
- pwm: Add hardware readout infrastructure
- pwm: Move the enabled/disabled info into pwm_state
- pwm: Introduce the pwm_state concept
- pwm: Keep PWM state in sync with hardware state
- ARM: Explicitly apply PWM config extracted from pwm_args
- drm: i915: Explicitly apply PWM config extracted from pwm_args
- input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args
- input: misc: max8997: Explicitly apply PWM config extracted from pwm_args
- backlight: lm3630a: explicitly apply PWM config extracted from pwm_args
- backlight: lp855x: Explicitly apply PWM config extracted from pwm_args
- backlight: lp8788: Explicitly apply PWM config extracted from pwm_args
- backlight: pwm_bl: Use pwm_get_args() where appropriate
- fbdev: ssd1307fb: Use pwm_get_args() where appropriate
- regulator: pwm: Use pwm_get_args() where appropriate
- leds: pwm: Use pwm_get_args() where appropriate
- input: misc: max77693: Use pwm_get_args() where appropriate
- hwmon: pwm-fan: Use pwm_get_args() where appropriate
- clk: pwm: Use pwm_get_args() where appropriate
- pwm: Use pwm_get/set_xxx() helpers where appropriate
- pwm: Get rid of pwm->lock
- backlight: lm3630a_bl: Stop messing with the pwm->period field
- backlight: pwm_bl: Remove useless call to pwm_set_period()
- pwm: rcar: Make use of pwm_is_enabled()
- pwm: Fix pwm_apply_args() call sites
- drm/panel: simple: Remove useless drm_mode_set_name()
- drm/panel: simple: Set appropriate mode type
- mtd: nand: move of_get_nand_xxx() helpers into nand_base.c
- mtd: nand: sh_flctl: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: mxc: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: lpc32xx: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: hisi504: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: davinci: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: gpmi: rely on generic DT parsing done in nand_scan_ident()
- mtd: kill the nand_ecclayout struct
- mtd: nand: kill the ecc->layout field
- staging: mt29f_spinand: switch to mtd_ooblayout_ops
- mtd: onenand: switch to mtd_ooblayout_ops
- mtd: nand: qcom: switch to mtd_ooblayout_ops
- mtd: nand: vf610: switch to mtd_ooblayout_ops
- mtd: nand: sunxi: switch to mtd_ooblayout_ops
- mtd: nand: sm_common: switch to mtd_ooblayout_ops
- mtd: nand: sh_flctl: switch to mtd_ooblayout_ops
- mtd: nand: s3c2410: switch to mtd_ooblayout_ops
- mtd: nand: pxa3xx: switch to mtd_ooblayout_ops
- mtd: nand: omap2: switch to mtd_ooblayout_ops
- mtd: nand: mxc: switch to mtd_ooblayout_ops
- mtd: nand: lpc32xx: switch to mtd_ooblayout_ops
- mtd: nand: jz4780: switch to mtd_ooblayout_ops
- mtd: nand: hisi504: switch to mtd_ooblayout_ops
- mtd: nand: gpmi: switch to mtd_ooblayout_ops
- mtd: nand: fsmc: get rid of the fsmc_nand_eccplace struct
- mtd: nand: fsmc: switch to mtd_ooblayout_ops
- mtd: nand: fsl_ifc: switch to mtd_ooblayout_ops
- mtd: nand: fsl_elbc: switch to mtd_ooblayout_ops
- mtd: nand: docg4: switch to mtd_ooblayout_ops
- mtd: nand: diskonchip: switch to mtd_ooblayout_ops
- mtd: nand: denali: switch to mtd_ooblayout_ops
- mtd: nand: davinci: switch to mtd_ooblayout_ops
- mtd: nand: cafe: switch to mtd_ooblayout_ops
- mtd: nand: brcm: switch to mtd_ooblayout_ops
- mtd: nand: bf5xx: switch to mtd_ooblayout_ops
- mtd: nand: atmel: switch to mtd_ooblayout_ops
- mtd: nand: jz4740: switch to mtd_ooblayout_ops
- mtd: nand: sharpsl: switch to mtd_ooblayout_ops
- mtd: nand: bch: switch to mtd_ooblayout_ops
- regulator: pwm: Use pwm_get_args() where appropriate
- pwm: Introduce the pwm_args concept
- ARM: multi_v7_defconfig: add HLCDC drivers as modules
- mtd: nand: implement the default mtd_ooblayout_ops
- mtd: docg3: switch to mtd_ooblayout_ops
- mtd: create an mtd_ooblayout_ops struct to ease ECC layout definition
- mtd: docg3: use mtd_set_ecclayout() where appropriate
- mtd: onenand: use mtd_set_ecclayout() where appropriate
- mtd: nand: use mtd_set_ecclayout() where appropriate
- mtd: use mtd_set_ecclayout() where appropriate
- mtd: add mtd_set_ecclayout() helper function
- mtd: onenand: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: qcom: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: omap2: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: lpc32xx: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: gpmi: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: fsl_ifc: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: atmel: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: nand: core: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: use mtd_ooblayout_xxx() helpers where appropriate
- mtd: add mtd_ooblayout_xxx() helper functions
- mtd: nand: sunxi: make cur_off parameter optional in extra oob helpers
- mtd: nand: sunxi: make OOB retrieval optional
- mtd: nand: sunxi: move some ECC related operations to their own functions
- mtd: nand: sunxi: poll for events instead of using interrupts
- mtd: nand: sunxi: make use of readl_poll_timeout()
- mtd: nand: sunxi: fix ->dev_ready() implementation
- mtd: nand: enable ECC pipelining
- mtd: nand: sunxi: disable clks on device removal
- mtd: nand: sunxi: fix NFC_CTL setting
- mtd: nand: sunxi: fix the NFC_ECC_ERR_CNT() macro
- mtd: nand: sunxi: let the NAND controller control the CE line
- mtd: nand: sunxi: improve ->cmd_ctrl() function
- mtd: nand: sunxi: implement ->read_subpage()
- mtd: nand: sunxi: implement ->read_oob()/->write_oob()
- mtd: nand: export default read/write oob functions
- mtd: nand: sunxi: adapt clk_rate to tWB, tADL, tWHR and tRHW timings
- mtd: nand: sunxi: fix EDO mode selection
- mtd: nand: sunxi: fix clk rate calculation
- mtd: nand: sunxi: fix call order in sunxi_nand_chip_init()
- mtd: nand: pxa3xx: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: atmel: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: brcm: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: omap2: rely on generic DT parsing done in nand_scan_ident()
- mtd: nand: remove unneeded of_mtd.h inclusions
- mtd: nand: document the NAND controller/NAND chip DT representation
- mtd: nand: atmel: correct bitflips in erased pages for pre-sama5d4 SoCs
- drm: atmel-hlcdc: route DMA accesses through AHB interfaces
- drm: atmel-hlcdc: check display mode validity in crtc->mode_fixup()
- drm: atmel-hlcdc: rework the output code to support drm bridges
- drm: atmel-hlcdc: move output mode selection in CRTC implementation
- drm: atmel-hlcdc: support extended timing ranges on sama5d4 and sama5d2
- drm: atmel-hlcdc: remove leftovers from atomic mode setting migration
- drm: atmel-hlcdc: fix connector and encoder types
- drm: atmel-hlcdc: support asynchronous atomic commit operations
- drm: atmel-hlcdc: add a ->cleanup_fb() operation
- regulator: reorder initialization steps in regulator_register()
- Gregory Clement (7)
- net: hwbm: Fix unbalanced spinlock in error case
- net: mvneta: Fix lacking spinlock initialization
- dmaengine: mv_xor: Allow selecting mv_xor for mvebu only compatible SoC
- dmaengine: mv_xor: use SoC type instead of directly the operation mode
- dmaengine: mv_xor: make the code 64 bits compliant
- arm64: dts: marvell: add XOR node for Armada 3700 SoC
- arm64: dts: marvell: Use a SoC-specific compatible for xHCI on Armada37xx
- Mylene Josserand (15)
- rtc: rv3029: add alarm IRQ
- rtc: rv3029: fix set_time function
- rtc: rv3029: fix alarm support
- rtc: rv3029: Remove some checks and warnings
- rtc: rv3029: Add support of RV3049
- rtc: rv3029: convert to use regmap
- rtc: rv3029: remove ‘i2c’ in functions names
- rtc: m41t80: handle oscillator failure bit
- rtc: m41t80: add wakealarm functionality
- rtc: m41t80: add alarm functionality
- rtc: m41t80: remove warnings and replace obsolete function
- rtc: m41t80: add the use of ‘BIT’ macro
- rtc: m41t80: replace i2c functions for smbus ones
- rtc: m41t80: remove proc macro
- rtc: m41t80: update sysfs entries export
- Romain Perier (4)
- Thomas Petazzoni (26)
- ARM: dts: armada-38x: fix MBUS_ID for crypto SRAM on Armada 385 Linksys
- ARM: mvebu: map PCI I/O regions strongly ordered
- ARM: mvebu: fix HW I/O coherency related deadlocks
- usb: xhci-plat: properly handle probe deferral for devm_clk_get()
- arm64: configs: add options useful for Armada 7K/8K support
- clk: mvebu: new driver for Armada CP110 system controller
- dt-bindings: arm: add DT binding for Marvell CP110 system controller
- clk: mvebu: new driver for Armada AP806 system controller
- i2c: mv64xxx: remove CONFIG_HAVE_CLK conditionals
- i2c: mv64xxx: use clk_{prepare_enable,disable_unprepare}
- i2c: mv64xxx: handle probe deferral for the clock
- i2c: mv64xxx: enable the driver on ARCH_MVEBU
- PCI: armada: Add driver for Marvell Armada 7K/8K PCIe controller
- dt-bindings: pci: add DT binding for Marvell Armada 7K/8K PCIe controller
- MAINTAINERS: update entry for Marvell ARM platform maintainers
- arm64: marvell: enable AP806 and CP110 syscon driver
- arm64: dts: marvell: enable several CP interfaces on Armada 7040-DB
- arm64: dts: marvell: initial DT description of Armada 7K/8K CP110 master
- arm64: dts: marvell: use the proper I2C controller compatible string for 7K/8K
- arm64: dts: marvell: improve SPI flash description on Armada 7040-DB
- arm64: dts: marvell: use new clock binding on Armada AP806
- arm64: dts: marvell: add UART aliases and define stdout-path
- spi: spi-orion: enable the driver on ARCH_MVEBU platforms
- MAINTAINERS: attach arch/arm/configs/mvebu_*_defconfig to relevant maintainers
- dt-bindings: arm: add DT binding for Marvell AP806 system controller
- clk: unconditionally recurse into clk/mvebu/
- Maxime Ripard (31)
- drm/sun4i: Send vblank event when the CRTC is disabled
- drm/sun4i: Report proper vblank
- clk: sunxi: display: Add per-clock flags
- clk: sunxi: tcon-ch1: Do not return a negative error in get_parent
- drm/sun4i: Convert to connector register helpers
- drm/sun4i: remove simplefb at probe
- drm/sun4i: rgb: panel is an error pointer
- drm/sun4i: defer only if we didn’t find our panel
- drm/sun4i: rgb: Validate the clock rate
- drm/sun4i: request exact rates to our parents
- clk: fix critical clock locking
- clk: sunxi: Add display and TCON0 clocks driver
- drm/panel: simple: Add timings for the Olimex LCD-OLinuXino-4.3TS
- ARM: sun5i: chip: Enable the TV Encoder
- ARM: sun5i: r8: Add display blocks to the DTSI
- ARM: sun5i: a13: Add display and TCON clocks
- MAINTAINERS: Add a maintainer for the Allwinner DRM driver
- drm: sun4i: tv: Add NTSC output standard
- drm: sun4i: tv: Add PAL output standard
- drm: sun4i: Add composite output
- drm: sun4i: Add RGB output
- drm: Add Allwinner A10 Display Engine support
- drm: sun4i: Add DT bindings documentation
- drm: fb: Add seq_file definition
- clk: sunxi: Add TCON channel1 clock
- clk: sunxi: Add PLL3 clock
- dt-bindings: clk: sun5i: add DRAM gates compatible
- clk: composite: Add unregister function
- ARM: sun5i: Add DRAM gates
- ARM: sun5i: Add TV encoder gate to the DTSI
- ARM: sun5i: dt: Add pll3 and pll7 clocks
- Quentin Schulz (1)
Free electrons provides a service to the world that cannot be measured in dollars and I’m eternally gratefully for their work.
And if we did measure that work in dollars I bet figure would be >1B.
Good show!