From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 230BE3A0B11 for ; Fri, 20 Mar 2026 14:49:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018168; cv=none; b=IXDYpMh3Cz9RAlgHHeH3J1ZqYPSxDF1dEtbdrp1J+A5uIFQYns5h+AX243lkWHMKwYU8VBlXtanrjdbKSnZHdZ3f64dWB07CvI9xVXNn1KRlZPKiuqJo1aBxA+HRQm6iIByk/Fx2fKAJgFSMao7pXvaJjVcwJD8VFGOT4pOMNvM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018168; c=relaxed/simple; bh=ioMmjxhpKgEGbU9Q5ZhuNjYP6+vM1Ed4pEa/HmaRSl8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YebZ6S882EJbZE4R9fegBsgifWpkwQGJ+YKNM9iyBdoFk5EWQQcTV6Muvv1kdNYD9K9Q/0bzvQg3Q3TFP6s7rSXG7Oa3rOCm7rUHWY/GBHBIa0w0nJ/qJs6whTVJ9ocHCC+i4/uCCFjVxxhDmRSz7edAga3zi29gV4F03MyLEr4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=o3PZlQwQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TcUDIYWP; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="o3PZlQwQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TcUDIYWP" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K2XjX7331583 for ; Fri, 20 Mar 2026 14:49:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=NKjWGmdRv65 20W4OaNXC1TctOioozKWeG4nDgD3XJX8=; b=o3PZlQwQO9IaP04i4zJIwMNcNc1 edwARPEPwIoKRydap85PblMumF6blqYfYpjc2BLZP/WHvVC3XXg5qaXHdXdyytcP G8ki5J5AFmJqp0iYdgJzhP1y3zgDV06Myv0oQT/qhc0xTg7t5TMtfj/CxCCoKZOb gvAM4Ycxo3cdKOey1k68+kh1gfOP9FQAmC2QEM56eD0NKwXIfzOFUqIxGouWiuQm ziwXzKRcxIkYji86xrF56zrW5+OpSqrKC4Tkn1l/6ZR+ElgSVzijguUw2w4Y00Tt Kz+iyP1L/PEwH77EnMX98pTd8JXBWVnWm7CTRc0pX1UXiQNF8YncdE0bCoA== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k083pb1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:25 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-5093b92f327so120854101cf.1 for ; Fri, 20 Mar 2026 07:49:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018164; x=1774622964; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NKjWGmdRv6520W4OaNXC1TctOioozKWeG4nDgD3XJX8=; b=TcUDIYWP1Oj7idnqgzS4WwRD71KSfpwI2ZoWpaPBCM5sGB2hQQwwhNKv9pDH+IFKgR TRgJZI7rbDocm6qHNFtADyH2Ua2QqRofK+flekxOmA04u9nbe4LmzJwaW/FGwXL/W3fa 5PiPmXEaW6Dd6dYCtH8VAJODu2X9YaJTy38qn+PQb4GeZYRGJFEjVhvKhGh3ffd6jtCR SxbL/+3mKHT/o31LPIzWM/Mkq2j+NBGxgb3j/qMXk0O7Kl38lUQxrY3VX4qyPzErl/vp vP0zANIWlxOnN9W4HDctuXzO/GicR6TGZFE1rI/MKk/qdFkmSrMn4u1JqiNI311T/9fB dZdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018164; x=1774622964; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NKjWGmdRv6520W4OaNXC1TctOioozKWeG4nDgD3XJX8=; b=N63I4AWthqcbyDjVIsjs6pBe98zYXvWhAX8RUsOro/OLFQijs0j8w/p1In3Zv8dXty wUVP8ciYZnloq5OjBdV9szj0gekuJ0nm/UbzPsKan/+klzPJguLZwPZ8MwEJFQAaMV1v 4hizCf3UC7mJrPFSL9PN8X1QLcPbbTdTNKQiTkJgCSTd4wLDyF6ebGukRxbUhb5qx5sZ hLn0/UQZzxSlo7gysimT9roC4DOpsZg12+AEoSicjHC7P1M6tUyJnGCzq5MxmfMuzAu2 0yCfiicI5hI/y/TfMO07uDBe9a5LDXMG0wnVOSRJjlATs6ZGms6FR5cX1u1eo6RD9o/y Ml+g== X-Forwarded-Encrypted: i=1; AJvYcCUoVz2NG0ppYk7MQdjFM8vV6W1zwXqJ0KD8DpqOhbAbVT8C+tWZhBx4eJBGWzjADO9lvfIQBWPWOPE4r1A=@vger.kernel.org X-Gm-Message-State: AOJu0YyBcHzPCfV67BRxKC6ezMUz1DUcZvQcpJcpZLIqAqVEiA1TsDRB IaR3gbA64goC2FZJy3PElxbfEKZ7vbOBRt1GJzbjznLd394XqwVblppvt9BP9r0+/w5bK8nJu+q 3r3J1qg0+VfTDVsfFS8Udv0RKQkaga7meUOy2dFQpDnuLEmjnr62F9MkgkQOUMAG6TXc= X-Gm-Gg: ATEYQzxut3o2fXSa5SZBxheT+CfBwpAaNPJX2c+Ck2UQGBTFlY7Yhaju0ff2CDAxC3m SxhUNBgxqLH+eNK5DojLVtUAoqHejZtw99qfAYa4RGrDBQ4mRFYoX5flR+JbfxT2HYa5GgqRDVB 5PeHLKnztKHnnho2RrSZW6P1wOPYE3dv7m8aObf8OlEM2lQmnmnvyowfSlBRCvxO5JL8VBrY/wc 5vu0Ki5wDovqC/TjN+yzpaWLKYJnb5I0o9SQzvxsspuBpkKLMZFTYxd6zRqCOn5Oo4B/ZxezuQr 3m/BNjX+osMB5BdaSa1QVU474AN296d7/HcQ5dIeQBLtUQe7ml8TEyajGORP3Y53aUVPY5YwhsS YX9CGIevdGEnSG5Mqge9Pi6foOaK2uGTqvk3P1p/iKTOxouB4+r0+Hrg= X-Received: by 2002:a05:622a:1b8c:b0:50b:4001:ae12 with SMTP id d75a77b69052e-50b4001b068mr19927641cf.46.1774018164482; Fri, 20 Mar 2026 07:49:24 -0700 (PDT) X-Received: by 2002:a05:622a:1b8c:b0:50b:4001:ae12 with SMTP id d75a77b69052e-50b4001b068mr19927011cf.46.1774018163780; Fri, 20 Mar 2026 07:49:23 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:23 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 01/13] ASoC: qcom: q6apm: move component registration to unmanaged version Date: Fri, 20 Mar 2026 14:49:06 +0000 Message-ID: <20260320144918.1685838-2-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=MYhhep/f c=1 sm=1 tr=0 ts=69bd5e75 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=ZjLH_7kMUelE1Q3ziugA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-ORIG-GUID: Hxf277Rv470gq82BsXndNmB-_2sEHi7n X-Proofpoint-GUID: Hxf277Rv470gq82BsXndNmB-_2sEHi7n X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX/NjjfdwG6Ygn o//suxBNp1rN116Pw0EI+AKOC9tbPNqioI7/eAIf9724GVZtuuv7AaJRelZC4jrkPEmmwxrFwW5 uNhRJX9D68P8bcbFkUyWalSaZQfiPk3xlK/iyE2fNsGgeQXWG9+ME5Dgw+4inh+e9Nkyo2dLQjX SNufzSgIiZ6XC6BusE2K1j/1Xwda4RjK8NvQNH4dX6+UEjYB/3ERBcU5s9yLFQAMSvvAZmHQhPh v7Nr6kyeCLD5BdZ7C0oC6GJcYlEgKU7/f7RKktLzJezN78P0zPdXgIYk3rrey9/9jrJ47AAGO2/ cgOejVz2ZoR8+JBP0hcGOF6Y3u6ENnRlqCxFiiYQW5AB/5DzN6Rj+rAl8DxfHzPl1C/HRk++BbH ek+JEz7spT1n5u7RQ7tMZsphRUlIBdMa9UHEALWUUk8rAmFHXdqQbfB5sAw481DAAQeK6yrdo/H pKaf6rRxJt9SyckJdiw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" q6apm component registers dais dynamically from ASoC toplology, which are allocated using device managed version apis. Allocating both component and dynamic dais using managed version could lead to incorrect free ordering, dai will be freed while component still holding references to it. Fix this issue by moving component to unmanged version so that the dai pointers are only freeded after the component is removed. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BUG: KASAN: slab-use-after-free in snd_soc_del_component_unlocked+0x3d4/0x4= 00 [snd_soc_core] Read of size 8 at addr ffff00084493a6e8 by task kworker/u48:0/3426 Tainted: [W]=3DWARN Hardware name: LENOVO 21N2ZC5PUS/21N2ZC5PUS, BIOS N42ET57W (1.31 ) 08/08/20= 24 Workqueue: pdr_notifier_wq pdr_notifier_work [pdr_interface] Call trace: show_stack+0x28/0x7c (C) dump_stack_lvl+0x60/0x80 print_report+0x160/0x4b4 kasan_report+0xac/0xfc __asan_report_load8_noabort+0x20/0x34 snd_soc_del_component_unlocked+0x3d4/0x400 [snd_soc_core] snd_soc_unregister_component_by_driver+0x50/0x88 [snd_soc_core] devm_component_release+0x30/0x5c [snd_soc_core] devres_release_all+0x13c/0x210 device_unbind_cleanup+0x20/0x190 device_release_driver_internal+0x350/0x468 device_release_driver+0x18/0x30 bus_remove_device+0x1a0/0x35c device_del+0x314/0x7f0 device_unregister+0x20/0xbc apr_remove_device+0x5c/0x7c [apr] device_for_each_child+0xd8/0x160 apr_pd_status+0x7c/0xa8 [apr] pdr_notifier_work+0x114/0x240 [pdr_interface] process_one_work+0x500/0xb70 worker_thread+0x630/0xfb0 kthread+0x370/0x6c0 ret_from_fork+0x10/0x20 Allocated by task 77: kasan_save_stack+0x40/0x68 kasan_save_track+0x20/0x40 kasan_save_alloc_info+0x44/0x58 __kasan_kmalloc+0xbc/0xdc __kmalloc_node_track_caller_noprof+0x1f4/0x620 devm_kmalloc+0x7c/0x1c8 snd_soc_register_dai+0x50/0x4f0 [snd_soc_core] soc_tplg_pcm_elems_load+0x55c/0x1eb8 [snd_soc_core] snd_soc_tplg_component_load+0x4f8/0xb60 [snd_soc_core] audioreach_tplg_init+0x124/0x1fc [snd_q6apm] q6apm_audio_probe+0x10/0x1c [snd_q6apm] snd_soc_component_probe+0x5c/0x118 [snd_soc_core] soc_probe_component+0x44c/0xaf0 [snd_soc_core] snd_soc_bind_card+0xad0/0x2370 [snd_soc_core] snd_soc_register_card+0x3b0/0x4c0 [snd_soc_core] devm_snd_soc_register_card+0x50/0xc8 [snd_soc_core] x1e80100_platform_probe+0x208/0x368 [snd_soc_x1e80100] platform_probe+0xc0/0x188 really_probe+0x188/0x804 __driver_probe_device+0x158/0x358 driver_probe_device+0x60/0x190 __device_attach_driver+0x16c/0x2a8 bus_for_each_drv+0x100/0x194 __device_attach+0x174/0x380 device_initial_probe+0x14/0x20 bus_probe_device+0x124/0x154 deferred_probe_work_func+0x140/0x220 process_one_work+0x500/0xb70 worker_thread+0x630/0xfb0 kthread+0x370/0x6c0 ret_from_fork+0x10/0x20 Freed by task 3426: kasan_save_stack+0x40/0x68 kasan_save_track+0x20/0x40 __kasan_save_free_info+0x4c/0x80 __kasan_slab_free+0x78/0xa0 kfree+0x100/0x4a4 devres_release_all+0x144/0x210 device_unbind_cleanup+0x20/0x190 device_release_driver_internal+0x350/0x468 device_release_driver+0x18/0x30 bus_remove_device+0x1a0/0x35c device_del+0x314/0x7f0 device_unregister+0x20/0xbc apr_remove_device+0x5c/0x7c [apr] device_for_each_child+0xd8/0x160 apr_pd_status+0x7c/0xa8 [apr] pdr_notifier_work+0x114/0x240 [pdr_interface] process_one_work+0x500/0xb70 worker_thread+0x630/0xfb0 kthread+0x370/0x6c0 ret_from_fork+0x10/0x20 Fixes: 5477518b8a0e ("ASoC: qdsp6: audioreach: add q6apm support") Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index 970b08c89bb3..fece0e3def23 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -747,7 +747,7 @@ static int apm_probe(gpr_device_t *gdev) =20 q6apm_get_apm_state(apm); =20 - ret =3D devm_snd_soc_register_component(dev, &q6apm_audio_component, NULL= , 0); + ret =3D snd_soc_register_component(dev, &q6apm_audio_component, NULL, 0); if (ret < 0) { dev_err(dev, "failed to register q6apm: %d\n", ret); return ret; @@ -756,6 +756,11 @@ static int apm_probe(gpr_device_t *gdev) return of_platform_populate(dev->of_node, NULL, NULL, dev); } =20 +static void apm_remove(gpr_device_t *gdev) +{ + snd_soc_unregister_component(&gdev->dev); +} + struct audioreach_module *q6apm_find_module_by_mid(struct q6apm_graph *gra= ph, uint32_t mid) { struct audioreach_graph_info *info =3D graph->info; @@ -820,6 +825,7 @@ MODULE_DEVICE_TABLE(of, apm_device_id); =20 static gpr_driver_t apm_driver =3D { .probe =3D apm_probe, + .remove =3D apm_remove, .gpr_callback =3D apm_callback, .driver =3D { .name =3D "qcom-apm", --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 A95593C3BE7 for ; Fri, 20 Mar 2026 14:49:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018168; cv=none; b=JnV0rYpiMfy9Ax/AyNc6bYVgukrSxfun1J3HFRyw2IOrwYYMJY2esPZUeZRx80jkJCv9QTPEqGXqL0HYA7hMrYUzmussAfbOaeNelYy6WrREWUOgCfIbIJHpqRlP9fZJAGADGjE/4JKNxekpyH19M1HrOLc1r3q1jCscwKNMyv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018168; c=relaxed/simple; bh=sxyYbj3zxGyfRpI3tYXCbVwGVDNatdwD9Ux1a88/YYo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=onGHq3W03lVGw/uIlcT6xH7SMHj9VAbB98qB+FT4Ip7zQM5IssswehUc11FlQJjwtuNFGSoUu0QiZ3Um4lCz82V2DiX753nEahG+L8PbzAd18OS4wniGOl01GmInQ2JgOwN2iTTxOEp7qzUSA/sItusRx3XDHIO7bZgGVirI9hc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=FQ+aaAc7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dyamLq/C; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="FQ+aaAc7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dyamLq/C" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEeK4l989439 for ; Fri, 20 Mar 2026 14:49:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=oI+beZBCKKS Zpk28i+hefm0WpeZ3W9cTVjnimZxiaSY=; b=FQ+aaAc7h9ZrQOKWPjwGC9xcefB kCYkN4qdJBd+zC/4XqZcJe/3yGsE9+MAmdz++r+Hu/oCU94b4FvCbfpUa+g3hgu/ KXHo7v41tnb7lgLvv+5lmRO8bOA6c2NWN0AkvPXIZmYSBA5KkXMtx2UKqDFHCih/ rcPqOfL8iL/GS4nuBDKNpp6kEBz3uwBfHwII0omAELAEB2fDbGG0zqhYKukq1mbZ jmunCSUB4AVNVPt+Y4nDpQUooznEhFKkAnro0RmbJ1c+7hAgJAe6sTEqUtPoRpHF ggh+FqLr6mvXuk95NVmtetkhP0he0TUre5CUIbvun+ZwUiKy5RLyMFZWYGA== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k0vbpvf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:26 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50b44f7b7bbso4710541cf.3 for ; Fri, 20 Mar 2026 07:49:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018166; x=1774622966; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oI+beZBCKKSZpk28i+hefm0WpeZ3W9cTVjnimZxiaSY=; b=dyamLq/C3m2W7E1R9Cs4JwUDFKHIYrH+G/ZAhHRzPk8eHxCgZBQJHATQNXfu98/pHM 1zBULLKIg/gtNAh16txqnNb8qg30tytNK+U3hmjbVZXzWwHpXpTPakytVvSfzihj93kt t1vcLT6/JUz/xqCCC+et/xghkssPshIhsyTBEqWaldUeL/YvUCtoCBMGYXUAmLf2JnWH LPiwcY89iM3zo1DW4VBiPbQfKJ/182ACMv6PgCN2j5Ni+Bn01EjSs6fdPQ+EEVxis2KF nItIGSf9Gk36FeSmyk7L3veVbRlQ9Xhr4Z69siXvfSLcbmKEEpYMGoWwv9rRhpdD60R6 QqUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018166; x=1774622966; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oI+beZBCKKSZpk28i+hefm0WpeZ3W9cTVjnimZxiaSY=; b=Rpd9oK8Ke/i589x57fbnN17+DKC/hU+iHpOkVvh5A9iXen6qPJsPzBD5CuPrPNXzQZ lLap8x7Psyy/NnTUoNFm7C/i+DJH9EFpnW2o3KXMcDYuaDfQCUwNiO1cnMFGPKITu27P b5Lz/KXZLx+V7CdLmd9OMM5vzNdFBYcTXR5/0ncV9bLqOgnrBSXsNhZcYUSlCYjKks4Y 0WxklKMWltzXsaKymyskzTV9Ni3iz7CzGS0nT+94xwdi+O4SbYa5X54/1pGr1j6r2k6Y 2siHBiuDqIGmY1W1FkLqkC26CROe6HRrlpU0ULIKTHSNTu23EJNZ6YqEkCKtVcN/r0P9 +I+w== X-Forwarded-Encrypted: i=1; AJvYcCXVDXjymo/IfSQxDxpwjLaPAnv6e5GIx2tSpL7I5wSMmMcGHZBUhMR9B/zKysidBCe8siWIqsEVBi61P7A=@vger.kernel.org X-Gm-Message-State: AOJu0YwtyItNWjTTM6/hdgEAE98ihCrc8dbQJ/uZQGgdPtwFhUhRbyzV tdNLVv1dXuQhlF6EUh+SbWgj/dc1A2grRALZFVrInmtREYSm/L2zwBPMfWtYkoLhKDe6bqebX58 FT4TB5XE7bEe5FHEoThujEQ3x3VRGl5iTi8GEecp0qrTt/flpChuK/Gg7gj0/IqB5f6o= X-Gm-Gg: ATEYQzx7UEqhGJ/XS1TySKkZauR5r8l+3kiUiVFpKsuMXd8JpDyv99tuelwjQrCUPCf qI4Cp3lbDHjfDdnpo5JKCo5tpufsCYb/ld8b1lniImw+UKY3DmxfouiVA810998WHZZBtu8rWmv Io0bqIirZBNt6HntHzDRirE3oq4GgWyWbQexGyAnzij8SJLd6/R+GgxAJuVKW8vsh8PKpx6E/Hy PGhUpu9ZSjyBXzlcXH1jwXpdwFb4oYPJxerTFq2Ut4txkBR/rBILycdCjwKjNq12FgYzFrO11m2 XULF3qjfH2TecHk/609XBA+i0uLZXVBWyUytcsFlYCT0Mz14JAZUdXCV7xZpe8LuIPNWlc4WV0J yjzDVfhYWN4XU6l67kRkHzxE/rJwSc7nxBBBrCtsObP6xADUF4Av30J0= X-Received: by 2002:a05:622a:5c7:b0:50b:2096:494e with SMTP id d75a77b69052e-50b37473d55mr47732921cf.30.1774018166054; Fri, 20 Mar 2026 07:49:26 -0700 (PDT) X-Received: by 2002:a05:622a:5c7:b0:50b:2096:494e with SMTP id d75a77b69052e-50b37473d55mr47732141cf.30.1774018165404; Fri, 20 Mar 2026 07:49:25 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:24 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 02/13] ASoC: qcom: q6apm: remove child devices when apm is removed Date: Fri, 20 Mar 2026 14:49:07 +0000 Message-ID: <20260320144918.1685838-3-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: UUNqCr1kTnb1X3Ca_Ul9s2P8PF6YRxei X-Authority-Analysis: v=2.4 cv=EcjFgfmC c=1 sm=1 tr=0 ts=69bd5e76 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=WbEMVPVtDBSXEMPt_8MA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: UUNqCr1kTnb1X3Ca_Ul9s2P8PF6YRxei X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX6yS0jI+/HgjJ R+db7+EIvzEn9ElpMHV4Ew03A/zNUfdUAA+vhtdCff8fvSMpU6ZGdy8owqSaqFf6MHmMizUdfp/ CjfGzGVqTTbBO2OM+ULUHpyzkzj43qX8b9jncouaUklHz1EffY+ZRdnWIbRZ5h/yREJBoF/g/3Q QBfzzIHJ0mJ2gK8b7HqPQo5gbj0XJYtOQ6l6NWnKZRl0hFWmoJHyk2rUQ/J01J9t/tkL8k5z33Q RmaUBACj15udYkSGUJnjG3i0H9mpWz8c1OyG0Jtq0gH0PVm0c33Z3OhSincyz4mUw8Ksn6sMqv4 4LuWkteWtusFb+JZDGabS7hMrOODyV5Mu6xH89T/wx8oGhzSuACp/GGWn2UeLeZzn1DIDIEdBk0 VqglS1J4Vuvn+Lbpp6DAFfUl5p0ht9mhv8WaDsYNKyQnLM2BZ/JQyG5Pj53WmJEi8333EyhTET8 hj7/Z8F6okhJlGgeFJw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" looks like q6apm driver does not remove the child driver q6apm-dai and q6apm-bedais when the this driver is removed. Fix this by using a manage version of of_platfom_populate. With this change when the dsp is shutdown all the devices associated with q6apm will now be removed. Fixes: 5477518b8a0e ("ASoC: qdsp6: audioreach: add q6apm support") Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index fece0e3def23..1fbcbbf3123d 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -753,7 +753,7 @@ static int apm_probe(gpr_device_t *gdev) return ret; } =20 - return of_platform_populate(dev->of_node, NULL, NULL, dev); + return devm_of_platform_populate(dev); } =20 static void apm_remove(gpr_device_t *gdev) --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 340DC3C660E for ; Fri, 20 Mar 2026 14:49:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018170; cv=none; b=Z46fO3sQRgESaW/PF7krrHZ1sr/erz5lKYiSpDAbGXps+fsfgmOhcRGwUMud8lD5/8qdTr4cdj0cczvPdhn/mMp7DkbH4elnLZjbA++kDnB/nO530qo9hM8Pr8Kbs8OAZG+9GEl+E7D1sMc3dBEFfpQHU7eVeLGFV0uqTZFGyBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018170; c=relaxed/simple; bh=6jShP5otc7Z/xglFZY5mqaUqDhEckaI1JOm+jwe6kcI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qNJim3qhbPaU1OToo8EZU5bkgnZlMm3tWMXT1vb/OpttuXjZHeexFEJftVaaM+yefaUepGk7mvAlpjwimrT6iXm4CNjTzJxS2WVR3h/zAF+TGFWh4cNXTSqpqQEhp61rQRYxl7hyg1sL3yE+d+jBPqL+ROiU7R+jGpvObOKm9dI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=UKugyLLF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hT9QZYQV; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="UKugyLLF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hT9QZYQV" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEC05H3557777 for ; Fri, 20 Mar 2026 14:49:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=xKWL+GAYqNp +tTujHQMkzR7HCGoYVVs3sPVjIKR0hiY=; b=UKugyLLFffJgxwyOQephHKfj6xm KIiZroCPWFahqNu4B2fA4ORCuZcHOvzzbnjqBIvCtdCpZ38sYtR6UZ54oQLG2bCa CXRJGR+9mZXR9MOaf2KdCfAZOyhVIOQciOxa8jcoRi+QQis3R/S3kvlcgglsH9Dw mpRKs8V9su4VTXQL70DgmCwvylbEdzzv83Hh5opuHEXnVB+6vQlhgNrG4FNg6MXt Suui3JXHtpeo757+04hlRwiWxDOhBBjyKQuWzIXhBPfoFoES4BewF1fr8kXjJs48 9n4Rg7oPicfJRlS3TC647055epdYxFM2ZzQoh83I2VgP4ZrejJooujAMyUw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0r1gtfnd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:28 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b274f94f8so129802641cf.1 for ; Fri, 20 Mar 2026 07:49:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018168; x=1774622968; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xKWL+GAYqNp+tTujHQMkzR7HCGoYVVs3sPVjIKR0hiY=; b=hT9QZYQVEKKkmHX+bF4C/4NRdfstqE2Lx2U+29VtOnJ9Pkyl93hFZzelLhpagRugZN 6nGIaKugNTWmMiY2YSgQhGCFoJaxejvk6M5KZQm3WoXUK5OZcH1jDkss972bD4qs5ymE 1PL2DwzFk3ctXmE4ubDS3m2krIsNbXkA5fnzWN4AhEs3NNR/bwKNF9hT0NJAJDego5Ki mN1NVV7eiyTkf/OEvCt8c9iIXSfwFznSaEoq66HBthszRqcwmoct9OuMzxV87gNcjfJZ J4YnS5Bkyn8jREUdGNCY/zEHX06MBPXWaW9asjOb5gUXakXls6EQtCurBX0yytmCbe3T 7BjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018168; x=1774622968; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xKWL+GAYqNp+tTujHQMkzR7HCGoYVVs3sPVjIKR0hiY=; b=lfLlpWBWIwNCkBsW8TuKhoRi6G03G5+xyj7aW+2TukMq/ymZ6FLh1txT2ms7VdYA6x ynyUphgtGFuRiaSkskdswDF0lkhULMkmvwVX8SgyTGw/IHZKRZ+s6+BbnbPxviRBPtoL rjrfvLoCzz/Zsiy1qfLstFSLLLjfY29wJsvJvygm2xZkURgOKU/s4jVcw4Z3TiMoRxAA biSqHuRwCCw24jP9hT8YikcxSFgl4rw9ZVIcvhqX3xVGYIXloy0WnrhGEocOiGduNmrD RJO7XySDZgKf7fovBj0wTaTu21n9/4CZ1d6t1EUuolOCpw+yFK+cPZBrX5zF8nfg3pUM OmwQ== X-Forwarded-Encrypted: i=1; AJvYcCW8FVHrSim+IpQJm77IDhHAUNkBUgzRPt+gdrjGkNRXTlC+IyOP4oKhb1i6BLXnlhkfiz8CGL68rg/CzJc=@vger.kernel.org X-Gm-Message-State: AOJu0YxjfkR6fpqjgU86ZN/ZyxMv1chIoTbhbBsiGgY4stNZPUshbBu2 C46jFEBTz93WtnPmxtS4xUTEuVn3fFLXosNc7yXNLm0vyvYS3CdH5E+II0vL/zxjoeY4QhtyRIv y4J5PzlPGyrFe6Mji/LeMv+YDt/4rS3XlxF1Ct+575QVf1d6gP7Lz7tEQb/IcHwJg+cc= X-Gm-Gg: ATEYQzz6MnsGlfuPo3P5j8xQSUrCXYBUQdPFJ7vsCi6k5vqImR9Nv0DZ95PLYoA+nsa e4GHPXfHgmUNr2X+DgCXcLQSo8vNLawXzlKwsqOhvcxSXKBGQCVStlozaWObinkFcSNa/QoBUNS OeT5rHfdbA3zhsKTquVddbhw12ZNG0BBUxxO71QmIeQ+JxCAxCJ2uxbCprsWuO+WrV5AGP8eofQ /C1GaYEj9wM+dCkQFXVSSTr8x+IDye9Xvh7eblGP8p17mYmCzP10cu8yP/swWwBBmjEd5/u3iwq Ds6ZHR48cT1S8OtbCF/YYTIn5J3T9iJx3ZKrjnrpmwRTo+AlV2ntAdQZXXx5FaWl2sDfriTg+Zh GeooKJZBPCkZgl6AI3mSkm9tCynGteFbQqGa5hL1SaJbaroQzTW4FQ1g= X-Received: by 2002:a05:622a:146:b0:501:51d4:df30 with SMTP id d75a77b69052e-50b245b43e7mr103801641cf.8.1774018167480; Fri, 20 Mar 2026 07:49:27 -0700 (PDT) X-Received: by 2002:a05:622a:146:b0:501:51d4:df30 with SMTP id d75a77b69052e-50b245b43e7mr103801031cf.8.1774018166894; Fri, 20 Mar 2026 07:49:26 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:26 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 03/13] ASoC: qcom: qdsp6: topology: check widget type before accessing data Date: Fri, 20 Mar 2026 14:49:08 +0000 Message-ID: <20260320144918.1685838-4-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX8NtoYFTJe3Qx E0OTU5yOGDzw3j+DzMTNWKBH6GifeNEs+AufA+y1vjdTfZo4dxyhNglJPLxXE+PlPH6lw3AoaiP FJnDb8g47WhD/EjmrHp7PEC74Qly/MKO5HjEXdaqKqYPboTcOSykXLccyK7s1JhCQ43RoPSD2w+ V/OWEHi+qFbN7oeKyDNpfA8a+AHXGkYfQ4C0k0Jc/ptYtslUlHmBNWkIDw/eDCkc4oCUUoeVKEx czQEI1MLHZiCIHN5I/Jq8RP/4P8/qdpKpfUSzkNpUN7FYbzfXH0QB/aS8ExhR78RMYMmfswFTpX /xlDoZVPXplr5Q1ALAKVm7/hKZHM2tAeKpEn5us2sbkyBbUYeR+ZYRdi6iOVIT4yqe9uCFpPBvm Osy23eflAQgquRUFW/9jaOMpmPcwAyy7k6Urf45mQ4r4IU+9zVV5uo2r7+QEgA7gLKMPQ/4sx6K NJ44KnuagVmoGxqgJzQ== X-Proofpoint-GUID: ebCqgrBUIfiN08cMXrCE3lpnkWpwxnkX X-Proofpoint-ORIG-GUID: ebCqgrBUIfiN08cMXrCE3lpnkWpwxnkX X-Authority-Analysis: v=2.4 cv=Y/D1cxeN c=1 sm=1 tr=0 ts=69bd5e78 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=5HTw2GpdgXbBP0wXRk4A:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Check widget type before accessing the private data, as this could a virtual widget which is no associated with a dsp graph, container and module. Accessing witout check could lead to incorrect memory access. Fixes: 36ad9bf1d93d ("ASoC: qdsp6: audioreach: add topology support") Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/topology.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sound/soc/qcom/qdsp6/topology.c b/sound/soc/qcom/qdsp6/topolog= y.c index e732fac9b8ca..1f69fba6de26 100644 --- a/sound/soc/qcom/qdsp6/topology.c +++ b/sound/soc/qcom/qdsp6/topology.c @@ -952,9 +952,6 @@ static int audioreach_widget_unload(struct snd_soc_comp= onent *scomp, struct audioreach_container *cont; struct audioreach_module *mod; =20 - mod =3D dobj->private; - cont =3D mod->container; - if (w->id =3D=3D snd_soc_dapm_mixer) { /* virtual widget */ struct snd_ar_control *scontrol =3D dobj->private; @@ -963,6 +960,11 @@ static int audioreach_widget_unload(struct snd_soc_com= ponent *scomp, kfree(scontrol); return 0; } + mod =3D dobj->private; + if (!mod) + return 0; + + cont =3D mod->container; =20 mutex_lock(&apm->lock); idr_remove(&apm->modules_idr, mod->instance_id); --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 212C33C73EB for ; Fri, 20 Mar 2026 14:49:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018172; cv=none; b=HkSLOUb2b1ageDBWipzaeMNbV6QJxvV9cfYvYBkAQOLnNAA7fJf9qF34cg8U7PJz3veCCPXRiDn2EjV/8BQC9XFkmc/NG0qssMEMIZNGf5c2RATMiQVweFtRB4DYOlkakzRdF5+Bd6sZFMH8p+kGTwOtsXhBOhOjAhBu44h9UUk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018172; c=relaxed/simple; bh=Nn5W6j2KgfG3MXrQpHQ1hcxXhxv/yUbhKAiv5Knj23A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jra5vYP5eidpV6PyDxfkDTY2b70VcR+PBiFKYiIKAit4Jnc/2MWW/5Tr/lNSrXXzp/nbR26Fd2izLF5yhNQVamByfxJC2i+VdcBF2/mVTcJ11O5Q6x/mtMZyVMvt9wfoemq/eKG3o8qUMxf2KsPBdwWiBuJ3KCNIFuEDclKSQCI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BZQ7rV5/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EoXw7R2G; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BZQ7rV5/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EoXw7R2G" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEYaA43557556 for ; Fri, 20 Mar 2026 14:49:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=it+OAEpYU8v 0MR39X1WR6T1UKdIHL61i+TcaqL8baj4=; b=BZQ7rV5/GyyNa8ccYSgIrTTB2fD QkljqL7NXHQUJMRG7q+BNPaL8+raXhjI87j1bwAocGjCvoj+Z8GYTn1MWdUla4LE v077WSzk/FN5yQ8MqEz9GBvhD5DaYL4FCkPHMklwtfIK20+4eeyX+4U7lh2/6PuM aidycHxqCrJD00u0iDqrKdgZ0BKr74bAprHqxHybF1VbR47pp1wXGaVURrKalSI7 pj/n3Bx4qgNxpCRz0HbhB/NSIF7rn30AEgfyb8cOuwja3z6tbs7eoEvfE6jqr8Nt T2BpU0CegVRCKSrtXelsU3xgCdSsg+5INQUwM5CBH8Y6cj/PUhD8yOqkRVg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0r1gtfne-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:30 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b3a341f3dso46782061cf.0 for ; Fri, 20 Mar 2026 07:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018170; x=1774622970; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=it+OAEpYU8v0MR39X1WR6T1UKdIHL61i+TcaqL8baj4=; b=EoXw7R2G3nUQ93kVGDEQbjcXcFIsQkozOB6ZVD9p4PqE08iqqMYOvN+dLtnnaR4MsE hclDv/KEA5UVMVRlTd1K7eYomI7VS7PhYAOTyJK9ADKJR+k6P5OThJRpr7dJqrLKqrXc AvnovdLm8tPBRnuVQyCve+VyDXlzS49D4DR1pLgYSo/EzDkRj8hWf5OMvc3R4ISUOlfw 1BY1Z5t9wVf/rII1aTs1PUOSDA5gAvnUhCVa4vT8pjVk1gXZn+IczoLrsvx1M/CxLwrG LeZinTfXWLczo5lwrmDMvIqoEqJ8THzjkEdvN4Xa2C/PrN5rgU34fsm35dzEsteU7Ejp 7ljg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018170; x=1774622970; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=it+OAEpYU8v0MR39X1WR6T1UKdIHL61i+TcaqL8baj4=; b=B/lFNygWWjIBC6FsfrwnXw+zbHdMFcWkaGfbCR3pj9Pr7TlaGObjoKzhlZuugXrz7N IfYAeE9IMIuSlj+9rbcUZ02zEaYjiM4JHfcfG9s26Fr3Si7iPf9inyYDskF2eNCw/FQk ISpBW60r37ff9dRt50Xk5GRTkaiFnZkOaQ+rXOF+dN2642/QH227GYqJHmKQuTqXDoii NMEdOcUGCVqOolNFDSp3NWRhxej2SecKXT9v5kDsPfNIRY58ENTnRjCpdEoqQ9ZczCQ7 wqFAMYHyEWleqHev1LU96ZxJ788x9nR0dqdMrtTsLNB390dDGJYVPngla0cmaJ6igMzJ CjZA== X-Forwarded-Encrypted: i=1; AJvYcCUcf/Y5aUhWkWkx1MoaFVyVtBdZ0W5Wk85ix/3xZsHLCa0Uz7ukPEb++S8nodQmOd1gb7DCSd3bb6CkHBQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxjLU6MxmIyLO3AkTeJZxHh3ADkP+BnOSGPnFRKztZtdXmrAgVz U0qhNnZM1ciTk3PMalik3RGeiHjPld09Dq/Ai2X3ZXzvaHPTIakIY3fITITSUaxik1EtnwX50Mh LQKA4Vr1YjTHK+Tz+fVnT7827VE+deS+ByttqgaJoQEKTr3FdJaca7mpmIZhXglTdzMg= X-Gm-Gg: ATEYQzyIixBISiBNwJfY3aOwUp9J+ijzSZMJZs1bnw7bc1a/i1rx/+7ozFjPGPak43H LH7AwS+kgTAJFAtBlny9fJe72VHfcKQKec0nZfMOcnzxKjgwGHt+r0Jmpd7aLyQw6eo5W7DS52E F2ZN4k7vJJMLMAoi1Sn4xsBr1rcDPizulCNTPTQKQCXc9dVERCHF6yzdEZNQpOC0/tIxeSmSBIS tqyhsCR2Uwba8HBsQSiP4UjERNlTOe0stz83jcotzMSgOsar0xfKZXZeksz35uQTfD9IqRhXq2z VzfpWVww4BburE4Krq+2EqQ3Bd2gn0KaU/IR5Ym+BSMUP9GGUQodQ3ZnJ5ebzlR57+PC6YUweZb OEM9xIN/Oy5YCcgRi5Z3z3AZo+Bu7krahsXyJwVWNsKJDiq++DphwttY= X-Received: by 2002:a05:622a:11c6:b0:509:4342:9966 with SMTP id d75a77b69052e-50b2461b2a5mr104983761cf.16.1774018169633; Fri, 20 Mar 2026 07:49:29 -0700 (PDT) X-Received: by 2002:a05:622a:11c6:b0:509:4342:9966 with SMTP id d75a77b69052e-50b2461b2a5mr104983171cf.16.1774018169094; Fri, 20 Mar 2026 07:49:29 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:27 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla , Stable@vger.kernel.org Subject: [PATCH v6 04/13] ASoC: qcom: q6apm-lpass-dai: Fix multiple graph opens Date: Fri, 20 Mar 2026 14:49:09 +0000 Message-ID: <20260320144918.1685838-5-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfXwFiHNlQ6pw59 yc4c9G7kFJ5TlOryqxnRaiN4eOIvlqX0/4WlbH5JtbPPZm5cBooCPTYXDJ/a5ozH/6lBKy8iBro bNHTjW6zPnZoJkylFOY7i8yhrp+ra+os34aKB6L4fzhJbnNstzdn2IDV1zxLwCw3J7GErJa1EqB 8IA0V7OzANZ3tfSz0nCsWsBwmXij6N77nG8+Ak6/wZJtNdKgpuz4NrMLIsiYZHAMNBdHPIwlxK4 pc52PbU0IH0z92NZfzGs9M/pAcLCuom6RwJ9zE66jsrCfjgYSNqHPXYag/4P+hhvzR6V/IhQqhF 8j2xSqkxFV14qX3DkQ4Dd6Fe/zzKeNH8AFol/j+8HkVp1X5VfPrRPsSxOVriPP4d/51oDMwlKd0 yhVeHhbkCRTZlMuaokEkiqNEn5nUQx72clQMUVFdIxvUZe/v4wvOKALrsuMmcQ0Hk8wLT+2dtNQ IvG1v7S1D7CMhkLy8kA== X-Proofpoint-GUID: LD1O0dL1B1tdDr3cm3uKCv7RSUXBqcs5 X-Proofpoint-ORIG-GUID: LD1O0dL1B1tdDr3cm3uKCv7RSUXBqcs5 X-Authority-Analysis: v=2.4 cv=Y/D1cxeN c=1 sm=1 tr=0 ts=69bd5e7a cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=M_mAHeyD2EURj3i0m2kA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" As prepare can be called mulitple times, this can result in multiple graph opens for playback path. This will result in a memory leaks, fix this by adding a check before opening. Fixes: be1fae62cf25 ("ASoC: q6apm-lpass-dai: close graph on prepare errors") Cc: Stable@vger.kernel.org Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index 5be37eeea329..ba64117b8cfe 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -181,7 +181,7 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_subst= ream *substream, struct s * It is recommend to load DSP with source graph first and then sink * graph, so sequence for playback and capture will be different */ - if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK) { + if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK && dai_data->graph= [dai->id] =3D=3D NULL) { graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id); if (IS_ERR(graph)) { dev_err(dai->dev, "Failed to open graph (%d)\n", graph_id); --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6EEF23C9425 for ; Fri, 20 Mar 2026 14:49:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018174; cv=none; b=OGP+XEmE9+gTNrWOU0DPghs+0/klscW7TVUG/idgL2TfbgDvvpPkHNHtOIQRzBb0A0eK37xw1WTe1gQiSQfVVO4EuRkZq6EWjirXWyAb6cA6CXfqF7HsRJUGP+VMmhwQoBTUcqpJCJT7FbpuLHmxb+JyZpDRWuxYcWGxFtlniIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018174; c=relaxed/simple; bh=uSbPbbEF96iO4/jDf1d3kH2TPon+s7DHfw5HFTuRwdk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Faia4UuQUwH12cUTvqQdVrge2pgfCEJ+QdHoR+ZxWJM1lbTP/6dC5by93ai/0L6RfOVxA2ni5rfFLLUh/vUsaG1y/6zCT/Q/V/dPayk78heRZ21/0hIATWqyi8s9Y7NBoNdzbCKQsHBFESgcZ9HnAU9NbvJr8eTybUh8Cc5cawU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=H0mudFIR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=C6LhaE6P; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="H0mudFIR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="C6LhaE6P" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KElucp989742 for ; Fri, 20 Mar 2026 14:49:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=/jKQw8dGxLC 6/wkqCmrBcQV0wz2LZBd3Fby8QVjVQNY=; b=H0mudFIR1/xHDAwKWwh7u3rW4UV 0YoL2HXoCdZfXn3FcRnoYI9SiA52cx+zOE8LZfemtOw8MIsAmmaCbajCBT+UgLVb hBOfjxD+fS6ypsuDT5hlkO3CsTspZBKdfgMiZwx5j+BbfKwnZ04QndJR/ZHgYgnL nJdu7EeqVUOL6fROJWgJcNH8PvaDpjgr+ZpaxIkdsPRb8iJHlZx4x3qp+rbaFO1N McnwM6KtJoxpfg8x7SjvvU1rrEWsqQsi33wxvg9FNi5FF58fQGsyAetdkR0nr8M6 DBjLiVU2s6I8Jfp2hDCpvQkjNaPyHL3CpltKY7Cna9fmFpYJrsKkD/EzTAw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0k0vbpvs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:32 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-5093a985e21so129943231cf.3 for ; Fri, 20 Mar 2026 07:49:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018172; x=1774622972; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/jKQw8dGxLC6/wkqCmrBcQV0wz2LZBd3Fby8QVjVQNY=; b=C6LhaE6Ps8jL1tckqKCjDmeMdUjVJAWHXlFVAcPnh/aVEJCmZu4JXG/PIJ4YACuAja eOW1vJ/eYeKYbuncY9BKnxZu3s+mEzPW0XG3CflvcPalT40THHLa/pnZhV3XX/GYIRyB J7rVHXVBswVcEchTlb1cl5+/8Vx0vdIlovSVRiEE39O2gI8cxxZvdItvyfCCZijju4Di Wjq25ie3fG45curUGmVvg5OFAfsUQ2pP0EhbO66By2HvpIsXBqQk6PyixzAvjjH6LQN5 rsgB3l8LR36mxY3X3Cy/Hth09M6GnbHN6OjJ+S972Z2FXWu1+MXpKBf7aLifaJ7qzWRT u8MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018172; x=1774622972; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/jKQw8dGxLC6/wkqCmrBcQV0wz2LZBd3Fby8QVjVQNY=; b=Q4y/TVA2dYwXYDfFpJKFZlsHaTTKE52A0x1w9gVP6/OTrFtfBzup8+cW1lfMNnjcGR MRkad2voJRRp3OJKsQtmhR0WB6tO5EdomWq7Jecmd23E0yQQ0cMjX8wFG//B9PVuN9l4 BPTRobCoFVizG3XBVeIQWDKbOfCsoeVWS1NvC5lSXizWZGlww0TSkWZRSXipR2/OdKhW raJythh3KcuqYYzwpynQgY2PKdL72SOKTy3cKtkJBpB9JEB1dd5iNU6n3Ta3pVMfn2Dj yT/8T77CwAcZ0z/HsTME4aW7OSa+WgCz0VYd/cEoQrZtDxQjmRTtPKHXozlXF+t8SxQM YOGw== X-Forwarded-Encrypted: i=1; AJvYcCVuF/Kewq4Jv97pCX7QDoF3Ax2mrrZxL9v7151Fa2MttifKpLqTUdZQryvEnGZTjfYJEQ/VvKRcFLNoVtY=@vger.kernel.org X-Gm-Message-State: AOJu0Yzyl1S2DA16rvSGQz7GlxItnQb0ZZislUF3P/RYWTEzqIHZlphY IeoEsW5AWIga7+EChJBfT4S/eRqzwf+qi8gt34GyU3MqLlBqcgEwLY3QIm4b8j4SuEwCkmNtGC0 a+MmvHvDxW+r+VpSEQy0LLyVxCC6ZtwfZjcIPCDWk+XSBSy11O/ZOPDo7goquIsqb5ME= X-Gm-Gg: ATEYQzwhSyk6GjOQt2KHeAS0BSzSsp5tlBVGJtDgQ+UJ6FEPuZoyW4++zR3Z4SKTDNz DNF5RK7v1+LmMDJy/GuJXRtvEEVwvdAkNZ/t4qEJn6cN3ofHmca+XJvqbCHIbhJMIzfDRd30ZpD JxFZePAyGpUb0IT/QvNWRty83jA6LmYspgVpHPdwfuzyqEE5uExbYFwDFL4AxcAadXHusAd2mGq 3gOaPc0DGjhKT9//tOhighFEHrlC0g3yNYT/naSdJc7i+hD7ZE8p0EIy1aQpZd1vqrg6dQk8J3J Yu720cOHsAPJBV5BgpCheJZG2tomHqIkAKLVLkW7ddaZOtTaD84MuHBtdJpbzINdm450lYXsYIJ 8bE/5RPZJ6D61ergfSIwnhqJrMzgwzeNUawoU2DUMO642ncItdsH8JEw= X-Received: by 2002:ac8:588a:0:b0:509:609:b2e5 with SMTP id d75a77b69052e-50b37453b95mr48199221cf.24.1774018171715; Fri, 20 Mar 2026 07:49:31 -0700 (PDT) X-Received: by 2002:ac8:588a:0:b0:509:609:b2e5 with SMTP id d75a77b69052e-50b37453b95mr48198571cf.24.1774018171219; Fri, 20 Mar 2026 07:49:31 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:29 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla , Stable@vger.kernel.org Subject: [PATCH v6 05/13] ASoC: qcom: q6apm-dai: reset queue ptr on trigger stop Date: Fri, 20 Mar 2026 14:49:10 +0000 Message-ID: <20260320144918.1685838-6-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: NJ_cIwA2Sjc5BEUbe_JY2InJDrAAigrG X-Authority-Analysis: v=2.4 cv=EcjFgfmC c=1 sm=1 tr=0 ts=69bd5e7c cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=w9bA4Yi6UXS1dLCTJJEA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: NJ_cIwA2Sjc5BEUbe_JY2InJDrAAigrG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX+y2S/0jRH/sr jWoLq20ETA0f1dKTnfXPOWy4dD5K8P28xQNYknsOOBKP+3dbJRkWDazQu4mRD3WpPgtaXuElBu5 QTX9jZ0Anwj6dKFaqK5hA5gnQGP1xJw+z3xI4GPUo1VVpA4RCVtCbtbLy3k2NXRvtAsRd4WX3QF BpZUIEB8R8u2T5cjSmth9DTvHZxr2flkYEUgf1iZ4FFSewRctoXrUmxfV5CupaXkAsNEszpKcPC 9ZQ8cMMgEVZyCQyQbNKNPWoQEiOyBBP5LWTb2w4+PSruxftUbYYr5LLCtwl4i18NSdLD4JpgP8+ euKERN8x1a9od/v7E/uqDGcY5x9T7mFMIjoRSKQg3mRGlIdRSuSOSBeI+mEsjMdL+dzPKXB1cJx hJhXvdztdik/Q8ZCQG56wkjDSkfSzYlzmZfyq5jLlEHx2ShaoQ1SHJ9fpaBESE/afoMbyJEA1Op l01Lsy6m2RGDRGqF3nA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Reset queue pointer on SNDRV_PCM_TRIGGER_STOP event to be inline with resetting appl_ptr. Without this we will end up with a queue_ptr out of sync and driver could try to send data that is not ready yet. Fix this by resetting the queue_ptr. Fixes: 3d4a4411aa8bb ("ASoC: q6apm-dai: schedule all available frames to av= oid dsp under-runs") Cc: Stable@vger.kernel.org Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-dai.c | 1 + sound/soc/qcom/qdsp6/q6apm.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-= dai.c index 306e928e7b49..292be457764f 100644 --- a/sound/soc/qcom/qdsp6/q6apm-dai.c +++ b/sound/soc/qcom/qdsp6/q6apm-dai.c @@ -317,6 +317,7 @@ static int q6apm_dai_trigger(struct snd_soc_component *= component, case SNDRV_PCM_TRIGGER_STOP: /* TODO support be handled via SoftPause Module */ prtd->state =3D Q6APM_STREAM_STOPPED; + prtd->queue_ptr =3D 0; break; case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index 1fbcbbf3123d..9d4cbe29cf94 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -215,6 +215,8 @@ int q6apm_map_memory_regions(struct q6apm_graph *graph,= unsigned int dir, phys_a =20 mutex_lock(&graph->lock); =20 + data->dsp_buf =3D 0; + if (data->buf) { mutex_unlock(&graph->lock); return 0; --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 537C03C9ED0 for ; Fri, 20 Mar 2026 14:49:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018176; cv=none; b=ZOBNZVHfGvN1VBOWZ17gXr1plrx9/7v0ILi0aN6zp1x9qpmI0pMDGZwmvcpt4MQJT6M6qgEPGhnIHEvNnvQ4EjcI1GMnv4rWh9/5Vh6gXIi9E1jrMekY+OfxuuYVLIu2FaAb1Wvsvg0bLKUuwHqXcqn7k0rgoFkF99LlocGE0kw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018176; c=relaxed/simple; bh=UZ+5z9w9M74tpzVL8QkykGNl8XDOPEb0MSDzyxWPUz8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ky3vf/IDOKUvXL/1dAd5cnT7dLlbyr4DtHuhpUv/JjJj7ihSnsgEV20OGql8REXyxqNh9nM4DJ21bj45v5u6AsrFK7iQbDwTlKlcuQfgTE032gl+6Req59mp2+SsNeb2qPpyMSEusFRjQBjvecippg/IBmivWQwwnifRg4ZLZ6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jggkPTbu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=G7wUPuSl; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jggkPTbu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="G7wUPuSl" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K94XcU701053 for ; Fri, 20 Mar 2026 14:49:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Z0SMcOHJkzd ixiTszIUCToSc68Rmc9ZxZaPMuZtsp78=; b=jggkPTbufutD6JPGqnEAfrD0qDB PMI2rMIsW/egiajgtuyD4bnh5yXR3it57GsI4p1hpJ9B3g297q9tmFQKv1OGsppF FZXZCJ4aZo8KfUjbudAZ/c1KMdogDQetWxIySBprV4SMzpiY7VJ2owQiaifct54J 47etODdsQotqqSjtivf8CBEQq8ggbi9ukOwYnwkk7fpY2RqiVmu0VUG4FjFPM8lf AjP1KFY6IucGRQQsOEPvpO3FcNb1Gl/Dwd+qoiXwVdZMgsHpLjd3z63DYoInt6QW DmLikk2SqZqrhNJTqIpRFlg06+CpzWQ2Ll9yhSh2C2XifAQDQdznvhqlBWw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d139q0sx5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:34 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b4076dc16so45097341cf.2 for ; Fri, 20 Mar 2026 07:49:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018174; x=1774622974; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z0SMcOHJkzdixiTszIUCToSc68Rmc9ZxZaPMuZtsp78=; b=G7wUPuSlbZvbLaNXvPkcMKiQBCWtpYq56ZZXdpS1HmS+O5IQ3xVOwPpRr1t2wOSgPo mwq96Z/XKcgGGQWmaZdCKL6nXhb7HTgYiIHETy0RgExQpLufV/sBgr2VQ+RnyorLj2Kq Ixd0FpWeddlVz0SRblbjrfrsazpGBqgMj136htxYBWT5Ne8KbdpaH4yl23Bg97Qrrfii /nt3is6F+tKvW1075F6RBVn/HkHOapqKKLiTBoW5+ZGo8+uWUugw2XPQlnsC+kKm86Yi zgl9RnGFEOHXtsDFH4mT9QItqShyvcouoJY86gXErSANmO9asGhQWUQryIpPDV8fIKD5 r8Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018174; x=1774622974; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Z0SMcOHJkzdixiTszIUCToSc68Rmc9ZxZaPMuZtsp78=; b=nKYGzOXD6j4iXled6CnOKCMAXejCjs9p/Bn5ZVleViNiAtmCGLMdhZmbtwM44eUSNx hp3I87V/WAaPWVzSetVhc2BNrMWnZw/NA7Dfv9ZsV+0L39aryDKVW5/zF0V6iEJQkh/W iTO7C73aqNpjZd9RnbLatzV/XMrx+Q0ON7QruXzszlKsSx6TAvsfDG5R0E+jMIqMIvu1 /hsivD+RUviEbcVl6ugOI2p/1B8JG4uJswe0Zgjz/j7uigxdSXSkx0q9GWRJYTVoaZr6 5h516Q7JLcalbN9HspIOyUC/g5oRqIDKs4shFDMzaOSa3Fll5dJZ3KJ+7wbQ5gGlWEA3 XnHg== X-Forwarded-Encrypted: i=1; AJvYcCU6ZKTDUGrffcwC481D2toWz1I7u389weNi0eUPvW7ecQ98HkS4qpSJbp1+nOY0s6T3k6BpdbOwJuDwFHA=@vger.kernel.org X-Gm-Message-State: AOJu0YxGj1UrbztX281UI+DiWgi5NkuyaZtGFCdJVEV6JeZ/6Du7JbzY /oalFmv4zKnqFN7Ghq1KZDi5g+rDDMqfGE59m78gScn0t9J/Gpis+E1KTJkoII8+buUBaUzYovQ DGl1JtxaJOWqO5f3MpTIla0xE0IZbLXKUn0a03LEea7QlscGbgNyuAoQKjo6Uhc2ooPg= X-Gm-Gg: ATEYQzw3fXTHAAZyu8m/27WqqbcPDGf1JP328etJxNSZTGNUX7qk4PIrZ5PpiUIG6bV YAmTn7qsfnzjdlRtGq9M37q/hVzj3LyBRTVgqTMTZnWTuWyy2hA2LVrQM+x+yAEISdC1JjOTSVL kbrEYkZ3dTdjPfWNApNJ+7/ysa2sayBf4G6uhsPB2PCxxiobnX3LWM0K+MNI2jSoCyp5TUekEjO QeuMKjjGAYjqkij44ZKcM3Yf//bh9SEQWKw/0e1M87/n25djPtTvpJt22C3FQrxm/cHgr7e/MlD tTEIIcPWgaaQQ5zBiQ0Lz+egGM7V+h6YQgAOqE0w7NUbgebMCXn0gvG8/PQdcsQ89SV2Japr//x BI8GLgLJZ3nGn9kyq/v+RiICzhabcaZ+hA9SIlqYS9kIPMHNjEvx2/5c= X-Received: by 2002:a05:622a:4e93:b0:50b:36cc:3350 with SMTP id d75a77b69052e-50b375d4f6amr46932101cf.67.1774018173591; Fri, 20 Mar 2026 07:49:33 -0700 (PDT) X-Received: by 2002:a05:622a:4e93:b0:50b:36cc:3350 with SMTP id d75a77b69052e-50b375d4f6amr46931621cf.67.1774018173087; Fri, 20 Mar 2026 07:49:33 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:31 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla , Krzysztof Kozlowski Subject: [PATCH v6 06/13] ASoC: dt-bindings: qcom: add LPASS LPI MI2S dai ids Date: Fri, 20 Mar 2026 14:49:11 +0000 Message-ID: <20260320144918.1685838-7-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfXxWMgkWN723AT cuwYuKvrq70Qblrzs+Dd24WFUNT85jvZqJ+GX4EWh1502oxQXeXSNgsoqOOX2z/bKmvVmmOFz+3 3YPD65jJq7jlAxMiAmcbOkuDILODwOPKTdXvT9wO7O0KOxQLfY82aRd6fmQ7ZvhEuHTUyjxRzTy Tta0UTPlpkYaQaz59Y2OHnYSnzcWjNyYqGNhfjKwpGZQlz2KQUg53CtNuftth/U1hYfcSs1E6vn udlG4stP0Bk6hDAW7JM4zI1wq24dRRkPDGn2BKsXnOu/rto9Qbo91E3/N3DCSj1r46//uXdJ9eq iITZ7DItR1KcAYfIO4G4qigDdWFNUa7lOg+AP90YPT1r0vGAdZZOygM1thJ85CM4WITqcrM7MnZ cQjyPXxcUufP4Arek1e1lllvuF0yHQ7SXpXBmbSqkwrQZHPFFBYhgU1IymfLBRLIyc2Zk0Zjksm 6amSQlmOG1DvhVl4nPA== X-Authority-Analysis: v=2.4 cv=FOAWBuos c=1 sm=1 tr=0 ts=69bd5e7e cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=6P8UuP444nAwg2htitIA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: RecFdH9s23J7DEH0Gd_c2dBKE2gKfbHL X-Proofpoint-ORIG-GUID: RecFdH9s23J7DEH0Gd_c2dBKE2gKfbHL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 impostorscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Add new dai ids entries for LPASS LPI MI2S and SENARY MI2S audio lines. Co-developed-by: Mohammad Rafi Shaik Signed-off-by: Mohammad Rafi Shaik Signed-off-by: Srinivas Kandagatla Reviewed-by: Krzysztof Kozlowski --- .../bindings/sound/qcom,q6dsp-lpass-ports.yaml | 5 ++++- include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports= .yaml b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml index 08c618e7e428..2b27d6c8f58f 100644 --- a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml @@ -126,13 +126,16 @@ patternProperties: reg: contains: # MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX a= nd - # QUINARY_MI2S_RX - QUINARY_MI2S_TX + # QUINARY_MI2S_RX - QUINARY_MI2S_TX and + # LPI_MI2S_RX_0 - SENARY_MI2S_TX items: oneOf: - minimum: 16 maximum: 23 - minimum: 127 maximum: 128 + - minimum: 137 + maximum: 148 then: required: - qcom,sd-lines diff --git a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h b/include/d= t-bindings/sound/qcom,q6dsp-lpass-ports.h index 6d1ce7f5da51..45850f2d4342 100644 --- a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h +++ b/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h @@ -140,6 +140,18 @@ #define DISPLAY_PORT_RX_6 134 #define DISPLAY_PORT_RX_7 135 #define USB_RX 136 +#define LPI_MI2S_RX_0 137 +#define LPI_MI2S_TX_0 138 +#define LPI_MI2S_RX_1 139 +#define LPI_MI2S_TX_1 140 +#define LPI_MI2S_RX_2 141 +#define LPI_MI2S_TX_2 142 +#define LPI_MI2S_RX_3 143 +#define LPI_MI2S_TX_3 144 +#define LPI_MI2S_RX_4 145 +#define LPI_MI2S_TX_4 146 +#define SENARY_MI2S_RX 147 +#define SENARY_MI2S_TX 148 =20 #define LPASS_CLK_ID_PRI_MI2S_IBIT 1 #define LPASS_CLK_ID_PRI_MI2S_EBIT 2 --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 7B2943CA480 for ; Fri, 20 Mar 2026 14:49:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018177; cv=none; b=hmcS0cZyfO7yUjJw7Ad7Nql5lbBdFpAwwYW5rtFG3H43l0AZ+YJ8DaHJ31DgcsHgRIMlOzkaA0+//Hwd1OkKi/gGAyfBZfIYxL5JXN9rdUqqE25VXkM83A4o4tcJ48IbO+ysNslYgubDITeefwp4QdFZG25Jwm36IF6cpJNTjLA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018177; c=relaxed/simple; bh=1AGWMMo+ZQ2MpMqgndQclqL9hoOIddPn00jRigW1KUQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fa28EhdDuymRJWWdnZCJ3Rt2Va4Q8Ay98+5PLonjS+OqqnKaOI7XfZXU1dydYSNRV6rGnWRcMwHwLtgf3suIpmRE325P1+XE9Ivw+bfYUjuZybMMtn/EsbwCSPpV+GtaKCQ7xsQfJanvUIeCHa0defoQZZxe16kPT/oOYDA0Uy0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=eMj0TbLW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cfQ9BrjQ; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="eMj0TbLW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cfQ9BrjQ" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEUHvl1691959 for ; Fri, 20 Mar 2026 14:49:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=2UA23pg+dGV Ambwz2ppXfyVdk6xlbVmq70z85L7JFXQ=; b=eMj0TbLW9TnwZv5eZisp6ltT93f vKBIFuNjscoJjw2nSmLYL/4m4adRbZiST4b9ChS+by6MRry98Ni0Uox2Uy0Z6Rth P5ks/Cn6R9yGWpganhME7VmcZJ48o/4KN2cNhdZpxljKNl072KwyIZglLcyyJkuu ArNipY5IbFt+x4SzNWk0Ff1hPPYjWtbGaW5NaQqaYzyvD7FbDD/rxWNslJinjG/c E0ogYkaQ6Lj+YYy5armXA9lcWl5WAHbcVqz0RI3ZRBtNzhxFJjilc3n6H4jU7Wv8 U4Do1zqZAqBbr6qzA+PIRoeO5gXBx51bKeLLsnuMAVQImvCcvZjskNCEt0g== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0s5d2apv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:35 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50921f7da6dso4836461cf.0 for ; Fri, 20 Mar 2026 07:49:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018175; x=1774622975; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2UA23pg+dGVAmbwz2ppXfyVdk6xlbVmq70z85L7JFXQ=; b=cfQ9BrjQwmVRJG7acdG7rck9IEifG0j5ZL8/zQIs0BdC6Ze+nhm+LtqYTTJgmshGrR hkCUbh68hTt3AK/09VVIMHMVVMQ3BJBbLuKXTF+sjzMKW2oO4tJuBt//gZfuGJHEJxuM 8SDVgB9gdClYVljbv/Cey/qrZ2sGk+mUn9gNBD7ylxw3wAusoo9PMmIIN+vhHizBvSb9 UHeLe4P+F+Tq/U2HFNwe+3DrLfNkNY/EIseDogsbPQ7rxqjwMARDlWp6GhVclj3RVX0m OQg0v/ecG+ThMwDwkcj5UdR13EPzXhMWRU05zn276xQW23EUvElT0Ro5jGmKksh9KNzr /o6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018175; x=1774622975; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2UA23pg+dGVAmbwz2ppXfyVdk6xlbVmq70z85L7JFXQ=; b=ZlN1JDJByqDz8Gz9J4bqeGlMTqlA3TK6vMV/pwqQ4rSEN0ZXAfHLiRxnRkxOXD7CZr xxZOcQ2eSDY8rUu+6Jt+tEW1SSmyCL0OCTTm691YVsmfQUyiPcVVj3r1zo9ObdouBJwR KPp4dUtF1AOqGOPtKmN6CWS/fmpPAhswxBEoznAjUuF3/EXdqPluL0182fhx46Wn/QtZ clatuDHbOrcRfwQcacCPaLA94IqMuIAjZmgW6nCepF13vlR1Mjo49IV3Cz9GeG5hmCA4 6eWdjqtETTIP+5mtllK6HAHU9vlMd7xIudpvhtIB/8iGcFWmqmIU7q8W9+tkAi64QBPb 7aug== X-Forwarded-Encrypted: i=1; AJvYcCVX8EamIXB3H69qtM7GR2aSt78sfn5HhJ3xzYR8fD12Ba/1cskKS7cjjVq4/47R+pvn5SgX4tiGnxOwVh4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0syZjsjpc4ufYCSw5O9m4z4xD+AfBoJoK2zwivLIQK3kk+hiN 2Q+i20vzbP84wSwqsoJMWsmSflSF+2ZltIShmX6zDZwJU/E8dRO9NNyN4FCpo+jqVEOLPmMHL/w exRgajYh7bZ4mK3QTZYtW5hLbo56PTd/lbALJLGqTiyB9KN0XNsi+05V3zWofzRmOnUI= X-Gm-Gg: ATEYQzzPukHRVhzU54tXmdyyIhp4x1wx2AI5dtpZxhbmFGJONQn6jW/GTKPiXlC/G9E TvEJP14ddqv3QoXFArU0MlV7McFGF99N3tDmnziEPOrkt5BnOdydmDc+rE9sptJ5F+BOTRwPyPy QdsXOKS2127m1Gzx/eml8VfoB7fPzFVM9lG004/jD4r1G09td1mj3+tcjKGgL685Ctbbwl7IGSe nb/RIxegyuCLOxcz8nYtsDtc8TWg3RbMax9tJgyGoGk4AtRTMeyHBB2P9+jOGOYxSmvd/5DnP4y 5JwL8to5FT9mj2TdHJoRT0VTZtgAsnHrehhDYhvN+M5ZHNH/XHjkL1KuFsW8fuNHYm3xAf5vyFh LeUrMGmxWcWx8WAqjXsQkT2Iu1fppLYXTyRXfJoW0aGkFHIBt4RFe53g= X-Received: by 2002:a05:622a:cd:b0:50b:4051:2cab with SMTP id d75a77b69052e-50b40513540mr22009431cf.58.1774018174930; Fri, 20 Mar 2026 07:49:34 -0700 (PDT) X-Received: by 2002:a05:622a:cd:b0:50b:4051:2cab with SMTP id d75a77b69052e-50b40513540mr22009001cf.58.1774018174465; Fri, 20 Mar 2026 07:49:34 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:33 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 07/13] ASoC: qcom: qdsp6: lpass-ports: add support for LPASS LPI MI2S dais Date: Fri, 20 Mar 2026 14:49:12 +0000 Message-ID: <20260320144918.1685838-8-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: I99MEd03qHPH6gtVBfetAbXmiijTGkn0 X-Proofpoint-GUID: I99MEd03qHPH6gtVBfetAbXmiijTGkn0 X-Authority-Analysis: v=2.4 cv=CqCys34D c=1 sm=1 tr=0 ts=69bd5e7f cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=nvRDalaNTaWZAukup-IA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfXzCaXRKBMVAMU d5E9fwUKc6IQO0w/0n9hadbclH8MJK3FBicIpozvDhxYZv8fZHZGREBaSFhdxkYmw/ooK7lnz9l zSpN9BakQ3u6cytEuYOGcyLiUVCZOcgVyKr1JcwVsuNufI2JiuMijkm95pTi7S32+7GA1aLORlP 3abt4eoPWoOBwWnQmV5WOnuI3/T/KaS52cWP0f0glylhEuq5qI++vVkRaFoIe41ZAWwa/dIxzGA +zWEw0jHPWk63v6Gvun6pODHOSMmoynxJa410WoVgB0gjOIYlxWk6VNdVaG2YaITOpdqvhOirqO vBvVHdJTiqhCViao/P8V7pjLCeBTKs3tFiBg/sLRtKbXJKW7at4ceI+yeB5K3AdMLwZ8W7+fSwS cFkQZXsHNxMgHqMY8yoMAK1f5BzdIqV7AwvboC+Pzvuw4BDeBxs2hcICZPaaXa5NNGlkP66AyC+ FECUQOPpzXXcqjxe2kg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 malwarescore=0 suspectscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Add support for LPASS LPI MI2S dais in the dai-driver, these dais are used in Monaco based platform devices. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c b/sound/soc/qcom/qdsp= 6/q6dsp-lpass-ports.c index 4eed54b071a5..d31388ed3ccf 100644 --- a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c +++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c @@ -96,6 +96,42 @@ .id =3D did, \ } =20 +#define Q6AFE_MI2S_RX_DAI(pre, did) { \ + .playback =3D { \ + .stream_name =3D pre" MI2S Playback", \ + .rates =3D SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ + SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\ + SNDRV_PCM_RATE_176400, \ + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | \ + SNDRV_PCM_FMTBIT_S24_LE | \ + SNDRV_PCM_FMTBIT_S32_LE, \ + .channels_min =3D 1, \ + .channels_max =3D 8, \ + .rate_min =3D 8000, \ + .rate_max =3D 176400, \ + }, \ + .name =3D #did, \ + .id =3D did, \ + } + +#define Q6AFE_MI2S_TX_DAI(pre, did) { \ + .capture =3D { \ + .stream_name =3D pre" MI2S Capture", \ + .rates =3D SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ + SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\ + SNDRV_PCM_RATE_176400, \ + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | \ + SNDRV_PCM_FMTBIT_S24_LE | \ + SNDRV_PCM_FMTBIT_S32_LE, \ + .channels_min =3D 1, \ + .channels_max =3D 8, \ + .rate_min =3D 8000, \ + .rate_max =3D 176400, \ + }, \ + .name =3D #did, \ + .id =3D did, \ + } + static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] =3D { { .playback =3D { @@ -484,6 +520,16 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[]= =3D { .id =3D QUINARY_MI2S_TX, .name =3D "QUIN_MI2S_TX", }, + Q6AFE_MI2S_RX_DAI("LPI RX0", LPI_MI2S_RX_0), + Q6AFE_MI2S_RX_DAI("LPI RX1", LPI_MI2S_RX_1), + Q6AFE_MI2S_RX_DAI("LPI RX2", LPI_MI2S_RX_2), + Q6AFE_MI2S_RX_DAI("LPI RX3", LPI_MI2S_RX_3), + Q6AFE_MI2S_RX_DAI("LPI RX4", LPI_MI2S_RX_4), + Q6AFE_MI2S_TX_DAI("LPI TX0", LPI_MI2S_TX_0), + Q6AFE_MI2S_TX_DAI("LPI TX1", LPI_MI2S_TX_1), + Q6AFE_MI2S_TX_DAI("LPI TX2", LPI_MI2S_TX_2), + Q6AFE_MI2S_TX_DAI("LPI TX3", LPI_MI2S_TX_3), + Q6AFE_MI2S_TX_DAI("LPI TX4", LPI_MI2S_TX_4), Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0), Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1), Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2), @@ -636,6 +682,7 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config= (struct device *dev, break; case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: + case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4: q6dsp_audio_fe_dais[i].ops =3D cfg->q6i2s_ops; break; case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7: --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 42A0E3CB2CC for ; Fri, 20 Mar 2026 14:49:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018179; cv=none; b=NcIXDcvqoPsmmlSJZ0DumuaxPZ9jFVaJ4L8Ly2m0bocd8PFICrB73DBFrI/AWIYK3nFGC5sMa1VPRJLVwFVmc6cfKNP5Ui+TYGKdM4tAcXcsOTa5vPRkNaxxEVNOprwqfR+ewl0XrgBr4BORmZYQ7yxssJvm1AWxjBU0Qb4gDdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018179; c=relaxed/simple; bh=DWuvTD8Cw0DUhqpHbWAOgp0+9q9ilBF02Exs71eghWM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ONALGOaKjUbfhFoy/T26tWYnq6OkNxDw0ZFpd2qOJeI+cZIpnViJ/ECyFBo1XyNIlbHMKZhMRLYqaKbGW5p5bC3CydY45lZwE1aFf0E+rhT8ouf3reazSInq75JAIU92sqEEodXz7Z2msdsnboUdK3zKkXAxIfzSngzWS5ljSdA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=KvIBovX0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GTU/sqnE; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="KvIBovX0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GTU/sqnE" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KBsIFV3875472 for ; Fri, 20 Mar 2026 14:49:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=VHHn5cWjpEy VxsTN9vGBX+/Npp0nx1w8ZRbazvG1gDU=; b=KvIBovX0MGCe+SKa3+x6aLuHNWA kFX32k4iOrpLV1vRTEkYZX9XRymtzkdeSq2QMqJDFQkE8sRjbMTJbWBQuepfWA/6 TVrVPTAuCZIJ+VpPEdwXQfMJYJwzkfc+9ONvjo4wMjcBsDBE/pHrCxhIm1n+5MjZ SCtB3VB+mBEROlxfQELI0aY7GwuWAHn+YuZtEDlyrJ4qD77nV4AzRxNsS5os2NPt Iniz4vLLaLEvgJke8qHMrB0H15ptFuClou11D5WJoTXZiV37uRtLGEEVjChnij+E gqYiBfZluDJxVKBrr0qA3aTUJMsPyzCBldFPVeF7ClfrP9f/O3ZvXiBU1vQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d15s08e55-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:37 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b389f2560so54455771cf.3 for ; Fri, 20 Mar 2026 07:49:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018177; x=1774622977; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VHHn5cWjpEyVxsTN9vGBX+/Npp0nx1w8ZRbazvG1gDU=; b=GTU/sqnEt72RFOFMhGy5PlSjjNk6aUOPTXw8HEWD0w7ZsVSlNEGeG6aLxTTsy2+mmu Atb8/BP0YAJ6iCXCoTodkd3jvV7n16Dqve26MiIj9/yql8hGOgW0qy6V04LIuXWKNKV0 q/OihPxnUZzRSWJG41lLCzCmSUyUW78JC91daS3F2GPataql4JoHpXyP5B6qLRrnq9nC saxpnNs4H8eQgvLDPeIo4vdwvs7FMAJaX01+IsrtVLsHLhMgAkdK9fMA+2275EBQbGU4 y7MSl7TQi9c+8hL2AqV5RbNWvT5X2C4AGHCV0cKSCKbfyNZVzwiHf0RT76IcKAy1M5kv HAcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018177; x=1774622977; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VHHn5cWjpEyVxsTN9vGBX+/Npp0nx1w8ZRbazvG1gDU=; b=WMabzJA+dp04zjO/Rn1Sowxbz9SjbqLQnZkDA3MJIFvuNMWdB4+1TEpVukEbxS+Vi9 54M9RiXR3fQ9aQLdBYzLZMuGll0hH5vWAWjpgj2bYojMzwrGJtdWlBF5Wb1MzOC1P+s3 cThpwmhecF5o3arbIHjxTOzRC6NuQtUNe63hDFnNK1k1Hmq+xAvd9K7Ta0D4Q3m6UpNp b740DYdrlmAAwn9IaiyLNeBQJIODaeq9RpUbHgVRXtBRXwT18nSmMr3yEC+QRfQwIxmu CCcMxPsl6myzZr0axG7HCTHm+RyZ01dOX4Tovq9PAkn6Fe1kzUfuy1c7QApEDKNWpE03 6W2Q== X-Forwarded-Encrypted: i=1; AJvYcCWuao8EocvvG1YODL6z3hkw+S1akpDQtckhfWGwj7llYB58jtDx4TA2bQrheH8/hQh60hZwgEvUAi4Sxx0=@vger.kernel.org X-Gm-Message-State: AOJu0YxvlX0gDQDVA9ude2xw3Eii/9UQ9Ph5FvCbtivgAg2ERxiege09 XJY+8R9jsEvQVchT/StjtBqWO372dMe+U3YZbqBccy3yGDrtdvwtFSWRQTM5HPt03QklD6HS3M2 wno61kpr5Cse4TLSZErADw/wB4mJ/AHpb97ZIZ30OPKXFusWU4gj1AURqlWfYftjj4ao= X-Gm-Gg: ATEYQzxKCeRjuCadKMhJkRQHSVyMixQ+uPk+lzwsJZHeKn6dtOZo6miDF9TUMNtKA97 mKkcHCSIkQz493ITxnHpc+Ym7oUtR24dz5kuk8WaCZruadHQKj1kjr65g2Z1qu1CzcMx61y4Cat LY4NRrEHyK4pmyJqM4xi6RzR0Zl3XVcVPt6aQsfe5bYW61dZJipxFhIdFVZpaxjWpwhtJ844ZIs dZAEvR5jHvJcr3zU1X+egZgXjjCaS8QUcMDRc/CWqZjlFr0i9PkAyjF+Odd6MNDuvBxkSDrNZao Wu5hN1RuV1HU6naSPvJp7K/xBeZuj1DHS0LyG2LVwehzwBATOHOKTizTpme+yjNsUHR4aoZ3Uho j9ZA3Vx1cJZby7ZjlYV+vpv5xeI9w83VPXZVEC2sI+TyiF+89P0rq9Eo= X-Received: by 2002:ac8:5814:0:b0:509:66:cd5b with SMTP id d75a77b69052e-50b373e8da0mr46993701cf.18.1774018176656; Fri, 20 Mar 2026 07:49:36 -0700 (PDT) X-Received: by 2002:ac8:5814:0:b0:509:66:cd5b with SMTP id d75a77b69052e-50b373e8da0mr46992941cf.18.1774018176135; Fri, 20 Mar 2026 07:49:36 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:35 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 08/13] ASoC: qcom: q6dsp: Add Senary MI2S audio interface support Date: Fri, 20 Mar 2026 14:49:13 +0000 Message-ID: <20260320144918.1685838-9-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: gSXWQdGil-rL1BQLZDPUgo0wR1ZUn2aP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfXx5+RBe9693xK 4qfpwKIxyNlerT60UTlBKKcXgsEOIZ+t/QCy7mUpC35uxTJWjy08gOgSl5bodGhEOGISR2GzC+M TpZqaB7tJWLG9tE7FVudSGLCCMj1yIaQLAv3ERudwh4C9DWav2SNpMF9EEOt6Bfjnz/NezUrjbH tTzKhczJRtacn/B3/bguvLEXOnIrSnAkkJ3LMR/43qRyv4cp+oK0DIK7J+WhpoZcW4lpcQcNpbR rfDcgJKbrSWMxnLfXTQo3gia1pEDHwprnjPNR9ttrCu55sw4uFAlc5EFjnczOT3/umAZo0qBsjo 3l2w6MihFUFvUAlGDy/0fyHaA1EpZE+8RziGjwpSI7PfsjTXMPrVEmaPTHw/Oi09KYuS8sSXViK vCJrNibBlNy5YUpXiTTTgJxheHGva1rMpg53HelDYb9qk8gyxbYxPAnu1RDOwsCWcwcRIshIquI kwF2rAqBg/42TyUOPqQ== X-Proofpoint-GUID: gSXWQdGil-rL1BQLZDPUgo0wR1ZUn2aP X-Authority-Analysis: v=2.4 cv=KORXzVFo c=1 sm=1 tr=0 ts=69bd5e81 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=yvctMs8w4tAFySAdhFMA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 clxscore=1015 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" From: Mohammad Rafi Shaik Introduces support for the Senary MI2S audio interface in the Qualcomm q6dsp. Add new AFE port IDs for Senary MI2S RX and TX and include the necessary mappings in the port configuration to allow audio routing over the Senary MI2S interface. Signed-off-by: Mohammad Rafi Shaik Signed-off-by: Srinivas Kandagatla Tested-by: Val Packett # sm7325-motorola-dubai --- sound/soc/qcom/qdsp6/q6afe-dai.c | 6 +++++ sound/soc/qcom/qdsp6/q6afe.c | 8 +++++++ sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 29 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6afe-dai.c b/sound/soc/qcom/qdsp6/q6afe-= dai.c index 0f47aadaabe1..a0d21034a626 100644 --- a/sound/soc/qcom/qdsp6/q6afe-dai.c +++ b/sound/soc/qcom/qdsp6/q6afe-dai.c @@ -409,6 +409,7 @@ static int q6afe_dai_prepare(struct snd_pcm_substream *= substream, q6afe_slim_port_prepare(dai_data->port[dai->id], &dai_data->port_config[dai->id].slim); break; + case SENARY_MI2S_RX ... SENARY_MI2S_TX: case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: rc =3D q6afe_i2s_port_prepare(dai_data->port[dai->id], @@ -540,6 +541,7 @@ static const struct snd_soc_dapm_route q6afe_dapm_route= s[] =3D { {"Tertiary MI2S Playback", NULL, "TERT_MI2S_RX"}, {"Quaternary MI2S Playback", NULL, "QUAT_MI2S_RX"}, {"Quinary MI2S Playback", NULL, "QUIN_MI2S_RX"}, + {"Senary MI2S Playback", NULL, "SEN_MI2S_RX"}, =20 {"Primary TDM0 Playback", NULL, "PRIMARY_TDM_RX_0"}, {"Primary TDM1 Playback", NULL, "PRIMARY_TDM_RX_1"}, @@ -636,6 +638,7 @@ static const struct snd_soc_dapm_route q6afe_dapm_route= s[] =3D { {"SEC_MI2S_TX", NULL, "Secondary MI2S Capture"}, {"QUAT_MI2S_TX", NULL, "Quaternary MI2S Capture"}, {"QUIN_MI2S_TX", NULL, "Quinary MI2S Capture"}, + {"SEN_MI2S_TX", NULL, "Senary MI2S Capture"}, =20 {"WSA_CODEC_DMA_RX_0 Playback", NULL, "WSA_CODEC_DMA_RX_0"}, {"WSA_CODEC_DMA_TX_0", NULL, "WSA_CODEC_DMA_TX_0 Capture"}, @@ -770,6 +773,8 @@ static const struct snd_soc_dapm_widget q6afe_dai_widge= ts[] =3D { SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_TX", NULL, 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_TX", NULL, 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SEN_MI2S_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SEN_MI2S_TX", NULL, 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_MI2S_RX", NULL, 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_TX", NULL, @@ -1037,6 +1042,7 @@ static void of_q6afe_parse_dai_data(struct device *de= v, =20 switch (id) { /* MI2S specific properties */ + case SENARY_MI2S_RX ... SENARY_MI2S_TX: case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: priv =3D &data->priv[id]; diff --git a/sound/soc/qcom/qdsp6/q6afe.c b/sound/soc/qcom/qdsp6/q6afe.c index 43d877322bae..40237267fda0 100644 --- a/sound/soc/qcom/qdsp6/q6afe.c +++ b/sound/soc/qcom/qdsp6/q6afe.c @@ -130,6 +130,8 @@ #define AFE_PORT_ID_QUATERNARY_MI2S_TX 0x1007 #define AFE_PORT_ID_QUINARY_MI2S_RX 0x1016 #define AFE_PORT_ID_QUINARY_MI2S_TX 0x1017 +#define AFE_PORT_ID_SENARY_MI2S_RX 0x1018 +#define AFE_PORT_ID_SENARY_MI2S_TX 0x1019 =20 /* Start of the range of port IDs for TDM devices. */ #define AFE_PORT_ID_TDM_PORT_RANGE_START 0x9000 @@ -718,6 +720,10 @@ static struct afe_port_map port_maps[AFE_PORT_MAX] =3D= { QUINARY_MI2S_RX, 1, 1}, [QUINARY_MI2S_TX] =3D { AFE_PORT_ID_QUINARY_MI2S_TX, QUINARY_MI2S_TX, 0, 1}, + [SENARY_MI2S_RX] =3D { AFE_PORT_ID_SENARY_MI2S_RX, + SENARY_MI2S_RX, 1, 1}, + [SENARY_MI2S_TX] =3D { AFE_PORT_ID_SENARY_MI2S_TX, + SENARY_MI2S_TX, 0, 1}, [PRIMARY_TDM_RX_0] =3D { AFE_PORT_ID_PRIMARY_TDM_RX, PRIMARY_TDM_RX_0, 1, 1}, [PRIMARY_TDM_TX_0] =3D { AFE_PORT_ID_PRIMARY_TDM_TX, @@ -1777,6 +1783,8 @@ struct q6afe_port *q6afe_port_get_from_id(struct devi= ce *dev, int id) case AFE_PORT_ID_QUATERNARY_MI2S_TX: case AFE_PORT_ID_QUINARY_MI2S_RX: case AFE_PORT_ID_QUINARY_MI2S_TX: + case AFE_PORT_ID_SENARY_MI2S_RX: + case AFE_PORT_ID_SENARY_MI2S_TX: cfg_type =3D AFE_PARAM_ID_I2S_CONFIG; break; case AFE_PORT_ID_PRIMARY_TDM_RX ... AFE_PORT_ID_QUINARY_TDM_TX_7: diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c b/sound/soc/qcom/qdsp= 6/q6dsp-lpass-ports.c index d31388ed3ccf..e5cd82f77b55 100644 --- a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c +++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c @@ -519,6 +519,34 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[]= =3D { }, .id =3D QUINARY_MI2S_TX, .name =3D "QUIN_MI2S_TX", + }, { + .playback =3D { + .stream_name =3D "Senary MI2S Playback", + .rates =3D SNDRV_PCM_RATE_8000_192000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 1, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 192000, + }, + .id =3D SENARY_MI2S_RX, + .name =3D "SEN_MI2S_RX", + }, { + .capture =3D { + .stream_name =3D "Senary MI2S Capture", + .rates =3D SNDRV_PCM_RATE_8000_192000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 1, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 192000, + }, + .id =3D SENARY_MI2S_TX, + .name =3D "SEN_MI2S_TX", }, Q6AFE_MI2S_RX_DAI("LPI RX0", LPI_MI2S_RX_0), Q6AFE_MI2S_RX_DAI("LPI RX1", LPI_MI2S_RX_1), @@ -680,6 +708,7 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config= (struct device *dev, case SLIMBUS_0_RX ... SLIMBUS_6_TX: q6dsp_audio_fe_dais[i].ops =3D cfg->q6slim_ops; break; + case SENARY_MI2S_RX ... SENARY_MI2S_TX: case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4: --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 0DC673CBE77 for ; Fri, 20 Mar 2026 14:49:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018181; cv=none; b=N2p4R6e7z+azhcWFm34F74q19ZBBuIqbleGoeyAEQayVXFyUDfAz3s/K6DC41s0/yk3bnOa8T5ZiHuAmwWORrSze/Jidu/pms1umr7DAy8tN9Hd2tT/pHB5jufJtcnm1/vLEED8bAlm9fuO+kE0skoCtKq6BIQAQDw3HORNE71Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018181; c=relaxed/simple; bh=CrLGv5edH+UZPIk9+prSCn/qT8iVjWiDSBnsGzRqcxE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=llqTYZ//cCNNJLNwYeKm/jus2AbicYHuFXc7mQ0XankzaUsrXmmKrQeOB74vXibg6rb5VLLWjn77VJlSQw/FDO2SNsBJpTJxXQOYToX1P7BsDn0cmSthV9tECF7D9EbXs2cGvvwWmKrB3wgsnzpbJUYb9Ka/ULGknfKbqKE9l5Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ex6PhGk+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Io7oFoAK; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ex6PhGk+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Io7oFoAK" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEXaWW1691830 for ; Fri, 20 Mar 2026 14:49:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=aiejSc4X5A/ gorkmczOj6dnKqerAsQHN9lH+LChbOlI=; b=ex6PhGk+hwkp+aQgRMUmR5edSIB o8qn7Gs3qrueSo5JgvUnRz2j2EDDPyX3BE0mw4RYEA2WuboBHzAZxnRNH8kEQOzJ n5Z5+jO+bRGylLE/T0WqAxKZIoPH6ZUcfp6annnBc8NrI9WpHiNSzgHQae0I33+6 8LJgu0PBwiwB56goJ60GKOcVIXHWQa7tRLVFhAKN4khOL9QAslNEMgyq7F555zHG buofdsGRAAEsm2GROmCoOWOcxhMkqVu7dDGcUtpYSMJ94Q/kuhwSbYIN8quYJgp9 jT2aeuATUnmv6/Kw22rdmlTym++RsboAiDneha1yJSKHGffRlB42YYwwe0Q== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0s5d2aq3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:39 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50b4031b86dso29362631cf.0 for ; Fri, 20 Mar 2026 07:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018178; x=1774622978; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aiejSc4X5A/gorkmczOj6dnKqerAsQHN9lH+LChbOlI=; b=Io7oFoAKu7Y6dwrMzHPKnd+EEjgpoPhGOyDBahhiZK4xzBId/IbFa6SIEdi5YvYy// 4Zo4xeGeHt+2Ci8YIRE7Und7+sXbSr+FZkHFpjRApLG+kbf0XZdXUJ1zDFjln4Eu5aqk ly3zZeDftFyO3Vi59R5krKI4lGWY1f6nEMsB+K29npNc/pO3mW2zcDTedgLpGJjDCrQ5 xpwT4AQLHpkopiUUeFWoeRCb1ZsowbWeogkeSSHdytYbCEj1bFLe/p2XtcpKEuemB5hs p2ti1QeADz4lTDS3rb0lEUp586E1tYpOYSJqvvk0bXRJymxxQGuv0tU76xioe51yHgCp yj1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018178; x=1774622978; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aiejSc4X5A/gorkmczOj6dnKqerAsQHN9lH+LChbOlI=; b=OX9epqPdKaiLdFylsq6n0QFBxyEuHXAQyXGQ7sQ7pXg/76rusi9etlTegaZtzBjR5L 6TUIhCh4GHocda+77zi6HspDJdOYyq/AbhC5g+vmWIv6Wy17AzrmIT2qdQnqkPq/38a4 92Zz2DuGoCOwFGa/eRGAob4gIeWQtRaYhTueqr1eIyMcVTNK4wbGTfcCyy+i8whCDdK+ NbYOTTPDFUXYCNl4IhvypLdcweUE4+aGXS46aw8wqlj+jtBIStMx1X3a9ZtHIoWLBWfj oeep58yeK1xEHaZJrdUo9yAM/b9Wq7b9Tp0GlFLRLXD39jwhZpnwEc2sP7/0I520kS9F r8Xg== X-Forwarded-Encrypted: i=1; AJvYcCUuNOAZ35JhmHPEfJLojy/e/7wpA36sWK9grsXhSOO6dbJT72J+EYSq4kV94BQIIR2YtAyTg1i1ZjbI+LQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyqPeeJvs35ilojjCg0D0j71GqKbz/0zOUjX8E/M8mv7wGSKJh/ 3vxGNTcs6rwkGCBDj+FfWyy/ZDWpfqwmMgzRNobZEhMHIVpg3hzoEgFZNBbjr6gqCHr/xaht33z Smi91MIozpSWYBrhIjrZmMBJPokR+JMEoZxDcaRsgrVhr8JJEGbrGWmLmKzXmRkfgMyY= X-Gm-Gg: ATEYQzzNsNB9z1up47/o57Il9DtRm+bAm7d7KLl7now6YnkwUF3ZhU9d7nNc7itHQ33 qzS5rmb7aoqfjkb4/icWa2BFPJHjNvbxW35pkDQkRBfL5YpKa8LKcg3AbitSEKH0a6Bt3jxCMQV wLALPiGf45+MG9/UhIXXLHARyATBvmOoTT74DD4wW+HaFKfTmRE01WrGQZIXqWArz/p4SsJkkI6 YKpGX5Rcsv35wZs6IRiiaTaRkrWITHpMSPZjHaTr3DWGTOyZog6zHPF15TPdX6Uco9BkrdpDA2a BptYoL7Cl92zB3nAag++/07+uvaJCGsEKB/jq8oAJsaVvQ1q89YM/3K5v/c1kd1lijzTt7hsEI/ HeSCnBqxuG+6skBGLt2tRqLEk+vtMK7WhgxQYvWhYZvukFsdhe+/iOn4= X-Received: by 2002:a05:622a:2c1:b0:509:1568:1f16 with SMTP id d75a77b69052e-50b375d4d49mr45800771cf.71.1774018178283; Fri, 20 Mar 2026 07:49:38 -0700 (PDT) X-Received: by 2002:a05:622a:2c1:b0:509:1568:1f16 with SMTP id d75a77b69052e-50b375d4d49mr45800131cf.71.1774018177827; Fri, 20 Mar 2026 07:49:37 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:37 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 09/13] ASoC: qcom: common: validate cpu dai id during parsing Date: Fri, 20 Mar 2026 14:49:14 +0000 Message-ID: <20260320144918.1685838-10-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: cXLR4JGHJi-vwoiheJMRoOjQ0pbvQa-M X-Proofpoint-GUID: cXLR4JGHJi-vwoiheJMRoOjQ0pbvQa-M X-Authority-Analysis: v=2.4 cv=CqCys34D c=1 sm=1 tr=0 ts=69bd5e83 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=FTFSxu1yF2iZ1NjiFwcA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX6JkrPNXM5DnN F+0Tm9oG28tFYHSPkNt77uUfKAgcPg8eqWNVpii2mWhMgrc22Jv963VmM94rpDaUUUQh6Av30DX cjk3trC0T6imrFC3Wyum9wwM19IyDbsEC/SOfJSPaVoWrTZv3Q4wT075mRHytBzXR2G4qWiwwka BOA3NaH37898WlSBBEyy1URVzHvBZdPuCFectWI5EdSJJzF/eCyriZqfgIbsz+GbJq7rpJKSsqn sesM6f2OCCS1p5duIxp+DUqaQtPx+8jZGani+TPitmHw9CDP8Mhfo9dI6yktjBwlfcHdhIDjqCq MqK6DTUSj4f0HeW/jNhhDJyMtAMjgMo6JACRcdp3xl879TPqWuHykEAa7bTnCX4OEIpPNeikevr U/4adjfgdanCxcvL9Qg5+UnoKOgBde9TzNPhConjPfdbKtkKCR98jJyRS+jydq/sIqngeEF35SS iuiRfj94H9MqkUiW+WQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 malwarescore=0 suspectscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" lpass ports numbers have been added but the afe/apm driver never got updated with new max port value that it uses to store dai specific data. There are more than one places these values are cached and always become out of sync. This will result in array out of bounds and weird driver behaviour. To catch such issues, first add a single place where we can define max port and second add a check in common parsing code which can error out before corrupting the memory with out of bounds array access. This should help both avoid and catch these type of mistakes in future. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/common.c | 6 ++++++ sound/soc/qcom/common.h | 3 +++ sound/soc/qcom/lpass.h | 3 ++- sound/soc/qcom/qdsp6/q6afe.h | 3 ++- sound/soc/qcom/qdsp6/q6apm.h | 3 ++- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c index 7ee60a58a336..cf1f3a767cee 100644 --- a/sound/soc/qcom/common.c +++ b/sound/soc/qcom/common.c @@ -120,6 +120,12 @@ int qcom_snd_parse_of(struct snd_soc_card *card) =20 link->id =3D args.args[0]; =20 + if (link->id >=3D LPASS_MAX_PORT) { + dev_err(dev, "%s: Invalid cpu dai id %d\n", link->name, link->id); + ret =3D -EINVAL; + goto err; + } + if (platform) { link->platforms->of_node =3D of_parse_phandle(platform, "sound-dai", diff --git a/sound/soc/qcom/common.h b/sound/soc/qcom/common.h index 1b8d3f90bffa..ee6662885593 100644 --- a/sound/soc/qcom/common.h +++ b/sound/soc/qcom/common.h @@ -4,8 +4,11 @@ #ifndef __QCOM_SND_COMMON_H__ #define __QCOM_SND_COMMON_H__ =20 +#include #include =20 +#define LPASS_MAX_PORT (SENARY_MI2S_TX + 1) + int qcom_snd_parse_of(struct snd_soc_card *card); int qcom_snd_wcd_jack_setup(struct snd_soc_pcm_runtime *rtd, struct snd_soc_jack *jack, bool *jack_setup); diff --git a/sound/soc/qcom/lpass.h b/sound/soc/qcom/lpass.h index de3ec6f594c1..68b71039b981 100644 --- a/sound/soc/qcom/lpass.h +++ b/sound/soc/qcom/lpass.h @@ -14,10 +14,11 @@ #include #include #include +#include "common.h" #include "lpass-hdmi.h" =20 #define LPASS_AHBIX_CLOCK_FREQUENCY 131072000 -#define LPASS_MAX_PORTS (DISPLAY_PORT_RX_7 + 1) +#define LPASS_MAX_PORTS (LPASS_MAX_PORT) #define LPASS_MAX_MI2S_PORTS (8) #define LPASS_MAX_DMA_CHANNELS (8) #define LPASS_MAX_HDMI_DMA_CHANNELS (4) diff --git a/sound/soc/qcom/qdsp6/q6afe.h b/sound/soc/qcom/qdsp6/q6afe.h index a29abe4ce436..0b8c3ec1315c 100644 --- a/sound/soc/qcom/qdsp6/q6afe.h +++ b/sound/soc/qcom/qdsp6/q6afe.h @@ -2,8 +2,9 @@ =20 #ifndef __Q6AFE_H__ #define __Q6AFE_H__ +#include "../common.h" =20 -#define AFE_PORT_MAX 137 +#define AFE_PORT_MAX (LPASS_MAX_PORT) =20 #define MSM_AFE_PORT_TYPE_RX 0 #define MSM_AFE_PORT_TYPE_TX 1 diff --git a/sound/soc/qcom/qdsp6/q6apm.h b/sound/soc/qcom/qdsp6/q6apm.h index 7ce08b401e31..5cf538397841 100644 --- a/sound/soc/qcom/qdsp6/q6apm.h +++ b/sound/soc/qcom/qdsp6/q6apm.h @@ -14,9 +14,10 @@ #include #include #include +#include "../common.h" #include "audioreach.h" =20 -#define APM_PORT_MAX 127 +#define APM_PORT_MAX LPASS_MAX_PORT #define APM_PORT_MAX_AUDIO_CHAN_CNT 8 #define PCM_CHANNEL_NULL 0 #define PCM_CHANNEL_FL 1 /* Front left channel. */ --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 E192B3CCFBD for ; Fri, 20 Mar 2026 14:49:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018183; cv=none; b=Chc43qYbEqRHUjSqWNrB7eRwqQ+zd7y8yNntW4hm0QaKp0wmuDik4r1Z/6JA8w6Kvl/H2PqXZGWECvlP6Guyi6WvxRd11HT6mKClTABZSXhyttg+ULNyrg7J5Ta7TrA2VL1hd3ot+u9idVp+plJyymKlgmF3JgHPdCJ7tJTBnkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018183; c=relaxed/simple; bh=Fl/z/x1vRgiwJd1pRAYk5uDKCPsjPZHEyO/+LZ3AuNE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DCVN8UoPFfVHKFwFo7S8907VElG2WTiwLWmUKzGIMkeN1gX8LxsZf+POk3doufMPVuC3tM1A5y+IitaHrPHnmO3dsc6nNEAxx6shjJwyenbwkgyKva8M4WjtZ/AuwYz8FcKQbmISDilLyBnaZcMxFN0i1dAttH2cmJMr9U7WzPw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pMShffJ6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=N6Sc4Dd4; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pMShffJ6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="N6Sc4Dd4" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K94UPd700888 for ; Fri, 20 Mar 2026 14:49:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=ngH86D4QhHS BBEnIjfBcEjvZR9eSdOdxegad2SenX0M=; b=pMShffJ6x/zgFCY6PFR3XFwR3/J Y2NRbJTEpUZVqKDPBzSJ3g35nF6ZtPuruRFo18djvgL+dsNVA0J+eD1fjjjKwsaR 67E87l+IST3t+Fr4R378h8VXWofaMCGZNbdRXfS8jC1GN6K85iWRK++VtQA2nM0A PSqaJCJaiTNt+HRdjcKJxk0JfpSJ0skd4n/euGbWNrj8cFIyh3itps+PPNv1MBOB oefLECB7tvmsm5ZoapnB87A+KPRrQro/J7RQ/75P6hnDJ6xbLOvWjsvfpGtjo2F9 znMy5H8Ukvd0yT0QGP1eDKNUw7W2HlyWyxQsV8JdHmYkc41/ZnR+OF6PIEg== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d139q0sxn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:40 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-5093787e2fdso100897581cf.2 for ; Fri, 20 Mar 2026 07:49:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018180; x=1774622980; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ngH86D4QhHSBBEnIjfBcEjvZR9eSdOdxegad2SenX0M=; b=N6Sc4Dd45ZJvu8ujs/mAJPIo44i8ATFjTr3lwllFyaX1e8KHs9vMAgee8p3X7h9u4Q cb6FfOUFUl398d1LfSplB6bcIR1jhDZ/C+flIoqgakwMvSfwqvprzWYs+x3nFbu061oT Wo6uZ1XFZ7euYOFbX9pm76+VjCbs0+pvMIjvtjvl9/hCTFrSvs48ZyPXTIdCJoA77Q8V afxA2fKb5C3bmeOwg34IzN/blijZbP4vUIrV8B+oNzpINu+Om0cZWCWDKSXp99sR5Dkx Viu5Ra0L49VycQtLS2T1wX0LbYKu7IkDFLEbk9Y0rMjQXC4ddnxdYmSB5cyVihCwptlA Ji7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018180; x=1774622980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ngH86D4QhHSBBEnIjfBcEjvZR9eSdOdxegad2SenX0M=; b=puXaGrxcsp48AxwCtJRraCAFzrXQezKUhA/BV/XXvhDldENcOpLnm2EYi7TIogmUmU dKPE8p4dh71nOFhI1d8UCqEYQshlYGZ5p9W8xbko8OoWs9QgwdV+hkXGpNTqLNvw9IsN aKux4zxwyRAwTgtdwQoZ5cxbrlOPRxWAwR4SDZA4/BlflxOsxm4Y/FXjBlbuG9T7kAfj p0n5FGCgUZS4jOaCcEkGeHFBl+0XZ1kkkIbBjDt3bdCl1d8bFMBZQOTdvnSbqA+Hputl ISrcsz3alNIX4H3wHF7aCD28H9QoxocQ/3Sp6g0wmg3t8p8ltZ+xf6F9HmPnTePszsqG oBgQ== X-Forwarded-Encrypted: i=1; AJvYcCXQiHD60qX+ZFm0erfgB14bUH6IcmEOwaKC+gtfpDxK9mPf2CEjrP6h3vtqdxF7eObxltvNkA7BSychjsM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzw5rMSsvBJHMdmP9dfl8w5KLY2uj5mhxvxRPUP2kHt4Lk+igND F2SluZh4F1HFrNqEw351t2zUg4JA63nsclu7WEvYtMrV5jlnW0fQDDLPaOkmi9CCO3fppRU87/N w8cZKKqn1jdWbFnlrBwC1GfoTvIvoEyAI6KlKElToF9xw/B82dsx3GNe4xqDIBEFuO30= X-Gm-Gg: ATEYQzzlpvEm5IFjIuopBRhwKOEGARj05cubmXcNWKXSyD13qWJTHrm/JZjXmRHpF+d NxidLtuybDGixgUJnxmohFXDcZpevhypd0ZAYYSDjMU+ibVOEP+HP9c56t5j6kMkcl0eTK4t1A9 FDBx/WVMvJeW0AKTg83MvRbQD8UovdEJYn8Fll0o3PBoPDf1x+IefUtyN1/xO8lydsXUJBfOdnk EU5oLa6eI/V5wz2iJ3oPCDqZyfi6qPtzkx+HscyuAoHPDNxWa3+FlS/ZnR7vT+vQpsD7ZnyXD/U I690RupJ3IKw/EwVOA+6r4qLj551zmlaAUhy6pnaEIR9j9FAlhSSQ7qTeO38Rkd5iRPpJsQGUD5 XrUlYVpIYfkOcwlm4ss3KvMN92ZRxgCcX2ElMe+w6s7RYaXgXhjaQbQA= X-Received: by 2002:a05:622a:5c9:b0:50b:1ecb:36ff with SMTP id d75a77b69052e-50b37517bbdmr45417861cf.49.1774018180131; Fri, 20 Mar 2026 07:49:40 -0700 (PDT) X-Received: by 2002:a05:622a:5c9:b0:50b:1ecb:36ff with SMTP id d75a77b69052e-50b37517bbdmr45417351cf.49.1774018179675; Fri, 20 Mar 2026 07:49:39 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:38 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 10/13] ASoC: qcom: qdapm-lpass-dai: correct the error message Date: Fri, 20 Mar 2026 14:49:15 +0000 Message-ID: <20260320144918.1685838-11-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX7ggAB350LEK2 wfPrFLR3uoD84NZjWP3808X4i+p9qHGkkqN8fSX2vYUlE+WFsaA7n3u4SdCBbYpIjSoyyvG5O6l ghKbuapbQHnPYZF5UsLxRx4Yu6QWiE0HCebgmwLK6/M2P3TA8CGz+TOnbD+Wj5klucEY4FYI1p7 3OMALz6j34/CObRlhhfccEoYxt0mBXTnNva5rDEHUzlxr5fkrKGK63x5t3M7FxMDz8RbK4lKjTU 8h1gfZBv0m89BlyV8mwnHTa2vKQhAE4NvB+rCF+/GBmfWA41nZreZT09u9iudU7zv7IbvF3n0cI cNc5Bl8f6fHUhgpN/5IJ3qzs9eQu9+RQCLy23WUMPxGpfW7ALv6rKas+1x/O0OQ8eE7XrCNLR+L 86zY1noHrSkttmBFYn4kEvevLy3viJEi9vvWrdfaeogsMxYVbXX33M6A8SHP2fqDqwqgWdQkjyz qIjthspdDmCWMOIFvGQ== X-Authority-Analysis: v=2.4 cv=FOAWBuos c=1 sm=1 tr=0 ts=69bd5e84 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=QkacBUY9L2qTTJrEq-kA:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: 5-L0K83ocuvo6LglnDVAk6R3wMN0eAxu X-Proofpoint-ORIG-GUID: 5-L0K83ocuvo6LglnDVAk6R3wMN0eAxu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 impostorscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Fix the error message to reflect the actual graph stop error instead of graph close error. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index ba64117b8cfe..87f6db12003e 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -150,7 +150,7 @@ static void q6apm_lpass_dai_shutdown(struct snd_pcm_sub= stream *substream, struct rc =3D q6apm_graph_stop(dai_data->graph[dai->id]); dai_data->is_port_started[dai->id] =3D false; if (rc < 0) - dev_err(dai->dev, "fail to close APM port (%d)\n", rc); + dev_err(dai->dev, "failed to stop APM port (%d)\n", rc); } =20 if (dai_data->graph[dai->id]) { --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 0F42C3CD8D6 for ; Fri, 20 Mar 2026 14:49:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018185; cv=none; b=Dt5L6NasEXgbhX2/w/GdsPhOEKkMuICqiGnZoXvRPX/kwHFCmi1z/QiPj1GYIp3d4osnCvQS5QM+2h9KUXniCJQV9XbaEEK4d703jKX7pVpBmEhV71TTp8OdkF6sHX/bWPqHu6OVy9kzz66cVU69MhfuUCelz+ni78AE7Z5IOV4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018185; c=relaxed/simple; bh=HcBUaG07YHPkjw7AtCbbPauazCJLhtW0eS3T+3u2Oe8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UMR163WhQZAoIeNRt/4YSjKeAu0zCxVXcxxaWjSTTh30+2Wy1eEEDsrmay8MZ8cI6NrBr/I6cwMcJTowqpddm4GAnlLFMhMGg3sXAPhn1UczjFqLsaYIvaBDWIMnzioscZcf6ABU31aLpTxoWqfwdIbZL4+ScKoQ3cRsc/74BPE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=IqWS0ATE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LjBZHLKy; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="IqWS0ATE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LjBZHLKy" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K2Y9up3558008 for ; Fri, 20 Mar 2026 14:49:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=K2FJHPPcvdd DuyFi5b9Enk3oj2KWR4s1Mi0JeIXu8dk=; b=IqWS0ATE2IIUT2Zo0bm+ufMAxEQ LYTadGvd493j/mY/tSJSsFolB6nnJyftoJ7wTBSqTDfViClsUL76F7s4Yc58Ulb2 YKpRkjIYaDXS7UUavG4liHS+YF+Ng0E25y9DE71WD/sEqn7ng29brVKlRo1WbecD tT2J87vn1G07V4gaK8wD/zAhgUgvuUJsNQb9TidLocP64WEDwOF8UdWlqCkQwwym 9ZIVTdMciP1/EAcEsk2USL3SRkA8dezPPo+lNF28EIspcJYlcbQK8PtlqHTR/07s vW6QekB0NsL3n/ESOM4WgZ8MoEBmroxuhrU+jYcxxO3RS33lb8otZeB+stA== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0r1gtfpe-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:43 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-899f474fae1so288906506d6.0 for ; Fri, 20 Mar 2026 07:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018182; x=1774622982; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=K2FJHPPcvddDuyFi5b9Enk3oj2KWR4s1Mi0JeIXu8dk=; b=LjBZHLKyDqZgsyViT1jNc51noRRYu0dyAPHO337bYPG36bMlplkcs6KdOtglIxTB8i MKct4lo5BeAi9rPsqY+ZmtG3UYx8nVYK5c9uEu1ki1uiIFP057mlwFemK2lsxXDKF3XD fVPXO2zqKIMy/X5BM3BaW/0M6e7TD8ElbsrjZht6GwZCNGROTOSHo8oZT9wr+8PG/H/Y sh5+9TTZprMR1wehH4gLaSXgrfBVcGQ1+IVFGxaZ0KEnVBfFippocLUXlC3FIUM/pjyG Tidqwgc09e/tkshJCPqHPcwl5+h8IJTN49jHWkqNu0FNnSXnQ0Hgd+Cj6p4PvEDYBmll RmCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018182; x=1774622982; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=K2FJHPPcvddDuyFi5b9Enk3oj2KWR4s1Mi0JeIXu8dk=; b=AGg7cFnbXeb3m5MK7l/6l9TXQu5UfVTNDMEZpFi9V7cFWJWdtoAhH5TwL2kkThnG5v vPWE2sxN7jw3EAV6wHP0/Wt76Kkg8EYXEBou4+drrKJTwGE7T/M6qHlAlU+K7C1X0vhH BPRUMqiDSQAmaOIuXMHv07nAxUc+ZVaoqUaRJL5rFPnm80r/aixH16mrZtM04994ZsFh ynqJyiovaD2xQJOPQE/sReoMzBh7qDMg8z9v2zxPLmFqQArBgwdFBdArBKHqflrXcJk7 DTLfQm2SrdlphiguGXrfXCYGmZmKIGuTL6L2wjXJfrIYem05u0AkYGdwvDOOzOXO2Zfv XQgA== X-Forwarded-Encrypted: i=1; AJvYcCWo/SsVfIVU9+Pz+RUe+iONMdh+SHjhB8ynPXlrrXfiy1mJOeFhjt60Tc+d+iwXQnhdqSPh4Ud/Ax3JyC4=@vger.kernel.org X-Gm-Message-State: AOJu0YyoV8rro5pYA+P6lNd6agVO7K1kbWFyMQRocpD7fYzSMYdKlG63 0FF3lk/rPZZIs4f+QqiM4Mvy9Mgg/ZUOJE+t6jQDsn/ZTYk53rLVhuZXN1RsTH25sxlM4FqezGn z0onAPlv32amudCsaZOeVLWcLhAnxmumypPq2EP/lWl31kIsjFx+UJMBHHXYf/js6EFI= X-Gm-Gg: ATEYQzxq4AwLH57MSE6a+AUVmf+cVSdTT6orgWZMVb8kXhO5Kg1ltDhnxdmjqVb5jsJ wakhuniH4/ryV9z/UDYqVZDsIhAHDKZ3yt0f1zxqZEjJCldTwu9RItiHkxUa4ON5S9Pni37D4Vi Bs1n1tk41FtPocq4raOKpfUzlKcNOS9H2Z5KQYaKlQekL+EpAPaS/DFbWiwiyaCi8T7M96mYdRN xAI04Him/X5yxXPBHnl3AYPSxtPln7Zn4mL8B38Bhvu6ld50KlvFr9FjU/BhHDiMxsvpEuurGCc /FEnOi2aBcSczap86UtIrMiDvoG+rWng8JkK8v51hgQpyFn55ZvTnNG9BvCBiebB5gOmdEP50ko E9wRfJ2ddu7pEK6Hvh3e8EYPQzpz6rbpoNoOytxysLhywDht0D64dWJA= X-Received: by 2002:a05:622a:130c:b0:509:202f:f03 with SMTP id d75a77b69052e-50b247ad184mr105792251cf.38.1774018182347; Fri, 20 Mar 2026 07:49:42 -0700 (PDT) X-Received: by 2002:a05:622a:130c:b0:509:202f:f03 with SMTP id d75a77b69052e-50b247ad184mr105791611cf.38.1774018181640; Fri, 20 Mar 2026 07:49:41 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:40 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 11/13] ASoC: qcom: q6apm-lpass-dai: move graph start to trigger Date: Fri, 20 Mar 2026 14:49:16 +0000 Message-ID: <20260320144918.1685838-12-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX09S5hhnkI+xM Y+qo887gYzF2O/z5aDF1Yzb1cGa/ntwaBOg9Ls6LKRvHj9vCFGsLU6UcxfOqoy/nSWC+GSixjBz 5D7tuDUEF98k8UbrE4Hs3iveluFtpNpaC2ehrUit3SkzW+BlbOJX8upg7GXFX191J5JwQRnNPi5 770DST7Q/L2dPIyDuLD99ZG+4SGVA1LZM0ok5uVTDLHyE5xmYZrXkJL++yZo6OY2DRCcZ5XgwUD 2HMLV9s+AsxNYjVmXjfIAJuxDnqDDj7H4lDK0hbHwayNQ4vClo+xz6/POFqZQi1Usvf0XB3SkEg 27WX9c/sm2+MaCsidXJxQMDNtGWZL4X5xvuONOHsY7XFFXHVKtDYDS4RjpqviPmLX/6OmJbl7q/ yWzJHm5rprB70HXH+3CbHiZIWBVm3wA3CytXnwaq9maYGy2Xuf+NOeNMv4C4gWoa4UjGIt3/Zo+ lQtPj/FPzOBuDJPoD1w== X-Proofpoint-GUID: xi6x1Ujqq6PWFYPutsPuwIAj7-yvdbmY X-Proofpoint-ORIG-GUID: xi6x1Ujqq6PWFYPutsPuwIAj7-yvdbmY X-Authority-Analysis: v=2.4 cv=Y/D1cxeN c=1 sm=1 tr=0 ts=69bd5e87 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=8udmP7N65bQo3KbB_RsA:9 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Start the graph at trigger callback. Staring the graph at prepare does not make sense as there is no data transfer at this point. Moving this to trigger will also help cope situation where pipewire is not happy if display port is not connected during start. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 40 +++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index 87f6db12003e..e904066484d5 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -159,6 +159,31 @@ static void q6apm_lpass_dai_shutdown(struct snd_pcm_su= bstream *substream, struct } } =20 +static int q6apm_lpass_dai_trigger(struct snd_pcm_substream *substream, in= t cmd, + struct snd_soc_dai *dai) +{ + struct q6apm_lpass_dai_data *dai_data =3D dev_get_drvdata(dai->dev); + int ret =3D 0; + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + if (!dai_data->is_port_started[dai->id]) { + ret =3D q6apm_graph_start(dai_data->graph[dai->id]); + if (ret < 0) + dev_err(dai->dev, "Failed to start APM port %d\n", dai->id); + else + dai_data->is_port_started[dai->id] =3D true; + } + break; + default: + break; + } + + return ret; +} + static int q6apm_lpass_dai_prepare(struct snd_pcm_substream *substream, st= ruct snd_soc_dai *dai) { struct q6apm_lpass_dai_data *dai_data =3D dev_get_drvdata(dai->dev); @@ -171,10 +196,6 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_subs= tream *substream, struct s q6apm_graph_stop(dai_data->graph[dai->id]); dai_data->is_port_started[dai->id] =3D false; =20 - if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK) { - q6apm_graph_close(dai_data->graph[dai->id]); - dai_data->graph[dai->id] =3D NULL; - } } =20 /** @@ -203,14 +224,6 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_subs= tream *substream, struct s dev_err(dai->dev, "Failed to prepare Graph %d\n", rc); goto err; } - - rc =3D q6apm_graph_start(dai_data->graph[dai->id]); - if (rc < 0) { - dev_err(dai->dev, "Failed to start APM port %d\n", dai->id); - goto err; - } - dai_data->is_port_started[dai->id] =3D true; - return 0; err: if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK) { @@ -254,6 +267,7 @@ static const struct snd_soc_dai_ops q6dma_ops =3D { .shutdown =3D q6apm_lpass_dai_shutdown, .set_channel_map =3D q6dma_set_channel_map, .hw_params =3D q6dma_hw_params, + .trigger =3D q6apm_lpass_dai_trigger, }; =20 static const struct snd_soc_dai_ops q6i2s_ops =3D { @@ -263,6 +277,7 @@ static const struct snd_soc_dai_ops q6i2s_ops =3D { .set_channel_map =3D q6dma_set_channel_map, .hw_params =3D q6dma_hw_params, .set_fmt =3D q6i2s_set_fmt, + .trigger =3D q6apm_lpass_dai_trigger, }; =20 static const struct snd_soc_dai_ops q6hdmi_ops =3D { @@ -271,6 +286,7 @@ static const struct snd_soc_dai_ops q6hdmi_ops =3D { .shutdown =3D q6apm_lpass_dai_shutdown, .hw_params =3D q6hdmi_hw_params, .set_fmt =3D q6i2s_set_fmt, + .trigger =3D q6apm_lpass_dai_trigger, }; =20 static const struct snd_soc_component_driver q6apm_lpass_dai_component =3D= { --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 EDCE23CE4BD for ; Fri, 20 Mar 2026 14:49:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018187; cv=none; b=Cn/Y7gvukg9PrqZ3FbbbG7tvYJSssPz8GfPX5RTPOsyLjQs38nUee+FZfKFbdTSW5f4pnqJHPjmpb6yftpH8IJAnzeff15qiGN8PsPn7/Cp17z1LkPD27Z1vfqkiz61pMHrav3KSyQtx1VCRt3PpQNUSB17t+GtYJWWx9E1blHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018187; c=relaxed/simple; bh=PuJFamBh81bE/Zj8ZHvJy/U5gL5zjKCwi4dfSJ851vE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FFXtR/doB9FXUZl+62l0ZJna4O1JWAy5MpOrs9LSi7IreN79K4Zf8TG3LvYyfn/3EvP4aTkMHTM60Eqqu2QcAdnVzN+QSw9p+Leg0y+BX9yPBkbJ23a/a46fDKkhtqhEmQA31Krr9nqNHIlwDzh5xgI2Uua2OfJNaHaJviH97zk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PIf+Gxh6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=eTO1L5oB; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PIf+Gxh6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="eTO1L5oB" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEgwi43557797 for ; Fri, 20 Mar 2026 14:49:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=fSPCBd3T5A0 bZHkS+KsyEWqVlhqEkiuzb7wl/h6xEi0=; b=PIf+Gxh6gReVtKCx/XaMei+cyOk LJsr9T65zMiFuTVilv11nxNflIQB/S+xoMTnH1s7SVGLjvv3pEJ0qpcOcLoXJjrp ozt1eDEWaS4ciOIIvE5YtmS4ENiTpoLHVYhYg3/ruZfV1NCBVeth3pwjhLty9elm 2lPhfd9tdN/+89mJOBlQSJh/nnDCXIncEDp2LgDDDhggrJ3YH/oHjn5treRfyFkq XU8p/X1iWkv60/w6p7sDkcFpfNzeAw7XIzmTVekPdUZMjilEydb1QX8SOeMM9Ib8 ZL4aFqcBzigQgDGknyXijPoDlfjbGEsdBjkE9gSequHbyxivfF2PbWb3eLA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0r1gtfph-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:44 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50925fed647so153626941cf.3 for ; Fri, 20 Mar 2026 07:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018184; x=1774622984; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fSPCBd3T5A0bZHkS+KsyEWqVlhqEkiuzb7wl/h6xEi0=; b=eTO1L5oBU5VlS79m9WxCcqTnF45y6Gbg5a0cQdSECq3ZX8pbyUq7dXFjdex6KG1ylP 9NkJwf2ADxz119p2W419UhevvX1TelcIcz70tXrBiYZtmvR71YSE0tzk7z7HnZn/wLdS KumlYylQTm6aMKpjzixDf24SaJU9AiOVgWc1gRpNkFE/Yj83Jij8ajro+d9ridXkZ1Da fPApmAAA7Z/2kyp6/jqkGvfhwoEgIRjzdhZc9N+KEmK33F29PwM84oikr3lsIzIuP8pC BzsJJ7roRwNPpamPgftDZELqktn4ep0dj1rXtHp4n0JwWjkIxui69c7dWNyra+8goMqO O6Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018184; x=1774622984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fSPCBd3T5A0bZHkS+KsyEWqVlhqEkiuzb7wl/h6xEi0=; b=LU7OveWbD5ZyFbYNamebbHG/OUqsCPnEhyOjEGmuZSkuP0BYhX+RG85V3E6l/co8Av B1sgzKZ7IQO7mbI08sVGRI3/hmyHMge14E/SThXTdZckrM8RzVK/tV1qGZ6PXtelMPUD funePTd2eE1BXhiKJbVI1E606hPFUUtmtmDP876OsOY/M0LbETSGdgUqsIqTwSd4VYk4 9SDMA84dGjCbhzm44+7SXQnrCdHrzHOxd/DBDDFPt2tvoYlfYdaOBmvEqkUWYl74IXNG RRwDuaGdi2k+ViiKa/jFwVdRCK33YSSPlkQu1fWM3xkKzIANbx2sD2A1eqSJ9PGtcdRm 4JDQ== X-Forwarded-Encrypted: i=1; AJvYcCWpxuWkxEwlwOJgOxjrQP8GpyMMYRd5Hd8KgS9MI2F9BZIaCxrMfsQol/f8NzOGDzeQjFsb8ewda0A2MrU=@vger.kernel.org X-Gm-Message-State: AOJu0YzjVOQgeGjTgBmC7yY8jH+cy3SDa5aQsIQLwmIzE1Yf4PlyuAaT Z4HFWq2HeBAW5J5mPP6eWXIMD4usJd/Ka86cMUmXAIY1NhVdA5czsGoTmYfUEScC3a6bCLYxIJn JtoGxjgZQmy/KP0y5ma8Dx3gsKLs43GfrehVU71lz2oHk3H5tx74xpQs+6ND0j0tv4xE= X-Gm-Gg: ATEYQzwi25bQNfsvigqU3lrwgi2KR9cKuavAqiLdGfp1yZKg2gchsoUuBb+hFc9pEIk Ne5PQjLGOMjVm1FTuX9TIQau6e21kW8bBh6NwSwAa+AqDn8eUJen8yh/fR3/0GgekjiiW6BTGC0 UxsOBFydNUwbOhgKu3wF5VRbvT9xwrHxwulmZTsrvSNNET+UCbwT22gAVYHaDQaWDtoVnD336zY SySsXYSYk7c2SpVxZyxD+TwzTNonlSUZ+UO9p0rYkiL8/lgWo+L4MYp0qktTqGVgEo/Qjq7gQtF IzK30zmm9kW0xmo+t0uzR7HKjaSV7uzKXkniI8F7yig+/KTGHFtRWPT/9N3sOCio0RlU4NBHpNw pnqlOvdtWtwEQsojF/DmLHSxwhBHvw9x5TLNxILBfBTmg7PqpDxdFNyk= X-Received: by 2002:ac8:5a8b:0:b0:509:2997:b929 with SMTP id d75a77b69052e-50b375b02ccmr43326061cf.67.1774018184275; Fri, 20 Mar 2026 07:49:44 -0700 (PDT) X-Received: by 2002:ac8:5a8b:0:b0:509:2997:b929 with SMTP id d75a77b69052e-50b375b02ccmr43325601cf.67.1774018183772; Fri, 20 Mar 2026 07:49:43 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:42 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 12/13] ASoC: qcom: qdsp6: remove search for module iid in hot path Date: Fri, 20 Mar 2026 14:49:17 +0000 Message-ID: <20260320144918.1685838-13-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfX10+xv+nOlh1P n/2Htbl2ZiJ6VUeUnoQOzrM6DKxYf6K+fD42fOmLpn6Km7YCaAfYxel0CaAGgBty6oK926f5Wkb scB4Kv70RREm36d68js7S3OdfYFStjxnVGAfFlDDYNdloDx9/dZcnUjOXzuafQQyPtH7Cv7xtOP zeqiVca0HLcZMv5UHJJG9uCvcz1Nd9/yZwgMbrht956s6QlBgvT4yvkh7WmsvszbuMzd+riGaYs +F7RZx1rBqmzYTDl7OdXHXpEbQAzth/UY6kquR8XuwJGRQ5HD1iRKIE4C8NG6i+YKNbn7UDWo4y tcTbdZaO2HbPrQKhhDhtyeP2pzupCuef/FFIwPKdicugIG7tbnTxh9WOTdaibS6QwQX6k5Gjl9p vwf9EbHq4NbagN2ihsn2ufzvu0NS+LDVrM/C7NTeKdolHWRdOkKV8sTO41JMREEM29davQ+VuwI MQTZM2j3AVBKP8ERFig== X-Proofpoint-GUID: 6Jn13TO1sBoe7EwfIv2UNZ0tPo6fWd7l X-Proofpoint-ORIG-GUID: 6Jn13TO1sBoe7EwfIv2UNZ0tPo6fWd7l X-Authority-Analysis: v=2.4 cv=Y/D1cxeN c=1 sm=1 tr=0 ts=69bd5e88 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=Ll4dbTg5roZnn8cDlSAA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Remove searching for Shared Memory module instance id on every read/write call, this is un-necessary if we can cache the shared memory module instance id per PCM graph. Add new member to graph struct to store shared memory module instance id to avoid searching for this in hot path. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-dai.c | 5 +++-- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 4 ++-- sound/soc/qcom/qdsp6/q6apm.c | 14 +++++++++----- sound/soc/qcom/qdsp6/q6apm.h | 3 ++- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-= dai.c index 292be457764f..86d6438bd9fd 100644 --- a/sound/soc/qcom/qdsp6/q6apm-dai.c +++ b/sound/soc/qcom/qdsp6/q6apm-dai.c @@ -355,7 +355,7 @@ static int q6apm_dai_open(struct snd_soc_component *com= ponent, =20 spin_lock_init(&prtd->lock); prtd->substream =3D substream; - prtd->graph =3D q6apm_graph_open(dev, event_handler, prtd, graph_id); + prtd->graph =3D q6apm_graph_open(dev, event_handler, prtd, graph_id, subs= tream->stream); if (IS_ERR(prtd->graph)) { dev_err(dev, "%s: Could not allocate memory\n", __func__); ret =3D PTR_ERR(prtd->graph); @@ -496,7 +496,8 @@ static int q6apm_dai_compr_open(struct snd_soc_componen= t *component, return -ENOMEM; =20 prtd->cstream =3D stream; - prtd->graph =3D q6apm_graph_open(dev, event_handler_compr, prtd, graph_id= ); + prtd->graph =3D q6apm_graph_open(dev, event_handler_compr, prtd, graph_id, + SNDRV_PCM_STREAM_PLAYBACK); if (IS_ERR(prtd->graph)) { ret =3D PTR_ERR(prtd->graph); kfree(prtd); diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index e904066484d5..006b283484d9 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -203,7 +203,7 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_subst= ream *substream, struct s * graph, so sequence for playback and capture will be different */ if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK && dai_data->graph= [dai->id] =3D=3D NULL) { - graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id); + graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id, substream= ->stream); if (IS_ERR(graph)) { dev_err(dai->dev, "Failed to open graph (%d)\n", graph_id); rc =3D PTR_ERR(graph); @@ -240,7 +240,7 @@ static int q6apm_lpass_dai_startup(struct snd_pcm_subst= ream *substream, struct s int graph_id =3D dai->id; =20 if (substream->stream =3D=3D SNDRV_PCM_STREAM_CAPTURE) { - graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id); + graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id, substream= ->stream); if (IS_ERR(graph)) { dev_err(dai->dev, "Failed to open graph (%d)\n", graph_id); return PTR_ERR(graph); diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index 9d4cbe29cf94..c874dae53163 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -411,12 +411,11 @@ int q6apm_write_async(struct q6apm_graph *graph, uint= 32_t len, uint32_t msw_ts, { struct apm_data_cmd_wr_sh_mem_ep_data_buffer_v2 *write_buffer; struct audio_buffer *ab; - int iid =3D q6apm_graph_get_rx_shmem_module_iid(graph); =20 struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_pkt(sizeof(*write_= buffer), DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER_V2, graph->rx_data.dsp_buf | (len << APM_WRITE_TOKEN_LEN_SHIFT), - graph->port->id, iid); + graph->port->id, graph->shm_iid); if (IS_ERR(pkt)) return PTR_ERR(pkt); =20 @@ -449,11 +448,10 @@ int q6apm_read(struct q6apm_graph *graph) struct data_cmd_rd_sh_mem_ep_data_buffer_v2 *read_buffer; struct audioreach_graph_data *port; struct audio_buffer *ab; - int iid =3D q6apm_graph_get_tx_shmem_module_iid(graph); =20 struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_pkt(sizeof(*read_b= uffer), DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER_V2, - graph->tx_data.dsp_buf, graph->port->id, iid); + graph->tx_data.dsp_buf, graph->port->id, graph->shm_iid); if (IS_ERR(pkt)) return PTR_ERR(pkt); =20 @@ -604,7 +602,7 @@ static int graph_callback(const struct gpr_resp_pkt *da= ta, void *priv, int op) } =20 struct q6apm_graph *q6apm_graph_open(struct device *dev, q6apm_cb cb, - void *priv, int graph_id) + void *priv, int graph_id, int dir) { struct q6apm *apm =3D dev_get_drvdata(dev->parent); struct audioreach_graph *ar_graph; @@ -631,6 +629,12 @@ struct q6apm_graph *q6apm_graph_open(struct device *de= v, q6apm_cb cb, graph->id =3D ar_graph->id; graph->dev =3D dev; =20 + if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) + graph->shm_iid =3D q6apm_graph_get_rx_shmem_module_iid(graph); + else + graph->shm_iid =3D q6apm_graph_get_tx_shmem_module_iid(graph); + + mutex_init(&graph->lock); init_waitqueue_head(&graph->cmd_wait); =20 diff --git a/sound/soc/qcom/qdsp6/q6apm.h b/sound/soc/qcom/qdsp6/q6apm.h index 5cf538397841..7c646ffcf956 100644 --- a/sound/soc/qcom/qdsp6/q6apm.h +++ b/sound/soc/qcom/qdsp6/q6apm.h @@ -99,6 +99,7 @@ struct q6apm_graph { void *priv; q6apm_cb cb; uint32_t id; + uint32_t shm_iid; struct device *dev; struct q6apm *apm; gpr_port_t *port; @@ -113,7 +114,7 @@ struct q6apm_graph { =20 /* Graph Operations */ struct q6apm_graph *q6apm_graph_open(struct device *dev, q6apm_cb cb, - void *priv, int graph_id); + void *priv, int graph_id, int dir); int q6apm_graph_close(struct q6apm_graph *graph); int q6apm_graph_prepare(struct q6apm_graph *graph); int q6apm_graph_start(struct q6apm_graph *graph); --=20 2.47.3 From nobody Sat Apr 4 07:50:49 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 A9AD23CEBAF for ; Fri, 20 Mar 2026 14:49:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018190; cv=none; b=fGNKd8rw2/6UnDKHCbAE3rBk2Px8wj7/BFW0v80kuCRaBxx0gTeTHY37EMJLoMzA7QQbmr/3vADye9MWJl7edPfnacRj39cbV6dENa7BlO5FcADIDgdKMThq74+OfsdWLgkuh9Q7yhgqGa9RhlPXtf04vLATAVHmSNY8RMM7Ruc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774018190; c=relaxed/simple; bh=+4ZMOkIlelT4xEq9dVOQhsRwC9XDwxeS0RW6vQbiCvc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ez9PUqtqHsCnOSv1xPv2KeW/roorywmBTt2FzATDbFAliSazx28nJLDFOSuLiHWQ6fVMg8JpcRAOWAlFe0Z3g92XbonkQBu3VZmOCFeZro+bCSjVIZsu3x4xGnpJSaec6Kr3i83tpgZ0Lv+K/MDBgXKEHUMoCijchXPG5c04hVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=GLvGCD7b; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CejNC0R8; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="GLvGCD7b"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CejNC0R8" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KEHLFh3614587 for ; Fri, 20 Mar 2026 14:49:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=wcdgNdHdChd ye5Zg42X3XpyaTrSv9IQ0+p/OY9srGog=; b=GLvGCD7btdJKb9BsdXVtdWinaG0 5jnvgpVYDUaaFz99yHweV8OQvXCBluBGwfBRgv+1h/esao7h9h+KKzCrMtYn2UfC 51ef9D8ivahYqDC+X+JzsZucKAqYmAUYEKQJaTGsFNC/mrn4jKcLOA/4o0wZRHjn E7pF4m17vGjWoVdcum4vyEA0Z0dZkmAhfqhAA/EymE8IFKdDNW9kWlnkGEdM42OR 3T5iPxt1DyXZGTn19V50bBq+i7LfKoUVXqCeN7n0z6JcuAPArmqQKN54UKG0u2fF z9gsxhLQWGCP66trC3IMVEUjWJeSkNWnvxbjSMPMO7UnCXCQQnRJffzOMZA== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0qg7akdf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 14:49:47 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-89c4e730c2bso6536116d6.2 for ; Fri, 20 Mar 2026 07:49:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774018187; x=1774622987; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wcdgNdHdChdye5Zg42X3XpyaTrSv9IQ0+p/OY9srGog=; b=CejNC0R8n3oYOKGmuZT9us7wdnNRlJHRJrxGF0CoaTlUHarFNjtNhHOY7AFz+FYzz0 GxOEi6WNprN6vsg6qpkA5r5UWAQ8ZxDbU/C9PLJ7HS6Ft8RAmYsn5yg/4515EQi9fsb0 aIKZCVAtAUyhyJ5dclYU/+h53fuD5DBdFJj1WnIUb+uM//MwXowjEuPgPfNkExC7HToS hzJIC/TNOweZz0Pxbpz96sAKKQH5u08lLM8c97MZGEoVVRA0NyCfS1goeEMx/69S4t8e 3LmLRGnQuYcr1nCqWsNgeEcsBAbw4pWE4ASDRxT2hjMc5+oZmZ91CygM/0xvGNuPaz6y SD3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774018187; x=1774622987; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wcdgNdHdChdye5Zg42X3XpyaTrSv9IQ0+p/OY9srGog=; b=FeM7GZ12jWIm9brUPpSMFk0NWPe7zHUvES5PTMNXVnsbxykOutPXG2sh41lqaj70e3 EtEp3PPaQ+YSg4OD6sqc6HXvpK2ZTgCgASmnOteOA5H7ReDtmCWRim8ukYtmjhqlhMhZ UCbhVtBfNDmVtHwyeOkgGRZptXTPbcTRy7zGOMYO25BECetoAEeVeLl3TwwkihZyDuik 3XmuWLeVtI5eZ4LK/9Zb3cUDYG2ZBNZCcPztwUtfLrJnlfEVtNpn0oz8fjfw2QdHw+EY RI1Lq1fDUxFLqry9HUfzqylJnCNMAxeQIgMMigw+XM0lo1bx1H3IPd0NaYHUbmV9ADTh H4Eg== X-Forwarded-Encrypted: i=1; AJvYcCXP5+6PNQk0/V4cCL1Xjl+zjfSjpTfzoKpfv9J4I+lm4fBDG0ggvasFrJWx05amVjGOe5GqkzcxoAU/OtM=@vger.kernel.org X-Gm-Message-State: AOJu0YwqQ2I8vIQCL7qvwzuStQOPrTWRDdMXbmaDe47OKQxWK/63cHE/ OmWZ01L75vVS7aCBiNX7bmr3E/WIjY4WFm4TX08NpGLFanKpALIwDofcnsnmnf71qBc2Q3RrQZe 68P1EU98j18m0wk71QYNgvDp14hmjrP+jNU49G9shjSDWdv1vMbbE5rOMs19xsCyfHrQ= X-Gm-Gg: ATEYQzxKpfALOkVZNHQCMocUNUuu+1DMYXHN5NFgMp9zYE3me8VMBJDM62znH4/+NA8 Rg0S5T8WYe63rBLWqmjEhijVbl0gXRwZWr4Q5zvTQKS5p9403I0cW2Rt7dvymq41rq1VCuXt3Qh gZKyPYt4BglgKSIPdOQKiJQhmcF/FVA48dOwWJqmgxDEf0Hls2G117aoV+feUSk3+srpdqNigQf 7saFFF9Zj7mJQvvFtpUepwDB1XvBfl90xwOXEH7RJzgyjyqIDlNv3EoeiI2937L8BSlklydUEq0 DzguyudFK8c+vgFnf+d50ObSKhJUZPBfDccGyXssMn+JAnByNSxzoXvdu00cCAsXKl0FatuHptb w4HXW2vSkDYz+KTPFJLqhVk7m6bwaqcCzlJTdYSUIBSSe/64noULXxo4= X-Received: by 2002:ac8:614d:0:10b0:509:23c5:3292 with SMTP id d75a77b69052e-50b374f6ad8mr36596181cf.38.1774018186476; Fri, 20 Mar 2026 07:49:46 -0700 (PDT) X-Received: by 2002:ac8:614d:0:10b0:509:23c5:3292 with SMTP id d75a77b69052e-50b374f6ad8mr36595321cf.38.1774018185729; Fri, 20 Mar 2026 07:49:45 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486ff109b95sm47906825e9.1.2026.03.20.07.49.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 07:49:44 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v6 13/13] ASoC: qcom: q6apm: Add support for early buffer mapping on DSP Date: Fri, 20 Mar 2026 14:49:18 +0000 Message-ID: <20260320144918.1685838-14-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260320144918.1685838-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 5xeFxh7i42T8MPfrcIO_L_6m9-ag0u4W X-Proofpoint-GUID: 5xeFxh7i42T8MPfrcIO_L_6m9-ag0u4W X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDExOCBTYWx0ZWRfXxZ0RZ5+S1A+Q ILH9e7A8Kiv3IXxGYybe3T9RWBveOcLEvLv/EBoBmKyy10eKCST82KZufkA35e3xP2wiRatyWLv znWCfUbvmILtHNzDPQjBbtdvSvOVCDbJMsX1gSutO5gOrKU5a2VOUIZXw3hVFIxQBbfVEF8NPvF 6KXmEXXo5ibUdLetzceqgc8Aa+Qx6nDKUevajeRqj5TGHj6SThBRgDiDI1eyZrtIS82JlwI79Us fGy1v2ACwsDonF/devZO47B1pmiIn//AY632HPUd0JkuGiyNyS4kJMHbQAPigQE63lrzrgZ3ezZ 6SU5I79Yud/WL7iEUr6biIlgyDdg/xDQ+gXyDZA6tpTbBis/vDId5I+753HjnU6ivEGochODzsd wYnIZrA4j+RGkrLaWfX/05F5Ru6tvTCFYjpTuSibwCt4KZtywQ1MBWcNm1srwriLpB4fi3flG+q 36s7BU6BSfMT8yk2wOQ== X-Authority-Analysis: v=2.4 cv=fdGgCkQF c=1 sm=1 tr=0 ts=69bd5e8c cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=Lmls0Cg-LgRrrh2KKlkA:9 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_02,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200118 Content-Type: text/plain; charset="utf-8" Buffers are allocated on pcm_new and mapped in the dsp on every prepare call, which is inefficient and unnecessary. Add new functions q6apm_[un]map_memory_fixed_region to map it on to dsp only once after allocation. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/audioreach.c | 60 ------------ sound/soc/qcom/qdsp6/audioreach.h | 5 +- sound/soc/qcom/qdsp6/q6apm-dai.c | 108 +++++++++++++++++--- sound/soc/qcom/qdsp6/q6apm.c | 157 ++++++++++++++++++++---------- sound/soc/qcom/qdsp6/q6apm.h | 15 ++- 5 files changed, 216 insertions(+), 129 deletions(-) diff --git a/sound/soc/qcom/qdsp6/audioreach.c b/sound/soc/qcom/qdsp6/audio= reach.c index 241c3b4479c6..b2975eebab71 100644 --- a/sound/soc/qcom/qdsp6/audioreach.c +++ b/sound/soc/qcom/qdsp6/audioreach.c @@ -1396,66 +1396,6 @@ void audioreach_graph_free_buf(struct q6apm_graph *g= raph) } EXPORT_SYMBOL_GPL(audioreach_graph_free_buf); =20 -int audioreach_map_memory_regions(struct q6apm_graph *graph, unsigned int = dir, size_t period_sz, - unsigned int periods, bool is_contiguous) -{ - struct apm_shared_map_region_payload *mregions; - struct apm_cmd_shared_mem_map_regions *cmd; - uint32_t num_regions, buf_sz, payload_size; - struct audioreach_graph_data *data; - struct gpr_pkt *pkt __free(kfree) =3D NULL; - void *p; - int i; - - if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) - data =3D &graph->rx_data; - else - data =3D &graph->tx_data; - - if (is_contiguous) { - num_regions =3D 1; - buf_sz =3D period_sz * periods; - } else { - buf_sz =3D period_sz; - num_regions =3D periods; - } - - /* DSP expects size should be aligned to 4K */ - buf_sz =3D ALIGN(buf_sz, 4096); - - payload_size =3D sizeof(*cmd) + (sizeof(*mregions) * num_regions); - - pkt =3D audioreach_alloc_apm_pkt(payload_size, APM_CMD_SHARED_MEM_MAP_REG= IONS, dir, - graph->port->id); - if (IS_ERR(pkt)) - return PTR_ERR(pkt); - - p =3D (void *)pkt + GPR_HDR_SIZE; - cmd =3D p; - cmd->mem_pool_id =3D APM_MEMORY_MAP_SHMEM8_4K_POOL; - cmd->num_regions =3D num_regions; - - cmd->property_flag =3D 0x0; - - mregions =3D p + sizeof(*cmd); - - mutex_lock(&graph->lock); - - for (i =3D 0; i < num_regions; i++) { - struct audio_buffer *ab; - - ab =3D &data->buf[i]; - mregions->shm_addr_lsw =3D lower_32_bits(ab->phys); - mregions->shm_addr_msw =3D upper_32_bits(ab->phys); - mregions->mem_size_bytes =3D buf_sz; - ++mregions; - } - mutex_unlock(&graph->lock); - - return audioreach_graph_send_cmd_sync(graph, pkt, APM_CMD_RSP_SHARED_MEM_= MAP_REGIONS); -} -EXPORT_SYMBOL_GPL(audioreach_map_memory_regions); - int audioreach_shared_memory_send_eos(struct q6apm_graph *graph) { struct data_cmd_wr_sh_mem_ep_eos *eos; diff --git a/sound/soc/qcom/qdsp6/audioreach.h b/sound/soc/qcom/qdsp6/audio= reach.h index 89f172aab8c0..6ddc287f0fb4 100644 --- a/sound/soc/qcom/qdsp6/audioreach.h +++ b/sound/soc/qcom/qdsp6/audioreach.h @@ -722,6 +722,7 @@ struct audioreach_connection { =20 struct audioreach_graph_info { int id; + uint32_t mem_map_handle; uint32_t num_sub_graphs; struct list_head sg_list; /* DPCM connection from FE Graph to BE graph */ @@ -838,10 +839,6 @@ int audioreach_tplg_init(struct snd_soc_component *com= ponent); =20 /* Module specific */ void audioreach_graph_free_buf(struct q6apm_graph *graph); -int audioreach_map_memory_regions(struct q6apm_graph *graph, - unsigned int dir, size_t period_sz, - unsigned int periods, - bool is_contiguous); int audioreach_send_cmd_sync(struct device *dev, gpr_device_t *gdev, struc= t gpr_ibasic_rsp_result_t *result, struct mutex *cmd_lock, gpr_port_t *port, wait_queue_head_t *cmd_w= ait, struct gpr_pkt *pkt, uint32_t rsp_opcode); diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-= dai.c index 86d6438bd9fd..93fdff6b9aec 100644 --- a/sound/soc/qcom/qdsp6/q6apm-dai.c +++ b/sound/soc/qcom/qdsp6/q6apm-dai.c @@ -228,11 +228,10 @@ static int q6apm_dai_prepare(struct snd_soc_component= *component, cfg.bit_width =3D prtd->bits_per_sample; cfg.fmt =3D SND_AUDIOCODEC_PCM; audioreach_set_default_channel_mapping(cfg.channel_map, runtime->channels= ); - if (prtd->state) { /* clear the previous setup if any */ q6apm_graph_stop(prtd->graph); - q6apm_unmap_memory_regions(prtd->graph, substream->stream); + q6apm_free_fragments(prtd->graph, substream->stream); } =20 prtd->pcm_count =3D snd_pcm_lib_period_bytes(substream); @@ -247,8 +246,8 @@ static int q6apm_dai_prepare(struct snd_soc_component *= component, if (ret < 0) dev_err(dev, "%s: CMD Format block failed\n", __func__); =20 - ret =3D q6apm_map_memory_regions(prtd->graph, substream->stream, prtd->ph= ys, - (prtd->pcm_size / prtd->periods), prtd->periods); + ret =3D q6apm_alloc_fragments(prtd->graph, substream->stream, prtd->phys, + (prtd->pcm_size / prtd->periods), prtd->periods); =20 if (ret < 0) { dev_err(dev, "Audio Start: Buffer Allocation failed rc =3D %d\n", ret); @@ -403,6 +402,8 @@ static int q6apm_dai_open(struct snd_soc_component *com= ponent, else prtd->phys =3D substream->dma_buffer.addr | (pdata->sid << 32); =20 + q6apm_set_memory_map_handle(prtd->graph, substream->stream); + return 0; err: kfree(prtd); @@ -416,9 +417,10 @@ static int q6apm_dai_close(struct snd_soc_component *c= omponent, struct snd_pcm_runtime *runtime =3D substream->runtime; struct q6apm_dai_rtd *prtd =3D runtime->private_data; =20 - if (prtd->state) { /* only stop graph that is started */ + if (prtd->state) { + /* only stop graph that is started */ q6apm_graph_stop(prtd->graph); - q6apm_unmap_memory_regions(prtd->graph, substream->stream); + q6apm_free_fragments(prtd->graph, substream->stream); } =20 q6apm_graph_close(prtd->graph); @@ -467,11 +469,93 @@ static int q6apm_dai_hw_params(struct snd_soc_compone= nt *component, return 0; } =20 +static int q6apm_dai_memory_map(struct snd_soc_component *component, + struct snd_pcm_substream *substream, int graph_id) +{ + struct q6apm_dai_data *pdata; + struct device *dev =3D component->dev; + phys_addr_t phys; + int ret; + + pdata =3D snd_soc_component_get_drvdata(component); + if (!pdata) { + dev_err(component->dev, "Drv data not found ..\n"); + return -EINVAL; + } + + if (pdata->sid < 0) + phys =3D substream->dma_buffer.addr; + else + phys =3D substream->dma_buffer.addr | (pdata->sid << 32); + + ret =3D q6apm_map_memory_fixed_region(dev, graph_id, phys, BUFFER_BYTES_M= AX); + if (ret < 0) + dev_err(dev, "Audio Start: Buffer Allocation failed rc =3D %d\n", ret); + + return ret; +} + static int q6apm_dai_pcm_new(struct snd_soc_component *component, struct s= nd_soc_pcm_runtime *rtd) { + struct snd_soc_dai *cpu_dai =3D snd_soc_rtd_to_cpu(rtd, 0); + struct snd_pcm *pcm =3D rtd->pcm; int size =3D BUFFER_BYTES_MAX; + int graph_id, ret; + struct snd_pcm_substream *substream; + + graph_id =3D cpu_dai->driver->id; + + ret =3D snd_pcm_set_fixed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, component->= dev, size); + if (ret) + return ret; + + if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { + substream =3D pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; + ret =3D q6apm_dai_memory_map(component, substream, graph_id); + if (ret) + return ret; + } + + if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) { + substream =3D pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream; + q6apm_dai_memory_map(component, substream, graph_id); + if (ret) + return ret; + } + + return 0; +} + +static void q6apm_dai_memory_unmap(struct snd_soc_component *component, + struct snd_pcm_substream *substream) +{ + struct snd_soc_pcm_runtime *soc_prtd; + struct snd_soc_dai *cpu_dai; + int graph_id; + + soc_prtd =3D snd_soc_substream_to_rtd(substream); + if (!soc_prtd) + return; + + cpu_dai =3D snd_soc_rtd_to_cpu(soc_prtd, 0); + if (!cpu_dai) + return; + + graph_id =3D cpu_dai->driver->id; + q6apm_unmap_memory_fixed_region(component->dev, graph_id); +} + +static void q6apm_dai_pcm_free(struct snd_soc_component *component, struct= snd_pcm *pcm) +{ + struct snd_pcm_substream *substream; + + substream =3D pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream; + if (substream) + q6apm_dai_memory_unmap(component, substream); =20 - return snd_pcm_set_fixed_buffer_all(rtd->pcm, SNDRV_DMA_TYPE_DEV, compone= nt->dev, size); + substream =3D pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; + if (substream) + q6apm_dai_memory_unmap(component, substream); } =20 static int q6apm_dai_compr_open(struct snd_soc_component *component, @@ -530,7 +614,8 @@ static int q6apm_dai_compr_free(struct snd_soc_componen= t *component, struct q6apm_dai_rtd *prtd =3D runtime->private_data; =20 q6apm_graph_stop(prtd->graph); - q6apm_unmap_memory_regions(prtd->graph, SNDRV_PCM_STREAM_PLAYBACK); + q6apm_free_fragments(prtd->graph, SNDRV_PCM_STREAM_PLAYBACK); + q6apm_unmap_memory_fixed_region(component->dev, prtd->graph->id); q6apm_graph_close(prtd->graph); snd_dma_free_pages(&prtd->dma_buffer); prtd->graph =3D NULL; @@ -679,9 +764,9 @@ static int q6apm_dai_compr_set_params(struct snd_soc_co= mponent *component, if (ret) return ret; =20 - ret =3D q6apm_map_memory_regions(prtd->graph, SNDRV_PCM_STREAM_PLAYBACK, - prtd->phys, (prtd->pcm_size / prtd->periods), - prtd->periods); + ret =3D q6apm_alloc_fragments(prtd->graph, SNDRV_PCM_STREAM_PLAYBACK, + prtd->phys, (prtd->pcm_size / prtd->periods), + prtd->periods); if (ret < 0) return -ENOMEM; =20 @@ -834,6 +919,7 @@ static const struct snd_soc_component_driver q6apm_fe_d= ai_component =3D { .close =3D q6apm_dai_close, .prepare =3D q6apm_dai_prepare, .pcm_new =3D q6apm_dai_pcm_new, + .pcm_free =3D q6apm_dai_pcm_free, .hw_params =3D q6apm_dai_hw_params, .pointer =3D q6apm_dai_pointer, .trigger =3D q6apm_dai_trigger, diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index c874dae53163..8225c23d0926 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -200,13 +200,59 @@ int q6apm_graph_media_format_shmem(struct q6apm_graph= *graph, } EXPORT_SYMBOL_GPL(q6apm_graph_media_format_shmem); =20 -int q6apm_map_memory_regions(struct q6apm_graph *graph, unsigned int dir, = phys_addr_t phys, - size_t period_sz, unsigned int periods) +void q6apm_set_memory_map_handle(struct q6apm_graph *graph, unsigned int d= ir) +{ + if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) + graph->rx_data.mem_map_handle =3D graph->info->mem_map_handle; + else + graph->tx_data.mem_map_handle =3D graph->info->mem_map_handle; +} +EXPORT_SYMBOL_GPL(q6apm_set_memory_map_handle); + +int q6apm_map_memory_fixed_region(struct device *dev, unsigned int graph_i= d, phys_addr_t phys, + size_t sz) +{ + struct audioreach_graph_info *info; + struct q6apm *apm =3D dev_get_drvdata(dev->parent); + struct apm_shared_map_region_payload *mregions; + struct apm_cmd_shared_mem_map_regions *cmd; + int payload_size =3D sizeof(*cmd) + (sizeof(*mregions)); + uint32_t buf_sz; + void *p; + struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_apm_cmd_pkt(payloa= d_size, + APM_CMD_SHARED_MEM_MAP_REGIONS, graph_id); + if (IS_ERR(pkt)) + return PTR_ERR(pkt); + + info =3D idr_find(&apm->graph_info_idr, graph_id); + if (!info) + return -ENODEV; + + /* DSP expects size should be aligned to 4K */ + buf_sz =3D ALIGN(sz, 4096); + + p =3D (void *)pkt + GPR_HDR_SIZE; + cmd =3D p; + cmd->mem_pool_id =3D APM_MEMORY_MAP_SHMEM8_4K_POOL; + cmd->num_regions =3D 1; + cmd->property_flag =3D 0x0; + + mregions =3D p + sizeof(*cmd); + + mregions->shm_addr_lsw =3D lower_32_bits(phys); + mregions->shm_addr_msw =3D upper_32_bits(phys); + mregions->mem_size_bytes =3D buf_sz; + + return q6apm_send_cmd_sync(apm, pkt, APM_CMD_RSP_SHARED_MEM_MAP_REGIONS); +} +EXPORT_SYMBOL_GPL(q6apm_map_memory_fixed_region); + +int q6apm_alloc_fragments(struct q6apm_graph *graph, unsigned int dir, phy= s_addr_t phys, + size_t period_sz, unsigned int periods) { struct audioreach_graph_data *data; struct audio_buffer *buf; int cnt; - int rc; =20 if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) data =3D &graph->rx_data; @@ -248,21 +294,37 @@ int q6apm_map_memory_regions(struct q6apm_graph *grap= h, unsigned int dir, phys_a =20 mutex_unlock(&graph->lock); =20 - rc =3D audioreach_map_memory_regions(graph, dir, period_sz, periods, 1); - if (rc < 0) { - dev_err(graph->dev, "Memory_map_regions failed\n"); - audioreach_graph_free_buf(graph); - } - - return rc; + return 0; } -EXPORT_SYMBOL_GPL(q6apm_map_memory_regions); +EXPORT_SYMBOL_GPL(q6apm_alloc_fragments); =20 -int q6apm_unmap_memory_regions(struct q6apm_graph *graph, unsigned int dir) +int q6apm_unmap_memory_fixed_region(struct device *dev, unsigned int graph= _id) { struct apm_cmd_shared_mem_unmap_regions *cmd; + struct q6apm *apm =3D dev_get_drvdata(dev->parent); + struct audioreach_graph_info *info; + struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_apm_cmd_pkt(sizeof= (*cmd), + APM_CMD_SHARED_MEM_UNMAP_REGIONS, graph_id); + if (IS_ERR(pkt)) + return PTR_ERR(pkt); + + info =3D idr_find(&apm->graph_info_idr, graph_id); + if (!info) + return -ENODEV; + + if (!info->mem_map_handle) + return 0; + + cmd =3D (void *)pkt + GPR_HDR_SIZE; + cmd->mem_map_handle =3D info->mem_map_handle; + + return q6apm_send_cmd_sync(apm, pkt, APM_CMD_SHARED_MEM_UNMAP_REGIONS); +} +EXPORT_SYMBOL_GPL(q6apm_unmap_memory_fixed_region); + +int q6apm_free_fragments(struct q6apm_graph *graph, unsigned int dir) +{ struct audioreach_graph_data *data; - int rc; =20 if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) data =3D &graph->rx_data; @@ -272,22 +334,11 @@ int q6apm_unmap_memory_regions(struct q6apm_graph *gr= aph, unsigned int dir) if (!data->mem_map_handle) return 0; =20 - struct gpr_pkt *pkt __free(kfree) =3D - audioreach_alloc_apm_pkt(sizeof(*cmd), APM_CMD_SHARED_MEM_UNMAP_REGIONS, - dir, graph->port->id); - if (IS_ERR(pkt)) - return PTR_ERR(pkt); - - cmd =3D (void *)pkt + GPR_HDR_SIZE; - cmd->mem_map_handle =3D data->mem_map_handle; - - rc =3D audioreach_graph_send_cmd_sync(graph, pkt, APM_CMD_SHARED_MEM_UNMA= P_REGIONS); - audioreach_graph_free_buf(graph); =20 - return rc; + return 0; } -EXPORT_SYMBOL_GPL(q6apm_unmap_memory_regions); +EXPORT_SYMBOL_GPL(q6apm_free_fragments); =20 int q6apm_remove_initial_silence(struct device *dev, struct q6apm_graph *g= raph, uint32_t samples) { @@ -494,7 +545,6 @@ static int graph_callback(const struct gpr_resp_pkt *da= ta, void *priv, int op) { struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done_v2 *rd_done; struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done_v2 *done; - struct apm_cmd_rsp_shared_mem_map_regions *rsp; const struct gpr_ibasic_rsp_result_t *result; struct q6apm_graph *graph =3D priv; const struct gpr_hdr *hdr =3D &data->hdr; @@ -529,18 +579,6 @@ static int graph_callback(const struct gpr_resp_pkt *d= ata, void *priv, int op) done->buf_addr_msw); } =20 - break; - case APM_CMD_RSP_SHARED_MEM_MAP_REGIONS: - graph->result.opcode =3D hdr->opcode; - graph->result.status =3D 0; - rsp =3D data->payload; - - if (hdr->token =3D=3D SNDRV_PCM_STREAM_PLAYBACK) - graph->rx_data.mem_map_handle =3D rsp->mem_map_handle; - else - graph->tx_data.mem_map_handle =3D rsp->mem_map_handle; - - wake_up(&graph->cmd_wait); break; case DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER_V2: if (!graph->ar_graph) @@ -571,16 +609,6 @@ static int graph_callback(const struct gpr_resp_pkt *d= ata, void *priv, int op) break; case GPR_BASIC_RSP_RESULT: switch (result->opcode) { - case APM_CMD_SHARED_MEM_UNMAP_REGIONS: - graph->result.opcode =3D result->opcode; - graph->result.status =3D 0; - if (hdr->token =3D=3D SNDRV_PCM_STREAM_PLAYBACK) - graph->rx_data.mem_map_handle =3D 0; - else - graph->tx_data.mem_map_handle =3D 0; - - wake_up(&graph->cmd_wait); - break; case APM_CMD_SHARED_MEM_MAP_REGIONS: case DATA_CMD_WR_SH_MEM_EP_MEDIA_FORMAT: case APM_CMD_SET_CFG: @@ -779,7 +807,9 @@ struct audioreach_module *q6apm_find_module_by_mid(stru= ct q6apm_graph *graph, ui static int apm_callback(const struct gpr_resp_pkt *data, void *priv, int o= p) { gpr_device_t *gdev =3D priv; + struct audioreach_graph_info *info; struct q6apm *apm =3D dev_get_drvdata(&gdev->dev); + struct apm_cmd_rsp_shared_mem_map_regions *rsp; struct device *dev =3D &gdev->dev; struct gpr_ibasic_rsp_result_t *result; const struct gpr_hdr *hdr =3D &data->hdr; @@ -796,6 +826,7 @@ static int apm_callback(const struct gpr_resp_pkt *data= , void *priv, int op) break; case GPR_BASIC_RSP_RESULT: switch (result->opcode) { + case APM_CMD_SHARED_MEM_MAP_REGIONS: case APM_CMD_GRAPH_START: case APM_CMD_GRAPH_OPEN: case APM_CMD_GRAPH_PREPARE: @@ -810,10 +841,38 @@ static int apm_callback(const struct gpr_resp_pkt *da= ta, void *priv, int op) result->opcode); wake_up(&apm->wait); break; + case APM_CMD_SHARED_MEM_UNMAP_REGIONS: + apm->result.opcode =3D hdr->opcode; + apm->result.status =3D 0; + rsp =3D data->payload; + + info =3D idr_find(&apm->graph_info_idr, hdr->token); + if (info) + info->mem_map_handle =3D 0; + else + dev_err(dev, "Error (%d) Processing 0x%08x cmd\n", result->status, + result->opcode); + + wake_up(&apm->wait); + break; default: break; } break; + case APM_CMD_RSP_SHARED_MEM_MAP_REGIONS: + apm->result.opcode =3D hdr->opcode; + apm->result.status =3D 0; + rsp =3D data->payload; + + info =3D idr_find(&apm->graph_info_idr, hdr->token); + if (info) + info->mem_map_handle =3D rsp->mem_map_handle; + else + dev_err(dev, "Error (%d) Processing 0x%08x cmd\n", result->status, + result->opcode); + + wake_up(&apm->wait); + break; default: break; } diff --git a/sound/soc/qcom/qdsp6/q6apm.h b/sound/soc/qcom/qdsp6/q6apm.h index 7c646ffcf956..67acbf0ce178 100644 --- a/sound/soc/qcom/qdsp6/q6apm.h +++ b/sound/soc/qcom/qdsp6/q6apm.h @@ -134,11 +134,16 @@ int q6apm_write_async(struct q6apm_graph *graph, uint= 32_t len, uint32_t msw_ts, uint32_t lsw_ts, uint32_t wflags); =20 /* Memory Map related */ -int q6apm_map_memory_regions(struct q6apm_graph *graph, - unsigned int dir, phys_addr_t phys, - size_t period_sz, unsigned int periods); -int q6apm_unmap_memory_regions(struct q6apm_graph *graph, - unsigned int dir); +int q6apm_map_memory_fixed_region(struct device *dev, + unsigned int graph_id, phys_addr_t phys, + size_t sz); +void q6apm_set_memory_map_handle(struct q6apm_graph *graph, + unsigned int dir); +int q6apm_alloc_fragments(struct q6apm_graph *graph, + unsigned int dir, phys_addr_t phys, + size_t period_sz, unsigned int periods); +int q6apm_free_fragments(struct q6apm_graph *graph, unsigned int dir); +int q6apm_unmap_memory_fixed_region(struct device *dev, unsigned int graph= _id); /* Helpers */ int q6apm_send_cmd_sync(struct q6apm *apm, struct gpr_pkt *pkt, uint32_t rsp_opcode); --=20 2.47.3