Skip to content

ASoC: qcom : adding the shikra sound driver support#1127

Open
mpratyus wants to merge 104 commits into
qualcomm-linux:early/hwe/shikra/driversfrom
mpratyus:qcm-pr1-lpass-macro-v1
Open

ASoC: qcom : adding the shikra sound driver support#1127
mpratyus wants to merge 104 commits into
qualcomm-linux:early/hwe/shikra/driversfrom
mpratyus:qcm-pr1-lpass-macro-v1

Conversation

@mpratyus
Copy link
Copy Markdown

This PR adds support for the Shikra platform audio stack by enabling LPASS macro codecs, QAIF clock integration, and sound card support within the Qualcomm ASoC framework.

Komal-Bajaj and others added 30 commits April 17, 2026 14:33
Document the IDs used by Shikra SoC IoT variants:
- CQ2390M: Shikra Retail with modem
- CQ2390S: Shikra Retail without modem
- IQ2390S: Shikra Industrial without modem

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Add SoC ID for Shikra IoT variants: CQ2390M, CQ2390S and IQ2390S.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Qualcomm Shikra SoC implements arm,mmu-500. Document its compatible.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the SCM compatible on the Shikra SoC.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the device tree binding for the Shikra EVK platform, which
is built around a modular System-on-Module (SoM) mounted on a common
carrier board.

The SoM integrates the Shikra SoC, PMICs, and essential GPIOs, while the
EVK carrier board provides additional peripherals such as UART and USB
interfaces. Shikra EVK supports three SoM variants: retail with modem,
retail without modem, and an industrial non-modem variant.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Add compatible for Shikra SoC IMEM.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the Top Level Mode Multiplexer on the Shikra platform.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Add pinctrl driver for TLMM block found in the Shikra SoC.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the RPM Power Domains on the Shikra Platform.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
Shikra has the same RPM power domains as QCM2290.
Add shikra support by reusing QCM2290 power domains.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
Document the pm8150 compatible string and available regulators in
the QCOM SMD RPM regulator documentation.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
The PM8150 is found on boards with shikra SoCs and It
provides 10 SMPS and 18 LDO regulators.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
Add the rpmpd compatable string for shikra.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
Qualcomm Shikra SoC implements qcom,smmu-500 for adreno-smmu.
Document its corresponding compatible.

Signed-off-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
Add "qcom,shikra-apcs-hmss-global" compatibility
string in qcom_apcs_ipc mailbox driver to match apcs_glb
device node.

Signed-off-by: Vishnu Santhosh <vishnu.santhosh@oss.qualcomm.com>
Document compatible string for the QFPROM on Shikra platform.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Add the qcom,shikra-rpm-proc compatible string to the Qualcomm RPM
remote processor device tree binding.

Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Add compatible for the Qualcomm Shikra APCS block to the
Qualcomm APCS binding.

Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the compatible for Shikra.

Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the qcom,rpmcc-shikra compatible.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Add support for qcom global clock controller bindings for Shikra platform.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Add support for RPM-managed clocks on the Shikra platform.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Add support for Global clock controller for Shikra Qualcomm SoC.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Enable the GCC driver on the Qualcomm Shikra EVK boards.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Add devicetree binding for watchdog present on Qualcomm's
Shikra SoC.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Document the GPI DMA engine on Shikra platform.

Signed-off-by: Xueyao An <xueyao.an@oss.qualcomm.com>
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
Update dt-bindings to add Shikra to QMP Phy list.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Update dt-bindings to add Shikra to QUSB2 Phy list.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Introduce the compatible definition for Shikra QCOM SNPS DWC3.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Add init sequence and phy configuration for Shikra.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
dikshita-agarwal and others added 27 commits April 21, 2026 00:45
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 implementation or reuse 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>
Map the wakeup capable GPIOs to respective MPM pins for shikra.

Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Set `qos_mode` on Shikra interconnect master nodes and mark ap-owned
masters with `ap_owned` where missing. This enables correct QoS register
programming (fixed or bypass mode) for the defined QoS ports.

Signed-off-by: Raviteja Laggyshetty <raviteja.laggyshetty@oss.qualcomm.com>
Document the Last Level Cache Controller on Shikra SoC.

Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
The partitions array is currently statically sized and uses the remote
host ID as an index.

Future protocol improvements to allow for more than two hosts in a
partition will require hostIDs to be bitwise significant integers.
This will result in large, sparse host IDs that generally exceed the
current static limit.

Switch to using xarray to efficiently handle these sparse indices and
allow for dynamic growth.

Signed-off-by: Tony Truong <tony.truong@oss.qualcomm.com>
Signed-off-by: Pranav Mahesh Phansalkar <pranav.phansalkar@oss.qualcomm.com>
Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # Glymur CRD
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260410-smem-v1-1-8e94bb5416a6@oss.qualcomm.com
The wakeup enable bit needs to be set irrespective of the SoC using PDC or
MPM as wakeup capable irqchip to allow the GPIO interrupts to be forwarded
to parent irqchip.

This is set only for PDC irqchip using additional check skip_wake_irqs
making it impossible for MPM irqchip to detect the GPIO interrupt during
SoC low power mode since for MPM irqchip the skip_wake_irqs is always
false.

Remove skip_wake_irqs condition when setting wakeup enable bit to allow
forwarding GPIO interrupts for SoCs using MPM irqchip too.

Fixes: 76b446f ("pinctrl: qcom: handle intr_target_reg wakeup_present/enable bits")
Link: https://lore.kernel.org/all/20260430-enable_wakeup_capable_gpios-v2-1-8c26ac795318@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Reviewed-by: Maulik Shah <maulik.shah@oss.qualcomm.com>
Add DSP and lpaicp Peripheral Authentication Service support for the Shikra platform.

Signed-off-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
Add devicetree binding documentation for the Qualcomm Shikra SoC
Peripheral Authentication Service (PAS) remoteproc nodes.

Signed-off-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
Add GCC_QUSB2PHY_SEC_BCR reset support for Shikra platform.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Add GCC_QUSB2PHY_SEC_BCR reset support for Shikra. While at it, drop the
flags which are not required for the fixed parent clocks.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Remove the unused enum entry to keep the binding indices aligned with
device tree.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Document the power-domains property in order to propagate the votes on
GDSC to CX raill.

Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Mention compatible for the Qualcomm Shikra APCS block in the same block
as sdm845-apss-shared since they share the same data.

Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Introduce cache maintenance operations for remote arguments
in fastrpc driver for non-dma coherent targets.

Upstream-Status: Pending

Signed-off-by: Abhinav Parihar <parihar@qti.qualcomm.com>
Signed-off-by: Anandu Krishnan E <anandu.e@oss.qualcomm.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Shikra introduces a new set of LPASS audio interface clocks called QAIF
(Qualcomm Audio Interface) clocks, covering 13 audio interfaces
(INTF0-INTF12) plus one VA interface, each with an internal bit-clock
(IBIT) and an external bit-clock (EBIT) variant.

This patch adds support for these clocks across the Q6DSP clock
infrastructure:

- dt-bindings: define QAIF_CLK_ID_AUD_INTF{0-12,VA_INTF0}_{IBIT,EBIT}
  as DT clock indices 104-131, placed immediately after the existing
  Q6AFE_MAX_CLK_ID=104 range to avoid collision with legacy LPASS IDs.

- q6prm.h: define Q6PRM_QAIF_CLK_ID_AUD_INTF{0-12,VA_INTF0}_{IBIT,EBIT}
  as the corresponding ADSP-side hardware clock IDs (0x500-0x519, 0x550-
  0x551) sent via PRM_CMD_REQUEST_HW_RSC / PRM_CMD_RELEASE_HW_RSC.

- q6prm-clocks.c: register all 28 QAIF clocks into the q6prm_clks[]
  table using the Q6PRM_CLK() macro.

- q6dsp-lpass-clocks.c: expand Q6DSP_MAX_CLK_ID from 104 to 132 to
  accommodate the new DT clock indices (104-131) in the cc->clks[]
  lookup array and the q6dsp_of_clk_hw_get() bounds check.

Signed-off-by: Pratyu <mpratyus@qti.qualcomm.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Add bindings for shikra sound card, which looks fully
compatible with existing shikra.

Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
Add compatible for sound card on Qualcomm shikra boards.

Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@oss.qualcomm.com>
@shashim-quic shashim-quic force-pushed the early/hwe/shikra/drivers branch from 1e5cf57 to c3b3cbe Compare May 13, 2026 13:47
@mpratyus mpratyus force-pushed the qcm-pr1-lpass-macro-v1 branch 2 times, most recently from 57b68c8 to 4e9cf9b Compare May 13, 2026 14:02
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.