Message ID | 20250116232824.3748438-19-quic_wcheng@quicinc.com (mailing list archive) |
---|---|
State | New |
Headers | show
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 C51792361D6; Thu, 16 Jan 2025 23:29:01 +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=1737070143; cv=none; b=b4BkqT9JpRr2dtE3urT6IGUCI3DmVPnijLcFpXEbcqLTiFqGYtr9MlNIjlC7wNyyQ03HwknagNphHiuhqwWzNpUM/twYTVfwIajLiJE937Xb57D5CDBat61d38MxuXd59L3LtfbFXCVsgpKI06sMsF2/aDI1ZI5seXrbxWoT/4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737070143; c=relaxed/simple; bh=0LHEkqGziqUkFP/Xjojyd6TR+h5mil0Aehlm5stSjRw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XMbyNB5NkzKtnOxW43ibfKOgHc5NIUJzAIlnugxLW9W91y8RVvqKmXi/aTNgWhsnowGliWDUBrGpzMTe8ZSpRgg/ErqMpN6thUM2O+JxHSFxfmMO2cb3a8iz1x43+8z2BcbwbZs6EV+rDriHrQ6xXssCARqsvPT5ns5MKbjQs60= 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=hWmnvQvX; 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="hWmnvQvX" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 50GEJh3o008221; Thu, 16 Jan 2025 23:28:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 3pvXQYQNfzYV7X+XGQ7Z9Q4KJZbUtm961XAqtDyZhiM=; b=hWmnvQvXeRVXb9Vq kTpBElbXu3gR/aYUxJffjAaT+rFR5CHdqw9ajnCPKoSweNrKjHNghgYNFv0vdVOD wuBNLo1+E3iKpyGKouMHPQ+Cii0Z+soFHKQFXhCcPvRb3Q+gyjyuN+KbtEHyojfD 4tCgtnyNJnsOikVWv8vKJ6XiR0yTRCTZ24iWDMkSVQMJoKnB2ga3s72vsq/5j+es nte1SVcgnDaECs7IrNuAcOWByejIz/eo3YAF3SKlglIrmZnjNatKQVH8eg2Soi0F SnRNnavJ73+p57gMQBvFCh5b3cGmiJgjKixqGrwRXj9rcc54DD/WoPNTEh7ifa2m eGH4dQ== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4473se17f0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 16 Jan 2025 23:28:47 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 50GNSkmE019308 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 16 Jan 2025 23:28:46 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.1544.9; Thu, 16 Jan 2025 15:28:45 -0800 From: Wesley Cheng <quic_wcheng@quicinc.com> To: <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>, <perex@perex.cz>, <conor+dt@kernel.org>, <dmitry.torokhov@gmail.com>, <corbet@lwn.net>, <broonie@kernel.org>, <lgirdwood@gmail.com>, <tiwai@suse.com>, <krzk+dt@kernel.org>, <pierre-louis.bossart@linux.intel.com>, <Thinh.Nguyen@synopsys.com>, <robh@kernel.org>, <gregkh@linuxfoundation.org> CC: <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-sound@vger.kernel.org>, <linux-input@vger.kernel.org>, <linux-usb@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <linux-doc@vger.kernel.org>, Wesley Cheng <quic_wcheng@quicinc.com> Subject: [PATCH v33 18/31] ASoC: usb: Rediscover USB SND devices on USB port add Date: Thu, 16 Jan 2025 15:28:11 -0800 Message-ID: <20250116232824.3748438-19-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250116232824.3748438-1-quic_wcheng@quicinc.com> References: <20250116232824.3748438-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: <linux-input.vger.kernel.org> List-Subscribe: <mailto:linux-input+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-input+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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: VQKcaWzDUDtY7xOPMir32X2TqXvUdTUg X-Proofpoint-ORIG-GUID: VQKcaWzDUDtY7xOPMir32X2TqXvUdTUg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-01-16_10,2025-01-16_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 adultscore=0 mlxscore=0 bulkscore=0 impostorscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 lowpriorityscore=0 clxscore=1015 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2501160174 |
Series |
Introduce QC USB SND audio offloading support
|
expand
|
diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 86f0d1b9fe43..d34b966c3e65 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -228,6 +228,8 @@ void snd_soc_usb_add_port(struct snd_soc_usb *usb) mutex_lock(&ctx_mutex); list_add_tail(&usb->list, &usb_ctx_list); mutex_unlock(&ctx_mutex); + + snd_usb_rediscover_devices(); } EXPORT_SYMBOL_GPL(snd_soc_usb_add_port);
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(+)