The 5.3 version of the Linux kernel was released recently. As usual, we recommend our readers to look at the LWN coverage for this release merge window: part 1 and part 2. Together with the KernelNewbies page, these articles give a very nice overview of the major features and improvements of this new release.
For this release, Bootlin is the 16th contributing company by number of commits, with 143 patches merged in the Linux kernel. Our significant contributions this time were:
- Support for Allwinner processors
- The support for H264 video decoding, from Maxime Ripard, was finally merged in the cedrus VPU driver that we have developed thanks to the funding of our Kickstarter campaign last year. The last missing piece is H265 video decoding, which we have submitted several times and we hope to get merged soon.
- Support for Marvell platforms
- Antoine Ténart contributed a number of bug fixes and updates to the inside-secure crypto driver, which is used for the cryptographic hardware accelerator found on Marvell Armada 3700 and Marvell Armada 7K/8K.
- Maxime Chevallier contributed many improvements to the mvpp2 network driver, used on the Marvell Armada 375 and Armada 7K/8K systems. His patches improve the traffic classification offloading capabilities, a topic he will present in detail at the next Embedded Linux Conference Europe.
- Miquèl Raynal added PHY support for the PCIe Armada 8K driver, and adjusted a few things in the Marvell Armada 7K/8K Device Tree files.
- Support for Microchip MPU (formerly Atmel) platforms
- Alexandre Belloni converted the remaining SoCs (SAM9x5, SAM9G45, SAM9RL and SAMA5D3) to the new slow clock controller bindings.
- Antoine Ténart contributed a few small improvements to the macb driver, for the Cadence network controller used on Microchip platforms.
- Maxime Ripard contributed numerous YAML Device Tree schemas, to help the effort of converting many Device Tree bindings to the new YAML format, which can be used to validate Device Trees against their bindings.
- Maxime Ripard contributed numerous patches to the core DRM subsystem: a complete rewrite of the command line parser that parses the DRM-related options of the kernel command line, and support for new options. This was done as part of an effort to make sure the upstream Linux kernel can support all the possible options that the downstream RaspberryPi kernel+firmware combination provides to configure the display.
- Paul Kocialkowski contributed a few improvements to the RaspberryPi vc4 display controller driver, related to buffer allocation.
Also, several of Bootlin engineers are also kernel maintainers, so they review and merge patches from other contributors:
- Miquèl Raynal as the NAND subsystem maintainer and MTD subsystem co-maintainer, reviewed and merged 51 patches from other contributors
- Maxime Ripard as the Allwinner platform co-maintainer, reviewed and merged 38 patches from other contributors
- Alexandre Belloni as the RTC maintainer and Microchip platform co-maintainer, reviewed and merged 36 patches from other contributors
- Grégory Clement as the Marvell EBU platform co-maintainer, reviewed and merged 9 patches from other contributors
Here is the details of all our contributions, patch by patch:
- Alexandre Belloni (9):
- ARM: dts: at91sam9261ek: remove unused chosen nodes
- ARM: dts: at91: at91sam9x5: switch to new sckc bindings
- ARM: dts: at91: at91sam9g45: switch to new sckc bindings
- ARM: dts: at91: at91sam9rl: switch to new sckc bindings
- ARM: dts: at91: sama5d3: switch to new sckc bindings
- rtc: ds1307: properly handle oscillator failure flags
- rtc: st-lpc: remove unnecessary check
- rtc: pcf2123: fix negative offset rounding
- mfd: menelaus: Remove superfluous error message
- Antoine Tenart (17):
- crypto: inside-secure – remove empty line
- crypto: inside-secure – move comment
- crypto: inside-secure – fix coding style for a condition
- crypto: inside-secure – remove useless check
- crypto: inside-secure – improve the result error format when displayed
- crypto: inside-secure – change returned error when a descriptor reports an error
- crypto: inside-secure – enable context reuse
- crypto: inside-secure – unify cache reset
- crypto: inside-secure – fix zeroing of the request in ahash_exit_inv
- crypto: inside-secure – fix queued len computation
- crypto: inside-secure – implement IV retrieval
- crypto: inside-secure – add support for HMAC updates
- crypto: inside-secure – fix use of the SG list
- crypto: inside-secure – do not rely on the hardware last bit for result descriptors
- net: macb: use NAPI_POLL_WEIGHT
- net: macb: use GRO
- net: cpsw: fix NULL pointer exception in the probe error path
- Gregory CLEMENT (1):
- Maxime Chevallier (18):
- net: mvpp2: cls: Use the correct number of rules in various places
- net: mvpp2: cls: Bypass C2 internals FIFOs at init
- net: mvpp2: cls: Use RSS contexts to handle RSS tables
- net: mvpp2: cls: Extract the RSS context when parsing the ethtool rule
- net: mvpp2: cls: Support steering to RSS contexts
- net: mvpp2: cls: Check RSS table index validity when creating a context
- net: mvpp2: Only clear the stat counters at port init
- net: mvpp2: Rename mvpp2_ethtool_counters to mvpp2_ethtool_mib_counters
- net: mvpp2: Add support for more ethtool counters
- net: mvpp2: cls: Use a dedicated lu_type for the RSS lookup
- net: mvpp2: cls: Only select applicable flows of classification offload
- net: mvpp2: cls: right-justify the C2 TCAM keys
- net: mvpp2: cls: Add steering based on vlan Id and priority.
- net: ethtool: Allow parsing ETHER_FLOW types when using flow_rule
- net: mvpp2: prs: Don’t override the sign bit in SRAM parser shift
- net: mvpp2: cls: Report an error for unsupported flow types
- net: mvpp2: cls: Add support for ETHER_FLOW
- net: mvpp2: Don’t check for 3 consecutive Idle frames for 10G links
- Maxime Ripard (88):
- dt-bindings: sound: Convert Allwinner SPDIF binding to YAML
- dt-bindings: sound: sun4i-spdif: Document that the RX channel can be missing
- dt-bindings: bus: Convert Allwinner RSB to a schema
- drm/rockchip: Change the scl_vop_cal_scl_fac to pass drm_format_info
- drm: Remove users of drm_format_num_planes
- drm: Remove users of drm_format_(horz|vert)_chroma_subsampling
- drm/fourcc: Pass the format_info pointer to drm_format_plane_cpp
- drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height
- drm: Replace instances of drm_format_info by drm_get_format_info
- drm: Remove users of drm_format_info_plane_cpp
- ARM: dts: sun6i: Add default address and size cells for SPI
- drm/fourcc: Fix the parameters name in the documentation
- spi: Add YAML schemas for the generic SPI options
- spi: sun4i: Add YAML schemas
- spi: sun6i: Add YAML schemas
- dt-bindings: Add vendor prefix for Espressif
- dt-bindings: vendor: Escape single quote
- dt-bindings: vendor: Fix simtek vendor compatible
- dt-bindings: sound: Convert Allwinner I2S binding to YAML
- dt-bindings: sound: sun4i-i2s: Document that the RX channel can be missing
- ARM: dts: sunxi: h3/h5: Fix GPIO regulator state array
- media: pixfmt: Add H264 Slice format
- media: pixfmt: Add H264_SLICE_RAW format documentation
- media: cedrus: Add H264 decoding support
- ARM: dts: sun8i: a711: Change LRADC node names to avoid warnings
- ARM: dts: sun7i: icnova-swac: Fix the model vendor
- ARM: dts: gr8-evb: Fix RTC vendor
- dt-bindings: display: Convert Allwinner DSI to a schema
- media: dt-bindings: Fix vendor-prefixes YAML
- dt-bindings: clk: Convert Allwinner CCU to a schema
- dt-bindings: rtc: Add YAML schemas for the generic RTC bindings
- dt-bindings: rtc: Move trivial RTC over to a schemas of their own
- dt-bindings: rtc: Convert Allwinner A10 RTC to a schema
- dt-bindings: rtc: Convert Allwinner A31 RTC to a schema
- dt-bindings: rtc: sun6i: Add the R40 RTC compatible
- rtc: sun6i: Add R40 compatible
- ARM: dts: sun6i: Fix RTC node
- ARM: dts: sun6i: Add external crystals accuracy
- ARM: dts: sun8i: v3s: Fix the RTC node
- ARM: dts: sun8i: v3s: Add external crystals accuracy
- ARM: dts: sun8i: r40: Change the RTC compatible
- ASoC: sun4i-i2s: Change SR and WSS computation
- dt-bindings: mmc: Add YAML schemas for the generic MMC options
- dt-bindings: mmc: sun4i: Add YAML schemas
- dt-bindings: vendor: Add a bunch of vendors
- drm/connector: Add documentation for drm_cmdline_mode
- drm/client: Restrict the plane_state scope
- drm/client: Restrict the rotation check to the rotation itself
- drm/client: Change drm_client_panel_rotation name
- drm/modes: Rewrite the command line parser
- drm/modes: Support modes names on the command line
- drm/modes: Allow to specify rotation and reflection on the commandline
- drm/connector: Introduce a TV margins structure
- drm/modes: Parse overscan properties
- drm/atomic: Add a function to reset connector TV properties
- drm/selftests: Add command line parser selftests
- drm/vc4: hdmi: Set default state margin at reset
- dt-bindings: nvmem: Convert Allwinner SID to a schema
- dt-bindings: pwm: Convert Allwinner PWM to a schema
- dt-bindings: i2c: sun6i-p2wi: Add YAML schemas
- dt-bindings: i2c: mv64xxx: Add YAML schemas
- dt-bindings: net: Add YAML schemas for the generic Ethernet options
- dt-bindings: net: Add a YAML schemas for the generic PHY options
- dt-bindings: net: Add a YAML schemas for the generic MDIO options
- MAINTAINERS: Add Ethernet PHY YAML file
- dt-bindings: net: phy: The interrupt property is not mandatory
- dt-bindings: net: sun4i-emac: Convert the binding to a schemas
- dt-bindings: net: sun4i-mdio: Convert the binding to a schemas
- dt-bindings: net: stmmac: Convert the binding to a schemas
- dt-bindings: net: sun7i-gmac: Convert the binding to a schemas
- dt-bindings: net: sun8i-emac: Convert the binding to a schemas
- dt-bindings: net: dwmac: Deprecate the PHY reset properties
- dt-bindings: net: mdio: Add a nodename pattern
- dt-bindings: net: mdio: Add address and size cells
- dt-bindings: net: mdio: Add child nodes
- dt-bindings: display: Fix simple-framebuffer example
- dt-bindings: simple-framebuffer: Add requirement for pipelines
- dt-bindings: net: Use phy-mode instead of phy-connection-type
- dt-bindings: usb: ehci: Fix example warnings
- dt-bindings: i2c: mv64xxx: Fix the example compatible
- dt-bindings: i2c: sun6i-p2wi: Fix the binding example
- MAINTAINERS: Update my email address
- dt-bindings: nvmem: Add YAML schemas for the generic NVMEM bindings
- dt-bindings: nvmem: SID: Fix the examples node names
- drm/modes: Add a switch to differentiate free standing options
- drm/modes: Fix the command line parser to take force options into account
- drm/modes: Introduce a whitelist for the named modes
- drm/selftests: modes: Add more unit tests for the cmdline parser
- Miquel Raynal (5):
- Paul Kocialkowski (5):
Hi, thank you very much for cedrus driver implementation.
When do you think you’ll deliver H.264 full decoding profiles? Currently only H.264 base profile is supported. Main and High profiles would be even more interesting.
Hello fguerzoni, thanks for your comment! We currently to not have the funding to implement H264 decoding for main and high profiles. We are still working on upstreaming the H265 decoding support as this was a goal of our Kickstarter campaign, but improving the state of H264 decoding support is not planned at the moment. If there are companies interested in such features, we will definitely be happy to offer our engineering services to implement what’s missing.
Thank you for reply.
I really believed that full H.264 decoding profile was ready on your side and it was just a matter of merging to the kernel.
Hi fguerzoni. Indeed, the current cedrus code is not yet ready to support high-profile H.264 videos, extra work is required for that. What we have merged in Linux at this point is a staging implementation that still needs improvements and reworks before we can consider it feature-complete and stable. Things have been happening though and the situation is slowly improving over time. But of course, the best way for us to finish the work would be the get funding from a client for that!