[sys-base]

Consulting services from Paul Kocialkowski.

Consulting

As a software development engineer, I offer consulting services for projects related to my areas of work.
Work is generally carried out remotely from Toulouse, 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.

Video codec

  • V4L2 stateless H.264 encoding uAPI Linux
  • Hantro H1 H.264 encoding Linux
  • Allwinner Video Engine JPEG encoding Linux
  • Allwinner T527 Video Engine support Linux
  • Allwinner A10/A20/A33 Video Engine H.264 encoding Linux
  • Allwinner Video Engine H.265 encoding Linux
  • Native FFmpeg V4L2 stateless decoding support FFmpeg

Video capture

  • Allwinner V3/V3s/A83T ISP support completion Linux
  • Allwinner V3/V3s/A83T ISP userspace support libcamera
  • Allwinner A31/V3/V3s/A83T MIPI CSI-2 virtual channels capture Linux
  • Allwinner A31/V3/V3s/A83T MIPI CSI-2 YUV capture Linux
  • Allwinner H6/D1/D1s/T113-S3 video capture Linux

Graphics

  • Allwinner D1/D1s/T113-S3/T527 G2D support
  • Allwinner A10/A13/A20 G2D 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.