4.16 out for a week now, it shouldn’t come as a surprise that it’s time for our traditional article summing up our most recent contributions to the latest version of the Linux kernel.
LWN.net did again an interesting coverage of this release cycle merge window, highlighting the most important changes: the first half of the 4.16 merge window and the rest of the 4.16 merge window. For 4.16 only, we have a total of 183 patches merged.
According to LWN statistics, Bootlin stands at the 13th place in the company ranking in terms of number of lines changed and we even have one of our engineers, Miquèl Raynal, appearing in the top 20 contributors with regards to number of lines changed thanks to his complete rework of the Marvell NAND controller driver and his addition of the exec_op()
API to the NAND framework.
The main highlights of our contributions are:
- For Marvell platforms,
- Antoine Ténart improved the inside-secure crypto accelerator driver to support the EIP97 variant of the hardware block, which is used on the Marvell Armada 3700. This driver was already supporting the EIP197 variant, used on Marvell Armada 7K/8K. This new EIP97 support allows to enable the use of the crypto accelerator on the popular EspressoBin platform, a $49 board based on the Marvell Armada 3700,
- Antoine Ténart also contributed a number of fixes to the inside-secure crypto accelerator driver,
- Antoine Ténart also contributed a few fixes to the mvpp2 network driver, used for the Ethernet controller on the Marvell Armada 7K/8K.
- Gregory Clement contributed DVFS support for Armada 37xx CPUs,
- Miquèl Raynal added support for thermal sensors in A7K/A8K SoC families,
- Miquèl Raynal completely rewrote the Marvell NAND controller driver to use the
exec_op()
API he has contributed, - Thomas Petazzoni fixed a few errors in several Marvell DTS files,
- In the PCI subsystem, Cyrille Pitchen contributed a driver for Cadence’s PCIe endpoint and host controllers,
- In the MTD subsystem,
- Both Boris Brezillon and Miquèl Raynal contributed numerous fixes,
- Miquèl Raynal contributed the exec_op API to simplify how NAND controllers interact with the core with regards to sending NAND operations. For more details about Miquèl’s work, see the video and slides of his talk at the latest ELC,
- For Microsemi Ocelot platforms:
- Alexandre Belloni added support for Microsemi Ocelot SoC’s pinctrl. This is the very first piece of the support for the Microsemi VSC7513/7514 MIPS processors, with the rest of the basic platform support expected to appear in 4.17,
- For Allwinner platforms:
- Quentin Schulz contributed a pinctrl driver for X-Powers AXP209 and AXP813 PMICs’ GPIOs,
- Maxime Ripard added support for LVDS for the A83T in the DRM subsystem and contributed a few fixes along the way,
- Mylène Josserand added ADC support for the audio codec present on the sun8i family,
- Alexandre Belloni fixed a few race conditions in the AC100 RTC driver,
- Maxime Ripard also contributed a fix for gpiolib failing to defer its probing until a GPIO controller is registered,
Bootlin engineers are not only contributors, but also maintainers of various subsystems in the Linux kernel, which means they are involved in the process of reviewing, discussing and merging patches contributed to those subsystems:
- Maxime Ripard, as the Allwinner platform co-maintainer, merged 66 patches from other contributors
- Boris Brezillon, as the MTD/NAND maintainer, merged 73 patches from other contributors
- Alexandre Belloni, as the RTC maintainer and Atmel platform co-maintainer, merged 23 patches from other contributors
- Grégory Clement, as the Marvell EBU co-maintainer, merged 16 patches from other contributors
Here is the commit by commit detail of our contributions to 4.16:
- Alexandre Belloni (50):
- dt-bindings: pinctrl: Add bindings for Microsemi Ocelot
- rtc: ac100: Fix multiple race conditions
- ARM: at91: Document new TCB bindings
- ARM: dts: at91: at91rm9200: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91rm9200ek: use TCB0 for timers
- ARM: dts: at91: mpa1600: use TCB0 as timers
- ARM: dts: at91: at91sam9260: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9260ek: use TCB0 as timers
- ARM: dts: at91: sam9_l9260: use TCB0 as timers
- ARM: dts: at91: ethernut5: use TCB0 as timers
- ARM: dts: at91: foxg20: use TCB0 as timers
- ARM: dts: at91: animeo_ip: use TCB0 as timers
- ARM: dts: at91: kizbox: use TCB0 as timers
- ARM: dts: at91: at91sam9g20ek: use TCB0 as timers
- ARM: dts: at91: ge863-pro3: use TCB0 as timers
- ARM: dts: at91: at91sam9261: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9261ek: use TCB0 as timers
- ARM: dts: at91: at91sam9263: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9263ek: use TCB0 as timers
- ARM: dts: at91: calao: use TCB0 as timers
- ARM: dts: at91: at91sam9g45: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9m10g45ek: use TCB0 as timers
- ARM: dts: at91: pm9g45: use TCB0 as timers
- ARM: dts: at91: at91sam9rl: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9rlek: use TCB0 as timers
- ARM: dts: at91: at91sam9n12: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9n12ek: use TCB0 as timers
- ARM: dts: at91: at91sam9x5: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: at91sam9x5cm: use TCB0 as timers
- ARM: dts: at91: acme/g25: use TCB0 as timers
- ARM: dts: at91: cosino: use TCB0 as timers
- ARM: dts: at91: kizboxmini: use TCB0 as timers
- ARM: dts: at91: sama5d3: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: sama5d3xek: use TCB0 as timers
- ARM: dts: at91: sama5d3 Xplained: use TCB0 as timers
- ARM: dts: at91: kizbox2: use TCB0 as timers
- ARM: dts: at91: sama5d3xek_cmp: use TCB0 as timers
- ARM: dts: at91: linea/tse850-3: use TCB0 as timers
- ARM: dts: at91: sama5d4: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: sama5d4: Add TCB2
- ARM: dts: at91: sama5d4ek: use TCB2 as timers
- ARM: dts: at91: sama5d4 Xplained: use TCB2 as timers
- ARM: dts: at91: ma5d4: use TCB2 as timers
- ARM: dts: at91: vinco: use TCB2 as timers
- ARM: dts: at91: sama5d2: TC blocks are also simple-mfd and syscon devices
- ARM: dts: at91: sama5d2 Xplained: use TCB0 as timers
- ARM: dts: at91: sama5d27_som1_ek: use TCB0 as timers
- pinctrl: Add Microsemi Ocelot SoC driver
- Documentation: rtc: move sysfs documentation to ABI
- MAINTAINERS: ARM: at91: update my email address
- Antoine Tenart (20):
- net: mvpp2: only free the TSO header buffers when it was allocated
- net: mvpp2: align values in ethtool get_coalesce
- net: mvpp2: report the tx-usec coalescing information to ethtool
- net: mvpp2: adjust the coalescing parameters
- crypto: inside-secure – remove extra empty line
- crypto: inside-secure – fix typo in a comment
- crypto: inside-secure – remove useless memset
- crypto: inside-secure – comment the caching function
- crypto: inside-secure – move request dequeueing into a workqueue
- crypto: inside-secure – use threaded IRQs for result handling
- crypto: inside-secure – dequeue all requests at once
- crypto: inside-secure – increase the ring size
- crypto: inside-secure – acknowledge the result requests all at once
- crypto: inside-secure – handle more result requests when counter is full
- crypto: inside-secure – retry to proceed the request later on fail
- crypto: inside-secure – EIP97 support
- crypto: inside-secure – avoid unmapping DMA memory that was not mapped
- crypto: inside-secure – fix hash when length is a multiple of a block
- arm64: dts: marvell: armada-37xx: add a crypto node
- Documentation/bindings: crypto: document the SafeXcel EIP97 compatible
- Boris Brezillon (16):
- drm/vc4: Fix wrong printk format in vc4_bo_stats_debugfs()
- mtd: nand: hynix: Don’t wait after applying new read-retry params
- mtd: nand: provide several helpers to do common NAND operations
- mtd: nand: force drivers to explicitly send READ/PROG commands
- mtd: nand: denali: Avoid using ecc->code_buf as a temporary buffer
- mtd: nand: Only allocate ecc->{calc, code}_buf when actually needed
- MAINTAINERS: Move all MTD related branches to a single repo
- mtd: Do not allow MTD devices with inconsistent erase properties
- mtd: Add an helper to make erase request aligned on ->erasesize
- mtd: mtdpart: Make ECC stat handling consistent
- mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing
- mtd: Remove duplicate checks on mtd_oob_ops parameter
- mtd: nand: gpmi: Fix subpage reads
- clk: bcm2835: Fix ana->maskX definitions
- clk: bcm2835: Protect sections updating shared registers
- mtd: nand: atmel: Fix get_sectorsize() function
- Cyrille Pitchen (10):
- PCI: Regroup all PCI related entries into drivers/pci/Makefile
- PCI: OF: Add generic function to parse and allocate PCI resources
- PCI: generic: fix missing call of pci_free_resource_list()
- PCI: Add generic function to probe PCI host controllers
- PCI: Add vendor ID for Cadence
- PCI: cadence: Add host driver for Cadence PCIe controller
- PCI: endpoint: Add the function number as argument to EPC ops
- PCI: endpoint: Fix EPF device name to support multi-function devices
- dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe endpoint controller
- PCI: cadence: Add EndPoint Controller driver for Cadence PCIe controller
- Gregory CLEMENT (20):
- cpufreq: ARM: sort the Kconfig menu
- cpufreq: sort the drivers in ARM part
- cpufreq: mvebu: Free the clock reference in the normal path
- cpufreq: mvebu: Free opp if registering failed
- dt-bindings: marvell: Add documentation for the North Bridge PM on Armada 37xx
- MAINTAINERS: add new entries for Armada 37xx cpufreq driver
- cpufreq: Add DVFS support for Armada 37xx
- arm64: dts: marvell: armada-37xx: add nodes allowing cpufreq support
- arm64: defconfig: enable ARM_ARMADA_37XX_CPUFREQ
- clk: mvebu: armada-37xx-periph: cosmetic changes
- clk: mvebu: armada-37xx-periph: prepare cpu clk to be used with DVFS
- clk: mvebu: armada-37xx-periph: add DVFS support for cpu clocks
- arm64: dts: marvell: armada-80×0: Fix pinctrl compatible string
- spi: orion: Fix clock resource by adding an optional bus clock
- i2c: mv64xxx: Remove useless test before clk_disable_unprepare
- i2c: mv64xxx: Fix clock resource by adding an optional bus clock
- i2c: mv64xxx: Add myself as maintainer for this driver
- MAINTAINERS: update email address for Gregory CLEMENT
- mailmap: Update email address for Gregory CLEMENT
- dmaengine: mv_xor_v2: Fix clock resource by adding a register clock
- Maxime Ripard (19):
- dt-bindings: display: sun4i-drm: Add LVDS properties
- dt-bindings: display: sun4i-drm: Add A83T pipeline
- drm/sun4i: Force the mixer rate at 150MHz
- drm/sun4i: Create minimal multipliers and dividers
- drm/sun4i: Add LVDS support
- drm/sun4i: Add A83T support
- ARM: dts: sun8i: a83t: Add display pipeline
- ARM: dts: sun8i: a83t: Enable the PWM
- ARM: dts: sun8i: a83t: Add LVDS pins group
- ARM: dts: sun8i: a711: Enable the LCD
- dt-bindings: panel: lvds: Document power-supply property
- drm/panel: lvds: Add support for the power-supply property
- drm/panel: lvds: Handle the optional regulator case properly
- MAINTAINERS: update email address for Maxime Ripard
- drm/sun4i: Protect the TCON pixel clocks
- gpiolib: Keep returning EPROBE_DEFER when we should
- drm/sun4i: tcon: Reduce the scope of the LVDS error a bit
- drm/sun4i: rgb: Fix potential division by zero
- drm/sun4i: crtc: Call drm_crtc_vblank_on / drm_crtc_vblank_off
- Miquel Raynal (26):
- mtd: nand: fix interpretation of NAND_CMD_NONE in nand_command[_lp]()
- mtd: nand: use usual return values for the ->erase() hook
- mtd: nand: provide valid ->data_interface during NAND detection
- mtd: nand: samsung: add ECC requirements for K9F4G08U0D
- dt-bindings: mvebu-uart: update documentation with extended UART
- mtd: nand: add ->exec_op() implementation
- arm64: dts: marvell: add NAND support on the 8040-DB board
- ARM64: dts: marvell: Add thermal support for A7K/A8K
- thermal: armada: Simplify the check of the validity bit
- thermal: armada: Clarify control registers accesses
- thermal: armada: Use real status register name
- thermal: armada: Update Kconfig and module description
- thermal: armada: Change sensors trim default value
- thermal: armada: Wait sensors validity before exiting the init callback
- thermal: armada: Give meaningful names to the thermal zones
- mtd: nand: Fix unfinished comment in nand_init_data_interface()
- mtd: mtd_oobtest: Handle bitflips during reads
- mtd: nand: Fix nand_do_read_oob() return value
- dt-bindings: mtd: document new nand-rb property
- dt-bindings: mtd: add Marvell NAND controller documentation
- mtd: nand: add reworked Marvell NAND controller driver
- mtd: nand: use reworked NAND controller driver with Marvell EBU SoCs
- MAINTAINERS: Add entry for Marvell NAND controller driver
- mtd: nand: marvell: Fix missing memory allocation modifier
- mtd: nand: Fix build issues due to an anonymous union
- mtd: nand: sunxi: Fix ECC strength choice
- Mylene JOSSERAND (1):
- Quentin Schulz (13):
- ARM: dtsi: axp81x: add GPIO DT node
- ARM: dtsi: axp81x: set pinmux for GPIO0/1 when used as LDOs
- gpio: axp209: switch unsigned variables to unsigned int
- pinctrl: move gpio-axp209 to pinctrl
- pinctrl: axp209: add pinctrl features
- dt-bindings: gpio: gpio-axp209: add pinctrl features
- pinctrl: axp209: rename everything from gpio to pctl
- pinctrl: axp209: add programmable gpio_status_offset
- pinctrl: axp209: add programmable ADC muxing value
- pinctrl: axp209: add support for AXP813 GPIOs
- pinctrl: axp209: dereference pointer after it’s been set
- pinctrl: axp209: add missing Kconfig dependencies
- mfd: axp20x: Add pinctrl cell for AXP813
- Thomas Petazzoni (8):
- arm64: dts: marvell: fix watchdog unit address in Armada AP806
- arm64: dts: marvell: use lower case for unit address and reg property
- arm64: dts: marvell: fix typos in comment describing the NAND controller
- arm64: dts: marvell: fix compatible string list for Armada CP110 slave NAND
- arm64: dts: marvell: use mvebu-icu.h where possible
- arm64: dts: marvell: use aliases for SPI busses on Armada 7K/8K
- arm64: dts: marvell: de-duplicate CP110 description
- arm64: dts: marvell: replace cpm by cp0, cps by cp1