From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) (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 C860523183B; Wed, 29 Apr 2026 01:39:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.254.200.128 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426749; cv=none; b=mNk4cIUUWEKn8pncJRiQq+hZICdMT6s+HvbwfFHfH6B/rQF0FZrl1OW8XMl/UDKttig2a8C7nSyj6zjUNTln4WhoPcyUQSbOPBytCf2JHxUnkLFgZ/SM8qOM2Zmu4NB6YQreZM6JhwTdDs68TQmbOsuv5Y3p+2G10I4R7Umx2S0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426749; c=relaxed/simple; bh=fqs712JSCd2q2Oqmt1LbqXOCERM/xXmlTc8QrXeirL0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jpDI8RterJDeukwMO5gTCAe/+gcBSbay2Z59wOzW+Grho0koXYzsL12Xy/N+dpC1S3lmOmKXZWB+Ghs02yHXL5rp3EmLzppKDDtmYoM5zLmeHSkSTXW+k0drAW2olPQcHD5LOxgvxk4hzqtM4DXcJAIYIFz+sJBLiC7cD1hwSnU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=Ux5Ml9QA; arc=none smtp.client-ip=54.254.200.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="Ux5Ml9QA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426744; bh=umt9s+fWxPSHuP81XZcEF9uKcHi4dTg/6NHhQ9slX2A=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=Ux5Ml9QAvRYWiIiN35of9j/C4ZTcGQ6f6dRG+wZdRmGJfTZcBYZAbJOZCV1u+/SFM Ydn1IwEk45gMf7Bjn8KsbZuMSXbLwnGFuWOek499KLCdXJ8Ol6DnLpOxfQJaSQ8ZKQ 4uLIZ3tlnCXbC3tXlElLVWNZoZLLQxaYiFMIN7yo= X-QQ-mid: esmtpgz13t1777426738tdd87611e X-QQ-Originating-IP: vWIv63VhrF74ROnm/3QKqWXpoDGEYGEsALkQyVl99SY= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:38:55 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 10487816630640131910 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:46 +0800 Subject: [PATCH 1/7] ASoC: spacemit: fix RX DMA params not set when TX is running 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: <20260429-k3-i2s-v1-1-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=1471; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=fqs712JSCd2q2Oqmt1LbqXOCERM/xXmlTc8QrXeirL0=; b=dOkNR7ewgmOY2VvQT0HJotglsEmMZlVysXzc+cYHBp6B84ugDG50p8cS5glYCM8tWSKL89oW4 GPOpMOXWpanDhly6ItJjrKyqP673diM7Q2lOO/kPQfEvnQtFmta0DYt X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: MPVgWQkf6XGksJ3xgJaYfoTzYb//cGREN3mcLLVDKxOw4FgzyLLrNYQ5 RMPWMQXQJP8miOcgN09ILcQrYZxydMCdzETBrvKWb+Mu4NkU9KDTeDgDdLy8I3gKfRGLzjr ABDt5o9jdePjmR931eys6TSNLifOlXNYqSN8n3UAfCkbNgtjlU41VuQVSiQcVzK3q4O6Jzk V0Qx+CAbMxo0k2g1pqm4sjcdB3nydEbvtf/JAMpmHCTzFT1ntLFakYcN7MUq74wjfz6PF3X GUA6wi0MWPvQbN3310Vpu7mTmhawlhAdraeCsiEcazgYvOEZ/BtpOUPiVd4OAvGsXSzw4Yh q36tFXC/YD3Bx109TB74ZouyVgpRUqubF0yer4rPnt7NAog1BfnWhk3zgTglH/JYL/G9kgZ 5PEcwdVlOC3Pe1vCaoSBNRCrfvEwmCDLW+Z2JR5+ARnsyf553N5LxCIXoZLkQkj7U/ynCGh pVFzVPuBRJkQQQ4Xk+YW0FxNG1u36PsKiMY61KMOeMmqM5cLiD9QJRySEDNop7N+D/Bt0mM fqjG9kybuov4Vx5R4VOJLSCKWLvqAGauxE4pl3FG9SvRjgX6nmMRH/vOFsOEUld5D4JQego unqAEDTtlVp8Ls9xwoVFmN3AJjHP2HUJkcwNWsrMhl1zwpLX2el3T04+sqdPbLpTAukyhCr WWt/fT7LcA1djogNSX5tVj2Kir0hWFj3JhTzEbawB/dZwKohd1mWQ7NQ90BULjGyT31F6wi fHNVVduk2GuBQFVLB3kWMyPBe/hD2dJXG3MTD1lxZKktQ6dh8dFB1SHfF+eL5LSZMFdDAWf 10IktGAyRsH9VEsEcPb4mnBJSPnpVzFLGD+dicEuO+L7E3/PBo1B9PRkVlr+LmftOLQ2X3a YkpWELfI1Otd81B9nMEyXdgRDkXEM3PsGSXCONWrCyVG+lvhjBwbwHpC6qLDYCbACNWe/ZQ 12v/0Glm/mr4PqNcWS4Euu1DB9BM5w9WJ304vX8fqJPyj/tT60T1TbLhFAhAY6l4d3Mmv+e blx9Ac9xoBkL+IzG085ylQLWGn2TD+r6KC4CrVaY4+GlFAcoDWk39HEcSeR1RcUsMfj1157 91wNQbkY1Pu8BunGBrsh9WyoWjhyH6JbuV8yuE9fTtaDVtkKv6QFfUikooM4KSTPIr5s+zX m3IG X-QQ-XMRINFO: NyFYKkN4Ny6FuXrnB5Ye7Aabb3ujjtK+gg== X-QQ-RECHKSPAM: 0 When TX is already running (SSCR_SSE is set), the hw_params callback returns early before setting up DMA parameters for the RX stream. This prevents the capture path from configuring its DMA data properly. Move the SSCR_SSE check after DMA parameter setup and format constraints, so both TX and RX streams get their DMA configuration regardless of whether the hardware is already enabled. The early return now only skips the register writes that would disrupt an active stream. Fixes: 955f7b46873e ("ASoC: spacemit: add i2s support for K1 SoC") Signed-off-by: Troy Mitchell --- sound/soc/spacemit/k1_i2s.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c index 1cb99f1abc7c..5c878f02cc93 100644 --- a/sound/soc/spacemit/k1_i2s.c +++ b/sound/soc/spacemit/k1_i2s.c @@ -117,10 +117,6 @@ static int spacemit_i2s_hw_params(struct snd_pcm_subst= ream *substream, u32 val; int ret; =20 - val =3D readl(i2s->base + SSCR); - if (val & SSCR_SSE) - return 0; - dma_data =3D &i2s->playback_dma_data; =20 if (substream->stream =3D=3D SNDRV_PCM_STREAM_CAPTURE) @@ -180,6 +176,10 @@ static int spacemit_i2s_hw_params(struct snd_pcm_subst= ream *substream, =20 } =20 + val =3D readl(i2s->base + SSCR); + if (val & SSCR_SSE) + return 0; + val =3D readl(i2s->base + SSCR); val &=3D ~SSCR_DW_32BYTE; val |=3D data_width; --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) (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 96939258CE5; Wed, 29 Apr 2026 01:39:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.204.34.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426759; cv=none; b=VoWLGjLhY2FI2fErs9P0qw08XkMilKEr0kDyLVq8ZC+rewHIOn91j/+XOawzaTg2KVwGhYlhyWXKck5HPIyaUoI3qDSsG2RdnBD5UBCr7ShoaZA9rExFAlhSWBDJcRVL2m6PyirMr6hUrjjLmdPU0NRblG4GkFwRL71NqRaLi4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426759; c=relaxed/simple; bh=RWny2LNzrPrEagJ3GrRqR5NlLn0/KK5X3ayFUZDi8u4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a5FwLqqVWJkElcQsxfmJACD9vYw/SA6RnmcJ/SciHmuN237r7pGAYFpQFAl69AfEY9dbJ8qTdsUpYg1GsIFGsjjREW5spMdeZug5xeJoD4JGZsJKioOMEz2tN0G7g5ivqisHTjNRAe+3AXk48w46yw6VU0xvSM5Ys80aYERpT+A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=bMB1qep2; arc=none smtp.client-ip=54.204.34.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="bMB1qep2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426746; bh=jSE/lZ8lv/JgPhAki8HHzPUjZ2Vg7C6vpdz7KPeviJM=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=bMB1qep2c6V8sTJOykiR7JRe4yIJEjlrASDivQ0oczFItp9arwiJ3y85ncACRPbUs 4VXjGAryla1+JnB9Y30wVlzSR7KtoYhvcDETcFBAriKHbomZ1fL4EMtiK2pHLNm9gL yopyfRzOo1UMiXUN1OL4kxzCSAinDS9cdo3y8eXg= X-QQ-mid: zesmtpgz1t1777426743t04c28cc3 X-QQ-Originating-IP: X3b/ae0GrihuowuBpKcF5vlJDI0UwVsxLLurFmJWMKg= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:00 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 5249929831929191583 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:47 +0800 Subject: [PATCH 2/7] ASoC: spacemit: move hw constraints from hw_params to 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: <20260429-k3-i2s-v1-2-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=3191; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=RWny2LNzrPrEagJ3GrRqR5NlLn0/KK5X3ayFUZDi8u4=; b=wwoi9MYNJCqKjdN/C6ghsVSY+1vMmYnAh65X69vBVqtWQ9L/9Ra/BZlqbfPps05yOXGcuEesX jQcUsC+UxWRCgIl4ZvcTXH85nDmWSZHLn+zvCoBDaJ1Rwz02ogrjIwH X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: NI/m03HJomrRu74cG2oYePhVtV5YEuilgncDg/eYOyMaexSu4UQNCiGi NdNTfOdUDz23t+hVVJyHeJO6tZsJ0qo9HD0BqjRpxR0AHbCj1FUsgXNG1PkAkPPtfibJj3X HLm8843qoLIR23wBolFMARPCUDiW0+O7ICzIGq0NRATgcZ/8E5RMlw1tiYgVRBnuATLwFx8 N8f+v1XKTqFJWj6EnikI+Yt7156czVSTCQ8pnpO3n5YaCIZJEGxyVCWfVGX94wQ0cBrhQV9 MlMxDl2wFrRw/Ap6k+ALtphP2AEfvRUxeoeRVzNlKL7WUd+Xv2O83hwEsn94L8Ii52DYAI5 EsmxQgMVKkJFzq7yTSpXXH1gXs/8imQ51J0pzTEpBklHJo9Yhfo5FkZsSMumm+16/QAUb6z 7LOSu8L17LThJlmXJSDrygh/gffq/9jPGF79NNnU2z+5tdJz2UcUPUuB1x21a94jsVsKtg4 o5eheQFeI9V0GuBGLTx3e5JUsu1WD1bjLocfc14tUaomrTZx+CJvLONvRMr2b/O0bvgbyfe VDaGPC2B8XTp7oDcs9m6y/DYe3EmjuxJWz7ipX+HHOS8Mxc+nGl9eZu749Y9cfRt8Yl2LRg c8jLtScwCtJZSY6wN6kPlmviWe7CZKycw/Q0gF+15f0IlMZqYrhNJbI1bS5pIORFxyKQz47 6d8iR2UIdGKd9TyFH1NP5xXyyOnc2w/rM7P7D64iJhQ7sFH6T6ci5R3G0/XNNyYeyvIqVwl 7W0qRplw6gWKDoCiE+dfAgoj5zMui1CwYF6C6QH6DY4UZY1JRfFpFfn27bN9Y1S4F+uxSKY OM0AcZHrUsEk4sqTFzrNHIMIytytpREzIRdXeHVBPHXm8oo0o2FKhPaj8V/tUhBbwyzcuz9 Xth/skY3tN/0mMQForR7lma0BLOkxmVrPujgkrC7Nm5IUJC/6ErWvj34uXGGivhsud5xRyV H5jQ04677ft0n+hVUV5e11oLKte0efnkmSXn+fHRrlB32I1nv9blxyTxb/JZ60XscnC4uuC QshEPDsPe+e6q+AjtFDRfY+OFyIK6gFAhwA9RSvrhtRT3E9yLSWneCHvtVBA7Ehoy5bIw+U SvPWmF2NpZZSLEvKsRvPW5BdfDKZFNkSLSXWIV6GGJVkh8UU9bsEFOlPz5nh+qOr4ggF013 XXNV X-QQ-XMRINFO: MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A== X-QQ-RECHKSPAM: 0 Hardware constraints should be applied in the startup callback rather than hw_params, as hw_params may be called too late for the constraints to take effect properly. Move the channel count and format constraints for I2S and DSP_A/DSP_B modes into a new startup callback. This also tightens the I2S mode channel constraint from 1-2 to exactly 2, matching the actual hardware behavior. Signed-off-by: Troy Mitchell --- sound/soc/spacemit/k1_i2s.c | 45 ++++++++++++++++++++++++++++++++---------= ---- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c index 5c878f02cc93..e59624b2e23a 100644 --- a/sound/soc/spacemit/k1_i2s.c +++ b/sound/soc/spacemit/k1_i2s.c @@ -106,6 +106,37 @@ static void spacemit_i2s_init(struct spacemit_i2s_dev = *i2s) writel(0, i2s->base + SSINTEN); } =20 +static int spacemit_i2s_startup(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct spacemit_i2s_dev *i2s =3D snd_soc_dai_get_drvdata(dai); + + switch (i2s->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAIFMT_I2S: + snd_pcm_hw_constraint_minmax(substream->runtime, + SNDRV_PCM_HW_PARAM_CHANNELS, + 2, 2); + snd_pcm_hw_constraint_mask64(substream->runtime, + SNDRV_PCM_HW_PARAM_FORMAT, + SNDRV_PCM_FMTBIT_S16_LE); + break; + case SND_SOC_DAIFMT_DSP_A: + case SND_SOC_DAIFMT_DSP_B: + snd_pcm_hw_constraint_minmax(substream->runtime, + SNDRV_PCM_HW_PARAM_CHANNELS, + 1, 1); + snd_pcm_hw_constraint_mask64(substream->runtime, + SNDRV_PCM_HW_PARAM_FORMAT, + SNDRV_PCM_FMTBIT_S32_LE); + break; + default: + dev_dbg(i2s->dev, "unexpected format type"); + return -EINVAL; + } + + return 0; +} + static int spacemit_i2s_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) @@ -153,22 +184,9 @@ static int spacemit_i2s_hw_params(struct snd_pcm_subst= ream *substream, dma_data->maxburst =3D 32; dma_data->addr_width =3D DMA_SLAVE_BUSWIDTH_4_BYTES; } - - snd_pcm_hw_constraint_minmax(substream->runtime, - SNDRV_PCM_HW_PARAM_CHANNELS, - 1, 2); - snd_pcm_hw_constraint_mask64(substream->runtime, - SNDRV_PCM_HW_PARAM_FORMAT, - SNDRV_PCM_FMTBIT_S16_LE); break; case SND_SOC_DAIFMT_DSP_A: case SND_SOC_DAIFMT_DSP_B: - snd_pcm_hw_constraint_minmax(substream->runtime, - SNDRV_PCM_HW_PARAM_CHANNELS, - 1, 1); - snd_pcm_hw_constraint_mask64(substream->runtime, - SNDRV_PCM_HW_PARAM_FORMAT, - SNDRV_PCM_FMTBIT_S32_LE); break; default: dev_dbg(i2s->dev, "unexpected format type"); @@ -303,6 +321,7 @@ static int spacemit_i2s_dai_remove(struct snd_soc_dai *= dai) static const struct snd_soc_dai_ops spacemit_i2s_dai_ops =3D { .probe =3D spacemit_i2s_dai_probe, .remove =3D spacemit_i2s_dai_remove, + .startup =3D spacemit_i2s_startup, .hw_params =3D spacemit_i2s_hw_params, .set_sysclk =3D spacemit_i2s_set_sysclk, .set_fmt =3D spacemit_i2s_set_fmt, --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) (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 571F825B2FA; Wed, 29 Apr 2026 01:39:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.59.177.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426757; cv=none; b=uRUgWN07oGWEDO+sjCxpi41fy6bxhssxlW3y963h7dfVda6DL04j/rTMGh1g5zpggEVpEY86fMq9oZKKubhB1m+Yi7JM/LEy/hg7KWqFWFpY6rL8Kc1v7zTZ+DB8kQzE2pDU3nEuWxxTwtSYR4ZHfIBGXP4ULZuSs76fggeP6TY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426757; c=relaxed/simple; bh=TN3IekLzdp18HVU+1Rpq+9TEk2UtnO7ag9ShWepOCxY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qGAepACnDMpZXaTao/vgpTUAwwNU2fDVwg4YextvzqlVTwU4XSP4Uws+608mZqF+QrJu08uB+qTWX6ayYaWK5+JICP2aX0qtXnHPzLC9kRs0OQhPSvHhHz6ZYMNMgLznXNR0RjGitX1krrOfzKwBuYVaSBKgmvq7lJtdkMjYVaU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=w8ALSAXr; arc=none smtp.client-ip=52.59.177.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="w8ALSAXr" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426751; bh=IhNm7b5aaqeGytIsBEHmKesKKDGy9a0voGkBOun2Fb4=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=w8ALSAXrcB5slO3vMAEilljRcTkxN/2/vWCx/BUZQ13uZ7y6aZ+jnGJ/3GrI03kqs A4IJfYoJSG0gc75J5mM5j7noMhPY6eku74LA+2zIBLgZmqG8uPsA5uNv7v7MvMhpa/ OFjUeOQO5WROlcpVlebB+x3QMOXeekqkno+7CEWk= X-QQ-mid: esmtpgz13t1777426747t360c3668 X-QQ-Originating-IP: rd3CXtHqGvswSSKw6JZjHsL50HqUHdZsoRaXYQ+43t8= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:04 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 7139710470832578007 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:48 +0800 Subject: [PATCH 3/7] ASoC: spacemit: adjust FIFO trigger threshold to half FIFO size 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: <20260429-k3-i2s-v1-3-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=1063; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=TN3IekLzdp18HVU+1Rpq+9TEk2UtnO7ag9ShWepOCxY=; b=ec7QeL6JrXUVZ6cJTDvuUdDooCidwlmr8lArWG5oMoYjQVIX6WmJGiNfPdpsvXXfGLqXc069i /HyE4YCuvkYAufz1dVpsxL1IkXIvH2zfUQfXE1mxlIB7tMZqKJGy3L5 X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: MydYCacP+cDPw+ybcMtVnqNHyV5jWfq0oQKckuQo8iFxq4X/1cJb4lZw Ib7aePYK8MUjrE/gduReSZFAd1QWr/7LzMC7L7LfX6ruVoXCswXDyhSFFRcLBcpoZKj6Zuu aliZcTxzHLiBNZXjWJeZpz/L3YvPxwC1Vxz3HrUtexzvzdKLdvo206zpBDq+pG/8YnYzfo+ lbQTVhNLQIKeH75Eca1EGHv07KpBKvWcwWOGzlwuDiLt2NTfm0uyKHWi4/EsNiQ7EPQPuWS z7DcvqJIlNjuf2X6j94CCs7yatI4xjqh9h5Nka34nKGgvy0IHQnOPg+maurjRrqGr2dn+PJ 1ImtDSujHUjLRseCNH0rc0+wymhYXm2Jj40htL0zmMlF8ZTh+l3OqNE28ZAnVhYyia54g8e un6FfKcHYjUrm0T/kiz89FxihBkdqZOrXMmsHXOlPx4FGO+mA8DqNcXMe0POekHx+DUHkKh rm8zX+qKQS7afWfvAc7BdJT4rpBrz1rzUxBwpHRY6DOVy4Xh64f1koxwoGt4ssvmD1tLM3y iLj7y57tvcIbUYaVtknwEV7C5yQs9CTcsxv2X/RWpgSc6oPjA+yvFfE6M5G4m7CpLY7jmOi sE329vgV2uKSq3nKFL1kBVWzTY8Fjm7Y8h9Emx0LfvSAa6VhXU2ki4FNDuczZTvUPWBEVTo 3ZszcuBREXjFAsn3HFDkm/rUzpVQQzpBGLarWpnzBDVVDgmY2kIhRUWhtPWZcy1PhSTP3LO tP89GntTHWc1nUGzLE2h7MAVYjM04YcNCH201TxKZ9S8fCGfyAa/4m+Ci3jwI+1PTjGZaYY o8Fq5rAK7IfNSjnFjywoFxo2Tfigs+Jih8+CPI3bOQM7rFXwxSuD14dUWVTK6f+RKdXZ/OB KhZXn3WZZsLh14pM/ifKsmk1TfN3YSCMWlSRTzCiTP4vropGuyvrY+HDFBLnbz9x0RCxtW8 b7JfDw7NIBvxlbHRSPwX+a6ZdOvp/+53mtfe46JPG7Cij3oQecLwYSCva/rB2HOY7vVqkrG M2XZ0X7lJEki2hgrsV3gtp3rZLQMFXKVJuZd6BnAMctiLzhIUpvbX24eZn0WKFcpKXTB1Zo nWQqaCuxSJruVhjiWeR8XrgYFPdyvfCjtK6TJaaBY5PIL7xgFqO9v6eXNlbHjXLco0UyBgj 9e/lO6T7hdxtndI= X-QQ-XMRINFO: NI4Ajvh11aEjEMj13RCX7UuhPEoou2bs1g== X-QQ-RECHKSPAM: 0 Set both TX and RX FIFO trigger thresholds (TFT/RFT) to 0xF (half of the 32-entry FIFO) instead of 5. This provides better DMA efficiency by allowing more data to accumulate before triggering a DMA request, reducing the number of DMA transactions needed. Signed-off-by: Troy Mitchell --- sound/soc/spacemit/k1_i2s.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c index e59624b2e23a..cef883ba4de9 100644 --- a/sound/soc/spacemit/k1_i2s.c +++ b/sound/soc/spacemit/k1_i2s.c @@ -93,8 +93,8 @@ static void spacemit_i2s_init(struct spacemit_i2s_dev *i2= s) u32 sscr_val, sspsp_val, ssfcr_val, ssrwt_val; =20 sscr_val =3D SSCR_TRAIL | SSCR_FRF_PSP; - ssfcr_val =3D FIELD_PREP(SSFCR_FIELD_TFT, 5) | - FIELD_PREP(SSFCR_FIELD_RFT, 5) | + ssfcr_val =3D FIELD_PREP(SSFCR_FIELD_TFT, 0xF) | + FIELD_PREP(SSFCR_FIELD_RFT, 0xF) | SSFCR_RSRE | SSFCR_TSRE; ssrwt_val =3D SSRWT_RWOT; sspsp_val =3D SSPSP_SFRMP; --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) (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 622BB22370A; Wed, 29 Apr 2026 01:39:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.254.200.128 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426759; cv=none; b=sxq997cxxaQonDdosbAh5YIpJs83M3KPvp/UTT7XA7oRWFhLJvlS/GgQQt959xBpyiUFb1On6Cv+x2BRNpfGkAnF3WmCvW+YEunqjJNisONsdCS6DZiH+xAEs1gCxEv7QuZnU7+BJ/g+NfGoQzhja21/+zKH9UT4DVvwMKy/+bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426759; c=relaxed/simple; bh=PyG99/8R0TpsWO1jWHnifATKcOhOPS8LywBZeCYZFZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hpgzD/lylHUVsj8/WGsFOcAWPhvt7ev/kpHRbKKf1NWvlS97SxVnoTtbXPDddkZvSmi3lporNgWz+xXIbrNK+aJZ/5Yf5EKK8slH8xYFyeCM1ouR4LpqgfgkwfyhRDR2uuvKjU5E+DKGJCy4ruvL7Iwl1r04cTrX0zJH7K5Fzfg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=nHkucCRv; arc=none smtp.client-ip=54.254.200.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="nHkucCRv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426755; bh=wUXoDWfKSMmaRMhMXzMvroZGWtAYAAcr+bc0qP0VGz8=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=nHkucCRvl0GFeUoU8qsUbQDI689HRP6VU2d1huJEi3iQTAE91Ssa1lzi9Y1yWmgR/ 4IIfaNk5V/xEwzJxo+XapGFwwfWPJXlA0QMTCogH8Y8DCxoACC2Tz3vwqs3vYa1+8Q 5ipBkJjo/Ge6afT40zIh8zQUNLWhrwEll/sdveik= X-QQ-mid: esmtpgz16t1777426751taed3181a X-QQ-Originating-IP: vI4sGNfIgv1/h6mK+YQd1WJmQOsZPj6r30Cg1uCqF3A= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:08 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11863181746122903502 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:49 +0800 Subject: [PATCH 4/7] ASoC: dt-bindings: add SpacemiT K3 SoC compatible 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: <20260429-k3-i2s-v1-4-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=2426; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=PyG99/8R0TpsWO1jWHnifATKcOhOPS8LywBZeCYZFZY=; b=XPnYB5sjZ9lutwmRgfjnz0oFWS9Zl6AxEVe+jvTb9maBaSi+h5G1J+ifvsEpt1vdxM4vWqIly r4iSsTIbzNCAFX10bIHT7pe+HZc1V1QBdd7FpLdew8mK2kPqfcC5oxk X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: M/5qe47GLMYOQHgZY0Ycgek5hYmKhrz1s2Pf3TldZ+DzyI4ntzjZTVVq reeTDxqTfR2Dj9Ov00i3JLBZOYWDeTLyJ8riYslVZ7nx6CVl3GAO4hnIeHGogWLRH3LvXp/ U1aWIrFC2hFVUyqlRsDFI5qlaV4i+rVM/xqF5eWiQnop5Nsb9V9KxkPk+5T9BqmEcXauDyR 8gTEqZmnhmdNyXJncqP0fnUK+hs+J9H295Ns7zVwgnJoTCYISOne170n2Mp7WjwSVjJQnsc 49QBbUqVuBYqRXZ1SBugVehs/KseKDR1tbRCdWh6XleLRKkZf6H4eAI/F+njWFBc2sica41 BzOo9XfP0spWSxzHIms4wVX3rGkNLyrV8edHnNQkCWZf3rqHAOUpKg6Wo6wKqM6+U8VNgNv TTZtoCil3F/10kQswNSUeh4rbQMOu+D9NHZrQIB3/UuL0EF1oejRB/2bMZCTHxJanzMAUYM 1jrdu0FrinW+gl8QJ5PAX4pYHi/vhw2IsF67ZlbG4j2aLxlkHC7Oxp3QVHhZWSEiaRewQlY l++mucbEJvpeBWBklckQFwA/oNCFdb8NPcHeVWFi5Fb3XcIMkZB+OQZ7LLOdfo2jWFQW5gs 4zUTrlvr1EjB+H1nB2HjqeqgqyqpMgNcO98LTwJvlURICdcEZOGNaHAi5gMxmTRObxQOfJQ hFck1z4fU+7aGU0CCFiuxUq0ANqSyxP+K/vw4l85Up1yw01THvgUnqS98FRq64GhDTL6OZ0 ml0nblwcwf79Yi+v0hsuf/h/0X7UzC44Sb291ydzLeaF9cW8MA0C50xjd0nAqUaJAm66gG9 N8CeHntgpt9d4mfjz0Sem+4JJR3kmK709VhdJbhQR3BsZFz80N5Uxtzb8vuC2nUyQMowRM8 3jPu8FlwVYBp95RiV43czYFTTRj6MJd8EhrSRsU6guClqmNiXc+q8K5vNlxFI97Mew0Kyjy YIQ1LdcUBWEYAuctqRO+T5tuLHOfBTVfMBMdVLBgTf+SFsYqNfFB45fb60sgKSl/ZMKAcDK Orw1p89bKi73n1vy+q2T8auvQ5ZAQ/IyHof2Eh8ZmBL/sAEgN0LXeidZ9FpJ4Hb74EzwZQW 7mdIFHiIW2RYuSuw3xrouw7DY2rIZiiSUUZuoWP+PCgUcuR2CxBSVDeJ6TnFHEGHgCZoORp S86PuRt7QvcUfiVtxo013tKdtLT9bVIdifez X-QQ-XMRINFO: MSVp+SPm3vtSI1QTLgDHQqIV1w2oNKDqfg== X-QQ-RECHKSPAM: 0 Add the spacemit,k3-i2s compatible string for the K3 SoC I2S controller. The K3 I2S IP is the same as K1 but requires additional clocks: sysclk_div, common_sysclk, and common_bclk. These common clocks are shared across multiple I2S controllers on K3. Also add the spacemit,fixed-sample-rate property which constrains the sample rate when multiple I2S controllers share a common bclk. Signed-off-by: Troy Mitchell Acked-by: Rob Herring (Arm) --- .../devicetree/bindings/sound/spacemit,k1-i2s.yaml | 31 ++++++++++++++++++= ++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml b= /Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml index 55bd0b307d22..240d90402e4f 100644 --- a/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml +++ b/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml @@ -4,7 +4,7 @@ $id: http://devicetree.org/schemas/sound/spacemit,k1-i2s.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: K1 I2S controller +title: SpacemiT K1/K3 I2S controller =20 description: The I2S bus (Inter-IC sound bus) is a serial link for digital @@ -15,27 +15,54 @@ maintainers: =20 allOf: - $ref: dai-common.yaml# + - if: + properties: + compatible: + contains: + const: spacemit,k3-i2s + then: + properties: + clocks: + minItems: 7 + clock-names: + minItems: 7 + else: + properties: + clocks: + maxItems: 4 + clock-names: + maxItems: 4 =20 properties: compatible: - const: spacemit,k1-i2s + enum: + - spacemit,k1-i2s + - spacemit,k3-i2s =20 reg: maxItems: 1 =20 clocks: + minItems: 4 items: - description: clock for I2S sysclk - description: clock for I2S bclk - description: clock for I2S bus - description: clock for I2S controller + - description: clock for I2S sysclk divider + - description: clock for I2S common sysclk + - description: clock for I2S common bclk =20 clock-names: + minItems: 4 items: - const: sysclk - const: bclk - const: bus - const: func + - const: sysclk_div + - const: c_sysclk + - const: c_bclk =20 dmas: minItems: 1 --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) (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 68BA810F2; Wed, 29 Apr 2026 01:39:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.59.177.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426765; cv=none; b=gpRyqmpMpTS2K8qFjlGBOSaBtCo/ZPVafGysBBfaUon18vyKWsQKJLy+GEBB2dbVQ2bD38kiTvD1/k8NxxDrgMFGuzJJ3GYFnBbdGPMdRUfcPWvEmIgHIufxRaFP+qFhIqrVkRVb6pNUCERvzPF2ISd+3ka6EVbBSy0ZEi/sVfc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426765; c=relaxed/simple; bh=NAgZL6RRaKXXih+6ACD5ImpEXa86qDP16TxAOhPDHIQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EDTPqvZD3dWzIC2/8Fb2UHdUUrIUXaV6Olo1fGrmStYr5jElXOPXmdhJ2u9KDQXPE2DFb/br46MEQOCUlyD1hYYrbCdeV+GQkhYpxLf3c4IInbOX2lfJ09H4iOamDu4HjQRjIRqZa7vSAKqdrfnIokcxMnVfY4JRD+6R3udYFHM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=f2RHNbWz; arc=none smtp.client-ip=52.59.177.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="f2RHNbWz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426759; bh=FI4ajARcW5357tLN5/I0ua9TZkOJrFRVAlMis1T0b2M=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=f2RHNbWza+D8n4xRFvCFEbb10aFrEYaiMIqi/OS40cLEzbm/qww1Zcj+29BHr1/4+ NVSyLMCAjiS7Ih6HAQxNfVsaOXV/cStJWdXygfIwVHNM4xBu6TvbNGi+odiL58l0bI ANNsJBqnft1DE+MoS3Qojpavsivug5fz5fzD8/7o= X-QQ-mid: esmtpgz12t1777426755t013c7bfe X-QQ-Originating-IP: xdBdhRDl77xch4NsM0af+nFog4tII5MZi881pdQy8Kw= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:12 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 7627828452192065809 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:50 +0800 Subject: [PATCH 5/7] ASoC: dt-bindings: add fixed-sample-rate property for SpacemiT K1/K3 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: <20260429-k3-i2s-v1-5-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=1270; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=NAgZL6RRaKXXih+6ACD5ImpEXa86qDP16TxAOhPDHIQ=; b=TusiHIciXUEkTyZdF0agxDOszJih+9MIoUSFVA68HIDOa8vi2cUesDBfQe6f4l4R+9H2D8znc iEXn6JQBHR1DS1pO8ZQIdzSeDXsQeMaCRPGheSGBpUYrD6BmdWQTB97 X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: NV33GuG3VJ0ZMZyi/YYYHy5b1IYD3h2lu4bAGgv6aLCmLSi/OTtZwO79 8WlrHfVyuI1CP68DHGbyaGFgE0az28ZQwwmwKGzll8nP1wWkMd6Oy0PWZYjqsQZEJhAdDHl 5J9UqsVmNw9W4eYiJaDwuan05x4vWc/zznAETMUaDVLOeIv4SxjL+pVC4bkbKi0dptHUUHy EAKI4yclmXKN9azte1EHOkfbUK0CBpP//kjIdW4MZLRH8Qcia2a32ioEIQFf2VP/v1v+IVx BgEQfBNj7MzjcI+q4eStpil3r7+GXM48IwQOHdU9xZEHNTr5jnZAD70NmEX+XPuaFQ3Io16 Vaapzktmrno5gCucjVB0mn5t1EBPm+uO7Zu7ohqMbF+ND8LgJSME5ycft9f9JrJgnE0GY/o AzMmm9vyyJWOSi8TTzSD2k6BiBBqD4ebm0II17F0IgTMXjol+Ot7q6Rf4JvsTmtWwcksRGv oD7C194ZzcZEyVfEeV7t+2YIQpaUYOWxaFll6psycENAbPRapU3q4nDvkYGFj/ZzCdvKHCV Rzf4ygqEgmXnIyLBoMc6fKdWElwVkUoh4/d2+h/mtXvt5HNMJytClwSCvS01Mymadttu8os TNQGCmb8R8mgCNnlncabD3Yzi2yiTmH7oTB4aSJB1CQxbAxwmF4n15afqDHs4x0t82hcXYu fcXu+y9A6Yp6RQFRKV74DcvnnCnXK2BmSu+ywpSJRBYZfIOqgwDdkplNaa+G87FYTaFvwRv 14XiOOkTO2y0RIApJzpYmJUHt4qrjHl6nkmxPIjoWzRr7A7iqYxpnxnCMPuLdqRuhxIfR0y 84V2sCyGXKfnpfoVD3YOnjq/+bfxvSj+mMe3lMo7SNq6tGBodPA0EoAdDIj2c1QlY7+KO52 OclItZDKYsleLLZDd05/Y5iZvkxqMMEHu5YJhUecUmMligFhVlO+7H7pUDhXSaK3Jbj7Ovj PrESz7JKrdgo0UdNuz+SfHkmspMUtENpGLfJ+HXdnCmPj4BqQ0/9n3TfP9QTwP+TVY63nuO XHAqzxM2lNFBJrx4UQe/IZGtIV/mp7CJHIyCmxldxG3K7Uwq7cmo9PcnZToxpB9FpgziUcP dJOCkY+WPM5koUFgFYZbMfoI/Ckz57lGb3YyAH9KOriWUhGXYrp13Rc3LdHwPGtLNsq2HQJ aZDwF3cdO9sy/e+ND4HNtanwpQ== X-QQ-XMRINFO: NI4Ajvh11aEjEMj13RCX7UuhPEoou2bs1g== X-QQ-RECHKSPAM: 0 Add the optional spacemit,fixed-sample-rate property. When multiple I2S controllers share a common bclk, this property constrains all controllers to the same sample rate. This applies to both K1 and K3 SoCs and is only needed when two or more I2S controllers are active simultaneously. Signed-off-by: Troy Mitchell --- Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml b= /Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml index 240d90402e4f..137070ad9eba 100644 --- a/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml +++ b/Documentation/devicetree/bindings/sound/spacemit,k1-i2s.yaml @@ -84,6 +84,14 @@ properties: "#sound-dai-cells": const: 0 =20 + spacemit,fixed-sample-rate: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Fixed sample rate in Hz. When multiple I2S controllers share a + common bclk, this property constrains all controllers to the same + sample rate. Only needed when two or more I2S controllers are + active simultaneously. + required: - compatible - reg --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) (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 AD1E222370A; Wed, 29 Apr 2026 01:39:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=18.194.254.142 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426786; cv=none; b=DN0i2F8zvOo+zrUf6dY/x95FyA9h/Iq7msIaDjHrBpXjXN2Jo0g9mySXTiHrH52DgNbKSJFCDhiXokisPkExV9x3FBFA7YJXnAzo4jUseNzBWRrOOzRRpa26Ag1aeyYAfMvMhUI19FwZx7HA+8+37i0iBKJh68oDK7DXNIPWq4M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426786; c=relaxed/simple; bh=rQ3g1iEURZi4LnziZ1fc6sbszDwJlqQ9RIGs3gyTlGc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HqZyzsc521o54zwKbPIT/nk2kEc9esWFlXTvzidFOa/HDIG8oPGNd7pWF2QyOzZZuoBI4F8vmVPXlj6E/oMZNoAgYiUwDtGf0oSW/U7Z5MHkxaIdyL9FFRxu8Lz95yH7/lwvLbpD1+5CAe8WNSA+Jc1vKVYGwa2Tv7x/6rTwbjo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=FaAGJtSS; arc=none smtp.client-ip=18.194.254.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="FaAGJtSS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426763; bh=Fa1GhJ9Mm6+UlP/0zx8pjid8wYuGhB8oXYTC38+xnlU=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=FaAGJtSSafvVC1M50qydn+RM3yPEyk61qo7sqlA1MKbwjWYpfCr//pb9xQZGuWzOn XnJUIp1q/qOyImmUsI9kuGcifNLKJcojlgyN6mSYTHZePz3zgJ4yUjS9ofuIq5CrKq Lm/gR7reHlTXz3B1+z97kQ4djFGUua2PNRb4URMY= X-QQ-mid: esmtpgz14t1777426759ta66e92bf X-QQ-Originating-IP: TnZa94EYn/Y67XrWQDnUM6ySI8l1koZCnIZNF1cOgfk= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:16 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8148319090196438835 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:51 +0800 Subject: [PATCH 6/7] ASoC: spacemit: add fixed-sample-rate constraint 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: <20260429-k3-i2s-v1-6-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=2155; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=rQ3g1iEURZi4LnziZ1fc6sbszDwJlqQ9RIGs3gyTlGc=; b=1QAW1hqaGPJM7giTj3fW5j/i0VLxVFmLKJwW6gR8vxiDo5ByP5sbUNgS70bD3NzQFt64DAf0Z HYKiC8VJCVOAt8KHIMtFWqYJgdquan9RXkP5vET9BXSGlQQqWfcQuxr X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: MwFkbloawFgLdqwuzIolXdFu8PlJrDU0tcUuI5gQcmauejLvoJwaahYg n6J1F9x8gUI6vDG9aFJXgpIzLrbFuEbxSsuGrZk2qEEbJ0eDVUqrF4ezIrAQle0L4bgjmgJ WfcXHkP2iN8not2q81kv+O2ahHk4Pr95V8XFkZ9VgMvvJT1mEn24FT+EfRHf0nnkvetmXMd dQtYsRzHJrU8vXeNzm4LzP+9t6GqNffjtOaIjmmt58AA1JxeVowbzUjM1TLFPV4pTVcC4hO b/k5ggE0JBFy8Pj8dF/VNJrj/Z/qp6DuRELZ1SP99P1NJIqJAhEbtkHf+2XFbt1R7MvT7sP 6mhDFjRdDk2N3SaVva+Prc8SEsg1gsgY/ik50t1S63ZVRRLtLO/pCO0ooUucw9eVfcBsfog usl735+nX3+ovPl/z+/wO1heieh09IMbKf/oRtyJpFNjBVOqWyC9Qw1EPsNUjMGBdCtAniy lLPi4d4xQQ2xziZM4mGqA7HlhnNsh/IwhJ7J7o132G9GP36IdepsGBd7jMa4TXTJqMTXte9 x+HMs+UfaUMtyqf2aEY4B7WwPE2h8I1apzVIXmaLf0ar30ae0xSR9lpbIxnQyIzLBYgeZBP D4D/GAg8Vrcv7fKXkPR/QhPADO/8kG4o0YfAHUuejxrATACHj2GRhfXqIOG2q0cMnHyWd70 7uZ0ZUfGHBYw/jr2RR3MfkxMZukXLSSjPHEd3iGSqm/zt5pMZxXYLpI9Wrp5sUB1E0dPCz7 c1mQrfn7L3/ys2VnsFkC+l3fXV+KFQNXFXtcel6Rc4SXU9HNh6/yx2wk1iiYVd/sYIdQM4N k++yonT0fGslVwzJ3bbWsr9hw7P6x/+Otbc/Hgc3OjIasOMfH8Bt0lKlwkWdSneA/sVQ1tB TdzuZ80SjACE1S0lF7w0YLMT9oYFN+/aWWBfMNl3dQb8gy6UY2WMEFVofXBeKRiXt1kgnzd 1yssyarUjC5Cz5IxDqxbWQE5t9FlxHmMhQLWt01lbUZluS/DM7goQBuKtM3VnM9kOBBom+S 0i3La9eUffrAdag9jH9wYXXuXeFTtrRxF4heOLH7JaxAe+A9n0odgP46HVreW97HnVrus1+ kGF7F6VPwqD9UzEELOs1Z2YG+ab6bmYoT0UPhM55Pnmt8pxKUKzE0Zs2dodfp6c7jJsRQqH bYGCPnVGglUMNrlsS6JfHmjDau7oTWaSKzh7 X-QQ-XMRINFO: Mp0Kj//9VHAxzExpfF+O8yhSrljjwrznVg== X-QQ-RECHKSPAM: 0 When multiple I2S controllers share a common bclk, they must all use the same sample rate. Read the optional spacemit,fixed-sample-rate DT property and apply it as a hardware constraint in the startup callback, restricting the PCM rate to the specified value. This applies to both K1 and K3 SoCs and is only needed when two or more I2S controllers are active simultaneously. Signed-off-by: Troy Mitchell --- sound/soc/spacemit/k1_i2s.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c index cef883ba4de9..7d0794d21ea6 100644 --- a/sound/soc/spacemit/k1_i2s.c +++ b/sound/soc/spacemit/k1_i2s.c @@ -3,6 +3,7 @@ =20 #include #include +#include #include #include #include @@ -54,6 +55,8 @@ struct spacemit_i2s_dev { struct clk *bclk; struct clk *sspa_clk; =20 + unsigned int fixed_sample_rate; + struct snd_dmaengine_dai_dma_data capture_dma_data; struct snd_dmaengine_dai_dma_data playback_dma_data; =20 @@ -111,6 +114,13 @@ static int spacemit_i2s_startup(struct snd_pcm_substre= am *substream, { struct spacemit_i2s_dev *i2s =3D snd_soc_dai_get_drvdata(dai); =20 + if (i2s->fixed_sample_rate) { + snd_pcm_hw_constraint_minmax(substream->runtime, + SNDRV_PCM_HW_PARAM_RATE, + i2s->fixed_sample_rate, + i2s->fixed_sample_rate); + } + switch (i2s->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_I2S: snd_pcm_hw_constraint_minmax(substream->runtime, @@ -437,6 +447,9 @@ static int spacemit_i2s_probe(struct platform_device *p= dev) return dev_err_probe(i2s->dev, PTR_ERR(i2s->sspa_clk), "failed to enable sspa clock\n"); =20 + of_property_read_u32(i2s->dev->of_node, "spacemit,fixed-sample-rate", + &i2s->fixed_sample_rate); + i2s->base =3D devm_platform_get_and_ioremap_resource(pdev, 0, &res); if (IS_ERR(i2s->base)) return dev_err_probe(i2s->dev, PTR_ERR(i2s->base), "failed to map regist= ers\n"); --=20 2.54.0 From nobody Wed Jun 17 01:58:14 2026 Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) (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 C1CB2248896; Wed, 29 Apr 2026 01:39:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=52.59.177.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426773; cv=none; b=SUoenkVGEJ0ARwskXXVTLHIURlvd1HynJkNVvpNPj/JfIu5b634SK/Amyb+VAjwbUmiGaTVdWZI+TjwspR31nPRpr3+PjbNL4bDp8X3EDVMWWJE/7xJPZT5VNcXd55L3DVACE1zqKAqrkpIHyk9wqds4iI1NxF96mjiPNuW2lRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777426773; c=relaxed/simple; bh=qAqcJ83kaw19HjWRQknjj1xWQQygIw8l7xygJK2JwWc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VKv6Qz0WMKH+6o/EO/eIdwfMz0O2jPVAI4md74X35EEZ4rG1Nnp4CbZtkqxqxGPHqZa0VUazTrFGm+I1lVJoRkx0fJoJxn0Go61MVMkSHAjoLyyZof8Q8iAzZnprf7/kM0UcXlFrIP/Vwzg6KSe9LmiiTqJcuxumGD+1moNwWOo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com; spf=none smtp.mailfrom=linux.spacemit.com; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b=on0XyaXQ; arc=none smtp.client-ip=52.59.177.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.spacemit.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.spacemit.com header.i=@linux.spacemit.com header.b="on0XyaXQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.spacemit.com; s=mxsw2412; t=1777426767; bh=NSNQ83OsaYFc+31IOLlDSGE8Gku2x+xwHFumIM2Xoao=; h=From:Date:Subject:MIME-Version:Message-Id:To; b=on0XyaXQB5bNTbLqbGBLLQZgho73/Yrf7uhogYorYTAx3mYldqtIx7JDwz7fDyXYq o11Q62OdQiTZn1JcPMhA40Je76ZtEJPDm+38U+AjIlt4qwQPka33q4J8/UkdPKu8FD OGOEZQIrwhkOZ7UonzuGwvYylaBce0qWKbdnCsK4= X-QQ-mid: esmtpgz13t1777426763t62530b6d X-QQ-Originating-IP: nmfJNHOigBnEag6KlKG7z7lVhDqeBR83Y7aFBFWp/Tg= Received: from = ( [120.237.158.181]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 29 Apr 2026 09:39:20 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 590894259723190294 EX-QQ-RecipientCnt: 15 From: Troy Mitchell Date: Wed, 29 Apr 2026 09:38:52 +0800 Subject: [PATCH 7/7] ASoC: spacemit: add K3 SoC support with additional clocks 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: <20260429-k3-i2s-v1-7-2fe99db11ecb@linux.spacemit.com> References: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> In-Reply-To: <20260429-k3-i2s-v1-0-2fe99db11ecb@linux.spacemit.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Yixun Lan , Jinmei Wei , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-sound@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Troy Mitchell X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777426731; l=3698; i=troy.mitchell@linux.spacemit.com; s=20250710; h=from:subject:message-id; bh=qAqcJ83kaw19HjWRQknjj1xWQQygIw8l7xygJK2JwWc=; b=G4wVCG1wze3HR5862QucHtv0jgAgib3iuet7TLLbnJzILRz53wW34MyK+SMvQYBDp3Z1GLaTe Wro6x7DQ6BoDdL1BdEdZTo4wfsmQdUODGqAkBfdolzIpj11iVsy3DWQ X-Developer-Key: i=troy.mitchell@linux.spacemit.com; a=ed25519; pk=lQa7BzLrq8DfZnChqmwJ5qQk8fP2USmY/4xZ2/MSsXc= X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:linux.spacemit.com:qybglogicsvrgz:qybglogicsvrgz3a-0 X-QQ-XMAILINFO: MS/AgMCtUj9T6Bp9BMXv9CqDuszRXdQa76v3wScWLfPTFAlcEWMZnhxt dzOeVSHD01N//7BujmWzvkwJgtk13HTJRU9ThzyJqyWsP/4x6CSAbhGSCYnFklNE6fkpCcQ PIR2jCoK1bks0YcXN9O9vOkHIMcVEJpCFgI4hMSoweyfuUKSMJolDXaptb8DphVViK7rH6r b0w4Omr3MsR/2waWRLbA043ak/ix8IVitME+qs1Rceny7DddaroXpQmR7aKeZf29S58p6rb glRkZg/JLEGuzItb9tA5Uc8nUZ+4OudBnMBCMlrHKks8o8Z43ETwkVafMIWKVK92UYmtKpT 87NGhD03qaP3nxxgMuzNEYxu6p9g9QdBZjFuRd07krs4qNp1Mp/3NqvNss6LlYdcvoU6DGb 21/Vg8OOwt98KRYkMDhv6yHtnWh35V1DmxaFTwupbJPzGCeFePWj74t500mKKqBUtXVMg7S SUldWuHP42hAS1A/PVccYdQDcV//G10BFWfXIge2RBTq8eerMwsEXZgTbFN+zD1zsVYDsDV 28aT09WxNlfeMA/abmhYWOJMOu/yHWLe9GltXZlt2XQXmLAFWnY9By2/K5/XxxgtMRFj0S9 q5vqdUoX46uLbA4uHpcLiaxYjcEL/0YJ2y6HdeAkVSxSR2vE7CeA5wrhKU07aP8JCd9hgyR RfT4+iIgqGdlkvR15+QvG+AxupESes5pD7C3wocyaaKNB8ACPpHij6HfzOuXlgJX8LfSemx O0cwZwVb6w1tGz8iE/If0cDaa1/87PJYN43xyDhiEGTJLNzTucH85JPCb+PVSy81BxSmyJC VqyhAPfs2gCYu66OsQQ4Trbcmf+Mp6PlYnkcerEcosApUiiVGUXH58nTEm4p8gr81nW5Xje NlaCGHjN4kTXM+mSNuVP69dypmFGXNNlpWn9Pth29TqENsXfUzEMldnQI3Id48qUtGuqe9r 5w6TnAghkJ0g32S3IzyVIhqwIcj4fOYypewRshsAzIaIB703VhTz3eec+eNQ/cAG+qcGm+i 3E0W8dvj0O/5bBc8M1cAHfzpBmjlywX0VKFy/Nq/SZzUFVUqbfC7JkUi8t2fT+LTgfXSMe0 j27ai9SX9ERq50OTCywDqXO00msj13USqzKmKY6C1L5Amw1DsG1KISGPOtd4Lx9OIwQy4KF DGjVxrTGLixc15hvN3dtvdUymA== X-QQ-XMRINFO: M/715EihBoGS47X28/vv4NpnfpeBLnr4Qg== X-QQ-RECHKSPAM: 0 Add support for the SpacemiT K3 SoC I2S controller, which shares the same IP as K1 but requires additional clocks: sysclk_div, c_sysclk, and c_bclk. These clocks only exist on K3 and are not present on K1. The sysclk_div clock is present on most K3 I2S controllers except I2S1. The c_sysclk and c_bclk clocks are shared across multiple I2S controllers on K3. Use devm_clk_get_optional_enabled() to acquire these clocks so that the driver works on both K1 (where they are absent) and K3 without needing SoC-specific match data. For K3, the sysclk_div rate is set before sysclk in set_sysclk, and the common clock rates are configured in hw_params based on the sample rate. Signed-off-by: Troy Mitchell --- sound/soc/spacemit/k1_i2s.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c index 7d0794d21ea6..c2a2b99d91f8 100644 --- a/sound/soc/spacemit/k1_i2s.c +++ b/sound/soc/spacemit/k1_i2s.c @@ -54,6 +54,9 @@ struct spacemit_i2s_dev { struct clk *sysclk; struct clk *bclk; struct clk *sspa_clk; + struct clk *sysclk_div; + struct clk *c_sysclk; + struct clk *c_bclk; =20 unsigned int fixed_sample_rate; =20 @@ -217,6 +220,14 @@ static int spacemit_i2s_hw_params(struct snd_pcm_subst= ream *substream, params_rate(params) * data_bits; =20 + ret =3D clk_set_rate(i2s->c_sysclk, bclk_rate * 2); + if (ret) + return ret; + + ret =3D clk_set_rate(i2s->c_bclk, bclk_rate); + if (ret) + return ret; + ret =3D clk_set_rate(i2s->bclk, bclk_rate); if (ret) return ret; @@ -228,10 +239,17 @@ static int spacemit_i2s_set_sysclk(struct snd_soc_dai= *cpu_dai, int clk_id, unsigned int freq, int dir) { struct spacemit_i2s_dev *i2s =3D dev_get_drvdata(cpu_dai->dev); + int ret; =20 if (freq =3D=3D 0) return 0; =20 + if (i2s->sysclk_div) { + ret =3D clk_set_rate(i2s->sysclk_div, freq); + if (ret) + return ret; + } + return clk_set_rate(i2s->sysclk, freq); } =20 @@ -450,6 +468,21 @@ static int spacemit_i2s_probe(struct platform_device *= pdev) of_property_read_u32(i2s->dev->of_node, "spacemit,fixed-sample-rate", &i2s->fixed_sample_rate); =20 + i2s->sysclk_div =3D devm_clk_get_optional_enabled(i2s->dev, "sysclk_div"); + if (IS_ERR(i2s->sysclk_div)) + return dev_err_probe(i2s->dev, PTR_ERR(i2s->sysclk_div), + "failed to enable sysclk_div clock\n"); + + i2s->c_sysclk =3D devm_clk_get_optional_enabled(i2s->dev, "c_sysclk"); + if (IS_ERR(i2s->c_sysclk)) + return dev_err_probe(i2s->dev, PTR_ERR(i2s->c_sysclk), + "failed to enable c_sysclk clock\n"); + + i2s->c_bclk =3D devm_clk_get_optional_enabled(i2s->dev, "c_bclk"); + if (IS_ERR(i2s->c_bclk)) + return dev_err_probe(i2s->dev, PTR_ERR(i2s->c_bclk), + "failed to enable c_bclk clock\n"); + i2s->base =3D devm_platform_get_and_ioremap_resource(pdev, 0, &res); if (IS_ERR(i2s->base)) return dev_err_probe(i2s->dev, PTR_ERR(i2s->base), "failed to map regist= ers\n"); @@ -476,6 +509,7 @@ static int spacemit_i2s_probe(struct platform_device *p= dev) =20 static const struct of_device_id spacemit_i2s_of_match[] =3D { { .compatible =3D "spacemit,k1-i2s", }, + { .compatible =3D "spacemit,k3-i2s", }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, spacemit_i2s_of_match); @@ -490,4 +524,4 @@ static struct platform_driver spacemit_i2s_driver =3D { module_platform_driver(spacemit_i2s_driver); =20 MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("I2S bus driver for SpacemiT K1 SoC"); +MODULE_DESCRIPTION("I2S bus driver for SpacemiT K1/K3 SoC"); --=20 2.54.0