Message ID | 20240228013619.29758-40-quic_wcheng@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp3079720dyb; Tue, 27 Feb 2024 17:49:01 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUVjbTnwLvR2DKkmhSbn/HYZZgv+ZvJx79tzTCFQsU8srPIh8wTrE4ZnEhKlLliguM7in9F90OZkPhz+lvfb3QKYaoxSA== X-Google-Smtp-Source: AGHT+IH9Ky2BZy2TbYvhtPmejJn+1hGpEGGu1l/C0+nxW2qjCHjEzgSXkcwwE7EKlxDhQZ/V+rWW X-Received: by 2002:a05:6808:ecf:b0:3c0:4d21:e62a with SMTP id q15-20020a0568080ecf00b003c04d21e62amr4745873oiv.31.1709084941392; Tue, 27 Feb 2024 17:49:01 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709084941; cv=pass; d=google.com; s=arc-20160816; b=Id2+fHjs1TJw2DRIwiFmHpk87sM+zqy06WGgjB0cHxUcmjq20yEy6ZAXqtq2aKKxk/ /st/idnYloIj/mh+K+acowSyyVzZo7pLEhI+JdS/YgCNR0c4EK1ma3UNr6vXvchaIWjv Ldues5X/hJ5PjkeBRMALI7hfS6l/Phf8IVvdI08caKYmtCYQv75w2ZRolMAHJW+weQnU kZ2niqLxj6WRotEqhD4CgtLAR0ei3dCvh+LnWfjWD91z6oSkH2cDoLBaOrZd4RhqDY3W /38Na5SkCRF1tbRB/qgcWRpfj5N4nCQxGuijkTbKJgWyRnMkTAEwssJvUZUkuIJZPMHe GkDA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gnJwXYlppG20lIVQdlnZ4yd3yQRuw/0NNcN3kah4t3c=; fh=VKrp0Y7I/+wT36BfKZ6oI/4N9BIwFCn9zerObkOrgGw=; b=MH7gOpV3epLtq8Y1dvXUepLpKYwN1L9H/UnjzVyqT9H9U7wCVmeIUwFWBe87W8yT8W ToA+1+v4URdLAgrs9Up0nvqFUqtANVaKfnTWdGqAUsQNDNYNy1bybQDgc6M+xC/4M6N5 WhG8cNOUqwjETFL5zUbTwn86yOH18BR5YMJLv+AqsJ5p0kZ5XMrhXhfnFNVCHNZaBD9/ nSiQTFoBb5xYnPn4XCQ7X4/i0OAhv/cx7SKJ5uzmLkLk5fOOhr7FaftXeupcd5/LhzFs mtXhPRgwI+cE+ERnS42Wwfs5iHwSRxeF/mbFbYJfcvBr2pDUPIExxkhLKWmm0kdHgFF2 zgvg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=RXUgZVEY; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id n1-20020aa78a41000000b006e55e61bcd3si480465pfa.372.2024.02.27.17.49.01 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 17:49:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=RXUgZVEY; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84355-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id CB059289841 for <ouuuleilei@gmail.com>; Wed, 28 Feb 2024 01:47:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 42A7056445; Wed, 28 Feb 2024 01:37:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="RXUgZVEY" 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 8B8D921344; Wed, 28 Feb 2024 01:36:55 +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=1709084217; cv=none; b=ImfjSkrLKeyJyztbzeJHtAszq4Qdx/GHhSDOk6D+KK4SWSn2Ugm1iOx9/wmBnU96d2BEAuUV8tMarszD1HBrjTCffAXM4jp2VaZYADcrbl2wIeJiALJsBXZ2fpzokusrK0Z/t73JYXj6ip1lgwWyzpAfsN418yP1nvOXIjTnIcw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709084217; c=relaxed/simple; bh=irvpJAWyfYNQcdfNO9eBX7aEjGvO1TfGb3rNzRGKzbI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=e/K5CXrYfVV23TSU9c6MgmH8Fr89PoD0YXOZMYaX0WRto4WrDX3OIPW7su3QhpQb9Kvy5m9MBEAjLuOESBJBwG+5biyYftA5D0hLkOSLgYz1INQJ6ukKKKyWW5SQ2rOOfb+JZWp3jQ7fQAe30Qq4h4ZHIuEhJKjp7RiPqEWRwx0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=RXUgZVEY; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41S0K1bW014149; Wed, 28 Feb 2024 01:36:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=gnJwXYlppG20lIVQdlnZ 4yd3yQRuw/0NNcN3kah4t3c=; b=RXUgZVEYasFrv1KjXEqbQgeYFKZAzlwNBHtr Z4MXH2B4TNlgfxkO4fovFroYl0SC5v5f/5z1qAgJQt5h2nw5/8mT6/dX0g/3mHzr JjIuzw2v14yUI3YqL4wefjO3hG9J1jXzP9FOX5+giFcIXQBr+ddaPL6y2GSo0aVu LIEc/xen/PGeP0LZyxYsBHBfMhT8BpElBUintULhXSZBrwUe06zQkDwpBd3j35Es boaM2XU56NLEQZXIYt4EXjp9gLZoPItgf/JBf5BSF2b2sbW0AIRpp1NuTzfY9i55 JR/SWNT9C5kFPC7xAIPBO0eKOSeZloFFtyNOaDg6pHlNKeCDSg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3whp65rmgh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:41 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 41S1aeGk016772 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:40 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 27 Feb 2024 17:36:40 -0800 From: Wesley Cheng <quic_wcheng@quicinc.com> To: <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>, <perex@perex.cz>, <conor+dt@kernel.org>, <corbet@lwn.net>, <lgirdwood@gmail.com>, <andersson@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <gregkh@linuxfoundation.org>, <Thinh.Nguyen@synopsys.com>, <broonie@kernel.org>, <bgoswami@quicinc.com>, <tiwai@suse.com>, <robh+dt@kernel.org>, <konrad.dybcio@linaro.org> CC: <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-sound@vger.kernel.org>, <linux-usb@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <linux-doc@vger.kernel.org>, <alsa-devel@alsa-project.org>, Wesley Cheng <quic_wcheng@quicinc.com> Subject: [PATCH v18 39/41] ASoC: usb: Rediscover USB SND devices on USB port add Date: Tue, 27 Feb 2024 17:36:17 -0800 Message-ID: <20240228013619.29758-40-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240228013619.29758-1-quic_wcheng@quicinc.com> References: <20240228013619.29758-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: xr4uAord8Ajo7Y2BMtV_WP9jFJhxIU2p X-Proofpoint-ORIG-GUID: xr4uAord8Ajo7Y2BMtV_WP9jFJhxIU2p X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-27_11,2024-02-27_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2402120000 definitions=main-2402280011 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792105451473827663 X-GMAIL-MSGID: 1792105451473827663 |
Series |
Introduce QC USB SND audio offloading support
|
|
Commit Message
Wesley Cheng
Feb. 28, 2024, 1:36 a.m. UTC
In case the USB backend device has not been initialized/probed, USB SND
device connections can still occur. When the USB backend is eventually
made available, previous USB SND device connections are not communicated to
the USB backend. Call snd_usb_rediscover_devices() to generate the connect
callbacks for all USB SND devices connected. This will allow for the USB
backend to be updated with the current set of devices available.
The chip array entries are all populated and removed while under the
register_mutex, so going over potential race conditions:
Thread#1:
q6usb_component_probe()
--> snd_soc_usb_add_port()
--> snd_usb_rediscover_devices()
--> mutex_lock(register_mutex)
Thread#2
--> usb_audio_disconnect()
--> mutex_lock(register_mutex)
So either thread#1 or thread#2 will complete first. If
Thread#1 completes before thread#2:
SOC USB will notify DPCM backend of the device connection. Shortly
after, once thread#2 runs, we will get a disconnect event for the
connected device.
Thread#2 completes before thread#1:
Then during snd_usb_rediscover_devices() it won't notify of any
connection for that particular chip index.
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
---
sound/soc/soc-usb.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 53c4e399909e..821caff2061d 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -554,6 +554,8 @@ int snd_soc_usb_add_port(struct snd_soc_usb *usb) list_add_tail(&usb->list, &usb_ctx_list); mutex_unlock(&ctx_mutex); + snd_usb_rediscover_devices(); + return 0; } EXPORT_SYMBOL_GPL(snd_soc_usb_add_port);