[sys-base]

Multimedia, Graphics and Embedded Linux Expert

Introduction

I'm Paul Kocialkowski, an expert in multimedia, graphics and embedded hardware support with Linux.

With over a decade of experience in the field, I have worked on a wide variety of projects and technical topics. This solid experience brought me a fine and in-depth understanding as well as a clear and solid overview on both the software and hardware side of things. I am particularly efficient and knowledgeable when working on software implementations related to hardware support, either on the kernel side or in userspace.

I offer consulting services for projects related to my areas of work, generally carried out remotely from France.

Feel free to reach out via email and start a discussion at: contact[at]sys-base.io.


Areas of Work

Field of Expertise

  • Multimedia driver development (V4L2)
  • Display driver development (DRM)
  • Audio driver development (ALSA)
  • Bus controller driver development
  • Peripheral driver development
  • Embedded board bringup
  • Embedded platform core support
  • Hardware initialization and boot
  • Hardware compatibility guidance
  • Performance optimization and debugging
  • Userspace testing tools development

Hardware Topics

  • ARMv8 and ARMv7 architectures
  • Hardware video decoders and encoders
  • Video capture controllers
  • Video interfaces (MIPI CSI-2, parallel)
  • Image Signal Processors (ISP)
  • Image sensors
  • Display controllers
  • Display interfaces (HDMI, DP/eDP, MIPI DSI, LVDS, parallel)
  • Bus controllers
  • Bus interfaces (USB, SPI, I2C)

Software Projects

  • Linux (over 250 contributions)
  • U-Boot (over 150 contributions)
  • coreboot (50 contributions)
  • Trusted Firmware-A
  • Buildroot
  • FFmpeg
  • GStreamer

Hardware Platforms

  • Allwinner: D1, V3/V3s, H616, H6, A64, H3/H5, A33, A20, A13, A10
  • Rockchip: RK3568, PX30, RK3399, RK3328, RK3288
  • TI: K3, AM335x, OMAP 3/4/5
  • NXP: i.MX8, i.MX8M, i.MX8X, i.MX6
  • Xilinx: ZynqMP, Zynq7000
  • NVIDIA: Tegra K1

I am open to discovering new topics so feel free to reach out anyway if your specific needs are not listed.


Topics of Interest

There is a number of specific topics that I would particularly like to work on. They are important milestones for hardware support in mainline free software projects. Feel free to contact me if you are interested in contracting services to achieve one of them.

Platform

  • Linux Allwinner A133 support
  • U-Boot Allwinner DRAM support cleanup

Video codec

  • Linux V4L2 Stateless H.264/H.265/VP8/VP9/AV1 encode core and uAPI
  • Linux V4L2 Hantro VC8000E H.264/H.265/JPEG encode
  • Linux V4L2 Hantro H1 H.264/JPEG encode
  • Linux V4L2 Allwinner Video Engine H.264/H.265/JPEG encode
  • Linux V4L2 Allwinner T527 Video Engine support
  • FFmpeg Native V4L2 stateless decode/encode support
  • VA-API V4L2 stateless decode/encode support

Video capture

  • Linux V4L2 Allwinner A733/T527/A133/T113-S3/D1/H616/H6 CSI support
  • Linux V4L2 Allwinner A733/T527/A133 ISP support
  • Linux V4L2 Allwinner V3/A83T ISP support completion
  • libcamera Allwinner V3/A83T ISP support

Graphics

  • Linux DRM G2D core and uAPI
  • Linux DRM Allwinner A733/T527/A133/T113-S3/D1/H616/H6 G2D support
  • Linux DRM Allwinner R40/A64/A80/A20/A10 G2D support
  • Linux DRM i.MX8M G2D support
  • Linux DRM Rockchip RGA support
  • Weston DRM G2D renderer support

Debug

  • OpenOCD ARM Debug Interface (ADI) v5/v6 tracing support

Notable Contributions

I have made some notable contributions to hardware-oriented free software projects, which are good illustrations of the work I've been undertaking in the field.

  • Allwinner V3/V3s/S3 stateless H.264 video encoding in V4L2/Linux (2023)

    Implemented H.264 encoding on top of the mainline cedrus driver with performance comparable to Allwinner's binary blobs. This required a new architecture for the driver and a proper rewrite. Wrote an associated userspace test tool.

    Most features of the encoder were supported (I and P frames, QP setting) but no rate-control mechanism was implemented. Bitstream header generaton was implemented on the driver side. This work was not yet integrated in mainline Linux.

  • Allwinner V3/V3s/S3 Image Signal Processor (ISP) in V4L2/Linux (2021-2022)

    Author of the sun6i-isp driver for image sensor raw data processing with YUV capture, debayering and 2D noise filtering. This required a rewrite of the sun6i-csi driver. Many more features of the ISP were not implemented and the uAPI remains unfinished, causing the driver to stay in staging.

  • Allwinner V3/V3s/S3 and A83T MIPI CSI-2 video capture in V4L2/Linux (2020-2021)

    Author of the sun6i-mipi-csi2 and sun8i-a83t-mipi-csi2 V4L2 subdev drivers for MIPI CSI-2 capture, with support for Bayer raw formats. Added Rx mode support to the sun6i-mipi-dphy driver and added MIPI CSI-2 input support to the sun6i-csi driver.

  • Omnivision OV5648 and OV8865 image sensors in V4L2/Linux (2020)

    Author of the ov5648 and ov8865 drivers, with proper code and logic (as opposed to large arrays of register values) to configure the clock tree and individual blocks of the sensors. Added support for multiple modes, operating points and possible Bayer raw formats in 8/10 bit.

  • Rockchip PX30 Hantro H1 H.264 video encoding in V4L2/Linux (2020)

    Implemented H.264 encoding on top of the mainline verisilicon (hantro) driver with I and P frames support, bitstream reconstruction and limited rate-control done in userspace. Wrote an associated userspace test tool.

    The uAPI remains very specific to the driver. This work was not yet integrated in mainline Linux.

  • Xylon LogiCVC display controller in DRM/Linux (2019-2020)

    Author of the logicvc-drm driver, which supports most features of the hardware (including overlays) and multiple versions of the block. Color-keying was implemented but not ready for mainline.

  • Initial Allwinner stateless video decoding in V4L2/DRM/Linux (2018-2019)

    Initial author of the cedrus driver, added support for MPEG-2 and HEVC/H.265 decoding (with I, P and B frames) and enabled many Allwinner platforms. Added frontend tiled framebuffer support to the sun4i-drm driver. Author of a VA-API userspace implementation for V4L2 stateless decoding with support for H.265, H.264 and MPEG-2.

  • Automated display testing in IGT GPU Tools (2017)

    Worked on improving IGT GPU Tools test coverage with the Google Chamelium platform, including VGA output validation. Implemented HDMI audio testing with sine waves generation, playback and capture though ALSA and spectrum analysis.