Skip to content

shikra: Enable Iris video codec (DT + driver support)#671

Open
gouravk-qualcomm wants to merge 19 commits into
qualcomm-linux:qcom-6.18.yfrom
gouravk-qualcomm:shikra
Open

shikra: Enable Iris video codec (DT + driver support)#671
gouravk-qualcomm wants to merge 19 commits into
qualcomm-linux:qcom-6.18.yfrom
gouravk-qualcomm:shikra

Conversation

@gouravk-qualcomm

@gouravk-qualcomm gouravk-qualcomm commented Jun 8, 2026

Copy link
Copy Markdown

This PR enables Iris video codec support for the Qualcomm Shikra platform by
adding the required DT nodes and integrating the corresponding driver changes.

CRs-Fixed: 4568062
qli-2.0 GA Critical Fix

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@qlijarvis

Copy link
Copy Markdown

PR #671 — validate-patch

PR: #671

Verdict Issues Detailed Report
⚠️ 0 Full report

Final Summary

  1. Lore link present: Yes for patches 01-16 (FROMLIST); No for patches 17-18 (PENDING — expected, as these are vendor DTS additions not yet posted upstream)

  2. Lore link matches PR commits: Cannot verify due to network restrictions, but all 16 FROMLIST patches reference the same series (20260515-iris-ar50lt-v3) with sequential patch numbers, suggesting consistency

  3. Upstream patch status: FROMLIST indicates patches are posted to mailing list (v3 series from 2026-05-15) but not yet merged to mainline. PENDING patches are vendor-specific DTS additions awaiting upstream acceptance of the driver patches.

  4. PR present in qcom-next: Not checked — would require kernel tree access

Recommendation: Fix tag ordering before merge. Move all Link tags to appear after the final Signed-off-by tag in each commit message.

Verdict: ⚠️ — click to expand

🔍 Patch Validation

PR: #671
Series: iris-ar50lt-v3 (18 patches total: 16 FROMLIST + 2 PENDING)
Upstream commit: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-*-df3846e74347@oss.qualcomm.com/
Verdict: ⚠️ PARTIAL — Tag ordering issue in all FROMLIST patches

Commit Message

Check Status Note
Subject matches upstream ⚠️ FROMLIST prefix added (expected for backports)
Body preserves rationale All commit messages have clear rationale
Fixes tag present/correct N/A No Fixes tags needed (new feature series)
Authorship preserved Original authors preserved (Dikshita Agarwal, Dmitry Baryshkov)
Backport note (if applicable) FROMLIST prefix indicates patches from mailing list
Tag ordering Link tag appears BEFORE Signed-off-by tags (incorrect)

Tag Ordering Issue

Problem: In all 16 FROMLIST patches (01-16), the Link tag appears before the Signed-off-by tags:

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-1-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

Expected kernel convention:

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-1-df3846e74347@oss.qualcomm.com/

The Link tag should always come after all Signed-off-by tags, as it documents where the patch was discussed, not part of the patch's chain of custody.

Diff

Cannot validate diffs against upstream due to network restrictions, but structural analysis shows:

Aspect Status Notes
Patch format Valid git format-patch output
File paths All paths under drivers/media/platform/qcom/iris/ and arch/arm64/boot/dts/qcom/
Diff structure Clean hunks, proper context lines
PENDING patches Patches 17-18 are DTS additions (no lore link expected)

Patch Breakdown

FROMLIST patches (01-16): Add AR50LT (QCM2290) support to Iris media driver

  • Patches 01-06: Core infrastructure (UBWC, VPU ops, ARP, watchdog)
  • Patches 07-11: Platform capabilities and buffer management
  • Patches 12-14: AR50LT-specific implementation (Agatti VPU, Gen2 firmware)
  • Patch 15: Venus driver conflict resolution
  • Patch 16: Code cleanup (constify)

PENDING patches (17-18): Device tree additions

  • Patch 17: Add Iris video codec node to shikra.dtsi
  • Patch 18: Enable Iris on shikra-evk

Issues

  1. Tag ordering (all FROMLIST patches): Link tag must be moved after all Signed-off-by tags
  2. Reviewed-by placement: Some Reviewed-by tags appear after the first Signed-off-by, which is unconventional but not strictly wrong

Verdict

Requires minor fix: Move Link tags to the end of the trailer block (after all Signed-off-by tags) in patches 01-16. The diffs themselves appear structurally sound, and the PENDING patches correctly omit lore links.

Final Summary

  1. Lore link present: Yes for patches 01-16 (FROMLIST); No for patches 17-18 (PENDING — expected, as these are vendor DTS additions not yet posted upstream)

  2. Lore link matches PR commits: Cannot verify due to network restrictions, but all 16 FROMLIST patches reference the same series (20260515-iris-ar50lt-v3) with sequential patch numbers, suggesting consistency

  3. Upstream patch status: FROMLIST indicates patches are posted to mailing list (v3 series from 2026-05-15) but not yet merged to mainline. PENDING patches are vendor-specific DTS additions awaiting upstream acceptance of the driver patches.

  4. PR present in qcom-next: Not checked — would require kernel tree access

Recommendation: Fix tag ordering before merge. Move all Link tags to appear after the final Signed-off-by tag in each commit message.

@qlijarvis

Copy link
Copy Markdown

PR #671 — checker-log-analyzer

PR: #671
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/27122036089

Checker Result Summary
Checker Result Summary
checkpatch All commits pass checkpatch.pl
dt-binding-check ⏭️ No DT binding changes
dtb-check DT schema validation errors for shikra video-codec node
sparse-check No new sparse warnings
check-uapi-headers No UAPI header changes
check-patch-compliance 5 compliance failures
tag-check N/A Not applicable for this branch
qcom-next-check FROMLIST/PENDING prefixes correct

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #671 - Add Iris video codec support for AR50_LITE (QCM2290) and Shikra platform
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/27122036089

Checker Result Summary
checkpatch All commits pass checkpatch.pl
dt-binding-check ⏭️ No DT binding changes
dtb-check DT schema validation errors for shikra video-codec node
sparse-check No new sparse warnings
check-uapi-headers No UAPI header changes
check-patch-compliance 5 compliance failures
tag-check N/A Not applicable for this branch
qcom-next-check FROMLIST/PENDING prefixes correct

❌ dtb-check

Root cause: The iommus property in arch/arm64/boot/dts/qcom/shikra.dtsi:2216 has incorrect format - it specifies 3 cells <0x780 0x0020> but the schema expects 4 cells per entry.

Failure details:

../arch/arm64/boot/dts/qcom/shikra.dtsi:2216.4-27: Warning (interrupts_property): 
  /soc@0/video-codec@5a00000:#interrupt-cells: size is (12), expected multiple of 16

shikra-cqm-evk.dtb: video-codec@5a00000 (qcom,shikra-iris): 
  iommus: [[31, 1920, 32]] is too short
  from schema $id: http://devicetree.org/schemas/media/qcom,qcm2290-venus.yaml#

The DT node declares:

iommus = <&apps_smmu 0x780 0x0020>;

But the qcom,qcm2290-venus.yaml schema expects 4 cells per IOMMU entry (phandle + 3 cells), not 3.

Fix:

Check the IOMMU binding for apps_smmu on Shikra. The correct format should match the #iommu-cells property of the SMMU node. For most Qualcomm platforms, this is typically:

iommus = <&apps_smmu 0x780 0x0>;

Or if the SMMU uses 2 cells:

iommus = <&apps_smmu 0x780>;

Verify the #iommu-cells value in the apps_smmu node definition in shikra.dtsi and adjust the iommus property accordingly in arch/arm64/boot/dts/qcom/shikra.dtsi:2216.

Reproduce locally:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml

❌ check-patch-compliance

Root cause: Multiple FROMLIST commits have diverged from their upstream lore.kernel.org versions, and two PENDING commits lack required subject prefixes.

Failure details:

  1. Author mismatch (commit: "FROMLIST: media: iris: Add platform flag for instantaneous bandwidth voting"):

    Original author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
    Commit author : Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
    
  2. Change is different from Link (3 commits):

    • "FROMLIST: media: iris: Add platform flag for instantaneous bandwidth voting"
    • "FROMLIST: media: iris: implement support for the Agatti platform"
    • "FROMLIST: media: venus: skip QCM2290 if Iris driver is enabled"
  3. Missing subject prefix (2 commits):

    • "PENDING: arm64: dts: qcom: shikra: Add Iris video codec node"
    • "PENDING: arm64: dts: qcom: shikra-evk: Enable Iris core"

Fix:

  1. For author mismatch: If Dikshita is rebasing/adapting Dmitry's patch, either:

    • Keep Dmitry as author and add Signed-off-by: Dikshita Agarwal as co-developer, OR
    • Add Co-developed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> if substantial changes were made
  2. For diverged patches: Re-fetch the exact patches from lore.kernel.org using:

    b4 am <message-id>
    git am *.mbx

    Then reapply any necessary local adaptations as separate commits.

  3. For PENDING commits without prefix: Add the subsystem prefix:

    PENDING: arm64: dts: qcom: shikra: Add Iris video codec node
    

    Should be:

    PENDING: dts: arm64: qcom: shikra: Add Iris video codec node
    

    Or follow the pattern used in the subsystem (check git log --oneline arch/arm64/boot/dts/qcom/shikra*.dts*).

Reproduce locally:

# Clone kernel-checkers repo
git clone https://github.com/qualcomm-linux/kernel-checkers
cd kernel-checkers
./check-patch-compliance.sh --kernel-src /path/to/kernel --base <base-sha> --head <head-sha>

Verdict

2 blockers must be fixed before merge:

  1. dtb-check: Fix the iommus property format in arch/arm64/boot/dts/qcom/shikra.dtsi:2216 to match the SMMU's #iommu-cells specification
  2. check-patch-compliance: Resolve author attribution and patch divergence for 4 FROMLIST commits, and add proper subject prefixes to 2 PENDING DTS commits

@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@gouravk-qualcomm gouravk-qualcomm force-pushed the shikra branch 3 times, most recently from 8c04255 to 367e683 Compare June 10, 2026 22:36
dikshita-agarwal and others added 18 commits June 11, 2026 04:10
UBWC configuration is not applicable to all SoCs. Add a check to avoid
configuring UBWC during sys init on unsupported platforms.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-1-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…bilities

The raw formats supported by Iris were previously advertised
unconditionally, assuming UBWC support on all platforms. However, some
platforms do not support UBWC which results in incorrect format
capability exposure.

Use the UBWC configuration provided by the platform to dynamically
filter raw formats at runtime. If UBWC is not supported, UBWC-based
formats are omitted from the advertised capability list, while linear
formats remain available.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-2-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
The set_preset_registers sequence is currently shared across all
supported devices. Starting with Qualcomm QCM2290 (AR50LT), the register
programming would differ.

Move set_preset_register into a vpu_op to allow per-device
customization.

This change prepares the driver for upcoming hardware variants.
No functional change so far for existing devices.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-3-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
The interrupt_init sequence is currently shared across all supported
devices. Starting with Qualcomm QCM2290 (AR50LT), the register
programming would differ.

Move interrupt_init into a vpu_op to allow per-device customization.

This change prepares the driver for upcoming hardware variants.
No functional change so far for existing devices.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-4-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
On AR50LT platforms AbsolutelyPerfectRouting (ARP) needs to be disabled
so firmware can configure the ARP internal buffer as non-secure for
encoder usage. In preparation of adding support for AR50LT platforms,
add an optional disable_arp callback to the VPU ops and invoke it from
core init and resume paths.

No functional change for existing platforms.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-5-df3846e74347@oss.qualcomm.com/
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
… mask

For AR50LT core, the value of WRAPPER_INTR_STATUS_A2HWD_BMASK differs
from the currently supported VPUs. In preparation for adding AR50LT
support in subsequent patches, introduce a platform data field,
wd_intr_mask, to capture the watchdog interrupt bitmask per platform.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-6-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…voting

AR50LT require explicit instantaneous bandwidth (IB) voting in addition
to average bandwidth (AB) when configuring interconnect QoS. This
requirement is due to QSB (Qualcomm System Bus) 128b to
QNS ( Qualcomm Network Switch) 256b conversion at video noc in AR50LT
which is not needed for other IRIS cores.

In preparation of adding support for AR50LT core, introduce
platform-configurable IB multiplier and enable IB voting for all SoCs.
Existing platforms default to IB == AB, while AR50LT requires 2x peak
bandwidth.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-8-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
AR50Lt doesn't support HFI_PROPERTY_PARAM_WORK_ROUTE. Tables for AR50LT
won't have corresponding entry in the capability tables. Let
iris_set_pipe() silently skip propgramming the property if there is no
corresponding capability.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-8-df3846e74347@oss.qualcomm.com/
Reviewed-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Add power sequence for ar5lt core.
Add register handling for ar50lt by hooking up vpu op with ar50lt
specific implemtation or resue from earlier generation wherever
feasible.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-9-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
AR50Lt with the Gen1 firmware requires host to read
HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS property, otherwie it doesn't
update internal data and fails the HFI_CMD_SESSION_LOAD_RESOURCES
command. Implement minimal support for querying the properties from the
firmware.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-10-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Upon receiving data for HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS the
driver should update buffer sizes and counts from the received data.
Implement corresponding functionality updating buffers data. This will
be used for upcoming support of AR50Lt platforms with Gen1 firmware.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-11-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Port support for the AR50Lt video codec core (present for example on the
Agatti platform) to the Iris driver. Unlike more recent cores this
generation doesn't have the PIPE property (as it always has only one
pipe). Also, unlike newer platforms, buffer sizes are requested from the
firmware instead of being calculated by the driver.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-12-df3846e74347@oss.qualcomm.com/
Co-developed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Introduces AR50LT  buffer size calculation for both encoder and
decoder. Reuse the buffer size calculation which are common, while
adding the AR50LT specific ones separately.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-13-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Agatti platform is using HFI Gen1 firmware, which is considered to be
legacy firmware branch. Follow the example of the SC7280 platform and
extend the driver with supporting both HFI Gen1 and Gen2 firmwares for
this platform. Like HFI Gen1 this firmware doesn't have PIPE property
(but unlike Gen1 buffer sizes are calculated on the driver side).

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-14-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…RIS is enabled"

This reverts commit 37a0a28.

Signed-off-by: Gourav Kumar <gouravk@qti.qualcomm.com>
As the Iris driver now supports the QCM2290 hardware too, there is a
race between Venus and Iris drivers on binding to the corresponding
device. Follow the approach used by other platforms and skip QCM2290 in
the Venus driver if Iris is enabled.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-15-df3846e74347@oss.qualcomm.com/
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Mark inst_fw_cap_sm8250_dec as a const array, the data is read-only.

Link: https://lore.kernel.org/all/20260515-iris-ar50lt-v3-16-df3846e74347@oss.qualcomm.com/
Suggested-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Add the Iris video codec device tree node for the Shikra platform.

Shikra reuses the QCM2290-class video hardware and programming model.
The video node is added to describe the Iris based video decoder
encoder block, allowing the media driver to probe and initialize
the hardware.

Link: https://lore.kernel.org/all/20260609-shikra_vpu-v1-2-3a32bb38b080@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Enable video en/decoder on the Shikra EVK board.

Link: https://lore.kernel.org/all/20260609-shikra_vpu-v1-3-3a32bb38b080@oss.qualcomm.com/
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants