From 5da8c01fa34456d1f9d23236125f9d725f4f9ac7 Mon Sep 17 00:00:00 2001 From: Mohammad Rafi Shaik Date: Sat, 12 Sep 2026 19:50:58 +0530 Subject: [PATCH] audioreach-driver: update QAIF headset capture routing for shikra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recent upstream DeviceTree updates assign the Shikra QAIF headset capture path to VA_CODEC_DMA_TX_1 instead of VA_CODEC_DMA_TX_0. Update the SoundWire stream setup, prepare, hw_params, hw_free, and jack handling paths to use VA_CODEC_DMA_TX_1 for the QAIF headset capture backend. Also add link-name mapping for VA_CODEC_DMA_TX_1 to route it to CODEC_DMA-QAIF-TX-1 when QAIF is enabled.   This change aligns the driver with the latest upstream DT configuration and restores headset capture functionality on Shikra platforms. Signed-off-by: Mohammad Rafi Shaik --- audioreach-driver/audioreach_common.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/audioreach-driver/audioreach_common.c b/audioreach-driver/audioreach_common.c index 58f6a6e..ebca0b7 100644 --- a/audioreach-driver/audioreach_common.c +++ b/audioreach-driver/audioreach_common.c @@ -329,7 +329,7 @@ static int qcs6490_snd_sdw_startup(struct snd_pcm_substream *substream) switch (cpu_dai->id) { case RX_CODEC_DMA_RX_0: case TX_CODEC_DMA_TX_3: - case VA_CODEC_DMA_TX_0: + case VA_CODEC_DMA_TX_1: if (tx_ch_cnt || rx_ch_cnt) { for_each_rtd_codec_dais(rtd, j, codec_dai) { ret = snd_soc_dai_set_channel_map(codec_dai, @@ -370,7 +370,7 @@ static int qcs6490_snd_sdw_prepare(struct snd_pcm_substream *substream, case TX_CODEC_DMA_TX_1: case TX_CODEC_DMA_TX_2: case TX_CODEC_DMA_TX_3: - case VA_CODEC_DMA_TX_0: + case VA_CODEC_DMA_TX_1: break; default: return 0; @@ -419,7 +419,7 @@ static int qcs6490_snd_sdw_hw_params(struct snd_pcm_substream *substream, case TX_CODEC_DMA_TX_1: case TX_CODEC_DMA_TX_2: case TX_CODEC_DMA_TX_3: - case VA_CODEC_DMA_TX_0: + case VA_CODEC_DMA_TX_1: for_each_rtd_codec_dais(rtd, i, codec_dai) { sruntime = snd_soc_dai_get_stream(codec_dai, substream->stream); if (sruntime != ERR_PTR(-ENOTSUPP)) @@ -447,7 +447,7 @@ static int qcs6490_snd_sdw_hw_free(struct snd_pcm_substream *substream, case TX_CODEC_DMA_TX_1: case TX_CODEC_DMA_TX_2: case TX_CODEC_DMA_TX_3: - case VA_CODEC_DMA_TX_0: + case VA_CODEC_DMA_TX_1: if (sruntime && *stream_prepared) { sdw_disable_stream(sruntime); sdw_deprepare_stream(sruntime); @@ -531,6 +531,7 @@ static int qcs6490_snd_wcd_jack_setup(struct snd_soc_pcm_runtime *rtd, case TX_CODEC_DMA_TX_1: case TX_CODEC_DMA_TX_2: case TX_CODEC_DMA_TX_3: + case VA_CODEC_DMA_TX_1: for_each_rtd_codec_dais(rtd, i, codec_dai) { rval = snd_soc_component_set_jack(codec_dai->component, jack, NULL); @@ -558,14 +559,16 @@ static void audioreach_get_link_name(const char **link_name, int dai_id, *link_name = "CODEC_DMA-LPAIF_WSA-RX-0"; break; case VA_CODEC_DMA_TX_0: - if (qaif_interface) { - if (!strcmp(*link_name, "Headphones capture")) - *link_name = "CODEC_DMA-QAIF-TX-1"; - else - *link_name = "CODEC_DMA-QAIF-TX-0"; - } else { + if (qaif_interface) + *link_name = "CODEC_DMA-QAIF-TX-0"; + else + *link_name = "CODEC_DMA-LPAIF_VA-TX-0"; + break; + case VA_CODEC_DMA_TX_1: + if (qaif_interface) + *link_name = "CODEC_DMA-QAIF-TX-1"; + else *link_name = "CODEC_DMA-LPAIF_VA-TX-0"; - } break; case RX_CODEC_DMA_RX_0: *link_name = "CODEC_DMA-LPAIF_RXTX-RX-0";