The 3.15 of the Linux kernel was released just a few days ago by Linus Torvalds. As explained by LWN.net, the headline features in 3.15 include some significant memory management improvements, the renameat2() system call, file-private POSIX locks, a new device mapper target called dm-era, faster resume from suspend, and more. One can also read the coverage by LWN.net of the first part and the second part of the merge window to get more details about the major new features in this release.
As usual, Bootlin contributed to the Linux kernel during this 3.15 cycle, and with a total of 218 patches contributed, it’s a new record for Bootlin. According to the KPS statistics, Bootlin ranked #12 in the list of companies contributing to the Linux kernel for the 3.15 kernel (if you exclude the “Unknown” and “Hobbyists” categories, which aren’t really companies).
The main features contributed by Bootlin again centered around the support for ARM processors:
- By far, the largest contribution this cycle was the initial support for the new Armada 375 and Armada 38x processors from Marvell. Gregory Clement, Ezequiel Garcia and Thomas Petazzoni have been working on the code to support these processors since a few months ago, and started pushing the patches to the public in February this year. For the Marvell Armada 38x processor, it means that the code was pushed in mainline even before the processor was announced publicly! The features supported in 3.15 for these processors are: interrupts, GPIO, clocks, pin-muxing, serial, I2C, SPI, timer, L2 cache, SDIO (only for 375), SATA (only 375), XOR, PCIe, MBus, networking (only for 38x), NOR and NAND support. Many other features such as SMP, I/O coherency and various other peripherals will be supported in 3.16.
- Convert support for the Atmel AT91SAM9RL processor to the Device Tree, done by Alexandre Belloni.
- Addition of iio-hwmon to the Freescale i.MX23 and i.MX28 processors, which allows to use the internal temperature sensor of the processor. Done by Alexandre Belloni.
- Multiple fixes and improvements to the AT91 ADC support. Done by Alexandre Belloni.
- Support for the watchdog in Armada 370 and Armada XP was added, done by Ezequiel Garcia.
- A driver for the SPI controller found in Allwinner A31 SoC was added, as well as all the Device Tree information to describe this controller and related clocks. Done by Maxime Ripard.
- Support for the I2C controller found in the Allwinner A31 SoC was added into the existing mv64xxx-i2c driver, as well as the necessary Device Tree information to use I2C on this SoC. Done by Maxime Ripard.
- Audio support was enabled on the Armada 370 SoC, re-using existing code for Kirkwood, and therefore making audio work on the Armada 370 DB platform. Done by Thomas Petazzoni.
- A number of issues in the PCIe support for Marvell processors have been fixed, thanks to the reports from a number of users. Done by Thomas Petazzoni, with help from these users.
We also contributed other things than just support for ARM processors:
- The main contribution in this area is the addition of UBI block, a driver that allows to use read-only block filesystems such as squashfs on top of a UBI volume. The code was originally written by David Wagner who was an intern at Bootlin, and later taken by Ezequiel Garcia who did a lot of additional cleanup work and community discussion to get the driver merged. Some details about this feature can be found in the Linux-MTD documentation.
- A generic Device Tree binding to express NAND ECC related information in the Device Tree was contributed by Ezequiel Garcia.
- The quest to remove
IRQF_DISABLED
continued, by Michael Opdenacker.
In details, all our contributions are:
- Alexandre Belloni (35):
- iio: mxs-lradc: remove useless check
- ARM: dts: mxs: add #io-channel-cells to mx28 lradc
- ARM: dts: mxs: Add iio-hwmon to mx28 soc
- ARM: dts: mxs: Add iio-hwmon to mx23 soc
- usb: gadget: atmel_usba: fix crash when no endpoint are specified
- iio: adc: at91_adc: Repair broken platform_data support
- ARM: at91/defconfig: refresh at91sam9rl_defconfig
- ARM: at91/defconfig: remove useless configuration in at91sam9260_9g20_defconfig
- ARM: at91/defconfig: refresh at91sam9260_9g20_defconfig
- ARM: at91: prepare at91sam9rl DT transition
- ARM: at91: Add at91sam9rl DT SoC support
- ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
- ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
- ARM: at91: prepare common clk transition for sam9rl SoCs
- ARM: at91/dt: define at91sam9rl clocks
- ARM: at91/dt: define main clk frequency of at91sam9rlek
- ARM: at91: switch sam9rl to common clock framework
- ARM: at91/DT: atmel_usba correct atmel,vbus-gpio meaning
- Documentation: dt: iio: improve atmel-adc documentation
- Documentation: dt: iio: move arm/atmel-adc.txt to iio/adc/at91_adc.txt
- ARM: at91/dt: at91-ariag25: remove useless adc properties
- ARM: at91/dt: at91sam9260: remove useless adc properties
- ARM: at91/dt: at91sam9g45: remove useless adc properties
- ARM: at91/dt: at91sam9x5: remove useless adc properties
- ARM: at91/dt: sama5d3: remove useless adc properties
- ARM: at91/dt: at91-cosino: remove useless adc properties
- ARM: at91: at91sam9g45: change at91_adc name
- ARM: at91: at91sam9260: change at91_adc name
- iio: adc: at91_adc: correct default shtim value
- pwm: atmel: Fix polarity handling
- pwm: atmel: correct CDTY calculation
- iio: adc: mxs-lradc: fix warning when buidling on avr32
- ASoC: tlv320aic31xx: document that the regulators are mandatory
- ARM: at91/dt: sam9260: correct external trigger value
- ARM: at91: sam9260: fix compilation issues
- Antoine Ténart (1):
- Ezequiel Garcia (43):
- ARM: dove: Remove UBI support from defconfig
- ARM: mvebu: Enable Armada 370/XP watchdog in the devicetree
- ARM: kirkwood: Add RSTOUT ‘reg’ entry to devicetree
- ARM: dove: Enable Dove watchdog in the devicetree
- ARM: mvebu: Enable watchdog support in defconfig
- ARM: dove: Enable watchdog support in the defconfig
- watchdog: orion: Add clock error handling
- watchdog: orion: Use atomic access for shared registers
- watchdog: orion: Remove unused macros
- watchdog: orion: Make sure the watchdog is initially stopped
- watchdog: orion: Handle the interrupt so it’s properly acked
- watchdog: orion: Make RSTOUT register a separate resource
- watchdog: orion: Remove unneeded BRIDGE_CAUSE clear
- watchdog: orion: Introduce an orion_watchdog device structure
- watchdog: orion: Introduce per-compatible of_device_id data
- watchdog: orion: Add per-compatible clock initialization
- watchdog: orion: Add per-compatible watchdog start implementation
- watchdog: orion: Add support for Armada 370 and Armada XP SoC
- watchdog: orion: Enable the build on ARCH_MVEBU
- ARM: mvebu: Rename the ARCH_MVEBU menu option
- irqchip: armada-370-xp: Add helper for the MSI IRQ handling
- irqchip: armada-370-xp: Setup a chained handler for the MPIC
- UBI: R/O block driver on top of UBI volumes
- UBI: block: Mark init-only symbol as __initdata
- UBI: block: Use ‘u64’ for the 64-bit dividend
- UBI: block: Add CONFIG_BLOCK dependency
- UBI: block: Use ENOSYS as return value when CONFIG_UBIBLOCK=n
- UBI: make UBI_IOCVOLCRBLK take a parameter for future usage
- of_mtd: Add helpers to get ECC strength and ECC step size
- mtd: nand: Add a devicetree binding for ECC strength and ECC step size
- mtd: nand: pxa3xx: Remove unused macro
- mtd: nand: pxa3xx: Print actual ECC strength in error message
- clocksource: orion: Use atomic access for shared registers
- clocksource: armada-370-xp: Use atomic access for shared registers
- clk: mvebu: Fix ratio register offset on A375 SoC
- clk: mvebu: Support Armada 380 SoC on the core divider clock
- clk: mvebu: Update binding documentation for the core divider clock
- ARM: mvebu: Add a 2 GHz fixed-clock on Armada 38x SoCs
- ARM: mvebu: Add the Core Divider clock to Armada 38x SoCs
- ARM: mvebu: Add support for NAND controller in Armada 38x SoC
- ARM: mvebu: Enable NAND controller in Armada 385-DB
- net: mvmdio: Check for a valid interrupt instead of an error
- dma: mv_xor: Flush descriptors before activating a channel
- Gregory CLEMENT (12):
- ARM: mvebu: Makefile clean-up
- clk: mvebu: add clock support for Armada 375
- dt: Update binding information for mvebu core clocks with Armada 375
- dt: Update binding information for mvebu gating clocks with Armada 375
- clk: mvebu: add clock support for Armada 380/385
- ARM: mvebu: add Device Tree description of the Armada 375 SoC
- of: Allows to use the PCI translator without the PCI core
- ARM: mvebu: Allows to get the SoC ID even without PCI enabled
- ARM: mvebu: add initial support for the Armada 375 SOCs
- usb: gadget: atmel_usba: fix crashed during stopping when DEBUG is enabled
- ARM: mvebu: add Device Tree for the Armada 385 RD board
- clk: respect the clock dependencies in of_clk_init
- Maxime Ripard (43):
- reset: Add of_reset_control_get
- ARM: sun4i: a10: Add missing serial aliases
- ARM: sun5i: a10s: Add missing serial aliases
- ARM: sun6i: Add missing serial aliases
- ARM: sun7i: Add missing serial aliases
- ARM: sun5i: a13: Add missing serial aliases
- spi: sunxi: Add Allwinner A31 SPI controller driver
- ARM: sun6i: dt: Add PLL6 and SPI module clocks
- ARM: sun6i: dt: Add SPI controllers to the A31 DTSI
- ARM: sunxi: Enable A31 SPI and SID in the defconfig
- ARM: mxs: cfa10049: Add NAU7802 ADCs to the device tree
- ARM: dts: cfa10036: Add dr_mode and phy_type properties to the DT
- misc: eeprom: sunxi: Change compatibles
- ARM: sunxi: dt: Convert to the new SID compatibles
- clk: sunxi: Add support for PLL6 on the A31
- clk: sunxi: Add new clock compatibles
- ARM: sunxi: dt: Convert to the new clock compatibles
- spi: sunxi: Add Allwinner A10 SPI controller driver
- ARM: dt: sun7i: Add A20 SPI controller nodes
- ARM: dt: sun4i: Add A10 SPI controller nodes
- ARM: dt: sun5i: Add A10s SPI controller nodes
- ARM: dt: sun5i: Add A13 SPI controller nodes
- ARM: dt: sun7i: Add SPI muxing options
- ARM: dts: sun7i: Enable the SPI controllers of the A20-olinuxino-micro
- ARM: sun6i: dt: Fix mod0 compatible
- i2c: mv64xxx: Add reset deassert call
- i2c: mv64xxx: Add support for the Allwinner A31 I2C driver
- ARM: sun6i: Enable the I2C controllers
- ARM: sun6i: Enable the I2C muxing options
- ARM: sun6i: colombus: Enable the I2C controllers
- clocksource: sunxi: Add new compatibles
- ARM: sunxi: dt: Convert to the new clocksource compatible
- ARM: sunxi: dt: Update the watchdog compatibles
- ARM: sunxi: Add the new watchog compatibles to the reboot code
- irqchip: sunxi: Change compatibles
- ARM: sunxi: dt: Convert to the new irq controller compatibles
- ARM: sunxi: Select HAVE_ARM_ARCH_TIMER
- i2c: mv64xxx: Fix reset controller handling
- watchdog: sunxi: Change compatibles
- rtc: sunxi: change compatibles
- arch/arm/boot/dts/sun4i-a10.dtsi: convert to the new RTC compatibles
- ARM: sun7i: Fix i2c4 base address
- ARM: sunxi: Enable GMAC in sunxi_defconfig
- Michael Opdenacker (19):
- [media] davinci: vpfe: remove deprecated IRQF_DISABLED
- ia64: Remove deprecated IRQF_DISABLED
- mn10300: Remove deprecated IRQF_DISABLED
- x86: Remove deprecated IRQF_DISABLED
- ARM: 7995/1: footbridge: remove obsolete IRQF_DISABLED
- ARM: 7996/1: floppy.h: remove deprecated IRQF_DISABLED
- ARM: 7997/1: cns3xxx: remove deprecated IRQF_DISABLED
- ARM: 7998/1: IXP4xx: remove deprecated IRQF_DISABLED
- ARM: 7999/1: arch/arm/mach-lpc32xx-remove-irqf-disabled
- ARM: 8000/1: misc: remove deprecated IRQF_DISABLED
- ARM: 8001/1: mmp: remove deprecated IRQF_DISABLED
- ARM: 8002/1: spear: remove deprecated IRQF_DISABLED
- ARM: 8003/1: w90x900: remove deprecated IRQF_DISABLED
- ARM: 8004/1: [SCSI]: remove deprecated IRQF_DISABLED
- xen: remove XEN_PRIVILEGED_GUEST
- [SCSI] remove deprecated IRQF_DISABLED from SCSI
- PNP: remove deprecated IRQF_DISABLED
- score: remove unused CPU_SCORE7 Kconfig parameter
- cif: fix dead code
- Thomas Petazzoni (65):
- ASoC: cs42l51: add Device Tree binding to cs42l51
- ASoC: kirkwood: enable Kirkwood driver for mvebu platforms
- ARM: mvebu: rename mvebu_defconfig to mvebu_v7_defconfig
- ARM: mvebu: remove unneeded ->map_io field for Armada 370/XP
- ARM: mvebu: use GPIO DT defines in Armada 370/XP boards
- ARM: mvebu: use input DT defines in Armada 370/XP boards
- gpio: mvebu: use chained_irq_{enter,exit} for GIC compatibility
- sound: ASoC: add ASoC board driver for Armada 370 DB
- clk: mvebu: do not copy the contents of clk_corediv_desc
- clk: mvebu: add a little bit of documentation about data structures
- clk: mvebu: refactor corediv driver to support more SoC
- clk: mvebu: add Armada 375 support to the corediv clock driver
- dt: Update binding information for mvebu core clocks with Armada 380/385
- dt: Update binding information for mvebu gating clocks with Armada 380/385
- ARM: mvebu: add audio I2S controller to Armada 370 Device Tree
- ARM: mvebu: add I2C0 muxing option for Armada 370 SoC
- ARM: mvebu: add audio support to Armada 370 DB
- ARM: mvebu: enable S/PDIF audio in Armada 370 DB Device Tree
- ARM: mvebu: enable audio options in mvebu_defconfig
- ARM: mvebu: update defconfigs for Armada 375 and 38x
- ARM: mvebu: add Device Tree for the Armada 375 DB board
- ARM: mvebu: add Device Tree description of the Armada 380/385 SoCs
- ARM: mvebu: add Device Tree for the Armada 385 DB board
- rtc: mv: reset date if after year 2038
- ARM: mvebu: rename armada-370-xp.c to board-v7.c
- ARM: mvebu: rename DT machine structure for Armada 370/XP
- ARM: mvebu: make CPU_PJ4B selection a per-SoC choice
- ARM: mvebu: add Armada 375 support to the system-controller driver
- ARM: mvebu: add workaround for data abort issue on Armada 375
- ARM: mvebu: add initial support for the Armada 380/385 SOCs
- Documentation: arm: update Marvell documentation about Armada 375/38x
- ARM: mvebu: use C preprocessor include for Armada 375/38x DTs
- ARM: mvebu: use GIC_{SPI,PPI} in Armada 375/38x DTs
- ARM: mvebu: use macros for interrupt flags on Armada 375/38x
- pinctrl: mvebu: remove MPP_REG_CTRL macro
- pinctrl: mvebu: add pin-muxing driver for the Marvell Armada 375
- pinctrl: mvebu: add pin-muxing driver for the Marvell Armada 380/385
- ARM: mvebu: change the default PCIe apertures for Armada 370/XP
- ARM: mvebu: switch the Armada XP DB to use internal registers at 0xf1000000
- ARM: mvebu: switch the Armada XP GP to use internal registers at 0xf1000000
- ARM: mvebu: the Armada XP Matrix board has 4 GB
- ARM: mvebu: use the correct phy connection mode on Armada 385 DB
- ASoC: add S/PDIF support to Armada 370 DB ASoC driver
- net: mvneta: use devm_ioremap_resource() instead of of_iomap()
- ARM: mvebu: ensure the mdio node has a clock reference on Armada 370/XP
- ARM: mvebu: ensure the mdio node has a clock reference on Armada 38x
- Revert “net: mvneta: fix usage as a module on RGMII configurations”
- net: phy: add minimal support for QSGMII PHY
- net: mvneta: properly configure the MAC <-> PHY connection in all situations
- memory: mvebu-devbus: fix the conversion of the bus width
- ARM: orion5x: fix target ID for crypto SRAM window
- irqchip: armada-370-xp: fix invalid cast of signed value into unsigned variable
- irqchip: armada-370-xp: implement the ->check_device() msi_chip operation
- bus: mvebu-mbus: allow several windows with the same target/attribute
- PCI: mvebu: split PCIe BARs into multiple MBus windows when needed
- ARM: mvebu: fix NOR bus-width in Armada XP GP Device Tree
- ARM: mvebu: fix NOR bus-width in Armada XP DB Device Tree
- ARM: mvebu: fix NOR bus-width in Armada XP OpenBlocks AX3 Device Tree
- ARM: mvebu: use qsgmii phy-mode for Armada XP GP interfaces
- ARM: mvebu: specify I2C bus frequency on Armada 370 DB
- ARM: mvebu: enable the SATA interface on Armada 375 DB
- ARM: mvebu: mvebu-soc-id: add missing clk_put() call
- ARM: mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled
- of: make of_update_property() usable earlier in the boot process
- ARM: mvebu: fix definitions of PCIe interfaces on Armada 38x