The 3.11 Linux kernel has now been released by Linus Torvalds, and as usual as thousands of patches coming from a large number of companies and contributors. For this release, Bootlin has contributed a total of 128 patches (yes, exactly 2^7), which makes Bootlin the 18th contributor in the list of companies contributing to the kernel, according to http://www.remword.com/kps_result/3.11_whole.html, before Broadcom and Cisco, and after ARM and Oracle. It is also the first time that six different engineers from Bootlin contribute code to the Linux kernel in a single release!
As usual, most of our contributions were centered around support for the Marvell Armada 370 and XP SOCs, the Allwinner SOCs and the Crystalfontz i.MX28 platforms:
- Added support for the PCIe controllers of the Armada 370 and Armada XP platforms, and used it for the already supported Kirkwood platform. Supporting PCIe has been a very long process, which got started in December 2012, required long discussions with various kernel maintainers and multiple iterations of the patch series. Armada 370/XP was the first ARM platform to add Device Tree based PCIe support, and therefore this required many discussions to sort out the Device Tree bindings for PCIe controllers. This work was done by Thomas Petazzoni.
- Enable an additional USB interface on the OpenBlocks AX3 platform, which is available as part of the mini-PCIe connector inside the device. This work was done by Thomas Petazzoni.
- Cleaned up all the Kirkwood platform Device Tree files to assign the pin muxing configurations to the appropriate devices. This work was done by Thomas Petazzoni.
- Made various cleanups and improvements in the Armada 370/XP platform code (in
arch/arm/mach-mvebu
) to make it possible to support different base address for the internal registers depending on the board being used. Many hardcoded physical addresses were removed, as well as the static virtual to physical mapping. This work was done by Thomas Petazzoni. - Cleaned up many ARM platforms to remove their unneeded
->init_irq()
callback, and also the->map_io()
callback which we changed to default to callingdebug_ll_io_init()
when not provided. This work was done by Maxime Ripard. - Extended the
ssd1307fb
driver that we contributed a few releases ago to also support the SSD1306 device. The SSD1306 and SSD1307 are OLED screens controlled over I2C that are used on Crystalfontz i.MX28 platforms. We also optimized significantly the communication with the SSD130x devices. This work was done by Maxime Ripard. - Added an Ethernet driver for the Allwinner SOCs. The work was initially done by Stefan Roese, and our engineer Maxime Ripard did all the final cleanup, development of an MDIO driver, and integration with all the Device Tree files of the Allwinner platforms.
- Added support for the Allwinner I2C controller, by re-using and extending the existing i2c-mv64xxx driver used on Marvell platforms, since the hardware block was very similar. The Allwinner Device Tree files were also updated to add the I2C controllers. This work was done by Maxime Ripard.
- Added basic support for the Allwinner A10s SOC: pin muxing information and Device Tree information. This work was done by Maxime Ripard.
- Added support for the Olimex A10s-Olinuxino-micro, a new hardware platform manufactured by Olimex that uses the Allwinner A10s SOC. This work was done by Maxime Ripard.
- Implemented a “Device Bus” driver for the Marvell SOCs, that allows to configure the access to NOR flash and other devices connected to the memory bus. It has been used to enabled NOR support on the Armada XP DB development platform. This work was done by Ezequiel Garcia.
- Fixed a few bugs in the IIO subsystem, and a build failure on AT91 platform when CONFIG_PHYLIB was not enabled. This work was done by Alexandre Belloni.
- Fixed the ARM low-level code that handles compatibility with ATAG bootloaders, to properly convert 32 bits memory sizes passed by the bootloader into 64 bits cells of the Device Tree, when LPAE is used. This work was done by Gregory Clement.
- Michael Opdenacker made a few improvements and fixes to the documentation.
For the upcoming 3.12, we already have 131 patches lined up, and a few more will probably show up after this blog post is written. Over the last release cycles, Bootlin has become a regular contributor to ARM support in the Linux kernel, and we’re looking forward to doing more contributions in the future.
The details of our 3.11 contributions is:
- Alexandre Belloni (3):
- Ezequiel Garcia (8):
- ARM: mvebu: Add support for USB storage class in mvebu_defconfig
- ARM: mvebu: Add support for NOR flash device on Armada XP-DB board
- drivers: memory: Introduce Marvell EBU Device Bus driver
- cpufreq: kirkwood: Select CPU_FREQ_TABLE option
- bus: mvebu-mbus: Use pr_fmt
- ARM: mvebu: Remove device tree unused properties on A370
- ARM: Kirkwood: Fix the internal register ranges translation
- ARM: mvebu: fix length of ethernet registers in mv78260 dtsi
- Gregory CLEMENT (2):
- Maxime Ripard (55):
- ARM: picoxcell: Remove init_irq declaration in machine description
- ARM: bcm281xx: Remove init_irq declaration in machine description
- ARM: sun5i: Update the clock compatible strings
- ARM: sunxi: Remove init_irq declaration in machine description
- ARM: msm: Remove init_irq declaration in machine description
- ARM: mvebu: Remove init_irq declaration in machine description
- ARM: zynq: Remove init_irq declaration in machine description
- ARM: nomadik: Remove init_irq declaration in machine description
- ARM: spear: Remove init_irq declaration in machine description
- ARM: sirf: Remove init_irq declaration in machine description
- ARM: vexpress: Remove init_irq declaration in machine description
- ARM: virt: Remove init_irq declaration in machine description
- ARM: vt8500: Remove init_irq declaration in machine description
- ARM: mmu: Call debug_ll_io_init if no map_io function is specified
- ARM: highbank: remove the .map_io declaration
- ARM: mxs: remove the .map_io declaration
- ARM: sunxi: Remove the .map_io function declaration
- video: ssd1307fb: Add support for SSD1306 OLED controller
- video: ssd1307fb: Rework the communication functions
- video: ssd1307fb: Speed up the communication with the controller
- video: ssd1307fb: Make use of horizontal addressing mode
- clk: sun5i: Add compatibles for Allwinner A13
- ARM: sunxi: Update datasheet documentation
- ARM: sunxi: irqchip: Update the documentation
- net: Add MDIO bus driver for the Allwinner EMAC
- ARM: sun4i: Add muxing options for the ethernet controller
- ARM: sunxi: Add EMAC controller node to sun4i DTSI
- ARM: sunxi: Add EMAC Controller to Hackberry dt
- ARM: sunxi: dt: Register the pio node as interrupt controller
- i2c: mv64xxx: Add macros to access parts of registers
- i2c: mv64xxx: make the registers offset configurable
- i2c: mv64xxx: Add Allwinner sun4i compatible
- ARM: sunxi: dt: Add i2c controller nodes to the DTSI
- ARM: sun4i: dt: Add i2c muxing options
- ARM: sun5i: dt: Add i2c muxing options
- ARM: sun5i: olinuxino: Enable the i2c controllers
- pinctrl: sunxi: Search the description array by pin id
- pinctrl: sunxi: Add external interrupts support
- pinctrl: sunxi: Add external interrupt functions
- ARM: sunxi: Add Allwinner A10s machine compatible
- ARM: sunxi: dt: Add Allwinner A10s DTSI
- ARM: mxs: Remove init_irq declaration in machine description
- ARM: dts: cfa10036: Change the OLED display to SSD1306
- ARM: cfa10036: dt: Change i2c0 clock frequency
- ARM: cfa10036: Add USB0 OTG port
- pinctrl: sunxi: Move the pins definitions to a separate header
- pinctrl: sunxi: Add Allwinner A10s pins
- ARM: sunxi: Add Olimex A10s-Olinuxino-micro device tree
- ARM: multi_v7: Enable Allwinner EMAC in multi_v7_defconfig
- drivers: net: allwinner: Fix Kconfig indentation
- drivers: net: sun4i-emac: select MDIO_SUN4I
- i2c: mv64xxx: Document the newly introduced allwinner compatible
- pinctrl: sunxi: Read register before writing to it in irq_set_type
- pinctrl: sunxi: Fix gpio_set behaviour
- pinctrl: sunxi: Add spinlocks
- Michael Opdenacker (2):
- Thomas Petazzoni (58):
- arm: kirkwood: use the default of match table
- arm: mvebu: update defconfig with PCI and USB support
- arm: mvebu: enable the third USB interface on OpenBlocks AX3
- clk: mvebu: create parent-child relation for PCIe clocks on Armada 370
- clk: mvebu: add more PCIe clocks for Armada XP
- pci: PCIe driver for Marvell Armada 370/XP systems
- arm: mvebu: PCIe support is now available on mvebu
- arm: kirkwood: update defconfig with PCIe driver and board updates
- arm: mvebu: mark functions of armada-370-xp.c as static
- arm: mvebu: enable two USB interfaces on the Armada XP GP board
- arm: kirkwood: cloudbox: move pinmux configs to the right devices
- arm: kirkwood: dlink dns: move pinmux configs to the right devices
- arm: kirkwood: dockstar: move pinmux configs to the right devices
- arm: kirkwood: dreamplug: move pinmux configs to the right devices
- arm: kirkwood: goflexnet: move pinmux configs to the right devices
- arm: kirkwood: guruplug: move pinmux configs to the right devices
- arm: kirkwood: ib62x0: move pinmux configs to the right devices
- arm: kirkwood: iconnect: give meaningful names to pinmux configs
- arm: kirkwood: iconnect: move pinmux configs to the right devices
- arm: kirkwood: iomega ix2-200: move pinmux configs to the right devices
- arm: kirkwood: ns2: move pinmux configs to the right devices
- arm: kirkwood: keymile: move pinmux configs to the right devices
- arm: kirkwood: buffalo linkstation: move pinmux configs to the right devices
- arm: kirkwood: mplcec4: move pinmux configs to the right devices
- arm: kirkwood: readynas: move pinmux configs to the right devices
- arm: kirkwood: nsa310: move pinmux configs to the right devices
- arm: kirkwood: openblocks_a6: move pinmux configs to the right devices
- arm: kirkwood: topkick: move pinmux configs to the right devices
- arm: kirkwood: ts219: move pinmux configs to the right devices
- arm: kirkwood: openblocks-a6: group pinmux configurations
- arm: kirkwood: openblocks-a6: add support for Init button
- pci: mvebu: no longer fake the slot location of downstream devices
- pci: mvebu: allow the enumeration of devices beyond physical bridges
- pci: mvebu: fix the emulation of the status register
- pci: mvebu: enable driver usage on Kirkwood
- arm: kirkwood: move PCIe window init to legacy driver
- arm: kirkwood: add SoC-level Device Tree data for PCIe interfaces
- arm: kirkwood: convert Iomega Iconnect to use DT for the PCIe interface
- arm: kirkwood: convert MPL CEC4 to use DT for the PCIe interface
- arm: kirkwood: convert ZyXEL NSA310 to use DT for the PCIe interface
- arm: kirkwood: convert QNAP TS219 to use DT for the PCIe interface
- arm: kirkwood: convert db-88f6281/db-88f6282 to the Device Tree
- arm: mvebu: fix length of SATA registers area in .dtsi
- arm: mvebu: fix length of Ethernet registers area in .dtsi
- net: mvneta: read MAC address from hardware when available
- arm: mvebu: armada-xp-db: ensure PCIe range is specified
- arm: mvebu: remove dependency of SMP init on static I/O mapping
- arm: mvebu: avoid hardcoded virtual address in coherency code
- arm: mvebu: move cache and mvebu-mbus initialization later
- arm: mvebu: remove hardcoded static I/O mapping
- arm: mvebu: don’t hardcode a physical address in headsmp.S
- arm: mvebu: don’t hardcode the physical address for mvebu-mbus
- arm: mvebu: add another earlyprintk Kconfig option
- arm: mvebu: disable DEBUG_LL/EARLY_PRINTK in defconfig
- arm: mvebu: enable mini-PCIe connectors on Armada 370 RD
- arm: mvebu: fix coherency_late_init() for multiplatform
- char: misc: assign file->private_data in all cases
- PCI: mvebu: Disable prefetchable memory support in PCI-to-PCI bridge