From nobody Sat Sep 26 07:15:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A15E74CE663; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; cv=none; b=bCp6A+RnNjHBzV33vqDH4gz5DZhTfbQEIuZo6AchtZQi9VxLC/uttWJ1HOU20iy12LXTAPZsspImnQA+lScVh2Au1oC16uDIFT5zH43/RodSJoNxpBLDcHKPsEdWk2GCH6MpYmtN/pVGBuOYetG9tV6mD6C4FxxZ/yN/P/tZw4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; c=relaxed/simple; bh=6/mDj/MdwcFfMPvPwgKItcrvAfwEbVC42umbKoJP8GU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b4Agl/jlXuePePr9pOz66ChdfepmqcROASJS60nFUTgJtV5/kFSHzCsrfeWnrd1Zk5SG13D+K3YVWPBP+83zLbQVltNRFk6JKhsL40d7QBFF+yFwmPbgLaXYT6fZpmsDg4+EVwF+qPnUVd1VxAOtuHizUCDl7qAkvrbxfK2mGEU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QkK/tGEP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QkK/tGEP" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3D686C2BCF6; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=6/mDj/MdwcFfMPvPwgKItcrvAfwEbVC42umbKoJP8GU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=QkK/tGEPyJioJ3GZhdEtEFXdbMX0Qm60NRTHYpxOFkPU45cFso7oIvsAfSrriy5w4 0XhmMEdu1blTfmcSObqsYfSKowr3LIhEgy7REeZsk+XZK+39TlZMFam1AR9OcNP7sm Wi1QjLe2dojciW2b6KQ8pgjVKk+hIhW9opj0NUmSlZmkaweScdw4MiFU6s92yBLHYO 8zf2SlNxT8RKcbExpJ4lupGubD8pTmMMAV9JMEGG0jW/EkFElvZz4fcuczNPOMksHC pN4xIVsegfVzrwPZRrtvUd2XSM/bFGLk6QbuiqqOEQhJiNvfYGBEoWcbyxJCCRI6Uf qOKeep3yzXOow== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1CAE5C98321; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:02 +0200 Subject: [PATCH v5 1/7] ASoC: qcom: sdm845: Demystify TDM masks a bit Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-1-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2760; i=david@ixit.cz; h=from:subject:message-id; bh=OBe52DHgRUl+sZAYSKZs/z/tb5vA9VGkR+bezPzuldo=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFUNOMOPKIzduzGIgENmg75SgpxDjPEPhjw bcu0O2CFUaJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg ciDmD/9p+qBoC4RWKX0CpMecPNtRpZkL97QNBAMkYpBSikF42SuIj0govDX5HTrbR6qI/gcWhnB fBROITVmMu30i3tHU7yLdctMegcRBRCntSsDU2xPua3+3jM1scN4DhrppIsqyWbUp+i0zV6YSP4 dEAHSKqx9P2zYZ/4ylSG8SfW+kxNR34aKnWJ51wgLvkjh74zoGsEQLbBHVDUazf1ZHyMZ0j2Vtz dwkhSj2ehBWAhlxdAs8RN4rE2xg6ZFRwF4ODJZFOo1PGw+ZSjh+oflX1s8LyfjgYECepu23gRYq YK9KNfhH4GouUabJZXwAMJbcmjeNpsztQbGrgFEjlfhXB3idzcYZ24erAE/0zUJFp4m3jvGuIzt WSHlAMCy2KGvMWnFG9uYe+hPq8bdJA7YAZmIk+WAm9yzI89PpqOsU74pBKqECfiv/2N77uNAPQs 2CfisQ+jzs+4UiJmIyLjs3Oi21x4Uz1Bfmw0/cuPQB33cRmhmbjHunkay18FQlhVU9vI3j5UOKV xNksTuoi58hR43Q3fxLUK0/MjYO4ly6dK2B2YD+CGskCUE65lCys85XJY7s4dXkg0W+c11CDfUB kNBc/AsG07WNlwCCkuMEJK8M5St8ifEDp7iKAGubB7WFlKwk46cyzJbUCdg6ya0tqKTR4wiGtP6 lFWnSRhCgxaiJKA== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Describe the mask with the bits used for each RX/TX. Reviewed-by: Srinivas Kandagatla Signed-off-by: David Heidelberg --- sound/soc/qcom/sdm845.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index 6843ab8ba017e..0ce8265ab1c1f 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -18,19 +18,24 @@ #include "sdw.h" #include "../codecs/rt5663.h" =20 #define DRIVER_NAME "sdm845" #define DEFAULT_SAMPLE_RATE_48K 48000 #define DEFAULT_MCLK_RATE 24576000 #define TDM_BCLK_RATE 6144000 #define MI2S_BCLK_RATE 1536000 -#define LEFT_SPK_TDM_TX_MASK 0x30 -#define RIGHT_SPK_TDM_TX_MASK 0xC0 -#define SPK_TDM_RX_MASK 0x03 +#define LEFT_SPK_TDM_RX_MASK BIT(0) +#define RIGHT_SPK_TDM_RX_MASK BIT(1) +#define SPK_TDM_RX_MASK (LEFT_SPK_TDM_RX_MASK | RIGHT_SPK_TDM_RX_MASK) +#define MIC1_TDM_RX_MASK BIT(2) +#define MIC2_TDM_RX_MASK BIT(3) +#define MIC_TDM_RX_MASK (MIC1_TDM_RX_MASK | MIC2_TDM_RX_MASK) +#define LEFT_SPK_TDM_TX_MASK (BIT(4) | BIT(5)) +#define RIGHT_SPK_TDM_TX_MASK (BIT(6) | BIT(7)) #define NUM_TDM_SLOTS 8 #define SLIM_MAX_TX_PORTS 16 #define SLIM_MAX_RX_PORTS 13 #define WCD934X_DEFAULT_MCLK_RATE 9600000 =20 struct sdm845_snd_data { struct snd_soc_jack jack; bool jack_setup; @@ -107,34 +112,36 @@ static int sdm845_tdm_snd_hw_params(struct snd_pcm_su= bstream *substream, default: dev_err(rtd->dev, "%s: invalid param format 0x%x\n", __func__, params_format(params)); return -EINVAL; } =20 channels =3D params_channels(params); if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK) { - ret =3D snd_soc_dai_set_tdm_slot(cpu_dai, 0, 0x3, - 8, slot_width); + ret =3D snd_soc_dai_set_tdm_slot(cpu_dai, 0, SPK_TDM_RX_MASK, + NUM_TDM_SLOTS, slot_width); if (ret < 0) { dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n", __func__, ret); goto end; } =20 ret =3D snd_soc_dai_set_channel_map(cpu_dai, 0, NULL, channels, tdm_slot_offset); if (ret < 0) { dev_err(rtd->dev, "%s: failed to set channel map, err:%d\n", __func__, ret); goto end; } } else { - ret =3D snd_soc_dai_set_tdm_slot(cpu_dai, 0xf, 0, - 8, slot_width); + ret =3D snd_soc_dai_set_tdm_slot(cpu_dai, + SPK_TDM_RX_MASK | + MIC_TDM_RX_MASK, 0, + NUM_TDM_SLOTS, slot_width); if (ret < 0) { dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n", __func__, ret); goto end; } =20 ret =3D snd_soc_dai_set_channel_map(cpu_dai, channels, tdm_slot_offset, 0, NULL); --=20 2.55.0 From nobody Sat Sep 26 07:15:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A16C24CE680; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; cv=none; b=XyFwu5VnsAqTNMBmovXashIGI0236WFFQOkGcPAS8arWvA2PZ7nXYskm3kKUZuzHaXR63NwrKT+GE8DfjM9+R+ZE2axtzwcD2tou3/wCVMqFDrk2PY22IUZa/EUrKIXnf0FZSXHqKVJaq3LKnKkrA1bBJ0A2cG7h48XmkLSD8lM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; c=relaxed/simple; bh=lQMP4/RejTgczBB4UXi8j1fQiVJCo6nqN+G84Ws9O3w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sB/slZLnHhPDv7uakjXOqKz2LXToAo0jEpBcilkIn6V6dL8MhslZrRL0eXfwLkpw0bYL2grl+y4sgr1jBueV0zwy5keITV3fIcQfcyepdhaA+t+QY2mbVYcwNL8cYukl/v8bOhmgHs/x41KbGkZBEjHD6EsibrcbVl06SI9+y/E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bletY7u9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bletY7u9" Received: by smtp.kernel.org (Postfix) with ESMTPS id 509C4C2BCF7; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=lQMP4/RejTgczBB4UXi8j1fQiVJCo6nqN+G84Ws9O3w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=bletY7u92RyNgyynSKaEQPEEXMejlF8DHIQIV+Z5g8Gvi5Dk0IiEhKiXyV1YdmWwW OkTc+lpteE52zcHg1hhH5NMb4u6B6ytlSR7yB0jJM3kaslQJ8konbqih7udlJyAqqL yZJWxT1R7Thm1ROykpMRmJo+OrdVmz7vq9LLIt6Lw1XCG6RO6hXBPt9Tk/SLBT7KAf yDIwOKr/Sr6ONNSlc1QWCcJICQ+8BZSu4bLdpxwAb6ZNgW5DDwpLQzXCp+el+gudTy 1mHhc2y6fhfvX490kRitex49QmwssY/MjsLp4q0JwQKiNndhpT78etQucrux41bpIu +5cE3hP22jtoA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2EB57C9830E; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:03 +0200 Subject: [PATCH v5 2/7] ASoC: qcom: sdm845: use DSP_A format for TDM codec DAIs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-2-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1394; i=david@ixit.cz; h=from:subject:message-id; bh=XFtLmu+b3g8wRb/J2bbp/2wXHNURengB7rqb1bBnuDs=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFGNJVwvAsSowOISIt+TYBLqurxvvsuxipn sA3jGa0iqWJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg crSsD/9mM3cqrwaphqgoK4RgvUhXy+NXp4zPrPA1LpoSuv7mkwbz6u99oVmHCMdwXHF+KSZXsYd 0JsCbttw3L9pICEnBbg2Cb68QjXLiy+q/6l+CbqlbFhbU80H1sKjg3JChSZExcivXjmdmnl4xs6 j0vuKQGuLKyCxKERF8ygn4swzIuhPAcSfAKMnNp3wGpHZLzr/C9Vuqrco2SXnSwfK5AjCPNNP7B C0hWWHH8uRInJDz/SPbx9TxWl3Gwcai8tMb85h+yMHR0xIeeEDIPYEqwlwD3Zm7qBqWneDXZ9Kn 4rF3BX+rZ6/bB1/CL/V7AjPIo2nWcKuEe9L5Jcp1NH8VpLd51xf7uDOtI9iU0IR8CGKyDeDfU9u PVFAiZirnmq8jSOJCi52bX0JmbgwkyjWWiUc/7zCis1uf5tPu1V6y68otovMmn+fT4C7yFdhYlk 1aNyVtdbGINeN8UJEkpA6qe4pcQuRW6vuTKlQ8lJc+XG66wwG8iYBkusM2Tx65FVThREMDeKOi3 GRUrW6StK5Iy3w/Skye4Sha6ryupz8aj9rpowpQ8mFDM2lDoDrJqtMnt5FDCwXImZjY40RbL4+I FGg08/XoIE5bx+wu9sS8mnDQwrcBAXlVCXCok6KPk1RnlIHQ7IgY88Vwt4D0RA+PJb5Md4urdBo Wrd5v3yM+JsJO2Q== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg cs35l36 set_dai_fmt() never accepted DSP_B, so old DSP_B was broken with "Left TDM fmt err:-22", not silently wrong timing. cs35l36 codec was patched to map both DSP_A and DSP_B to the same hardware register value (asp_fmt =3D 0), which is inherently DSP_A timing. Use the right codec (DSP_A) which works as expected. Reviewed-by: Srinivas Kandagatla Signed-off-by: David Heidelberg --- sound/soc/qcom/sdm845.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index 0ce8265ab1c1f..d1cc825fc5cdc 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -382,17 +382,17 @@ static int sdm845_snd_startup(struct snd_pcm_substrea= m *substream) case QUATERNARY_TDM_RX_0: case QUATERNARY_TDM_TX_0: if (++(data->quat_tdm_clk_count) =3D=3D 1) { snd_soc_dai_set_sysclk(cpu_dai, Q6AFE_LPASS_CLK_ID_QUAD_TDM_IBIT, TDM_BCLK_RATE, SNDRV_PCM_STREAM_PLAYBACK); } =20 - codec_dai_fmt |=3D SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_DSP_B; + codec_dai_fmt |=3D SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_DSP_A; =20 for_each_rtd_codec_dais(rtd, j, codec_dai) { =20 if (!strcmp(codec_dai->component->name_prefix, "Left")) { ret =3D snd_soc_dai_set_fmt( codec_dai, codec_dai_fmt); if (ret < 0) { --=20 2.55.0 From nobody Sat Sep 26 07:15:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A17794CE681; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; cv=none; b=dHk1aGlEpcbY9ONXrERLZH0qKAI2o+rmu4ypaVb4fm4tuhKgraBc4tv6fkklXuKUzepumJF4dh4r+SuILF1fWyrcSwvid1SR78zce66AhG1C43Bd4XjFI2JjgLu1laXPmdyeHJ0TBXIHDKBbDLl+VPkv7kweGqhT82XwYouhIEA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; c=relaxed/simple; bh=IYoA1cg8+/C/GmFktSMjB5+j4IZ/5Pj7xCHsaKvuGZ0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mdO22uJ3vLUeMxejShUpNk0COy94RnqJAtDIkwPXlfeLhp0RlRkKLX+LoUFurZB4NZa0TR3hVjZ/X8DWdwC0IK+Jd74MmSJ6akWPjr2htiwwPP/EPhaVT1Gq9VBTFoEkvqe+2AtG8qMIZzuyMWLUhjfiFGh6t8YpTbFbJdXW1WY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VRKZfi/2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VRKZfi/2" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5FC89C2BCFD; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=IYoA1cg8+/C/GmFktSMjB5+j4IZ/5Pj7xCHsaKvuGZ0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VRKZfi/2Rsjwx9+txPjaIVwC5HheUQJM9a881CjjC4TzYgyEt80UPPZDQTC5/N/Ga M+wyjXDl2Ai8bLfVdrYtwnbBMRmbaA7ZHF5eyNr6lRkM9CJ94ylbE5bpf2FSq49VDz AO4rvRfIkcdfx8Ast2QKLSYyfQgik4c++OgkpoAqg7w1MqbnbO9aHKn3XeDAVrJJPL 5cSMco7TJ1qVWXUz0+8Nth4z5obaUFA/T4JbNTGLoWpf9XxDcSHvxbOszbDsOIBoRX Xn49FNpAJRIeAX82sn9SFBXBmDN2sqf0sCLf7zGDLS9cxooQN6lAUcTRoz1Vv86BNN ptXh0eiZphJhQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43567C9832A; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:04 +0200 Subject: [PATCH v5 3/7] ASoC: qcom: sdm845: Use per-speaker RX masks for TDM slot assignment Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-3-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1712; i=david@ixit.cz; h=from:subject:message-id; bh=14A2phcTaq+n5b5vOgbuu/Iv8VqqmG6tBsmNAD8ddoE=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFvDo534yviiiVsnPJ82ZpF7xhVWf90jNPE 3KmP1yqV36JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg cmlyD/9PhzS18ZH69Wc82yA4rsly/gtlTFO12SlAfU26bAZxsn5GfCWR9kcZCguMbgNi34WcuFk 476QMrhaTdMbX9RbXMhrwqtfWQ5fmu5xy0ERLBmoDu9AH2CUrEDVsL8Gu9ILLsB3de/641+n/zz dJe1Wbi/rSoto+rC0q96e0Lyq+44EW+5YOtMwQWyWpVpVHnmedDJYZZadOJBB7yoxaohFpwYVUP XsbJYq92eEO5D4aM97QJbCj9eourUgVAubXLZPXb72I3ZoqKsOqI9nj8c+8HBtnwcabGxtgxaoi ji4TrRcolsRkXFSpYJJ7a4JGRImwOLQFxiRJOMifuk0BYowDXesXlpR61yQVirHmXJ1vtHsiEkB z/JSBtHXGQBzt9zMadVlV6iyfxpSkhIffah4GmDkmitu5iFbHnNbBT5K5FsM/SooQgMmWvq6nTC KbH4KMZOsY5tKTIHLian2yitBXeDpG6M3yJiCU4vIbkcUdhAjbwCYYOtt39V3gBtw3ed++cd8L3 eVdpTvwyuRlwVY0D5lyfWIMkAXehxReRqe9xcql1E0ziH6d/gh4w/ybNDY0ZChMxPbITZOcQJew nyvw4Z6vll02xAveUe99I44lnz5aJ76bs4Wp4zTLFUlEWSuBKbsmyRMOuq120+cZh6OP9UAX6UP lUlcQeImLnttTTw== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Both Left and Right codec DAIs were passing the same SPK_TDM_RX_MASK, both speakers ended up on slot 0, breaking the one speaker in configuration such as on Pixel 3. Split SPK_TDM_RX_MASK into per-speaker masks so that the Left codec gets slot 0 (rx_mask=3D0x01) and the Right codec gets slot 1 (rx_mask=3D0x02). This commit is here, so later CS35L36 receives correct slot for right and left speakers. Assisted-by: LLM Reviewed-by: Srinivas Kandagatla Signed-off-by: David Heidelberg --- sound/soc/qcom/sdm845.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index d1cc825fc5cdc..59cfa3b26cd4d 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -152,29 +152,29 @@ static int sdm845_tdm_snd_hw_params(struct snd_pcm_su= bstream *substream, } } =20 for_each_rtd_codec_dais(rtd, j, codec_dai) { =20 if (!strcmp(codec_dai->component->name_prefix, "Left")) { ret =3D snd_soc_dai_set_tdm_slot( codec_dai, LEFT_SPK_TDM_TX_MASK, - SPK_TDM_RX_MASK, NUM_TDM_SLOTS, + LEFT_SPK_TDM_RX_MASK, NUM_TDM_SLOTS, slot_width); if (ret < 0) { dev_err(rtd->dev, "DEV0 TDM slot err:%d\n", ret); return ret; } } =20 if (!strcmp(codec_dai->component->name_prefix, "Right")) { ret =3D snd_soc_dai_set_tdm_slot( codec_dai, RIGHT_SPK_TDM_TX_MASK, - SPK_TDM_RX_MASK, NUM_TDM_SLOTS, + RIGHT_SPK_TDM_RX_MASK, NUM_TDM_SLOTS, slot_width); if (ret < 0) { dev_err(rtd->dev, "DEV1 TDM slot err:%d\n", ret); return ret; } } } --=20 2.55.0 From nobody Sat Sep 26 07:15:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A15164CCDD4; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; cv=none; b=cI+1rpvgxrX2P0Bbv14S5Q+AP69ypk77WbRdY8ToX+9+ObWQSEsMk4dWPQ7CgqqPjIouP9a4H80Px4CZ3DJMZdL18V6FyZzI+X42S2IPQ8UAewwU1WQ2RZ6uBiZOUpNCS0AxeJoi96/NNeOYjLvUnVyN0Yn5uhwNIHBvKaWVTQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; c=relaxed/simple; bh=QwCCE9iA03DRV1OiIpwEbsBnInBMMcPUgJLYTqpWaZE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DWAVGrqnbeoTFppGCFk3WmjRxYR/ghcC4+aPI22qmkhakOuqpOUk0W7hW8fkFlvupHUB2CP0FT+7DF+G+gF/RoCeCAvfkirftcjG+osDF9cdvHifkOsMxx6NhIDVlneuzsAlB6O/xIl8rYRnKCm7B/o+CnU11qHWU6Z4bJb+8GY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SinVewHH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SinVewHH" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6BD06C32786; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=QwCCE9iA03DRV1OiIpwEbsBnInBMMcPUgJLYTqpWaZE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=SinVewHHooX7vI/IFo+meNvHfAM48FB1Vi4TYPNGP3BNbRRYo5RNeu3QStqdXNDJD YRkpgfHZIo1SeVtnG+M6zk1UWwBcKFtlwFiusIlVUAMseEm3+hSNFpfgcup+EPuwo5 R684BlMcH/0bPUTQtbgO+8MDH5dQOyUP5r/QtsYMELSsEopVdQzCXwSYoxNotmCK94 /nlS6crZqhHC5VwSOIUf/symxfpAggrL2IGU32JRSJSWsk+VPsGAeRP8l4uCKB8soJ 7jID0iJFsC4QANy0i5w90JrhKAEYskqQF5Pwda5BUl620FZkiTnewmT/VlyvpoFpkU RjzZTcFeTjt0w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 56ED5C98328; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:05 +0200 Subject: [PATCH v5 4/7] ASoC: qcom: sdm845: Set codec dai and component sysclk during startup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-4-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1734; i=david@ixit.cz; h=from:subject:message-id; bh=Z8qWthLOmn2/btoR+RRIL+/KcnpzGuSOEGEitmr2DFY=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFwtoqCPHsE4uxyqouCuoLZ5wtZ+r8b3Gsl uTbZh6zBOmJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg csZ4D/9ONMQvkNRXeBs565c4W2eZNFqkHnyWEZcY+3Nm2AahObwOvUlXlyy4r8kd8fOm5jy87Dl lYTGfQBEojGScxCI/x8Mge/Z5RWlWQAIXxvMz4p7rZ/BIYsyH8Fi8/FcjkUcwItXBbzDFlixv9d xVO+99JjMjirTv/TzpqJEFQpjEyImZHGM0luZwN6f6R6n7PKAcojgzbH+s3udOJGshqaZ0psOS1 Jr+HmGkOyOQ8u0RA3cR1Qw2XTFX28cJDUop0rsY8MKUmy5nVkzoEIg547FKzg4wmYVHo3Jj7qof r7cAayWUGeVzQrkZg+hQU1LT97LrICsgp540l+Tw+jl8zQ/ARR/P/Q8zwqTgxTMtPwhfb9FRdNy Ej1d3+Eg0sF4nm+uAcsCjiOrGoWjvUWtgRT0v8q0/S8IkvkkhFt305pE3b2tD1sYdjkqvEyJwa6 CltPLSKNW6+XF1cM79tYk5WOuqOhkHnU5FGeH3tlMDzheXaAbHwM5S+qX0KQ5EBkzdkc2eNs9X4 1EPAiCk2h4I3E+RqKQyHhNJXW9ae9MvhcnDdp7LiHwyH2gmZ435a3k4/hGDjjakPlxaRn7IVJpH CpJoGdrVcbK9dVeJO4hlGrK3YXJGWvALOCRAqkPfOHRZu5nIY/Ke9PqTDC73IOw7r7V9HrH1QG1 JRRdhnhSiY52QVw== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg The cs35l36 codec needs the codec dai and component sysclk to be set during TDM startup. Set these for all codec DAIs on the QUATERNARY_TDM path, gracefully handling codecs that don't support sysclk by ignoring -ENOTSUPP returns. Based on work of Joel Selvaraj. Reviewed-by: Srinivas Kandagatla Signed-off-by: David Heidelberg --- sound/soc/qcom/sdm845.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index 59cfa3b26cd4d..f0fbec9c8df25 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -407,16 +407,38 @@ static int sdm845_snd_startup(struct snd_pcm_substrea= m *substream) ret =3D snd_soc_dai_set_fmt( codec_dai, codec_dai_fmt); if (ret < 0) { dev_err(rtd->dev, "Right TDM slot err:%d\n", ret); return ret; } } + + /* Set codec sysclk needed by codecs like cs35l36. */ + ret =3D snd_soc_dai_set_sysclk(codec_dai, 0, + TDM_BCLK_RATE, + SND_SOC_CLOCK_IN); + if (ret < 0 && ret !=3D -ENOTSUPP) { + dev_err(codec_dai->dev, + "Failed to set codec dai sysclk: %d\n", + ret); + return ret; + } + + ret =3D snd_soc_component_set_sysclk(codec_dai->component, + 0, 0, + TDM_BCLK_RATE, + SND_SOC_CLOCK_IN); + if (ret < 0 && ret !=3D -ENOTSUPP) { + dev_err(codec_dai->dev, + "Failed to set codec component sysclk: %d\n", + ret); + return ret; + } } break; case SLIMBUS_0_RX...SLIMBUS_6_TX: break; =20 default: pr_err("%s: invalid dai id 0x%x\n", __func__, cpu_dai->id); break; --=20 2.55.0 From nobody Sat Sep 26 07:15:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D97034D09EA; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; cv=none; b=gXbUs8IywDGZT/aSyW6w/EDOIP+c37+kr97hoP/+RM1PtaSfrevrSAUgCNn/UU9Ghl7gcGHS9sSoX+2fYL2qjaJ64IAjsesJqcu3XlRlSjOOhHoa0iyerBDcESMrlavxlx+RMqdjJxqcj5bw+uXPxrYDx9VMjnXcog1cY47Wy0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350088; c=relaxed/simple; bh=WY5Pa/IoTptAnigdJrDowsAaPRaTH97AAEpBIH8qAvA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M+2N22vtlgwBCHzFYwwvGaV/r57epA9adZ2GxQsLDsF5MuZQHNCOH2FHqdmKLWE9yzXUrq2iTzHZUi1sgJ6+VQuKUW1tG0zpe0RX2DXS+vOPdyOgJ15dH5nMPBrecIMIFaYEW3Fi6t9MT81S98TG0R8IjUyVSZ8dVA2+0P8d/pA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YGFJPQsH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YGFJPQsH" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7F4E9C4AF18; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=WY5Pa/IoTptAnigdJrDowsAaPRaTH97AAEpBIH8qAvA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=YGFJPQsHupvMER3y0ThPUcPLA5L/nzoKD+xejGq96aWzV2IlRYQyTtQ4SZzuIGZ64 E/hS+DF2G5dCWNAI/pfVmppjuNImViCQY7slT+U/sJ2tRRL2BU0gRT5XTOBcfrecA6 00lWIgR9+auciCZ3yx2rqNl/g6vykYaDW1WAOw9XsX2jBg0W/re+Uh5YQGsTAtqYpq ROJcQtHVxy6IsZvaQp4q1JaxmN+AKFwtisOezyp32Pg5WSQx46USDUPvYsz8sdG2D3 y+pY3ZwCC4P8frz8SEBi2w5+Zn4V/0sw5jjeSm7+KNyrsZElFUNUjtdE2M/aFRzaNb kcRApABnL5sYA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A55DC9832B; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:06 +0200 Subject: [PATCH v5 5/7] ASoC: cs35l36: Implement set_tdm_slot to program RX and TX slots Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-5-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg , Charles Keepax X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3455; i=david@ixit.cz; h=from:subject:message-id; bh=QCDauQWrYVk2oMrA2lmeV2L5dI8FaDlTbmA3MpK6x3I=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFui09s2ua1oS+Xbo9QMefjsbzP0xS7PGiX XTkMIrBS52JAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg cvXpD/9s+sM3vbiqdsWkPODhuwMFKApCHeFupH6S8KJMCamBQkyFeChv6W0np4WMGtCrn5T7MCx Egn/nMjIJN4O4IOWIJ4vg4z+rC+W7jOONZdVRmBaSpkYG0R2GyWP4F94/BCAkEjMtjURqyKjI5t 5VcQH/RkFGsew+KzS4rw1XEjSyuM13ZuG0PHjZSQfnZtnk0PY4UbYzubwnNQ8rwmTOtzZpvQK1e GbNR2rNvRATgyoklPCKpWUWzb6Wa8+hDsQ0BPXxcJWWmNOPrb6cGzbsZzxTw9oE9c/EUsifOvzs 2QsR1aenPOsZ7rJAZL8aqg4lSb1hUy9DrjOG024xfLAef40lEA6qkAEJ1yhDKF/bg/drnL0UIw6 FBJPT7LEXATx6NcUFN56AF1ng6YMAGD4BIIROb2tupDXTYvK0yYmhUGsG1Dkd0uccktlJG1UQar 8dnpFvhVsXl7spMXt7x+GzswMaKqjQjI0ZbdWmFQflcYfHNJjzKA/ZWbtMeIk7G8HFQ6OGBxxtr DXqDUB4b7VvKubzm2BqE6FzPhEH6un0wIfCUONA62+g6AzL7mtqSNnSZpSmenqOn9bD1oWjXXqr NwP1YR9XsmdLyJQwrqekv10x8b6de1yMBlX82P3dOri8JWZ9O6x3RNgsZNkUnsdG+yeFgr6eaS7 APldtYyto2dlxeg== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Program the ASP RX and TX slot registers from the TDM masks passed by the machine driver. Each set bit in a mask names a slot; codec channels are assigned to those slots in order, ASPRX1 taking the first RX slot and ASPTX1..TX8 the first eight TX slots, with a warning if the mask names more slots than the device has channels. Passing slots =3D=3D 0 or an empty mask restores the hardware defaults, ASPRX1 in slot 0 and ASPTX1..TX8 in slots 0..7. This lets a machine driver with several amplifiers on one bus, such as sdm845 with two CS35L36, put each amplifier on its own RX slot and keep their TX slots from colliding. Assisted-by: LLM Reviewed-by: Charles Keepax Signed-off-by: David Heidelberg --- sound/soc/codecs/cs35l36.c | 44 ++++++++++++++++++++++++++++++++++++++++++= ++ 1 file changed, 44 insertions(+) diff --git a/sound/soc/codecs/cs35l36.c b/sound/soc/codecs/cs35l36.c index 170588be4dbe3..5fc8ec292e3c4 100644 --- a/sound/soc/codecs/cs35l36.c +++ b/sound/soc/codecs/cs35l36.c @@ -942,32 +942,76 @@ static const struct cs35l36_pll_config *cs35l36_get_c= lk_config( for (i =3D 0; i < ARRAY_SIZE(cs35l36_pll_sysclk); i++) { if (cs35l36_pll_sysclk[i].freq =3D=3D freq) return &cs35l36_pll_sysclk[i]; } =20 return NULL; } =20 +static void cs35l36_mask_to_slots(struct cs35l36_private *cs35l36, + unsigned long mask, unsigned int base_reg, + unsigned int nchan) +{ + unsigned int chan =3D 0, shift; + int slot; + + /* Two 6-bit slot fields per register, at bits 0 and 16 */ + for_each_set_bit(slot, &mask, BITS_PER_TYPE(mask)) { + if (chan =3D=3D nchan) { + dev_warn(cs35l36->dev, + "Too many slots in TDM mask: %lx\n", mask); + return; + } + + shift =3D (chan % 2) * CS35L36_ASP_TX2_SLOT_SHIFT; + regmap_update_bits(cs35l36->regmap, base_reg + (chan / 2) * 4, + CS35L36_ASP_RX1_SLOT_MASK << shift, + slot << shift); + chan++; + } +} + +static int cs35l36_set_tdm_slot(struct snd_soc_dai *dai, + unsigned int tx_mask, unsigned int rx_mask, + int slots, int slot_width) +{ + struct cs35l36_private *cs35l36 =3D + snd_soc_component_get_drvdata(dai->component); + + /* Note: rx/tx is from point of view of the CPU end */ + if (!slots || !rx_mask) + rx_mask =3D BIT(0); /* ASPRX1 in slot 0 */ + + if (!slots || !tx_mask) + tx_mask =3D GENMASK(7, 0); /* ASPTX1..8 in slots 0..7 */ + + cs35l36_mask_to_slots(cs35l36, rx_mask, CS35L36_ASP_RX1_SLOT, 1); + cs35l36_mask_to_slots(cs35l36, tx_mask, CS35L36_ASP_TX1_TX2_SLOT, 8); + + return 0; +} + static const u64 cs35l36_selectable_formats =3D SND_SOC_POSSIBLE_DAIFMT_I2S | SND_SOC_POSSIBLE_DAIFMT_DSP_A | SND_SOC_POSSIBLE_DAIFMT_GATED | SND_SOC_POSSIBLE_DAIFMT_CONT | SND_SOC_POSSIBLE_DAIFMT_NB_NF | SND_SOC_POSSIBLE_DAIFMT_NB_IF | SND_SOC_POSSIBLE_DAIFMT_IB_NF | SND_SOC_POSSIBLE_DAIFMT_IB_IF; =20 static const struct snd_soc_dai_ops cs35l36_ops =3D { .set_fmt =3D cs35l36_set_dai_fmt, .hw_params =3D cs35l36_pcm_hw_params, .set_sysclk =3D cs35l36_dai_set_sysclk, .auto_selectable_formats =3D &cs35l36_selectable_formats, .num_auto_selectable_formats =3D 1, + .set_tdm_slot =3D cs35l36_set_tdm_slot, }; =20 #define CS35L36_RATES ( \ SNDRV_PCM_RATE_8000_48000 | \ SNDRV_PCM_RATE_12000 | \ SNDRV_PCM_RATE_24000 | \ SNDRV_PCM_RATE_88200 | \ SNDRV_PCM_RATE_96000 | \ --=20 2.55.0 From nobody Sat Sep 26 07:15:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 024D04C33F3; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350089; cv=none; b=pOIZjZltfIGJy9GVY1CMci6BkPdSYFaXq7MqVyDroT5A30+OZjZBds8SHDQRB6bNqEZMwUpwmu8MSRAz4YlICRKTH9VlQkFeWxtzXIQNofmuzwcFUjUouKwDry39u0E9Hm2tsnjM/p9MK0h2Um72p/8PwH6Cn1+vhQZLcUVDLcg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350089; c=relaxed/simple; bh=Y7iisFh3ZCviZxgIaJgWp1FlB1cs3Rph6RL8qnHn0PE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VHoCWOzTUpiVXJb1BjoATuHWf2D2VIgLOuYTWrWH5rc7PuUwtjczXI8scdFVWlpAHco6tLJJHpTR5CeoJBBMH2rrSUplhHJfzHvXJ8Oa3DR/w5qJVBwMEZgbwdoDy2VZbWJbhuMLE3YjgovjcHZ2oSBa1snGq5r72JCOnw8wYOI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IE5SA4Gk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IE5SA4Gk" Received: by smtp.kernel.org (Postfix) with ESMTPS id 90D7CC2BD04; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=Y7iisFh3ZCviZxgIaJgWp1FlB1cs3Rph6RL8qnHn0PE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=IE5SA4GkeTsYcSmFNbqQmdqtLVsb37nE9xkW22T/tk2yz41/+JJDbGRcXBQs1cw2Y OX6J2RccAGXh8ToYJnl3Ny401avthQ8iVYxfKKl3lnTDUC9nZ92oIHuz4bFMDg+Hvj cYleK92bbmbxLH8FOZLaCsxVhogStLC5oP/L+mhjS+F7uPd/oK68FZEzKHgyR2sRB+ zh6hIjS4F1Lrr/nfaFKG1/MdrqLi43G8Ajx4QD2JYgrPeUruJwl66X+EZGl51WGe3R 8cPvIZPI4hAbP11B2eZAetjxXwIseYCJtZy74AxVlQS80LBP3hbsPvIOVx5uMPuvml RGFlG44Ar6UQA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E276C98325; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:07 +0200 Subject: [PATCH v5 6/7] arm64: dts: qcom: sdm845-google: Add basic audio support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-6-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5501; i=david@ixit.cz; h=from:subject:message-id; bh=OPuhAiGiwh1F0hU4jXrVkMpTLkDrYHqdITX3pk25rWU=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFKj3tuXOpjCWJtLDo/fLWXPS+AJM8W76Ff e0Ua4/4ZHWJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg cnK9D/41xeiUjBEWHCv/6OTr6/8IrEizwyIPn9+cOOiTk8/3y929ii0CtG/r8ISC6ceqlmMIiCc 2tzqkXZkjGQbN3UwXeLCOk8SB0KVjGUL7BBjMx80kM+K2UHTNiz0hOaRaKJJOAJB5E34nO8t0ms 3DMu3yc+yxF7q9MoNTmpi46YUI4M6KE8Q6wsVQ3TACrprktNdfpa5i/JJ0CAgSF5m7HZ4WPiQDB JFGUruPhIDAHZa0cniCHHc18+2N483q2aLRKDyZo5U1gPh9bX5y8sInj9wXfUhg8eXXHGLWlaj/ R6bv823VvPV71jFXkYh9E2sCUbPMTVGq5y/uWpkua2NLtL5NiC3TMgZnolss1eRl+Wy1CXTAI1n zkDfo+3xgey8gHXnCi5upE+V39gdu4SYeg7OqMqjWYlDhMwLcFqqlWBus3CWFjCUBKx26qVbNOb KYSxRJZYsOR02IidgnH1r5GzBh3niwT/MgKGDOLoIew9Brg0I394rmgZZOxeG/InUXqZE/kmS+r SZDHDmULBb2ZRbFKQz5eNCmebdP61VAhlnue9Ko6uGDkFKK6KaCvqeogpW1HADmbogDduwEffaX HHba/qLXpiCkWnRxTMU9vLq/wpfOgGjmk0ukNOY0yOTF7U3pVe1/XguefPw6F1f0whud6savFw2 XYXRqwtEAn+Tf4Q== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg Introduce support for sound card and wire two CS35L36 audio codecs for top and bottom speakers. Inspired by commit from Joel Selvaraj. Signed-off-by: David Heidelberg --- arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 132 +++++++++++++++++= +++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi b/arch/arm6= 4/boot/dts/qcom/sdm845-google-common.dtsi index f1379857e2742..68d26c1a06d0c 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi +++ b/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi @@ -2,16 +2,18 @@ =20 /dts-v1/; =20 #include #include #include #include #include +#include +#include =20 #include "sdm845.dtsi" #include "pm8998.dtsi" #include "pmi8998.dtsi" =20 /delete-node/ &mpss_region; /delete-node/ &venus_mem; /delete-node/ &cdsp_mem; @@ -406,19 +408,61 @@ nfc@28 { firmware-gpios =3D <&tlmm 79 GPIO_ACTIVE_HIGH>; =20 pinctrl-0 =3D <&nfc_default>; pinctrl-names =3D "default"; }; }; =20 &i2c12 { - /* Bottom spkr (right) CS35L36 @ 40 */ + status =3D "okay"; + + cs35l36_bottom: audio-codec@40 { + compatible =3D "cirrus,cs35l36"; + reg =3D <0x40>; + reset-gpios =3D <&tlmm 112 GPIO_ACTIVE_HIGH>; + #sound-dai-cells =3D <0>; + sound-name-prefix =3D "Right"; /* Bottom */ + VA-supply =3D <&vreg_s4a_1p8>; + interrupts-extended =3D <&tlmm 115 IRQ_TYPE_LEVEL_LOW>; + + pinctrl-0 =3D <&cs35l36_bottom_default_state>; + pinctrl-names =3D "default"; + + cirrus,boost-ind-nanohenry =3D <1000>; + cirrus,boost-ctl-select =3D <1>; + cirrus,boost-ctl-millivolt =3D <10000>; + cirrus,boost-peak-milliamp =3D <3700>; + cirrus,temp-warn-threshold =3D <1>; + cirrus,multi-amp-mode; + cirrus,irq-drive-select =3D <0>; + cirrus,irq-gpio-select =3D <0>; + }; + + cs35l36_top: audio-codec@41 { + compatible =3D "cirrus,cs35l36"; + reg =3D <0x41>; + reset-gpios =3D <&tlmm 75 GPIO_ACTIVE_HIGH>; + #sound-dai-cells =3D <0>; + sound-name-prefix =3D "Left"; /* Top */ + VA-supply =3D <&vreg_s4a_1p8>; + interrupts-extended =3D <&tlmm 40 IRQ_TYPE_LEVEL_LOW>; =20 - /* Top spkr (left) CS35L36 @ 41 */ + pinctrl-0 =3D <&cs35l36_top_default_state>; + pinctrl-names =3D "default"; + + cirrus,boost-ind-nanohenry =3D <1000>; + cirrus,boost-ctl-select =3D <0x01>; + cirrus,boost-ctl-millivolt =3D <10000>; + cirrus,boost-peak-milliamp =3D <3700>; + cirrus,temp-warn-threshold =3D <1>; + cirrus,multi-amp-mode; + cirrus,irq-drive-select =3D <0>; + cirrus,irq-gpio-select =3D <0>; + }; }; =20 &ipa { firmware-name =3D "qcom/sdm845/Google/blueline/ipa_fws.mbn"; memory-region =3D <&ipa_fw_mem>; =20 status =3D "okay"; }; @@ -451,16 +495,35 @@ &pm8998_resin { }; =20 &pmi8998_charger { monitored-battery =3D <&battery>; =20 status =3D "okay"; }; =20 +&q6afedai { + dai@72 { + reg =3D ; + + qcom,tdm-sync-mode =3D <0>; + qcom,tdm-sync-src =3D <1>; + qcom,tdm-data-out =3D <0>; + qcom,tdm-invert-sync =3D <0>; + qcom,tdm-data-delay =3D <1>; + qcom,tdm-data-align =3D <0>; + }; +}; + +&q6asmdai { + dai@0 { + reg =3D ; + }; +}; + &qupv3_id_0 { status =3D "okay"; }; =20 &qupv3_id_1 { status =3D "okay"; }; =20 @@ -469,16 +532,49 @@ &qup_uart9_rx { bias-pull-up; }; =20 &qup_uart9_tx { drive-strength =3D <2>; bias-disable; }; =20 +&sound { + compatible =3D "qcom,sdm845-sndcard"; + model =3D "Pixel 3"; + pinctrl-0 =3D <&quat_mi2s_active>, <&quat_mi2s_sd0_active>, + <&quat_mi2s_sd1_active>; + pinctrl-names =3D "default"; + + /* mm[0-9]-dai-link nodes must be positioned first regardless of sorting = */ + mm1-dai-link { + link-name =3D "MultiMedia1"; + + cpu { + sound-dai =3D <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>; + }; + }; + + cs35l36-dai-link { + link-name =3D "Speaker Playback"; + + codec { + sound-dai =3D <&cs35l36_bottom>, <&cs35l36_top>; + }; + + cpu { + sound-dai =3D <&q6afedai QUATERNARY_TDM_RX_0>; + }; + + platform { + sound-dai =3D <&q6routing>; + }; + }; +}; + &tlmm { gpio-reserved-ranges =3D < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */ <81 4>; /* SPI (most likely Fingerprint Cards FPC1075) */ =20 nfc_default: nfc-default-state { enable-pins { pins =3D "gpio25"; function =3D "gpio"; @@ -517,16 +613,48 @@ touchscreen_pins: ts-pins-gpio-state { }; =20 touchscreen_i2c_pins: qup-i2c2-gpio-state { pins =3D "gpio27", "gpio28"; function =3D "gpio"; drive-strength =3D <2>; bias-disable; }; + + cs35l36_bottom_default_state: cs35l36-bottom-default-state { + reset-pins { + pins =3D "gpio112"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + irq-pins { + pins =3D "gpio115"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + }; + + cs35l36_top_default_state: cs35l36-top-default-state { + irq-pins { + pins =3D "gpio40"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + + reset-pins { + pins =3D "gpio75"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + }; }; =20 &uart6 { pinctrl-0 =3D <&qup_uart6_4pin>; =20 status =3D "okay"; =20 bluetooth { --=20 2.55.0 From nobody Sat Sep 26 07:15:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 793284D37AC; Fri, 25 Sep 2026 15:28:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350089; cv=none; b=Cw18/3bQzsigwJhGE/XZkAQqsHm6hyVb+G2v4vG5zVvww4EiiA4PFnIPrZVOq9qTfRlnHQYqpEj8J6lTI9l3Po/1O7HqRBU8Vwc9L9ThzZMTO/hJ8s/0Twb8fBUSyaxwPAsGsXP1kqFiywY1FRF2o1+N0Xt6HoEBGyLHY60M+aY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790350089; c=relaxed/simple; bh=QNAGBiWdKd8lXUSWrJy14KTJktuXjBh8qxz5ZD1Czqw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pEmgF95mffjsJqz86WAMioN240NORhj84RCAxNAJUQatGPN0bKdekvwN4XaP43pVZ1INEW+QgEiPwZswKv6DfT2rBICXs79sXbMzV3PpaKzR6bQFwahdAtG4C3/CjrQRTMzyWrsdU5oifsuAT+usFQNUp8xvXtYhiQ/L2SvWHl8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ndaIeT50; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ndaIeT50" Received: by smtp.kernel.org (Postfix) with ESMTPS id A1169C4AF62; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790350088; bh=QNAGBiWdKd8lXUSWrJy14KTJktuXjBh8qxz5ZD1Czqw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ndaIeT50NjECFHnO8ZlACwfDR/YM2ZwV02iRwVVUoiQkBAfKJqFjJsutgrhy17D+9 uwyD74/QtS8LX4KA/PwSTsgzKULlAy01gWePCCEpKVR7knzXjzZnLTj+vTyaazS2zg QoebQp4t6dKzQnIViTGHViwDfEEqYk9zDx65E9t02tzZQZuA6ycqesG1KHDzvfKXq4 IUFZi8xDshra0NWPKP5QSGAwY3r35bX8NaHp2SWHp+fJoMrmsXB4uPiNnYN8M0iw1w ixTpIG5ATfdhBBOffy6y977jHXkQg6t3B1ahebte2UJZrij11XNrD065pW+PMf5zes wZbZtx9NbCYHw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9035EC98328; Fri, 25 Sep 2026 15:28:08 +0000 (UTC) From: David Heidelberg via B4 Relay Date: Fri, 25 Sep 2026 17:28:08 +0200 Subject: [PATCH v5 7/7] arm64: dts: qcom: sdm845-google: Add WCD9340 codec and microphone capture Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260925-pixel3-audio-v5-7-7ffb32c980bf@ixit.cz> References: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> In-Reply-To: <20260925-pixel3-audio-v5-0-7ffb32c980bf@ixit.cz> To: Srinivas Kandagatla , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , David Rhodes , Richard Fitzgerald , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , David Rhodes , Conor Dooley , Abel Vesa Cc: Viken Dadhaniya , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, devicetree@vger.kernel.org, phone-devel@vger.kernel.org, David Heidelberg X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4206; i=david@ixit.cz; h=from:subject:message-id; bh=s0JlhQpLgoJtR5H5Po2ltSAeqAV+BYppQyxD+ybwcos=; b=owEBbQKS/ZANAwAIAWACP8TTSSByAcsmYgBqtpMFVbYMqMj+/OuZZTrhinnHc7nMhI4O7jiIP zxYxdrOpzmJAjMEAAEIAB0WIQTXegnP7twrvVOnBHRgAj/E00kgcgUCaraTBQAKCRBgAj/E00kg cntlEADRps8DGSpz0v+/fv6UsFJjNbTWF+r8XzuDksSSYpojdDhhtiWb5jcDxzv9ef/XXp6Mt9u OAx7bGtqOce0ukUdCcxVG0bYXmCHSZS75Q6TwbrfIu1NRlPYsItrxi43V+Q9Zxhb+1vDx6ji1QF 2ZDDZrQZaMm6KjiQdN5tzcWDDSFSdr+BLwNzqsYsTLC+dgWLb+SGe2MmlinRtuN0iZ43Cb7Aq6B R38I5tRuDFu8xacFyTWSJU/F5D+TqLdzUPLQ9i2tiL63Pp1ZLBgT19DjM4dWGuMN106ijwq6OJ2 sxeiCr79vHd9PGBM1/m82G+GJ1G3iohrI1H74HDAQpIkXcmC2XpgGwo1mG/xUihTj7sZMybStuV odhE1ZWKikmF0G7WK7vTj0MX7ksTgGgRLpGNVQBw2aU4QeaOvLHQujaNQfTAYS/dzC4AFIzWZaO GRTWLfxgxROPHWiEysv6NHVGXRXZ7oddMpRqvzlHbAP33mJP0OhIYu82isMnSU4PjbfbkMkI06w mYxWGBLOkjaIy/NGAl8Ppqq7ff/XTCTY5FozajZjkILlmkX8J+s1bYI7Ua61MywP6FHrs39R4Ks Dux/aDhMomQlB1rDySIgodQ9tTMAiDaBkfjDwPdLQOONTRKp0FSglRMUdA/Drt2GzLj7pFPEboU NWWk67TSbk/3Gkg== X-Developer-Key: i=david@ixit.cz; a=openpgp; fpr=D77A09CFEEDC2BBD53A7047460023FC4D3492072 X-Endpoint-Received: by B4 Relay for david@ixit.cz/default with auth_id=355 X-Original-From: David Heidelberg Reply-To: david@ixit.cz From: David Heidelberg The Pixel 3 sound card so far only drove the two CS35L36 speaker amplifiers. Wire in the WCD9340 codec , add a SLIMbus capture link for it and route the three digital microphones Based on work done by Casey Tunturi. Assisted-by: LLM Signed-off-by: David Heidelberg --- arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 58 ++++++++++++++++++= ++++ 1 file changed, 58 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi b/arch/arm6= 4/boot/dts/qcom/sdm845-google-common.dtsi index 68d26c1a06d0c..8e303a91bfaa2 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi +++ b/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi @@ -4,18 +4,20 @@ =20 #include #include #include #include #include #include #include +#include =20 #include "sdm845.dtsi" +#include "sdm845-wcd9340.dtsi" #include "pm8998.dtsi" #include "pmi8998.dtsi" =20 /delete-node/ &mpss_region; /delete-node/ &venus_mem; /delete-node/ &cdsp_mem; /delete-node/ &mba_region; /delete-node/ &slpi_mem; @@ -512,16 +514,20 @@ dai@72 { qcom,tdm-data-align =3D <0>; }; }; =20 &q6asmdai { dai@0 { reg =3D ; }; + + dai@1 { + reg =3D ; + }; }; =20 &qupv3_id_0 { status =3D "okay"; }; =20 &qupv3_id_1 { status =3D "okay"; @@ -539,40 +545,81 @@ &qup_uart9_tx { =20 &sound { compatible =3D "qcom,sdm845-sndcard"; model =3D "Pixel 3"; pinctrl-0 =3D <&quat_mi2s_active>, <&quat_mi2s_sd0_active>, <&quat_mi2s_sd1_active>; pinctrl-names =3D "default"; =20 + audio-routing =3D "DMIC0", "MCLK", /* Top mic */ + "DMIC0", "MIC BIAS1", + "DMIC3", "MCLK", /* Top-edge mic */ + "DMIC3", "MIC BIAS3", + "DMIC4", "MCLK", /* Bottom mic */ + "DMIC4", "MIC BIAS4"; + /* mm[0-9]-dai-link nodes must be positioned first regardless of sorting = */ mm1-dai-link { link-name =3D "MultiMedia1"; =20 cpu { sound-dai =3D <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>; }; }; =20 + mm2-dai-link { + link-name =3D "MultiMedia2"; + + cpu { + sound-dai =3D <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>; + }; + }; + cs35l36-dai-link { link-name =3D "Speaker Playback"; =20 codec { sound-dai =3D <&cs35l36_bottom>, <&cs35l36_top>; }; =20 cpu { sound-dai =3D <&q6afedai QUATERNARY_TDM_RX_0>; }; =20 platform { sound-dai =3D <&q6routing>; }; }; + + slimcap-dai-link { + link-name =3D "SLIM Capture 1"; + + codec { + sound-dai =3D <&wcd9340 AIF1_CAP>; + }; + + cpu { + sound-dai =3D <&q6afedai SLIMBUS_0_TX>; + }; + + platform { + sound-dai =3D <&q6routing>; + }; + }; +}; + +&swm { + /* + * Nothing hangs off the codec's SoundWire bus on this board: the + * speakers are CS35L36 amplifiers on QUAT_TDM. With an empty bus the + * controller reports port mismatches and frame-generator timeouts on + * every boot. + */ + status =3D "disabled"; }; =20 &tlmm { gpio-reserved-ranges =3D < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */ <81 4>; /* SPI (most likely Fingerprint Cards FPC1075) */ =20 nfc_default: nfc-default-state { enable-pins { @@ -718,16 +765,27 @@ &usb_1_qmpphy { }; =20 &venus { firmware-name =3D "qcom/sdm845/Google/blueline/venus.mbn"; =20 status =3D "okay"; }; =20 +&wcd9340 { + /* PM8998 LN_BB_CLK2 feeds the Pixel Visual Core on this board */ + clocks =3D <&rpmhcc RPMH_LN_BB_CLK3>; + reset-gpios =3D <&tlmm 64 GPIO_ACTIVE_HIGH>; + vdd-buck-supply =3D <&vreg_s4a_1p8>; + vdd-buck-sido-supply =3D <&vreg_s4a_1p8>; + vdd-tx-supply =3D <&vreg_s4a_1p8>; + vdd-rx-supply =3D <&vreg_s4a_1p8>; + vdd-io-supply =3D <&vreg_s4a_1p8>; +}; + &wifi { vdd-0.8-cx-mx-supply =3D <&vreg_l5a_0p8>; vdd-1.8-xo-supply =3D <&vreg_pmu_xo>; vdd-1.3-rfa-supply =3D <&vreg_pmu_rf>; vdd-3.3-ch0-supply =3D <&vreg_pmu_ch0>; =20 qcom,snoc-host-cap-8bit-quirk; =20 --=20 2.55.0