Skip to content

Shikra audio support - #69

Open
mpratyus wants to merge 4 commits into
AudioReach:masterfrom
mpratyus:shikra-audio-support
Open

Shikra audio support#69
mpratyus wants to merge 4 commits into
AudioReach:masterfrom
mpratyus:shikra-audio-support

Conversation

@mpratyus

Copy link
Copy Markdown
Contributor

No description provided.

Pratyush Meduri added 2 commits July 31, 2026 19:04
Introduce audioreach_gpr_dest_domain() helper in q6prm_audioreach.h
that selects the correct GPR destination domain (MDSP or ADSP) based
on the gpr_device domain_id. Update __q6prm_audioreach_alloc_pkt() and
all callers to pass the gpr_device so the domain is resolved at packet
build time rather than being hardcoded to ADSP.

Also add QAIF audio interface clock IDs (Q6PRM_LPASS_CLK_ID_AUD_INTF*
and LPASS_CLK_ID_AUD_INTF*) to q6prm_audioreach.h and register them
in the q6prm clock table so they are available for Shikra QAIF paths.

Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
Add a dedicated DMA-heap ("qcom,audio") backed by a gen_pool over a
reserved-memory region. When the device tree lists qcom,vmid with
QCOM_SCM_VMID_MSS_MSA the heap memory is hypervisor-assigned to the
MSS MSA VMID at probe time and unassigned on remove, enabling MDSP
audio paths on Shikra.

Also add an auxiliary reserved-memory region assign path for platforms
that need a second contiguous region assigned alongside the main heap.

Remove the now-superseded CMA child platform-device spawning path
(q6apm-audio-mem-cma) and the q6apm_audio_mem_cma_init/exit calls;
the gen_pool heap replaces that mechanism. Clean up probe error paths
to properly unwind chrdev and heap registrations on failure.

Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
@mpratyus
mpratyus requested review from a team July 31, 2026 15:50
@mpratyus
mpratyus force-pushed the shikra-audio-support branch 2 times, most recently from 6028b95 to d48ab7d Compare July 31, 2026 16:46
Pratyush Meduri added 2 commits July 31, 2026 22:20
…F core

Replace the hardcoded GPR_DOMAIN_ID_ADSP destination in
__q6apm_audio_alloc_pkt() with audioreach_gpr_dest_domain() so that
packets are routed to MDSP when the gpr_device carries a non-ADSP
domain_id (e.g. Shikra MDSP paths).

Add support for three new APM memory-map opcodes needed by MDSP:
  - APM_CMD_GLOBAL_SHARED_MEM_MAP_REGIONS (0x01001059)
  - APM_CMD_SHARED_SATELLITE_MEM_MAP_REGIONS (0x01001026)
with corresponding packet structs and physical-address fixup handlers
in audio_pkt_write().

Detect the modem glink channel at probe time and use
"aud_pasthru_modem" as the driver/device name when the channel is
"modem_apps", keeping the existing "aud_pasthru_adsp" name for ADSP.

In dsp/spf-core.c, remove the local spf_core_gpr_dest_domain() helper
(identical logic to audioreach_gpr_dest_domain()) and include
q6prm_audioreach.h to use the shared implementation instead.

Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
…DAI clocks

Add machine-driver support for Shikra CQS and IQS sound cards in
audioreach_common.c and extend q6apm_lpass_dummy_dais.c for TDM
clock support.

audioreach_common.c:
- Add shikra_cqs_priv_data and shikra_iqs_priv_data with DAPM widgets,
  controls, and QAIF backend name overrides. CQS uses QAIF-QAIF_AUD-RX-2
  for PRIMARY_MI2S_RX; IQS overrides to QAIF-QAIF_AUD-RX-0 via
  primary_mi2s_rx_backend_name.
- Encode all Shikra-specific behaviour via snd_soc_common flags:
  stereo_fixup, bclk_from_params, tdm_bclk_rate, qaif_backend_names.
  This follows the same pattern as all other targets (glymur, kaanapali
  etc.) — no runtime board identity checks in shared paths.
- Extend audioreach_get_link_name() to accept a common pointer for
  QAIF backend name resolution; existing boards are unaffected
  (qaif_backend_names=false falls through to original strstr logic).
- Add SECONDARY_TDM_RX_0 case in qcs6490_snd_hw_params() gated by
  tdm_bclk_rate flag for CQS fixed-rate TDM clock setup.
- Check devm_snd_soc_register_card() return value.

q6apm_lpass_dummy_dais.c:
- Add q6apm_lpass_dai_get_clk() helper to deduplicate the three-clock
  (mclk/bclk/eclk) probe loop, now shared by MI2S and TDM DAI IDs.
- Add SENARY_MI2S_RX and PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7 cases
  to of_q6apm_parse_dai_data() for TDM clock parsing.
- Wire .shutdown and .set_sysclk into q6tdmdummy_ops using the existing
  q6i2s_lpass_dai_shutdown and q6i2s_set_sysclk functions.

Signed-off-by: Pratyush Meduri <pratyush.meduri@oss.qualcomm.com>
@mpratyus
mpratyus force-pushed the shikra-audio-support branch from d48ab7d to 3a254b0 Compare July 31, 2026 16:50
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