Message ID | 20240228013619.29758-38-quic_wcheng@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-84369-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp3080227dyb; Tue, 27 Feb 2024 17:50:12 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVShp/Ooo9tu06szZmAQYbPDcoCMFlz8n5gmIQF+vr/4ZzfYzip70RXgnxegLqulcUjKhoOLwE5GGj+LiMmbH0vIhOMYA== X-Google-Smtp-Source: AGHT+IFh9B+EUEhSjaQ07yFRAspkgtxjOZrjADUdp3lUlamtb6aqbwa8uWSe+nvJBeDatVs4RvJ8 X-Received: by 2002:a05:6a20:43aa:b0:1a0:d25b:aa93 with SMTP id i42-20020a056a2043aa00b001a0d25baa93mr1585127pzl.20.1709085012399; Tue, 27 Feb 2024 17:50:12 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709085012; cv=pass; d=google.com; s=arc-20160816; b=0WXsmBdzcIY/20jZBKyNg+/JAIU1hw4uzU8JsyzZEQW7Tn+r0EUo8M69QW3eroasET yqHjc1omN/XkpaNGx9swxiBHPVvMr8leFLfKMl7NgvDs6kfiA13/yMxTnPo1JTyiyerf 1/xEO/EFb9Inekc1QcZ2a2modIlsR3omAmqqdbgFEKPwyVC6Ib44boHporR8mLLOcUlM 5pt9m9Rhr6TWyWv3WHbeSffc//0ZFNFQO27Pb5i8B9o1VKeHCzeyMpOZ/S8rHi7t+SEA QGGVVIzlaeGzecpJZqErj3sc2HesXm20aKWdQoGOU1y1XE9XGWUdD4p9OXeMH1ZjYQaR 8u9g== 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=mL1d9of0fYQNr1X8ZHr/nFQmz8o9xxbVoHzFoYQwCnU=; fh=VKrp0Y7I/+wT36BfKZ6oI/4N9BIwFCn9zerObkOrgGw=; b=XKSijChuIESdUWX9Ogir5hsRRe0w1rXyDrb+Z3VbLwW/mwBjlPRjxmkUoskaQS78el 97YszAZTR8Om1YXgkCJxX+YtMHhbF72VTjgLVzZLFbYqQZdMEA9UYyvTvav9O9x/L0Cq eay9VUxmSKYB3rCYXURL1f991xe9W/hxlHlmHNOVNySNAHN+KbWytibkuTkhkOzJLaUQ SSChiuB+a6GWFqFyNWUGseicgEFaREb7Aj/wWOdXDRpqkxqnPXZO1bw1p0vpdbTa6Z05 /JOPIsbwSFzkkpO1KXTYX/Jb3iuqM3eZahR1NcbK9PF2h4gpQRdZEi7clpONMNj1K4IW jMwg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=FPyafiww; 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-84369-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84369-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 t1-20020a63eb01000000b005d48e659692si6392123pgh.753.2024.02.27.17.50.12 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 17:50:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-84369-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=FPyafiww; 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-84369-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-84369-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 CC10A28829D for <ouuuleilei@gmail.com>; Wed, 28 Feb 2024 01:49:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 400BC58222; Wed, 28 Feb 2024 01:37:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="FPyafiww" 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 C55782D05C; Wed, 28 Feb 2024 01:36:59 +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=1709084222; cv=none; b=pid95JQ/4Kie+TQ65lEQlyjwxlZ0X+Yz0j67U+pmLHCMtszr5l/MRY2gnvpVHMuDDA8aXkNPJhp7qyFY0zv2OU4oXW/HbuId6kd3I8jVTvc+UNwE84Bp37c/xoBGdfeq26Wm4krbvwnjneUt1fO4jEqRIEUoaHlelYlj2dWvLvE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709084222; c=relaxed/simple; bh=nCfaXQKjVF52n+UdvJaBQMLni4Yc4r7EoaITJoVMs3E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FJycb/0FTGHGH2LPbjuN+BtXY9oKK1VMAupQMIAnd1Za/3gorkURx34Wp4f92QNyHzHpT13VWAhmCtzuhk6kU7JDDiSjpr2RiNTfyZXq5xVJciOE6ylcgkz19kfY1ZgcMR0r7pg/W8//fvn4K8Nl5FBcUMFR8q98CwwlMA8ZYM0= 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=FPyafiww; 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 (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41S0w8ip020505; 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=mL1d9of0fYQNr1X8ZHr/ nFQmz8o9xxbVoHzFoYQwCnU=; b=FPyafiwwAQ2ttppDXI20m8wJ8+AJ9cj7FMDe l+KLndZqALs0btDOJDisDLNWnl7CnJyrFRo0+PE24WBUi5Dzhl6wa1TozLtAErt0 qvgIyj0GoAM8AZHUfrw1p2QEywGZcUDVXpScJPmaKAuM878MHD5jlYz8LcJ/ulXz 6XRfMLr1WBCuSfiTuZL4xqLEPaqfbLk04ovaD2ecsGHwexWFXjKb/CGrCzJcHpW+ ZlOxaJvSAJY5Eae0MemftyYjGYG2jkYpaFFixf8v57HQ2mOoIZ128VJFKJ+O0pUU tql+yGW3L6B0JDKFqVxS2l61mRP/33BaXMU4G0rAno5ky9YI9Q== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3wh507b3ej-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:40 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 41S1adqH029871 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Feb 2024 01:36:39 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:39 -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 37/41] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices Date: Tue, 27 Feb 2024 17:36:15 -0800 Message-ID: <20240228013619.29758-38-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-ORIG-GUID: jmysoX6ffk04sTjkeYTC8P8Ie0NBWnQK X-Proofpoint-GUID: jmysoX6ffk04sTjkeYTC8P8Ie0NBWnQK 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 bulkscore=0 suspectscore=0 clxscore=1015 mlxscore=0 malwarescore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 mlxlogscore=999 priorityscore=1501 spamscore=0 adultscore=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: 1792105526025200095 X-GMAIL-MSGID: 1792105526025200095 |
Series |
Introduce QC USB SND audio offloading support
|
|
Commit Message
Wesley Cheng
Feb. 28, 2024, 1:36 a.m. UTC
In case of notifying SND platform drivers of connection events, some of
these use cases, such as offloading, require an ASoC USB backend device to
be initialized before the events can be handled. If the USB backend device
has not yet been probed, this leads to missing initial USB audio device
connection events.
Expose an API that traverses the usb_chip array for connected devices, and
to call the respective connection callback registered to the SND platform
driver.
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
---
sound/usb/card.c | 21 +++++++++++++++++++++
sound/usb/card.h | 1 +
sound/usb/qcom/qc_audio_offload.c | 2 ++
3 files changed, 24 insertions(+)
diff --git a/sound/usb/card.c b/sound/usb/card.c index 1ad99a462038..8364c5b8fbbf 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -186,6 +186,27 @@ struct snd_usb_stream *snd_usb_find_suppported_substream(int card_idx, } EXPORT_SYMBOL_GPL(snd_usb_find_suppported_substream); +/* + * in case the platform driver was not ready at the time of USB SND + * device connect, expose an API to discover all connected USB devices + * so it can populate any dependent resources/structures. + */ +void snd_usb_rediscover_devices(void) +{ + int i; + + guard(mutex)(®ister_mutex); + + if (!platform_ops || !platform_ops->connect_cb) + return; + + for (i = 0; i < SNDRV_CARDS; i++) { + if (usb_chip[i]) + platform_ops->connect_cb(usb_chip[i]); + } +} +EXPORT_SYMBOL_GPL(snd_usb_rediscover_devices); + /* * disconnect streams * called from usb_audio_disconnect() diff --git a/sound/usb/card.h b/sound/usb/card.h index 3c900e5afbce..140928dd9d63 100644 --- a/sound/usb/card.h +++ b/sound/usb/card.h @@ -221,4 +221,5 @@ int snd_usb_unregister_platform_ops(void); struct snd_usb_stream *snd_usb_find_suppported_substream(int card_idx, struct snd_pcm_hw_params *params, int direction); +void snd_usb_rediscover_devices(void); #endif /* __USBAUDIO_CARD_H */ diff --git a/sound/usb/qcom/qc_audio_offload.c b/sound/usb/qcom/qc_audio_offload.c index 6a25a390f8ae..9695bf0ac1cd 100644 --- a/sound/usb/qcom/qc_audio_offload.c +++ b/sound/usb/qcom/qc_audio_offload.c @@ -1879,6 +1879,8 @@ static int __init qc_usb_audio_offload_init(void) if (ret < 0) goto release_qmi; + snd_usb_rediscover_devices(); + return 0; release_qmi: