|
|
Log in / Subscribe / Register

This series adds support for the Qualcomm JPEG V4L2 mem2mem encoder.

From:  Atanas Filipov <atanas.filipov-AT-oss.qualcomm.com>
To:  linux-media-AT-vger.kernel.org
Subject:  [PATCH v1 0/4] This series adds support for the Qualcomm JPEG V4L2 mem2mem encoder.
Date:  Fri, 12 Jun 2026 22:44:13 +0300
Message-ID:  <20260612194417.1737009-1-atanas.filipov@oss.qualcomm.com>
Cc:  mchehab-AT-kernel.org, bod-AT-kernel.org, robh-AT-kernel.org, krzk+dt-AT-kernel.org, conor+dt-AT-kernel.org, andersson-AT-kernel.org, konradybcio-AT-kernel.org, linux-arm-msm-AT-vger.kernel.org, devicetree-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, atanas.filipov-AT-oss.qualcomm.com
Archive-link:  Article

The goal is to upstream a standards-based JPEG encode path using the V4L2 M2M
framework, with DT-described hardware resources and SoC DTS integration.

Patch layout:
- 1/4: devicetree bindings for the standalone Qualcomm JPEG encoder block
- 2/4: SM8550 devicetree integration
- 3/4: SM8250 devicetree integration
- 4/4: qcom-jenc V4L2 mem2mem encoder driver

Supported compatibles:
- qcom,sm8250-jenc
- qcom,qcm6490-jenc
- qcom,sm8550-jenc

Driver scope and design choices:
- uses the standard V4L2 mem2mem + vb2 workflow
- maps runtime resources from DT (clocks/interconnects/iommu/etc.)
- keeps userspace interface within existing V4L2 JPEG controls/framework
- uses runtime PM for balanced power transitions across stream/probe/remove

Functional validation (hardware):
- platforms (codename / SoC / compatible / board):
  - Kona / SM8250 (QRB5165 class) / qcom,sm8250-jenc / RB5
  - Kailua / SM8550 / qcom,sm8550-jenc / RB5 Gen2
  - Kodiak / QCM6490 (QCS6490 derivative line) / qcom,qcm6490-jenc / RB3 Gen2
- validated SoC coverage: SM8250, SM8550, QCM6490
- tested flows:
  - single-frame encode: 8192x8192 NV12 (v4l2-ctl)
  - single-frame encode: 1920x1080 NV12 (v4l2-ctl)
  - single-frame encode: 1920x1080 GREY (v4l2-ctl)
  - GStreamer NV12 pipeline to JPEG files (v4l2jpegenc)
  - GStreamer GRAY8 pipeline to MJPEG output (v4l2jpegenc)

Known limitations:
- scaling is not supported
- width and height must be aligned to 16 pixels

Atanas Filipov (4):
  dt-bindings: media: qcom: Add JPEG encoder binding
  arm64: dts: qcom: sm8550: Add JPEG encoder node
  arm64: dts: qcom: sm8250: Add JPEG encoder node
  media: qcom: jpeg: Add Qualcomm JPEG V4L2 encoder

 .../bindings/media/qcom,jpeg-encoder.yaml     |  142 ++
 arch/arm64/boot/dts/qcom/sm8250.dtsi          |   35 +
 arch/arm64/boot/dts/qcom/sm8550.dtsi          |   42 +
 drivers/media/platform/qcom/Kconfig           |    1 +
 drivers/media/platform/qcom/Makefile          |    1 +
 drivers/media/platform/qcom/jpeg/Kconfig      |   18 +
 drivers/media/platform/qcom/jpeg/Makefile     |    9 +
 .../media/platform/qcom/jpeg/qcom_jenc_defs.h |  244 +++
 .../media/platform/qcom/jpeg/qcom_jenc_dev.c  |  336 ++++
 .../media/platform/qcom/jpeg/qcom_jenc_dev.h  |  107 ++
 .../media/platform/qcom/jpeg/qcom_jenc_hdr.c  |  360 ++++
 .../media/platform/qcom/jpeg/qcom_jenc_hdr.h  |  119 ++
 .../media/platform/qcom/jpeg/qcom_jenc_ops.c  | 1658 +++++++++++++++++
 .../media/platform/qcom/jpeg/qcom_jenc_ops.h  |   52 +
 .../media/platform/qcom/jpeg/qcom_jenc_res.c  |  226 +++
 .../media/platform/qcom/jpeg/qcom_jenc_res.h  |   54 +
 .../qcom/jpeg/qcom_jenc_v420_hw_info.h        |  529 ++++++
 .../media/platform/qcom/jpeg/qcom_jenc_v4l2.c | 1109 +++++++++++
 .../media/platform/qcom/jpeg/qcom_jenc_v4l2.h |   25 +
 19 files changed, 5067 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/qcom,jpeg-encoder.yaml
 create mode 100644 drivers/media/platform/qcom/jpeg/Kconfig
 create mode 100644 drivers/media/platform/qcom/jpeg/Makefile
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_defs.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_dev.c
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_dev.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_hdr.c
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_hdr.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_ops.c
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_ops.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_res.c
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_res.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_v420_hw_info.h
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_v4l2.c
 create mode 100644 drivers/media/platform/qcom/jpeg/qcom_jenc_v4l2.h


base-commit: e7ae89a0c97ce2b68b0983cd01eda67cf373517d
-- 
2.34.1




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds