From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 4515E2F5472; Tue, 27 Jan 2026 16:08:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530132; cv=none; b=KpnUNwvgxbe4hvN4l6gDI+dcTk8QIsw+bY/CW7SSMCJ/9sQLMamt0V97XmczICmf/vkWy+jX3JQf29ZOMcj6g9R9PR+VMd9RRsCE74WtD3p7eo//vHXJSuLmrDaxhHE26S3fspmlZ4Kn99GSC80v+jtJQMD4WVA3KZT7Qi6zy+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530132; c=relaxed/simple; bh=Iq2VyvqCDRD+eOJzowyqd7ph1sHZmTOb8jsOzunp67A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MwK7iyMvVWUX3e9baBN2gsDtzUnZSfv/oAfzDvH1KlkW1o6KRynFXkSfqQk0f4u4qeyf7g2naZcDN7sZ7bTd6ehnVhjHmPKOTF3bopER1v2YME+ZZVFohWayvVl/t6i8V2cTX7F4F0DOfhUB+HFj3vGq1hrCG2En1hllc2QQcDM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=TiDdEB8Q; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="TiDdEB8Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530129; bh=Iq2VyvqCDRD+eOJzowyqd7ph1sHZmTOb8jsOzunp67A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TiDdEB8QVq/0sI1aLavwo8vsvkM40TSysHbTG1m+kfYqzT8NpBd9d8evg8jaA6BpG kcsxh0pWjeB1FCe6iU3eeKxPIv5XoKXPZfOcCUYiGtTOHBiTMjXmC359I5A85quBfY Rmq0IopNL+ur+Wj2K5UzqD6eM87lMc/t79sokmNfU5y+Pg0/O0N5DAa8jet3rsHdcf eCZ+ZI3CgyCHdrwAdMfv83Sa8RC7FOcHobs1LSb7hpnU2CWz9gll+JY+vswn5ZBX2T bknpjcZ6nm1fFNA8o4kRZACscrcg1+xtJOefIAFJEPx5MD0FOPCQxqsg6WuzLlbHhX Ql1FrFX2UOmBA== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 7B55F17E13A3; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 34DAD48004C; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:21 +0100 Subject: [PATCH 01/10] ASoC: rockchip: spdif: Use device_get_match_data() 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-1-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1245; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=Iq2VyvqCDRD+eOJzowyqd7ph1sHZmTOb8jsOzunp67A=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xCf1j2If8tTNlgV8n7uXSuFYC/p3QxUU bybJfh832iXw4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qaQs0P/2Au25vX/YHqS9vK0Zt6ZaacazF4cuccFVreJ7ip83Ww7yCU3FfRktpaWbxqAUBInFk pmZVEgaWzSUsYTV7rR8HtCce2fh3lpm+4X8Bgo325liLJb7vKBzLVbxF0VjksbVzNmIbIN2RYo9 yskS4nam+Oa3NPixdn8TFgnEjy17GhQVz9Ih7ezL46iXqOrfs63zpJ+9gq5QK2ZF9E1ln0X5k5X 6YGAL4r9PjL4/FF8dgk0lyqUGDjv+r+gvan+2vpt7mrt6mTd4Xy/YT+L2ZctrvvdGyiw4yAEA3N GFHLO6/JHVIhqaT8CcvwDLiA63kD4xh9N8u0Xu9C47R84wijn80lyqXefNmx7l1CtY9QKvlsZZc x+UUUhljFQTr5hVI3OUbJCm+B4qAAgqebSjayhWmmAfdpFY/EyWcIR8Gox5u/EXPRXwY6cPD6Tu 0SvvYQSs59bIi3EstXiVJ/IccQENTHnU/eHJMqoxgzvYEaIjrDGLhiMZpeq4fP+eu1SyBdCGfAh cD1Gu7Zi1rKCAsccEw8qEkbioIzqq7AFNgRJWNXdEyxY+zNAS5Ef65B2GiIYIr/Rfc0siuCr3tv x0N5V5uIbmP1Rp/i1fwE8rzvtsk0TY38fb8nN/o2L/yigMbXxoGHZhgsHf5nLAzIsbE88yVCfLQ lQL1iRbVDL7+gSLHv5Zw3/w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Use device_get_match_data(), so that the probe routine does not directly reference the of_match_table. This allows moving the table at the end of the file where most recent drivers have it. Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index d365168934dc..23f14274a6e0 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -283,14 +283,14 @@ static const struct regmap_config rk_spdif_regmap_con= fig =3D { static int rk_spdif_probe(struct platform_device *pdev) { struct device_node *np =3D pdev->dev.of_node; + enum rk_spdif_type spdif_type; struct rk_spdif_dev *spdif; - const struct of_device_id *match; struct resource *res; void __iomem *regs; int ret; =20 - match =3D of_match_node(rk_spdif_match, np); - if (match->data =3D=3D (void *)RK_SPDIF_RK3288) { + spdif_type =3D (uintptr_t) device_get_match_data(&pdev->dev); + if (spdif_type =3D=3D RK_SPDIF_RK3288) { struct regmap *grf; =20 grf =3D syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 4526E30B53F; Tue, 27 Jan 2026 16:08:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530134; cv=none; b=WwTWcKmn8yPGh+PDtgqfT/JSgUtbkClNOlX6cb1yCIfxjeoi/fiEhzGMWpL+EdKm+PraKbQASZuEpi6hKEdXnDfeeTGzDiRP5qT8dqhTvgauNJpYf76ydtQyUAX83B+amukAgKMMv434f5HtXt2t97laXt8O60TFJ1MFmXhkwi8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530134; c=relaxed/simple; bh=kL9kNvqSXpOVHTWoVnZEkOBC5bbK790jsX9GDjm0yZg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AtPI2D8JQhUK+tHZ408FQTBYV1lSaHfrwi3TFOfydzwixS+LnyE6brajNb23Ux97X1qn+TZgiOi/gOjWQ9QT0oRzDnesNxQzDYE1EDqI8FBKNuVtpbnR9TzYwZEktGXhf29wFo537xHT0yKb+/D1wCA45U/ZPkZAN7G7Xixfhbk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=ZhpQtmSc; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="ZhpQtmSc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530129; bh=kL9kNvqSXpOVHTWoVnZEkOBC5bbK790jsX9GDjm0yZg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZhpQtmSczb3U82x8A+JD7eBWzDq/HSVJ8wuG8SD+ikRWHn0vTbv7dJPHSLYOekyzT HchLoXbEzJPJLOsAjXGQ7aY7zEIe+bh16n2dRPhWuMgnQk6LBwG7Qdz13WmV7i6Dnu yuLm3MK1bOD1QW6LJvh1mVuNZKNyZkQpXHrAtvt6Vw4HpjvqM8o4VCEsTi3Z6diZMm pRhrje6OO73sG92DrLB6tGsJSOuFffV9oh08YHYYJOE1w04TRZmE+DPevl2cfU0vu5 RxrQLOulyoRcvs1XiUow8QD9YsSUpc8YSwPhO3GOjMoEapku2bQhBlur19MHFyOgS7 I0Waf+HoHDkIQ== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 78B2D17E00AC; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3486E480038; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:22 +0100 Subject: [PATCH 02/10] ASoC: rockchip: spdif: Move DT compatible table 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-2-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3102; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=kL9kNvqSXpOVHTWoVnZEkOBC5bbK790jsX9GDjm0yZg=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xCH0fJv0AZ5RtUF/UqPoZ+zg4liu6CLs T0gTRftH9vVGYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qa0wUQAIoQ6OlvovSDSonbD5rIV0SKSWd48HMd7hysmB314iSkPvJxnFiIuchm9gf50qkuxWa i5i+QeDCBpCdoxE9+ZgRyRWjQouiuqts0pD+eBl2jpm5AfPR1KzMFoHYJ4Z7aQMLmMDOefA75NR 0IElaXk5ILY0ZrXtFfcg7H9Dgn5bzAJM6o/DglXYt+PPNmtEgzTQgZ1ErsqRQMkjbV/dKf+yJ4i UolFsmtbat37eQPluZtIkdSffeqq9CrACak5lCli54Fw2sKKYat/4cQeRo0CLR6zfKFGR7/HUgz +wOtdoJxZecq/gdrKTsmAh4GmR05EZ6cWxeCna8tWiSOFjwFODPAMXiu0V0nmcWwwNAz7tMLeOn eHpU3aKQYCYEWxzIMla+zVgSXR6rZejyGalGGZxBnNziYuyBsEXsqGTFs6Lx2MktKtuVGLfeOGo Bzv/Ym5t7lxS3mUIwsCIyy9oxX1tMobrv8/42hiMBuPP1Ik2+I6NuKbJAeOM/dn16RuraZWF0+q HTuds55U/8IAuvgQ8mOtFnemv1EQ5W72+BVi0UzHZHudFY+2TY5BadiIMtClD+6aJO1UobUeUeq Ix3Upe8vOZ+32oIAn/IUqjKtlV7Cw8hW+OfdKMy7kVlGOajl7QKuBbyvRFJvS5Y98DVxj3JcFBn Hga+lAOSeWPrreFlGLWspIA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Move rk_spdif_match DT compatible table to the usual place before the platform-driver struct definition and drop the useless of_match_ptr(), since it is fine to reference the DT id table even when OF support is disabled (which makes the driver useless anyways). Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 48 ++++++++++++++++++---------------= ---- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 23f14274a6e0..331a23d5173f 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -40,29 +40,6 @@ struct rk_spdif_dev { struct regmap *regmap; }; =20 -static const struct of_device_id rk_spdif_match[] __maybe_unused =3D { - { .compatible =3D "rockchip,rk3066-spdif", - .data =3D (void *)RK_SPDIF_RK3066 }, - { .compatible =3D "rockchip,rk3188-spdif", - .data =3D (void *)RK_SPDIF_RK3188 }, - { .compatible =3D "rockchip,rk3228-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - { .compatible =3D "rockchip,rk3288-spdif", - .data =3D (void *)RK_SPDIF_RK3288 }, - { .compatible =3D "rockchip,rk3328-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - { .compatible =3D "rockchip,rk3366-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - { .compatible =3D "rockchip,rk3368-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - { .compatible =3D "rockchip,rk3399-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - { .compatible =3D "rockchip,rk3568-spdif", - .data =3D (void *)RK_SPDIF_RK3366 }, - {}, -}; -MODULE_DEVICE_TABLE(of, rk_spdif_match); - static int rk_spdif_runtime_suspend(struct device *dev) { struct rk_spdif_dev *spdif =3D dev_get_drvdata(dev); @@ -377,12 +354,35 @@ static const struct dev_pm_ops rk_spdif_pm_ops =3D { RUNTIME_PM_OPS(rk_spdif_runtime_suspend, rk_spdif_runtime_resume, NULL) }; =20 +static const struct of_device_id rk_spdif_match[] =3D { + { .compatible =3D "rockchip,rk3066-spdif", + .data =3D (void *)RK_SPDIF_RK3066 }, + { .compatible =3D "rockchip,rk3188-spdif", + .data =3D (void *)RK_SPDIF_RK3188 }, + { .compatible =3D "rockchip,rk3228-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + { .compatible =3D "rockchip,rk3288-spdif", + .data =3D (void *)RK_SPDIF_RK3288 }, + { .compatible =3D "rockchip,rk3328-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + { .compatible =3D "rockchip,rk3366-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + { .compatible =3D "rockchip,rk3368-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + { .compatible =3D "rockchip,rk3399-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + { .compatible =3D "rockchip,rk3568-spdif", + .data =3D (void *)RK_SPDIF_RK3366 }, + {}, +}; +MODULE_DEVICE_TABLE(of, rk_spdif_match); + static struct platform_driver rk_spdif_driver =3D { .probe =3D rk_spdif_probe, .remove =3D rk_spdif_remove, .driver =3D { .name =3D "rockchip-spdif", - .of_match_table =3D of_match_ptr(rk_spdif_match), + .of_match_table =3D rk_spdif_match, .pm =3D pm_ptr(&rk_spdif_pm_ops), }, }; --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 451F0307AE3; Tue, 27 Jan 2026 16:08:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530134; cv=none; b=Ut3pPWsjikPlrneIAmfeprPN5z/7Z91/Lo5MTw985R7yGHrSVoa0tOspyAadMgtTvBPlVX4txz2OHZ347cOIVrz3FaGOueSr+c+T2i+/aKzfq+1C9VAEQAyjb+X9PGvxVm/uRhXGAZBoa13UbPufo3gkcD5RqcntqLr4itfn2tY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530134; c=relaxed/simple; bh=rwMMsbUCdGGDTM0SilCBE6mODEWndNITn0aSniMBH7Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C8G7wClGDXefrWCkOYUErQSMDpapnLsXE46fboLsWJzsTMHn2OvAneHSPruocMS85Of6ls7ajpghaTJ0Is2Hx2Fh0v8cUmhin31a9DzWjAKNFqFlm4kR9XhAxJfFFwEyRjjzkm+oO2QUGQIhJyNFW0aM1vuU7LFaoIww08VfqJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=h3al06Ut; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="h3al06Ut" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530129; bh=rwMMsbUCdGGDTM0SilCBE6mODEWndNITn0aSniMBH7Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=h3al06UtLjaUn79ImAhJtV0zYUAoMwzayJfWsmPJgSagFWxCHXLdLz3efdH4/XWLk 7uZuw991fFkXex1f0RisZD1TRHQa+dV0qHeYcclB+kChVIGGJlDerhks4SJI6nHDeS 85wBRnqVnCh1vibpLdLfhwGvEotGCuoT6uv0BQw1CurjDgM6j78F+c1e2XX0HTFMjH wiDoTsnE26vPBn77fsgEdYcW1g4TUwKp4vS5wwsS6qCeyCBYpXinpQ6uLxyJH+uZTt bytwbU9ByB9GRMvhGmww16UFd0dRKkE328meuPswTWlKuUsX35GAjNMIzURB/ZkjDY RtGlUFP2o+2Zg== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 7A07C17E1352; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3606048004E; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:23 +0100 Subject: [PATCH 03/10] ASoC: rockchip: spdif: Fully convert to device managed resources 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-3-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2785; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=rwMMsbUCdGGDTM0SilCBE6mODEWndNITn0aSniMBH7Q=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xCDP4Q1D/C1Aex7BXRN+YdP808viyEEO 8NwXFzj/wBiJ4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qaRAgQAKj7uIAtpap/z7biJwIV0Ge4fdSYeGpOdj/U2CEHt0cVvGZN4/EMj/DKAOdJdAoJoBn FQ/OKZ2IBmXHwpRaXbNqMCtATg1N2zvPYCLeLdQGK8gxXujQEdA8O0NvQUyG0EGtPwSeD4WrtvR wwJfD2LU0B2ZPTpT2BVhw17Wsti5nP4NZS3J6M6wJLyi4qRJMNwnvoHbgHFA2Z6gZbInTze49mt hfdq7YuHdsfGSi/W1qo8CCGdqPXbWqRp4V44NeQdGyP5rzXV9duvMSjTcxCutES/rzYttyPePyb GK0LDvRMOsLt3VMhM844e81JqZA+OJHLk8AuG+xueq4uFNyaTwHlC1N3A9ieP3lVcd11xWrc+kR psACCEFPhFfw/AewcSCkhVvHMdjngfsk4IXkAEfcD2CxPhXSShIhvjWICRq6DHLkPSbmhUjML8Q db9hTo1tDMeAiGj8GYhw2+IZLNF/ShGjLaMWuWXXMOCx0gGxlf1MnfqWtp4oOy7ceimSW18/S5K ASyOrRenNcTaPUcWZnD5Q3FyKv+i3Tx7IP+wUA9nYWUndghwGmkhbF3NPYjueY+6FQmOmXovCMU kYwoPAS7NeiGKH69NOa/bLvmyY4FDOvM9zDh0gB6qY2SBbEclJvUaNdmyr3Y0aYIdEYm/myGu/j D9FRN58h/H3hnHWbq7TYsWA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A This driver mixes device managed resources with unmanaged ones and (as a lot of them do) gets the order wrong resulting in potential race condition problems at module removal time. Let's go to full device managed resources to cleanup the code and get rid of the potential race condition. Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 37 +++++++++++++++++----------------= ---- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 331a23d5173f..841ef499ed7f 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -257,6 +257,14 @@ static const struct regmap_config rk_spdif_regmap_conf= ig =3D { .cache_type =3D REGCACHE_FLAT, }; =20 +static void rk_spdif_suspend(void *data) +{ + struct device *dev =3D data; + + if (!pm_runtime_status_suspended(dev)) + rk_spdif_runtime_suspend(dev); +} + static int rk_spdif_probe(struct platform_device *pdev) { struct device_node *np =3D pdev->dev.of_node; @@ -311,11 +319,16 @@ static int rk_spdif_probe(struct platform_device *pde= v) spdif->dev =3D &pdev->dev; dev_set_drvdata(&pdev->dev, spdif); =20 - pm_runtime_enable(&pdev->dev); + ret =3D devm_add_action_or_reset(&pdev->dev, rk_spdif_suspend, &pdev->dev= ); + if (ret) + return ret; + + devm_pm_runtime_enable(&pdev->dev); + if (!pm_runtime_enabled(&pdev->dev)) { ret =3D rk_spdif_runtime_resume(&pdev->dev); if (ret) - goto err_pm_runtime; + return ret; } =20 ret =3D devm_snd_soc_register_component(&pdev->dev, @@ -323,31 +336,16 @@ static int rk_spdif_probe(struct platform_device *pde= v) &rk_spdif_dai, 1); if (ret) { dev_err(&pdev->dev, "Could not register DAI\n"); - goto err_pm_suspend; + return ret; } =20 ret =3D devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); if (ret) { dev_err(&pdev->dev, "Could not register PCM\n"); - goto err_pm_suspend; + return ret; } =20 return 0; - -err_pm_suspend: - if (!pm_runtime_status_suspended(&pdev->dev)) - rk_spdif_runtime_suspend(&pdev->dev); -err_pm_runtime: - pm_runtime_disable(&pdev->dev); - - return ret; -} - -static void rk_spdif_remove(struct platform_device *pdev) -{ - pm_runtime_disable(&pdev->dev); - if (!pm_runtime_status_suspended(&pdev->dev)) - rk_spdif_runtime_suspend(&pdev->dev); } =20 static const struct dev_pm_ops rk_spdif_pm_ops =3D { @@ -379,7 +377,6 @@ MODULE_DEVICE_TABLE(of, rk_spdif_match); =20 static struct platform_driver rk_spdif_driver =3D { .probe =3D rk_spdif_probe, - .remove =3D rk_spdif_remove, .driver =3D { .name =3D "rockchip-spdif", .of_match_table =3D rk_spdif_match, --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 31032361669; Tue, 27 Jan 2026 16:08:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530138; cv=none; b=pyzdsGn3BzXTHAkHxaIUa4Gi8IaW2YRnywcZ4ZY6aYBQcHHpxx5dXPZYG7jY+cE3Y29YPtV05+DHvlKnL2MkIZm7mLWoT3kbOaQsaR98N+2I+wG+Mhn0KbEd/XgKcjQSdhPTFL8jT7KB5XTWCNiO8qJw0OPTA9bJ4PNrFgdl4dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530138; c=relaxed/simple; bh=a7chRUmXSxGtQoJKcymf1nEhKZUkHOKYGlejPfcNTMw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Icq0+AxATBpsFR1qrpyPzaLcKJQzF0Ff/W0V+jwnjhTY3x+OtaxcFWVKD1mpk51duE5pdRcMKQvlU6Hd8Z6OXwZGW8DI5agZHWIET+/igyY5dfCyNyjdsCY/ijsRgGJ7pxEIEjMIKZ3pKv1ebS0AMU4w+X6306GKXZsYBF8UIsE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=o+fNHbA0; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="o+fNHbA0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530134; bh=a7chRUmXSxGtQoJKcymf1nEhKZUkHOKYGlejPfcNTMw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=o+fNHbA0OlmPbae2D8RGX96cJ/8F62ii+jNgUp2+A5YIL3AdADiUgFcYE7i5jlCEc tFJq5uUIVP77SKNCZw5sLFJF1tcqFztPK8pZf4B7+DpeA/m7Tp1TsgCyko7UBITRyP Zh5//tAb6AN2xSh7YmGMhsRKRvXS2ZHf1722yJRRW02aJPX/tzEiIFI1etuBegDYhK xXU/7kW8ZMtCcWABxdCUJjvAa8M0OSbGxDfeWjgdHwE0JD49WLPUKkh2X4n+N3MXNj cFs27STzHpgFPoNsqx9oqlt6rOhA26IvloTUqmE7Jzk5hiYlxactl8RVsbHvzwOvZu X+gdEOcaWGkjQ== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 78D6017E368F; Tue, 27 Jan 2026 17:08:54 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 37734480055; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:24 +0100 Subject: [PATCH 04/10] ASoC: rockchip: spdif: Use dev_err_probe 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-4-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1602; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=a7chRUmXSxGtQoJKcymf1nEhKZUkHOKYGlejPfcNTMw=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xDifjfW9AsZhzCw+KRI3+ll6d8qvIFis 2pf4FH4CJNCk4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qalc8P/A/cDBmcLWTLa4wHVXwxS4u9xSrRwkNSkW0PRESSEBOUv+At0WVQq+UhyeoOZ6i93Ib ZbmG3cdAjosMhtTqx7TXhrqKzAL1KOeyRTTle0tQ683bfWsLk+j2nx0E4rYK/F7kNkbSQXBFNvU oj3LPkIn7JMiTtLHjXvgwR/8otKXM4by7An9dDDp7qNzeQI3XQfXTlFn5Osv//3n4nBMfp7wOj+ zX5gXMgP9PJWiRqQU9vh7lZGHu2QHH8z9Tod2b30ZkEyo/o5Fk2+dlmph+2S5vIXEU3n5Aom+vx AsWojqYqvMfAvS0BhAJf7v6Un0ZI1C3yBdeBexmrTPnCGeA4ZsOfz3CHqlS9b7x3BGtLxLGlT93 /fGkfl2xFu6P+YvUHhXLVjYtDndN83nCsc8p66nmjsWo+jpcJ7uIlnjgyjYgQ9HL6fsIu21FtLZ sFwuJAaFDt5UkCaJ22A1aklx1wD4bY0bl9JpREH4eYMWobws2WZDryz9LPEEIfjfx2nT+L/Y+0b s8vZoXlZGajenTMvhrhJlYy6AkkkBhh21hwnPQaeK32hJNGIy6qe3lATVnKVJuYrriF4GKKmCVf N6Tny3ubuJpSnt9WaZTAob69MW9sv9jqNQ/YLIVXx01gt2qRB4FHkAS++QBYT2xeEN5Lpv6E8Vn q9ChSqjRcxpSo72z/p+s47w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Cleanup the probe routine a little bit by using dev_err_probe instead of dev_err. Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 841ef499ed7f..20ed64c1fa42 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -279,11 +279,9 @@ static int rk_spdif_probe(struct platform_device *pdev) struct regmap *grf; =20 grf =3D syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); - if (IS_ERR(grf)) { - dev_err(&pdev->dev, + if (IS_ERR(grf)) + return dev_err_probe(&pdev->dev, PTR_ERR(grf), "rockchip_spdif missing 'rockchip,grf'\n"); - return PTR_ERR(grf); - } =20 /* Select the 8 channel SPDIF solution on RK3288 as * the 2 channel one does not appear to work @@ -334,16 +332,12 @@ static int rk_spdif_probe(struct platform_device *pde= v) ret =3D devm_snd_soc_register_component(&pdev->dev, &rk_spdif_component, &rk_spdif_dai, 1); - if (ret) { - dev_err(&pdev->dev, "Could not register DAI\n"); - return ret; - } + if (ret) + return dev_err_probe(&pdev->dev, ret, "Could not register DAI\n"); =20 ret =3D devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); - if (ret) { - dev_err(&pdev->dev, "Could not register PCM\n"); - return ret; - } + if (ret) + dev_err_probe(&pdev->dev, ret, "Could not register PCM\n"); =20 return 0; } --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 59BBE355049; Tue, 27 Jan 2026 16:08:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530133; cv=none; b=q3UKBnnanEqXZ8IR/RHXynJX6dElY+fJ9Xqa32AKpd0Te0rVdQeslU8fMj6H5i677Ug6ff1e27NxeGOy6q5pkh+l1nT7FpMmSIh52vdzscpT4wDFdK9pNNm4hZVIKkxB7G6JxxxhvYOO/woLq7dwWDnky9nuwobTYN9UQrdjhiQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530133; c=relaxed/simple; bh=0x70eJ6LqWibam6/8d2HJYajJ9736pFY/SKkVLmceOE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XZf/X4kvxe05ARw3WGIpSavQ8LpLscImpZ+JTdLrMhJZubwCSzsQBR7+BzpllbTuEbmhBQ2ceo/q4WBF/aGdq0icgd+V3lDvQT9FuMIVVWnwUpx8XJFtk0dKpNByFA/mvNLb9BxFquvrxB2tR/Sw49JPI4a2WmhuElJ6SNhy1Sw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=kU0Yycua; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="kU0Yycua" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530129; bh=0x70eJ6LqWibam6/8d2HJYajJ9736pFY/SKkVLmceOE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kU0YycuarDUL9LR/LyCP0fcxNKJshbllia2LgRX9fMXY1vFgTj1u/sTn2wxlyLi8o 6ue4JuOnBk0hcVtRe/ybsPX0o2At9II+86aT46FDOOFsnBOJ+K/2tqw9FTZ2Mkn3QX P6N4wbr4q1k2UQru2twaYykAeLQau6nRk3U5qMhf+TlOcnEywLmeARH34Dp/qqigJS vPlNZfBjq8bCtezI9Ap+jMGJmwdvx+7av0PJZI48v5T6JAFAJ3QKP7Pf3GvpZot8k3 8taIYb6j26zD/9Bq2GxXm+UEt1g05hXsFy9L4booybu29VU/+tKlbxAxxkbe10CUWx DoEAIzHQoLDVw== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id CDCC317E1513; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 38B4E480062; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:25 +0100 Subject: [PATCH 05/10] ASoC: rockchip: spdif: Improve sample rate 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-5-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Sugar Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=990; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=++BAbGfCLnkoMQgDrhj78qjcxu4mge2TSu9sa0rSBY4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xA4AU5OXfJcnO+2idQXFt9WnWkoUNOW1 g2vZ7Fq7VsjFYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qaNdcP/A1J+kjKpHlQwmp306nFDFNDrban4AhVnqoISWIwsPRF6YPtXHmczfa+tAGEtJ5PcZg Svz/vP13gQy/L2D5QtrQ85mCCcK3NjlPsofxPvvvG16b23c17r/7n63DrFUDIn4CigALnuuCUam J+rOygdve/iCme2a1sbHPvIOkIQxGGVRiU9ygg+E8imQVSxYQaZQCvtnuqvpvy8UqSvQ89/84NL EKOh3HeJ3Wsp1tLdSQlF3zsRR8ZQgolL4i3Wi3NtnHnYl07p0ZmXJvQtDEeEF4XiznXl7SB4UO0 XIAIAGw4sC2qRMhFra2l5eKy4auGUc9TIV4d1hqHEr98/JagjBC+hwKIF5XRmskn1E97AwFgrgx q/in7pHxmDInh2WSdvuZw9R7uIWFXkA4eNP4lz8aBPWvOnCyF8kZAxQHpbSVsZ6M4wTBu+kA8dB NmM5yJmMHyT/D24DKBFrXAVqtolR3AkayzkqwT6JVozLyFTbjWIXn2CNsfLWVwQRYV1SUIPHvhO /NPv5UTXXFdMl6CSoZl+lXb0lqXEk7nzVz9tRI9jCqo6lGJsEroSkTfy+9c5qlbt8EvO2l6OVwX p2H3BMypkE7ddXbcWa3xmTgwuJJhpqx63jn0drUvLX1qbXQ7+LYSELO/8EikwcTFv9nwLdHAh0B orWg/BdWKeT2Wb+G48TEzeA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Sugar Zhang The hardware supports all typical sample rates from 8000 - 19200. Signed-off-by: Sugar Zhang Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 20ed64c1fa42..80fd8f53bb2b 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -188,11 +188,7 @@ static struct snd_soc_dai_driver rk_spdif_dai =3D { .stream_name =3D "Playback", .channels_min =3D 2, .channels_max =3D 2, - .rates =3D (SNDRV_PCM_RATE_32000 | - SNDRV_PCM_RATE_44100 | - SNDRV_PCM_RATE_48000 | - SNDRV_PCM_RATE_96000 | - SNDRV_PCM_RATE_192000), + .rates =3D SNDRV_PCM_RATE_8000_192000, .formats =3D (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE), --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 6BBD33612E6; Tue, 27 Jan 2026 16:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; cv=none; b=elyRbMZP7CakEWD7o351nxDygiTRGw0/3UR8wLaqhCLp6hs3kkBYtGlPIwloO/5XppS7Fw0Vay8pz8B3KwjdfCbgkcfvHZOE/yzA5Dd3dg4Ni3h04OKBlAOODMcBNXv0/hBByml3mAIlgjhaTt6j7AhXhiAHCKmVuqFrJo/mq3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; c=relaxed/simple; bh=d+gX0d6NxxzZkhFVUCkoBjMXNb0bOhfwLyadx/wVaPs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mRGrb+jeQYQ9Q90zj6cL8eeOLbtUcz+m5jVVHrPwTZnhnYD9uS7A+HH8k8lLhbt5AKU9stXO/wYydJws5T7EBL6kxK0xG5pV29V1WCQpUf1tFh1ZiAOt3jHVap8DfJbvravoSYXf80zEAuLH5nEa0aMb4+a/JvTjvT9IVk/VAco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=gOlQz/mL; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="gOlQz/mL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530130; bh=d+gX0d6NxxzZkhFVUCkoBjMXNb0bOhfwLyadx/wVaPs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gOlQz/mLm9g8TluKCWHY77119GPEm4cVrg70tEo1D8iRwMzQ4/eTKutVw3hgIorfr goJtuHTvsBxalsyC/gq+IaRVjIaSX6AuVEqg8SmrosVeQJzrjS5VbnFFhwgKEv6VL6 /3sad+aYBYEozbpURQHzA+Sg3eO3vkzacBZyaSRtQlFJ6X1sqoKvqrm5IqUaC7CAhd 6u6gV/IiAT3e2jU17DsIQkU1qMq7Mi1DYLT5nbrqAGCBJZlaNH4PxrdwAzk6s5/73Z OIwyfNXykoOqWt6ZwuJqXCFnS5pVauaAkiVGc/5DPB3IGHA19IEHKNdGTdLZi7LVVE lAdyz7ExKTuUA== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id F413417E1523; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3A189480064; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:26 +0100 Subject: [PATCH 06/10] ASoC: rockchip: spdif: Swap PCM and DAI component registration order 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-6-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Sugar Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1183; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=76hJpiNaNQyorD7uRIJuETkpnuEiZXSc2DTe+tcCfF0=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xBzRXHRWgbxRmRRrQSCw6JunpDqe6Lj0 UP0AdSTGyuDQ4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMQAAoJENju1/PI O/qarCYP/Rsr2QFGCuq2NaqgTNsjXPoC4P2+u5DiyJw6cNF4PdPdzY4wZUqnW0dcKoxnS63RFvh 4GJxOCiiLrKHSUPnTgzXNz8j/qshvw/7iSnI0JK5WSXKUuSJFxpG5zJo4Hk1Io8CTzE59NkmewA T/1FPrJaeaTzmpws41XXn6+SD1zA7gPi5I6BzeQh+wGtbImOy4M8kEYWdZn2M2E3B9mVa1/zNW6 irdqfnJIWOf84zrVdGWkoqXVGrNjkKfLvg5qvOpv3PYL0dvoIoomAHDEsO3VVMau59p6xVS/OYX 0eBroXGXAkQGm8cjxjgQ2QBSnZ0jCooV1p2YxQFbq/9SEzsquy5OG3zhvIc81tsD8mJwn7SER8H uZ9IQMQaAePrw6UA1gtR6zIpOR+T7l9UvnzYUakz0vseEFt/JSKln8TX+jt1WWpr0MkQRTZj1BK Fgh210O4+pRvsxrZahbn/4GwOd2pb2FApK0QuJXPQBpbXnmXYRE+53YwK+XieEtUiyBrV5UFHab cJ0OwSTEPJiARF7i7rfi7rLUvDdKnDDVKLix+qXosevIEkG3CGcgM5rz9WwLhrys59dU2LFkIDl RE9rvAR87gjJSGGi7nuzfyrXgHc83k+8Lng3b9WEaoiT5gJZzNrQ4MmeUuFLhuwtEN963cgblb+ l+W2AyXzaeTvRSfkA5AQ3Xg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Sugar Zhang PCM should be registered before the DAI component, as the second one triggers snd_soc_try_rebind_card. Signed-off-by: Sugar Zhang Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 80fd8f53bb2b..1a3b0a8e556c 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -325,16 +325,16 @@ static int rk_spdif_probe(struct platform_device *pde= v) return ret; } =20 + ret =3D devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); + if (ret) + dev_err_probe(&pdev->dev, ret, "Could not register PCM\n"); + ret =3D devm_snd_soc_register_component(&pdev->dev, &rk_spdif_component, &rk_spdif_dai, 1); if (ret) return dev_err_probe(&pdev->dev, ret, "Could not register DAI\n"); =20 - ret =3D devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); - if (ret) - dev_err_probe(&pdev->dev, ret, "Could not register PCM\n"); - return 0; } =20 --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 6BAE33612D4; Tue, 27 Jan 2026 16:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; cv=none; b=ahkK7V1a1XseiJ0RnNSF4mWD3WdAvjHio6ywzu6c+PIIiDcejTzsHN+tLLbjsO9ywIGjKFZTll56q4ELQ5ILY6KfjEIkaViF3d85xZlNBsLLlUOW/tJVMtNvh1qNJ9Om6rDWPMB4AucKIE5EVco0M58WeWT0MbFDPEcWNdWHfIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; c=relaxed/simple; bh=ZkYfC6duc4bUhSQdw6hDQFgF5OjCNUVsbKwgm9O0VTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qOBmSJ4oqtZMg6W5o2G7+QZwkIEnw98Y3ZgIGnTIoPssULj0tGoqb3dBriS9qft9W8EQDrTOoj7EeRt8I1KJvMiq2G78wAf5H8BXrblQEPCzD/qA7aIhi18kmjcMB2myTFV6eTIJWCAhBCCyTBo1JouIGNyXbfD4jhFMPd08LUg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=UxUsD3At; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="UxUsD3At" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530130; bh=ZkYfC6duc4bUhSQdw6hDQFgF5OjCNUVsbKwgm9O0VTg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UxUsD3AtphZ6XhEwpd+c0jnsK8uHlqLLchrmR5KQ0N3ACLPfztV5uQZNWW+i4IEjs UvpjOgEE4WqXCuxfe45EWqZ+t6mlF5WDIRwJ11g3NJrySPTvfRgJwZBTthcZ7j9W5c X6AIFp5vPspVajirhkqmqQXezYun1/QWmA1ZHbYSvj+Cd6YT58L1cjT5tncINVkg8l lsPM0t9ECzlgRSHQtikuXKfFJqEodSxdLG/umcbIuy5lM5TgYKwyOO90pU/3S8ZoCH 9tTDzE0N2r27+m3/oDvejVLtaI6JrgzJSOo9lTADm2vf8XsTFJMLzUjCl3eM8V+saB FQKx2crK071jg== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id E70A517E151C; Tue, 27 Jan 2026 17:08:49 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3B6D2480065; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:27 +0100 Subject: [PATCH 07/10] ASoC: rockchip: spdif: Add support for set mclk rate 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-7-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Sugar Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2896; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=+Y4VwKdyUFJF0hJYIqqEATW6JI13QJ4cOJ751oD6NdI=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xHWkH++fRqe4XrooNhXaLC7HzhfrgUD+ 2UshGN3quDUPYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMRAAoJENju1/PI O/qacgoP/098DON1WSwaqzcFi+tA0sOpG2JjKGAKxYy9DtTPSyZ/SHWwpyRSWYWRXVw5vFs6GXF BTJSkBGX7NPaI1KEe25LNVweWvg7zpin1Q7Gd/1BcTF2SBQIxECbLtCIeiDAj6rt1v1dU+w7Opz ZnsSbS4PucCjWtMEUIuKHEzeHThA1kCSCEx2TUnnPXsyUASRILsuWpwfQO1TWNoRHA7P8G9VO5T 5obDmGfwprOC5cBX9pV9SbchI2VnNCjcQ7mwLP5D/b/BITK9a1qXhSRu0LYw8cexsZ8GLnH4udj GWK31+6dZnBXAMo5npiJXCpGujDn4/Ltp3v6LP04XzlBy0rXtG5RCOANGTXo7Wd+klNKLBRPMZl hohEhVym7V/wsPTc12yXAVPmlMojo5qgUummfSJMn78zkQsPlo1LiRkLGzj8RRiQGdkpTD5mznh ApynfTi3YavU9g1srmBxt13qnaYkT7c1EOY0aQ9QtLDQaBGXZE+MFqEW/gMgD2zWA8G7zu6Nhhr kUDlJbb/XATVK+r9BNKZ7v/WH+zigcrBPQqbIJk7+0hqM7VGxZ6f5q+hYdlVQ/Vo/++JbLCdtvS /q1MS+qvjpKVcQs1ooLVWSs/oh1Khzvw4x1d5CT+QgAT4lcHpcydwJ4rIDFyS/voXXW4DnXU6Hd T6BvpzxPs1OMgrALGwAosUA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Sugar Zhang Allow setting the mclk rate from the machine driver. Signed-off-by: Sugar Zhang Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 34 +++++++++++++++++++++++----------- sound/soc/rockchip/rockchip_spdif.h | 2 +- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 1a3b0a8e556c..8cf54470f931 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -86,12 +86,15 @@ static int rk_spdif_hw_params(struct snd_pcm_substream = *substream, struct snd_soc_dai *dai) { struct rk_spdif_dev *spdif =3D snd_soc_dai_get_drvdata(dai); + unsigned int mclk_rate =3D clk_get_rate(spdif->mclk); unsigned int val =3D SPDIF_CFGR_HALFWORD_ENABLE; - int srate, mclk; + int bmc, div; int ret; =20 - srate =3D params_rate(params); - mclk =3D srate * 128; + /* bmc =3D 128fs */ + bmc =3D 128 * params_rate(params); + div =3D DIV_ROUND_CLOSEST(mclk_rate, bmc); + val |=3D SPDIF_CFGR_CLK_DIV(div); =20 switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: @@ -107,14 +110,6 @@ static int rk_spdif_hw_params(struct snd_pcm_substream= *substream, return -EINVAL; } =20 - /* Set clock and calculate divider */ - ret =3D clk_set_rate(spdif->mclk, mclk); - if (ret !=3D 0) { - dev_err(spdif->dev, "Failed to set module clock rate: %d\n", - ret); - return ret; - } - ret =3D regmap_update_bits(spdif->regmap, SPDIF_CFGR, SPDIF_CFGR_CLK_DIV_MASK | SPDIF_CFGR_HALFWORD_ENABLE | @@ -177,7 +172,24 @@ static int rk_spdif_dai_probe(struct snd_soc_dai *dai) return 0; } =20 +static int rk_spdif_set_sysclk(struct snd_soc_dai *dai, + int clk_id, unsigned int freq, int dir) +{ + struct rk_spdif_dev *spdif =3D snd_soc_dai_get_drvdata(dai); + int ret; + + if (!freq) + return 0; + + ret =3D clk_set_rate(spdif->mclk, freq); + if (ret) + dev_err(spdif->dev, "Failed to set mclk: %d\n", ret); + + return ret; +} + static const struct snd_soc_dai_ops rk_spdif_dai_ops =3D { + .set_sysclk =3D rk_spdif_set_sysclk, .probe =3D rk_spdif_dai_probe, .hw_params =3D rk_spdif_hw_params, .trigger =3D rk_spdif_trigger, diff --git a/sound/soc/rockchip/rockchip_spdif.h b/sound/soc/rockchip/rockc= hip_spdif.h index d8be9aae5b19..fcc28b6c4f58 100644 --- a/sound/soc/rockchip/rockchip_spdif.h +++ b/sound/soc/rockchip/rockchip_spdif.h @@ -15,7 +15,7 @@ */ #define SPDIF_CFGR_CLK_DIV_SHIFT (16) #define SPDIF_CFGR_CLK_DIV_MASK (0xff << SPDIF_CFGR_CLK_DIV_SHIFT) -#define SPDIF_CFGR_CLK_DIV(x) (x << SPDIF_CFGR_CLK_DIV_SHIFT) +#define SPDIF_CFGR_CLK_DIV(x) ((x-1) << SPDIF_CFGR_CLK_DIV_SHIFT) =20 #define SPDIF_CFGR_HALFWORD_SHIFT 2 #define SPDIF_CFGR_HALFWORD_DISABLE (0 << SPDIF_CFGR_HALFWORD_SHIFT) --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 6B99136075D; Tue, 27 Jan 2026 16:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; cv=none; b=MU4LU051uRlAF8lxez6koeta4YbwduLGWzlsAt9spjSjt6eSfhAy3tMgUPSnll7MFNpluy47Mwq/j+Sd4PyWMUlbTV5tH1Ye/KdJDX/5fJO1pim35m4auo3ldJB6DB0mc5mSq3hJiRWjC6eOCk1m+OCVJDWSAfx8g4ekxBeagBA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; c=relaxed/simple; bh=No+BNRoccsHf+NUA8GkCc9/TqVGutQZy/sMq+w/CZQs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hWrO5I/yExk4gklXLU+er+9aWkFFlgPyTvBXqqQB6Pkhu/bVwygdCypRLtyAlMGHqy+6lLDL4GFWUAnvQM6MYU1kRMa4d07JorMXGN0oxScenktsnI5Cxjr5Wo7Z5K5V0CPq7v/CdW3yRPcRWAlhGaWwo+JrDrWF5rJYQe3X89w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=YnjN0joQ; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="YnjN0joQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530130; bh=No+BNRoccsHf+NUA8GkCc9/TqVGutQZy/sMq+w/CZQs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YnjN0joQp5Te2kW0fRX3E1yejb2/Jm2aJiU6hZ6dg9Wvx0hVu+cP9MUEUMxt5FgEh ZKVXUEyLbVSICmAXcsOgvR4bHtC9icPcazBYZuYM4Aex7mL5AbmVhp4G2sWbfs9mQ0 XoNcNWWrDeOrNyZdRaVKDH7bimCAgKv5GJ/Hv1scotCgyOSyQDnONOS/RMugs1vIaS +eB6uKgOMvM9pwred0Kam0xO6riLusH+CCSPmWiiDbA5rU9pJkH9+d5yy9nejM1Gp6 ptnIy8v08NTcgBQ/BPxgEsbdhr8Mda75rzigwcHYQLBunq01asvXAOJZUWRMn6vDqd jLcpdOI6LihFg== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 03B3717E1543; Tue, 27 Jan 2026 17:08:50 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3CC3B480066; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:28 +0100 Subject: [PATCH 08/10] ASoC: rockchip: spdif: Add support for format S32_LE 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-8-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Sugar Zhang , Zohn Ni X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3109; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=ioPETteiBdv5BnyEvaF4eaVsZWupHXbFC60Wx7hFpEE=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xGS8LOF1xOkuIWQ+M/xPTBCFex19N5CF kioY6tXaCjckokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMRAAoJENju1/PI O/qa9ggQAJj24jtc72bB+skrp5GUfggHW/4PRPyhLGRv4vUSDzAe+wF9bPA5VJxZPLzzf1kXKyY 12/7QiHMZDhi9s8MhSypMgr1kX1enCn+tGLdbvj38A0MOft6etoUB7pGf9urkUCI5MquQxtjkaX xE+W9mU71FL4qdsJMkKCBSsLTjW8TMbMCLtGA6UUJ2cL0tBXdOMkP+4JXX3OF9GGmUVyd/KyuDy nUUocTO0zG95PGuriO77Xit+is88lRwZC6XwqzOdZJ198c6mw3aph7Dda8OJl/SOId7FtB2iI+j gafMZMLKR9Yw6s2afn2wNkrxqYToG+A2NEI6Ft4PLku3kc+NrEWOnuaXbl6nNwZImhZ8DyCfEHU kimwpHv3HaIaLE34d3nRQHep1E8fSxQnLuFO8JvtORkrmryPV00J9xEuGl6gyOIL45Uu4llJtP5 CWJQuqG7d0TPN69Pc+4O1ppPGxzU30ePThPJjmRHWMzU4qJ9UGi+oaV2ZGe9T1NEPFORfu1EOb4 lKMQY2idy99LJEYtfZvNkmvgP28ktjgMgDirkDQWEfuRb1SiPsa7RHT92x3yW51ILFgqwK3F571 W37sf81QV4DiCzN5qK91x9fn267xUwpnmxfxw7Jy1fooFcOL1bb6JluH5YZRiP1d5WJQ2VfLCfJ 36DCfpCX5qyeXuz/IJGQ3Fg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Sugar Zhang Treat 32 bit sample width as if it was 24 bits using only the 24 most significant bits. Co-developed-by: Zohn Ni Signed-off-by: Zohn Ni Signed-off-by: Sugar Zhang [I've merged the channel-swapping fix from Zohn Ni into Sugar Zhang's patch introducing the problem in the first place] Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 22 ++++++++++++++++++++-- sound/soc/rockchip/rockchip_spdif.h | 8 ++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 8cf54470f931..5e9504220a1e 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -99,21 +99,38 @@ static int rk_spdif_hw_params(struct snd_pcm_substream = *substream, switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: val |=3D SPDIF_CFGR_VDW_16; + val |=3D SPDIF_CFGR_ADJ_RIGHT_J; break; case SNDRV_PCM_FORMAT_S20_3LE: val |=3D SPDIF_CFGR_VDW_20; + val |=3D SPDIF_CFGR_ADJ_RIGHT_J; break; case SNDRV_PCM_FORMAT_S24_LE: val |=3D SPDIF_CFGR_VDW_24; + val |=3D SPDIF_CFGR_ADJ_RIGHT_J; + break; + case SNDRV_PCM_FORMAT_S32_LE: + val |=3D SPDIF_CFGR_VDW_24; + val |=3D SPDIF_CFGR_ADJ_LEFT_J; break; default: return -EINVAL; } =20 + /* + * clear MCLK domain logic before setting Fmclk and Fsdo to ensure + * that switching between S16_LE and S32_LE audio does not result + * in accidential channels swap. + */ + regmap_update_bits(spdif->regmap, SPDIF_CFGR, SPDIF_CFGR_CLR_MASK, + SPDIF_CFGR_CLR_EN); + udelay(1); + ret =3D regmap_update_bits(spdif->regmap, SPDIF_CFGR, SPDIF_CFGR_CLK_DIV_MASK | SPDIF_CFGR_HALFWORD_ENABLE | - SDPIF_CFGR_VDW_MASK, val); + SDPIF_CFGR_VDW_MASK | + SPDIF_CFGR_ADJ_MASK, val); =20 return ret; } @@ -203,7 +220,8 @@ static struct snd_soc_dai_driver rk_spdif_dai =3D { .rates =3D SNDRV_PCM_RATE_8000_192000, .formats =3D (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | - SNDRV_PCM_FMTBIT_S24_LE), + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S32_LE), }, .ops =3D &rk_spdif_dai_ops, }; diff --git a/sound/soc/rockchip/rockchip_spdif.h b/sound/soc/rockchip/rockc= hip_spdif.h index fcc28b6c4f58..acf64986a2e0 100644 --- a/sound/soc/rockchip/rockchip_spdif.h +++ b/sound/soc/rockchip/rockchip_spdif.h @@ -17,6 +17,14 @@ #define SPDIF_CFGR_CLK_DIV_MASK (0xff << SPDIF_CFGR_CLK_DIV_SHIFT) #define SPDIF_CFGR_CLK_DIV(x) ((x-1) << SPDIF_CFGR_CLK_DIV_SHIFT) =20 +#define SPDIF_CFGR_CLR_MASK BIT(7) +#define SPDIF_CFGR_CLR_EN BIT(7) +#define SPDIF_CFGR_CLR_DIS 0 + +#define SPDIF_CFGR_ADJ_MASK BIT(3) +#define SPDIF_CFGR_ADJ_LEFT_J BIT(3) +#define SPDIF_CFGR_ADJ_RIGHT_J 0 + #define SPDIF_CFGR_HALFWORD_SHIFT 2 #define SPDIF_CFGR_HALFWORD_DISABLE (0 << SPDIF_CFGR_HALFWORD_SHIFT) #define SPDIF_CFGR_HALFWORD_ENABLE (1 << SPDIF_CFGR_HALFWORD_SHIFT) --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 EE2763612F1; Tue, 27 Jan 2026 16:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530137; cv=none; b=HaZ9FyrS/jCytBZAsyYbl9iftjaJaA/ijdeWjLkk0aN5UBJKgAM8+hwQ3EDne1vREpGtGPz8IrypKUoLwJ+kKmuG/qIa9kjhuBgUG8QyuczUCLcj+DbB0etbLyqO15sK2QGBIDqACVOEKSmUr09jvTfQVaC5tYqW4upSYm669gc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530137; c=relaxed/simple; bh=3VtSJnQCY8pYYz10u2rtmjcw3+lGch8r14/sd2oeLoM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eXMvioD85GTzrOtPxQQFJd03mafQV+9yY1rd9kGi9P2e7lM2pN3NXLDPVFfxQK77g4gOg4tb02gZS8Zl3nU2ygFItnR+5ew2K7H8fA+DUi6JtA4Q2uNTpCHWr6Qdpi4ybLJm6qamHSic96XJXZc4K+Tdhs+WuKNIDa/n8fkquFs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=AMZcF7Db; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="AMZcF7Db" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530130; bh=3VtSJnQCY8pYYz10u2rtmjcw3+lGch8r14/sd2oeLoM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AMZcF7Db4+ei90X1Ypt3yaTX6Wp8Q1PvEvZQDOJOwZn1v7kCj/myDmcfugpz48o/0 PFsNQdCQevfjVw+/gbnpyPMhZ4NIMBM2xelVu1jwdRVwrPwmyqQElKtcjXo9VRivWt jl16KB19+zvAWaVoaU8TMG1jJF4jbNm02JE5HHqZupDgKcQQFN+2a3JpTUrBaGGACh iffa+meMXSMtTsBE0YT/kse46Zxe860Gjbr3+7GajsdTBQlqqpCqaHXnJReCqxaeB8 QyAXM9FwGvyl4PDH//tvxysTOyhtYzVsvJXJiS1h8EKqUZ9JPSiZMfNMRRw7Y60sNH matsdC6tYzLxA== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0DB1917E15C1; Tue, 27 Jan 2026 17:08:50 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3E31D480067; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:29 +0100 Subject: [PATCH 09/10] ASoC: rockchip: spdif: Fill IEC958 CS info per params 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-9-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Sugar Zhang X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4751; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=7ODBVlljcUJVeN1AM0slvyR3nttNW9uIUEky/t7o4ww=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xE5aRuIiinMFkY7vij1peupa2RoP78o3 Z2B695qMsqp04kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMRAAoJENju1/PI O/qaQUIP/3fFK3B0NjYUQpmxp3knRgQiGQPi/fd8eQC6Xd4wxKKQZ1SgEq3KLryeRpN7hOlIbxq /+DsloFnmsC9Zew5CXmwkvuYvRaPYabsxDNe4B2E7glrwj0T5EZxZBnKPK4dQNEDVvQTJ0Iu0OE 4JTGGHuAnIJLyzsZrnkxIjQ6nUNluOTFhua8HsYSz0RUQUaP13XibmGLzhURuiIf6GAJBaRwKLs kfzMAiREk+ZIzjmOE8w3IUqwRKI14vUkQu4yW9c8wVvBryUfMoEzWIgOiPksBZaqTfDKReOVAby yVxX8VLkHKmo7B8/KMUHElLXQ3Qx7dBrHoXvKoafj0flj5fDjXto+8Acc+Vv8YFY8JSaALMPMvq Q/zlc+Uo4aL2OxkHqTTDHkPBxncPubYqfuB/fEn/jxJ0o2i647EoeU8/+rc3wGcZMhGsBWRRzGW 6j/KzTJVcS+1MEJRKrcR8qujngTOG0EwfbbOBGNBB8tGxFCFTMJlVqWk4WcQwYn22Alh1eXTrKM rxrAWVyXpxl+xluJiZPd5tZ1t5WE7x9PWVP9rEjxQL39IuYdqlK7pp40P9Za5RUgqKG7Kyrh9dV ABOrKQUfdAnEQk1d1HUtVCltxsZX5h0mwgchwKu6Z1HlH9A58y0fJy7Gj1PvwV4D2KdMTTDULzR LCcSiGzHIpKWLvZcexCoeQw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Sugar Zhang Add support to fill IEC958 channel status information. Signed-off-by: Sugar Zhang Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/Kconfig | 1 + sound/soc/rockchip/rockchip_spdif.c | 45 +++++++++++++++++++++++++++++++++= ---- sound/soc/rockchip/rockchip_spdif.h | 8 +++++++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/sound/soc/rockchip/Kconfig b/sound/soc/rockchip/Kconfig index bd210fafe9fe..391ce2225fde 100644 --- a/sound/soc/rockchip/Kconfig +++ b/sound/soc/rockchip/Kconfig @@ -41,6 +41,7 @@ config SND_SOC_ROCKCHIP_SAI =20 config SND_SOC_ROCKCHIP_SPDIF tristate "Rockchip SPDIF Device Driver" + select SND_PCM_IEC958 select SND_SOC_GENERIC_DMAENGINE_PCM help Say Y or M if you want to add support for SPDIF driver for diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 5e9504220a1e..2c804d25c547 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -16,6 +16,7 @@ #include #include #include +#include #include =20 #include "rockchip_spdif.h" @@ -27,7 +28,25 @@ enum rk_spdif_type { RK_SPDIF_RK3366, }; =20 -#define RK3288_GRF_SOC_CON2 0x24c +/* + * | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + * CS0: | Mode | d | c | b | a | + * CS1: | Category Code | + * CS2: | Channel Number | Source Number | + * CS3: | Clock Accuracy | Sample Freq | + * CS4: | Ori Sample Freq | Word Length | + * CS5: | | CGMS-A | + * CS6~CS23: Reserved + * + * a: use of channel status block + * b: linear PCM identification: 0 for lpcm, 1 for nlpcm + * c: copyright information + * d: additional format information + */ +#define CS_BYTE 6 +#define CS_FRAME(c) ((c) << 16 | (c)) + +#define RK3288_GRF_SOC_CON2 0x24c =20 struct rk_spdif_dev { struct device *dev; @@ -88,8 +107,20 @@ static int rk_spdif_hw_params(struct snd_pcm_substream = *substream, struct rk_spdif_dev *spdif =3D snd_soc_dai_get_drvdata(dai); unsigned int mclk_rate =3D clk_get_rate(spdif->mclk); unsigned int val =3D SPDIF_CFGR_HALFWORD_ENABLE; - int bmc, div; - int ret; + int bmc, div, ret, i; + u16 *fc; + u8 cs[CS_BYTE]; + + ret =3D snd_pcm_create_iec958_consumer_hw_params(params, cs, sizeof(cs)); + if (ret < 0) + return ret; + + fc =3D (u16 *)cs; + for (i =3D 0; i < CS_BYTE / 2; i++) + regmap_write(spdif->regmap, SPDIF_CHNSRn(i), CS_FRAME(fc[i])); + + regmap_update_bits(spdif->regmap, SPDIF_CFGR, SPDIF_CFGR_CSE_MASK, + SPDIF_CFGR_CSE_EN); =20 /* bmc =3D 128fs */ bmc =3D 128 * params_rate(params); @@ -239,6 +270,9 @@ static bool rk_spdif_wr_reg(struct device *dev, unsigne= d int reg) case SPDIF_INTCR: case SPDIF_XFER: case SPDIF_SMPDR: + case SPDIF_VLDFRn(0) ... SPDIF_VLDFRn(11): + case SPDIF_USRDRn(0) ... SPDIF_USRDRn(11): + case SPDIF_CHNSRn(0) ... SPDIF_CHNSRn(11): return true; default: return false; @@ -254,6 +288,9 @@ static bool rk_spdif_rd_reg(struct device *dev, unsigne= d int reg) case SPDIF_INTSR: case SPDIF_XFER: case SPDIF_SMPDR: + case SPDIF_VLDFRn(0) ... SPDIF_VLDFRn(11): + case SPDIF_USRDRn(0) ... SPDIF_USRDRn(11): + case SPDIF_CHNSRn(0) ... SPDIF_CHNSRn(11): return true; default: return false; @@ -276,7 +313,7 @@ static const struct regmap_config rk_spdif_regmap_confi= g =3D { .reg_bits =3D 32, .reg_stride =3D 4, .val_bits =3D 32, - .max_register =3D SPDIF_SMPDR, + .max_register =3D SPDIF_VERSION, .writeable_reg =3D rk_spdif_wr_reg, .readable_reg =3D rk_spdif_rd_reg, .volatile_reg =3D rk_spdif_volatile_reg, diff --git a/sound/soc/rockchip/rockchip_spdif.h b/sound/soc/rockchip/rockc= hip_spdif.h index acf64986a2e0..b837b1f8d57f 100644 --- a/sound/soc/rockchip/rockchip_spdif.h +++ b/sound/soc/rockchip/rockchip_spdif.h @@ -21,6 +21,10 @@ #define SPDIF_CFGR_CLR_EN BIT(7) #define SPDIF_CFGR_CLR_DIS 0 =20 +#define SPDIF_CFGR_CSE_MASK BIT(6) +#define SPDIF_CFGR_CSE_EN BIT(6) +#define SPDIF_CFGR_CSE_DIS 0 + #define SPDIF_CFGR_ADJ_MASK BIT(3) #define SPDIF_CFGR_ADJ_LEFT_J BIT(3) #define SPDIF_CFGR_ADJ_RIGHT_J 0 @@ -64,5 +68,9 @@ #define SPDIF_INTSR (0x0010) #define SPDIF_XFER (0x0018) #define SPDIF_SMPDR (0x0020) +#define SPDIF_VLDFRn(x) (0x0060 + (x) * 4) +#define SPDIF_USRDRn(x) (0x0090 + (x) * 4) +#define SPDIF_CHNSRn(x) (0x00c0 + (x) * 4) +#define SPDIF_VERSION (0x01c0) =20 #endif /* _ROCKCHIP_SPDIF_H */ --=20 2.51.0 From nobody Sat Feb 7 06:55:10 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 6BCF53612E7; Tue, 27 Jan 2026 16:08:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; cv=none; b=Ng6uv1zJCNKOFaWisiaFVIY3KUlh133Kv6tiB0JL8a7YRsbmP7H1B6Ze4pRqdZf7Jfy3U6npMR52nEk6V7DtNs4OTbhuV8coiBDru3EXfZOUECieqkwJZig7IXU4CZ9tVo6PF3KsppWTNaHbRvgOPUaglhmW9wuGYumNWgmB3hU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769530136; c=relaxed/simple; bh=24zrfV+l62Jtv7PtKy08Y2/hOj8Lfc/0IFp2rDE01pk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZYqF+dtFu8viPmDjWYv5xiuoUA2Sc5O7L8KN/jSzPmCO75SPJG09tlTfJ9MNU6kpsmsU9pSrGm8Gi4m1ZObQXKiWgj/0XcKBPWAvjkGG+rreFs5EsnqgzhifcxOyfSw+dWXIm2dcIvYWtWRLdfhUpBD7D4v6HujE5g8lFuHa5tA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=AIMpQFqy; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="AIMpQFqy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1769530130; bh=24zrfV+l62Jtv7PtKy08Y2/hOj8Lfc/0IFp2rDE01pk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AIMpQFqy1A9CphbiCEHWJJ5CW7NX/U+hqS6QDO81sGxuL/VI7sMWAMwxw94VaMeff Tx+MdNwpwKxtZzNIS627NzwbNcjWFwVp9QDM4C05cq1+tj9q99YPsm9FkBM5NeG4PD /fc9Lr12JrYRezxG0uPLwSQ3LwvvACC67bxu4n4hZauJnYj0OXy7RfmdGWEhTK09RI jM3FZvOGfv6kejiqtvlwNezEscGpUQ8HjPns/Fle2134WF9XZEeQLfLQuCiBvkRkx+ meCVEjegbv2xaxAMFAEk8yxnXUGoFnZXklDELzWqGXQ57F0PSatql3ef0/INjzIg/N 1I1JzJyjheaTw== Received: from jupiter.universe (dyndsl-091-248-210-071.ewe-ip-backbone.de [91.248.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 079F617E157E; Tue, 27 Jan 2026 17:08:50 +0100 (CET) Received: by jupiter.universe (Postfix, from userid 1000) id 3F913480068; Tue, 27 Jan 2026 17:08:49 +0100 (CET) From: Sebastian Reichel Date: Tue, 27 Jan 2026 17:08:30 +0100 Subject: [PATCH 10/10] ASoC: rockchip: spdif: Convert to FIELD_PREP 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: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-10-a7c547072bbb@collabora.com> References: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> In-Reply-To: <20260127-rockchip-spdif-cleanup-and-bsp-sync-v1-0-a7c547072bbb@collabora.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Heiko Stuebner Cc: Alexey Charkov , Sjoerd Simons , linux-sound@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6017; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=24zrfV+l62Jtv7PtKy08Y2/hOj8Lfc/0IFp2rDE01pk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGl44xHe4fXHIaWZfyita0882SHV00TAzl1yz ZUBWRxqtSVRyYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJpeOMRAAoJENju1/PI O/qagy8P/iGctAuuYrXQgiNUyfLVFmTpnlfbt6UstF5KNgxMLJWoDKOKZmRcW6e3AVu2bEHPClZ wZ5oGVEbLOGKOjPE6Ua7mNuutkkXvZ1/pVxmHfI3b6i53nW9RzajDDSvKHokV0fbV69jbiHBkdX k/tEmCdisuTxW7C5e6KvGkUDk74GcGKiQYQU6VBY+nzeAgZ6/YWGNhmHm36BhA1stAhX3awW0Qf jo8leI8eu++oRLz0zHudqf4AuOgNqoaVLG1TIMgiGQlH0JMTfsUANu3temTx8MDlog/eNKO5h2s 6Rgfckjv6Ax+IYTqqVk45z7oHptuUWcsxI0tQpe5E6AruuJksqPCkEnPfXEp7wMna2QposllLIb zfVgQ6XkKmwgSn2Ea0XzC47ciI8DO6hcVY6IqBGrzZ645AmYRGqM/Sutt6mxZqrtHlMHQU8yrRD xISfyBvb6cDgLaqbmIMptvUf1Hjn2HwWezv1Cs+WHshEk5sJoHX6qKxmkOjRair+Y3Z4+4qlGnt fLkCC+PkFCZTor2h51r4USUdaDRLqZ8VVWHIdvoe/e5aAjjMyjCnKwn4n0X1FYAbTRrFwBnT8wH ee0sfTRMOdZrpBb5nPlDf9fu3froSqcjZZ7al7nDFCoc2wCzBiO5O1V/5aEgVlunI8WaKTQNZmN DdFMB0PcnxdsRYw1YbdMn+Q== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Convert the driver to use FIELD_PREP to increase readability. This also fixes an issue that the SDPIF_CFGR_VDW_MASK was wrong, which didn't have any effects as the only user in the driver updates the other bits at the same time. Signed-off-by: Sebastian Reichel --- sound/soc/rockchip/rockchip_spdif.c | 12 ++++----- sound/soc/rockchip/rockchip_spdif.h | 53 +++++++++++++++++----------------= ---- 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockc= hip_spdif.c index 2c804d25c547..d0b9967cfe4d 100644 --- a/sound/soc/rockchip/rockchip_spdif.c +++ b/sound/soc/rockchip/rockchip_spdif.c @@ -5,7 +5,7 @@ * * Copyright (c) 2014 Rockchip Electronics Co. Ltd. * Author: Jianqun - * Copyright (c) 2015 Collabora Ltd. + * Copyright (c) 2015-2026 Collabora Ltd. * Author: Sjoerd Simons */ =20 @@ -159,7 +159,7 @@ static int rk_spdif_hw_params(struct snd_pcm_substream = *substream, =20 ret =3D regmap_update_bits(spdif->regmap, SPDIF_CFGR, SPDIF_CFGR_CLK_DIV_MASK | - SPDIF_CFGR_HALFWORD_ENABLE | + SPDIF_CFGR_HALFWORD_MASK | SDPIF_CFGR_VDW_MASK | SPDIF_CFGR_ADJ_MASK, val); =20 @@ -177,7 +177,7 @@ static int rk_spdif_trigger(struct snd_pcm_substream *s= ubstream, case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: ret =3D regmap_update_bits(spdif->regmap, SPDIF_DMACR, - SPDIF_DMACR_TDE_ENABLE | + SPDIF_DMACR_TDE_MASK | SPDIF_DMACR_TDL_MASK, SPDIF_DMACR_TDE_ENABLE | SPDIF_DMACR_TDL(16)); @@ -186,21 +186,21 @@ static int rk_spdif_trigger(struct snd_pcm_substream = *substream, return ret; =20 ret =3D regmap_update_bits(spdif->regmap, SPDIF_XFER, - SPDIF_XFER_TXS_START, + SPDIF_XFER_TXS_MASK, SPDIF_XFER_TXS_START); break; case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: ret =3D regmap_update_bits(spdif->regmap, SPDIF_DMACR, - SPDIF_DMACR_TDE_ENABLE, + SPDIF_DMACR_TDE_MASK, SPDIF_DMACR_TDE_DISABLE); =20 if (ret !=3D 0) return ret; =20 ret =3D regmap_update_bits(spdif->regmap, SPDIF_XFER, - SPDIF_XFER_TXS_START, + SPDIF_XFER_TXS_MASK, SPDIF_XFER_TXS_STOP); break; default: diff --git a/sound/soc/rockchip/rockchip_spdif.h b/sound/soc/rockchip/rockc= hip_spdif.h index b837b1f8d57f..ec33295e2512 100644 --- a/sound/soc/rockchip/rockchip_spdif.h +++ b/sound/soc/rockchip/rockchip_spdif.h @@ -2,7 +2,7 @@ /* * ALSA SoC Audio Layer - Rockchip SPDIF transceiver driver * - * Copyright (c) 2015 Collabora Ltd. + * Copyright (c) 2015-2026 Collabora Ltd. * Author: Sjoerd Simons */ =20 @@ -13,53 +13,50 @@ * CFGR * transfer configuration register */ -#define SPDIF_CFGR_CLK_DIV_SHIFT (16) -#define SPDIF_CFGR_CLK_DIV_MASK (0xff << SPDIF_CFGR_CLK_DIV_SHIFT) -#define SPDIF_CFGR_CLK_DIV(x) ((x-1) << SPDIF_CFGR_CLK_DIV_SHIFT) +#define SPDIF_CFGR_CLK_DIV_MASK GENMASK(23, 16) +#define SPDIF_CFGR_CLK_DIV(x) FIELD_PREP(SPDIF_CFGR_CLK_DIV_MASK, x-1) =20 #define SPDIF_CFGR_CLR_MASK BIT(7) -#define SPDIF_CFGR_CLR_EN BIT(7) -#define SPDIF_CFGR_CLR_DIS 0 +#define SPDIF_CFGR_CLR_EN FIELD_PREP(SPDIF_CFGR_CLR_MASK, 1) +#define SPDIF_CFGR_CLR_DIS FIELD_PREP(SPDIF_CFGR_CLR_MASK, 0) =20 #define SPDIF_CFGR_CSE_MASK BIT(6) -#define SPDIF_CFGR_CSE_EN BIT(6) -#define SPDIF_CFGR_CSE_DIS 0 +#define SPDIF_CFGR_CSE_EN FIELD_PREP(SPDIF_CFGR_CSE_MASK, 1) +#define SPDIF_CFGR_CSE_DIS FIELD_PREP(SPDIF_CFGR_CSE_MASK, 0) =20 #define SPDIF_CFGR_ADJ_MASK BIT(3) -#define SPDIF_CFGR_ADJ_LEFT_J BIT(3) -#define SPDIF_CFGR_ADJ_RIGHT_J 0 +#define SPDIF_CFGR_ADJ_LEFT_J FIELD_PREP(SPDIF_CFGR_ADJ_MASK, 1) +#define SPDIF_CFGR_ADJ_RIGHT_J FIELD_PREP(SPDIF_CFGR_ADJ_MASK, 0) =20 -#define SPDIF_CFGR_HALFWORD_SHIFT 2 -#define SPDIF_CFGR_HALFWORD_DISABLE (0 << SPDIF_CFGR_HALFWORD_SHIFT) -#define SPDIF_CFGR_HALFWORD_ENABLE (1 << SPDIF_CFGR_HALFWORD_SHIFT) +#define SPDIF_CFGR_HALFWORD_MASK BIT(2) +#define SPDIF_CFGR_HALFWORD_DISABLE FIELD_PREP(SPDIF_CFGR_HALFWORD_MASK, 0) +#define SPDIF_CFGR_HALFWORD_ENABLE FIELD_PREP(SPDIF_CFGR_HALFWORD_MASK, 1) =20 -#define SPDIF_CFGR_VDW_SHIFT 0 -#define SPDIF_CFGR_VDW(x) (x << SPDIF_CFGR_VDW_SHIFT) -#define SDPIF_CFGR_VDW_MASK (0xf << SPDIF_CFGR_VDW_SHIFT) +#define SDPIF_CFGR_VDW_MASK GENMASK(1, 0) +#define SPDIF_CFGR_VDW(x) FIELD_PREP(SDPIF_CFGR_VDW_MASK, x) =20 -#define SPDIF_CFGR_VDW_16 SPDIF_CFGR_VDW(0x0) -#define SPDIF_CFGR_VDW_20 SPDIF_CFGR_VDW(0x1) -#define SPDIF_CFGR_VDW_24 SPDIF_CFGR_VDW(0x2) +#define SPDIF_CFGR_VDW_16 SPDIF_CFGR_VDW(0x0) +#define SPDIF_CFGR_VDW_20 SPDIF_CFGR_VDW(0x1) +#define SPDIF_CFGR_VDW_24 SPDIF_CFGR_VDW(0x2) =20 /* * DMACR * DMA control register */ -#define SPDIF_DMACR_TDE_SHIFT 5 -#define SPDIF_DMACR_TDE_DISABLE (0 << SPDIF_DMACR_TDE_SHIFT) -#define SPDIF_DMACR_TDE_ENABLE (1 << SPDIF_DMACR_TDE_SHIFT) +#define SPDIF_DMACR_TDE_MASK BIT(5) +#define SPDIF_DMACR_TDE_DISABLE FIELD_PREP(SPDIF_DMACR_TDE_MASK, 0) +#define SPDIF_DMACR_TDE_ENABLE FIELD_PREP(SPDIF_DMACR_TDE_MASK, 1) =20 -#define SPDIF_DMACR_TDL_SHIFT 0 -#define SPDIF_DMACR_TDL(x) ((x) << SPDIF_DMACR_TDL_SHIFT) -#define SPDIF_DMACR_TDL_MASK (0x1f << SPDIF_DMACR_TDL_SHIFT) +#define SPDIF_DMACR_TDL_MASK GENMASK(4, 0) +#define SPDIF_DMACR_TDL(x) FIELD_PREP(SPDIF_DMACR_TDL_MASK, x) =20 /* * XFER * Transfer control register */ -#define SPDIF_XFER_TXS_SHIFT 0 -#define SPDIF_XFER_TXS_STOP (0 << SPDIF_XFER_TXS_SHIFT) -#define SPDIF_XFER_TXS_START (1 << SPDIF_XFER_TXS_SHIFT) +#define SPDIF_XFER_TXS_MASK BIT(0) +#define SPDIF_XFER_TXS_STOP FIELD_PREP(SPDIF_XFER_TXS_MASK, 0) +#define SPDIF_XFER_TXS_START FIELD_PREP(SPDIF_XFER_TXS_MASK, 1) =20 #define SPDIF_CFGR (0x0000) #define SPDIF_SDBLR (0x0004) --=20 2.51.0