Skip to content

Add AR50LT core support and enable Iris codec on Shikra#977

Open
dikshita-agarwal wants to merge 12 commits intoqualcomm-linux:early/hwe/shikra/driversfrom
dikshita-agarwal:video-shikra-driver
Open

Add AR50LT core support and enable Iris codec on Shikra#977
dikshita-agarwal wants to merge 12 commits intoqualcomm-linux:early/hwe/shikra/driversfrom
dikshita-agarwal:video-shikra-driver

Conversation

@dikshita-agarwal
Copy link
Copy Markdown

This series adds support for the AR50Lt VPU core to the iris driver and
enables the Agatti SoC to use Gen2 firmware and HFI. The same is being
leveraged for Shikra SoC.

As part of early Shikra bring-up, the series also introduces a temporary
driver-side change to allow the Iris driver to bind to QCM2290/Shikra
hardware when enabled, instead of the Venus driver. This is an
intermediate step to support early development using HFI Gen2 in Iris.
Full HFI Gen1 support in the Iris driver will be added before posting
the final upstream-ready series, at which point this selection logic is
expected to be revisited.

UBWC configuration is not applicable to all SoCs. Add a check to avoid
configuring UBWC during sys init on unsupported platforms.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
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.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
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.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
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.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Add support for the qcm2290 SoC by introducing a new compatible string
for the AR50LT core and the corresponding platform data.

This change:
- Adds qcm2290 as a supported compatible for the AR50LT core.
- Introduces AR50LT-specific platform data describing VPU configuration.
- Adds a qcm2290-specific header describing firmware capabilities.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Document the Iris video accelerator used on Shikra platforms by adding
the qcom,shikra-iris compatible.

Although QCM2290 and Shikra share the same video hardware and overall
integration, their SMMU programming differs. QCM2290 exposes separate
Stream IDs for the video hardware and the Xtensa path, requiring two
explicit IOMMU entries, whereas Shikra uses a masked SMR to collapse
equivalent Stream IDs into a single mapping. Due to QCM2290’s SID layout
and Xtensa isolation requirements, such SMR masking is not applicable on
QCM2290 platforms.

Since Shikra uses the same video hardware as QCM2290 and shares the same
programming model and capabilities, it is added as a fallback compatible
to qcom,qcm2290-venus, with conditional handling to allow either one or
two IOMMU entries.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
QCM2290 is currently supported by the Venus driver using HFI Gen1.
However, support for this platform is being added to the Iris driver,
where it will be preferred going forward, initially using HFI Gen2 and
eventually providing support for both Gen1 and Gen2.

As part of early enablement for the Shikra platform, which reuses the
qcm2290 compatible as a fallback, it is necessary to allow the Iris
driver to bind to this hardware instead of Venus when Iris support is
enabled in the kernel configuration.

Introduce a configuration-based guard to prevent the Venus driver from
registering qcm2290 support when CONFIG_VIDEO_QCOM_IRIS is enabled. This
ensures that the Iris driver is selected for QCM2290/Shikra platforms in
early development kernels, without changing the default behavior when
Iris is not enabled.

This change is intended as an intermediate step for early bring-up. Full
HFI Gen1 support in the Iris driver will be added before posting
the final upstream series.

Signed-off-by: Dikshita Agarwal <dikshita.agarwal@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.

1 participant