From nobody Fri Jan 2 15:53:12 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12C88CD98D9 for ; Wed, 11 Oct 2023 00:23:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344358AbjJKAXM (ORCPT ); Tue, 10 Oct 2023 20:23:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344229AbjJKAXI (ORCPT ); Tue, 10 Oct 2023 20:23:08 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 931D8A7; Tue, 10 Oct 2023 17:23:07 -0700 (PDT) Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39B0Mctv007978; Wed, 11 Oct 2023 00:22:38 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=9MdB2UaPJpsW3c367TGdC/biKeabpa3J5DqNgB8gRWM=; b=S565xj1t33M1CvsOXZsAhHYt7vMII0IIhEPKwFaRJ8r4aho1PjvWlS7tyd0zL1/fY9zo wukYy7VT/6eCMWbSlMFto5L7DU1ZtlE4xziVERNgOKttpTyKkHtvb7ZZ+eeNSkZWAAQb YXuQFjdhabeUBN7KmzJN/famL7px843cWJVfEpwfg+E0AZ/gDeiXtbtjK/axZbI3D0W3 BpGclJdivg/vUdZa9oXPgAPLm3y18Tq2CXHbcZ9HvScTqBrOZsoED+2/qAQ7mfoPdK90 ZKr9PN9o2geJLYft5nT+Y3cxsASNI7Z38Zor4T2C1DOEE6FNQxKOlTKTCLzcSS5lo5wQ eQ== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tn492stc9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 Oct 2023 00:22:38 +0000 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 39B0MbeC027116 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 Oct 2023 00:22:37 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.36; Tue, 10 Oct 2023 17:22:37 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v8 27/34] ALSA: usb-audio: qcom: Populate PCM and USB chip information Date: Tue, 10 Oct 2023 17:21:39 -0700 Message-ID: <20231011002146.1821-28-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231011002146.1821-1-quic_wcheng@quicinc.com> References: <20231011002146.1821-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] 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: GfjV5GolTDOdWBVaUtFjjvpxdapfsXAz X-Proofpoint-ORIG-GUID: GfjV5GolTDOdWBVaUtFjjvpxdapfsXAz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-10_19,2023-10-10_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=639 impostorscore=0 mlxscore=0 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310110001 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently, only the index to the USB SND card array is passed to the USB backend. Pass through more information, specifically the USB SND card number and the number of PCM devices available. This allows for the DPCM backend to determine what USB resources are available during situations, such as USB audio offloading. Signed-off-by: Wesley Cheng --- sound/usb/qcom/qc_audio_offload.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/sound/usb/qcom/qc_audio_offload.c b/sound/usb/qcom/qc_audio_of= fload.c index bd6b84f72c74..ae74098b41f5 100644 --- a/sound/usb/qcom/qc_audio_offload.c +++ b/sound/usb/qcom/qc_audio_offload.c @@ -173,6 +173,21 @@ enum usb_qmi_audio_format { USB_QMI_PCM_FORMAT_U32_BE, }; =20 +static int usb_qmi_get_pcm_num(struct snd_usb_audio *chip, int direction) +{ + struct snd_usb_substream *subs =3D NULL; + struct snd_usb_stream *as; + int count =3D 0; + + list_for_each_entry(as, &chip->pcm_list, list) { + subs =3D &as->substream[direction]; + if (subs->ep_num) + count++; + } + + return count; +} + static enum usb_qmi_audio_device_speed_enum_v01 get_speed_info(enum usb_device_speed udev_speed) { @@ -1592,6 +1607,8 @@ static void qc_usb_audio_offload_probe(struct snd_usb= _audio *chip) =20 sdev->card_idx =3D chip->card->number; sdev->chip_idx =3D chip->index; + sdev->num_playback =3D usb_qmi_get_pcm_num(chip, 0); + sdev->num_capture =3D usb_qmi_get_pcm_num(chip, 1); uadev[chip->card->number].sdev =3D sdev; =20 uaudio_qdev->last_card_num =3D chip->card->number; @@ -1706,10 +1723,8 @@ static void qc_usb_audio_offload_disconnect(struct s= nd_usb_audio *chip) mutex_unlock(&chip->mutex); =20 atomic_dec(&uaudio_qdev->qdev_in_use); - if (!atomic_read(&uaudio_qdev->qdev_in_use)) { - snd_soc_usb_disconnect(usb_get_usb_backend(udev)); + if (!atomic_read(&uaudio_qdev->qdev_in_use)) qc_usb_audio_cleanup_qmi_dev(); - } mutex_unlock(&qdev_mutex); }