Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3384925rdg; Tue, 17 Oct 2023 13:02:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH86vaSLciOQinYiUAogI7JONHE8BlFoTuMzYlKuBVbGwCr1NtA2rQJ9B5zBbR+Jyvhshq7 X-Received: by 2002:a05:6e02:1a2d:b0:351:9cc:8775 with SMTP id g13-20020a056e021a2d00b0035109cc8775mr4451089ile.5.1697572952141; Tue, 17 Oct 2023 13:02:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697572952; cv=none; d=google.com; s=arc-20160816; b=0XVNYeIvvzsozn6WGgB2FzPJfv8DlRYo++gxkZ/4Clex8c6eGdY2Sg+4uC+4xGANYo BUEJEEhxL8YQigJ7zY8r6qBtpYckYbmBydw3t0/BcQr5WCP6QF+tt6FuQpDAyRO1dCcT w6rDPv2FDgHTMejuwFmJN+1nvYbu27Hulua4wwVktj7mu9PZd3ubMK7cCV8mH1hAK4NA 2nq9TCL33sIPcafZQZCSqmbt3inwjoliCXfYGRArGr8ETkBLcyWt4947dX1w47FJAqAB 2kcniLMNvznwvEix1730NDAPk1LBNte1WdP/ACtLqVnINxnAXLToOnIzCUUUR9tIuAGX xj1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=9MdB2UaPJpsW3c367TGdC/biKeabpa3J5DqNgB8gRWM=; fh=ASZxE/GudOQkGCAz0d02NHHSpg4iNHYOcDWl1imlof0=; b=RF07QbBv07xHOC3qAu/M1TqPYJ5kj0zTkpidWSLWhMEg46ZdH4+oTKS9lyhkjME3JW d7VmEmym//8j6VsB2HihxXzLsr0ZZea2jpnmmyOYs5xglmfJi1WZhtVB1Yn13yDGBggo qet7e/lhfViNcOMSuZUaAG0MZEhuSWVG4o70zcbmT0n4aNP8HV0jQVMO86awZgF2t9ll oe8WyRB5cY6MI6Dy3z8UG1jefZzFuOn6K0vBixEW9IQCE6mpgYMfianQQ6Hb0ftArGPh web/gOCn8YkNv0iqwL72lLDihr3GCZJGwEKByqUUYtLnd6+7rFP5WrOJueJeZwtCu92X AWjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=Mv5TaFGi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e12-20020aa798cc000000b0068e3f550763si2180997pfm.101.2023.10.17.13.02.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 13:02:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=Mv5TaFGi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id E3CFB80FDDDE; Tue, 17 Oct 2023 13:02:30 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344447AbjJQUCU (ORCPT + 99 others); Tue, 17 Oct 2023 16:02:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234752AbjJQUBs (ORCPT ); Tue, 17 Oct 2023 16:01:48 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A26A5ED; Tue, 17 Oct 2023 13:01:46 -0700 (PDT) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39HJI2wI013950; Tue, 17 Oct 2023 20:01:29 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=Mv5TaFGi0SRSPevHY/wA/zPH7pEP+t5DpLCeG5/rIVa0N6UFyMonrWG7+HfnY4kpDKcR ALU01hxX+GonWx/IxMZX9VQe6zrSWDueLr0Jam3xxRxd32L5eu/yyO/uF7amK1ip66YG 1m5soI80VEQzV4FEw3wngAiKi60xD9g5V/4e+F5ztENvIw1mwUOJnXx1Y9IJ3Vh+cTOB pEwIXgAkpWcxmQKVAjHD0K6A0/OGbw8xg5qQS9kCIm/0EpRPwbB/Ps3ITlbmqywlcWHM 60mS93eUGXrGFnHHHSx6wZvKjMJgSV69Z2EMqSkh09zJmGRIwVE3rzWez7CxvFdH+HKN yQ== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tsnej9qj4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Oct 2023 20:01:28 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 39HK1RHX018746 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Oct 2023 20:01:27 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.39; Tue, 17 Oct 2023 13:01:27 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v9 27/34] ALSA: usb-audio: qcom: Populate PCM and USB chip information Date: Tue, 17 Oct 2023 13:01:02 -0700 Message-ID: <20231017200109.11407-28-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231017200109.11407-1-quic_wcheng@quicinc.com> References: <20231017200109.11407-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) 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: gqXx785R9TS71NduPaTuCiNo98dVIDIj X-Proofpoint-ORIG-GUID: gqXx785R9TS71NduPaTuCiNo98dVIDIj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-17_03,2023-10-17_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 bulkscore=0 impostorscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 phishscore=0 malwarescore=0 mlxlogscore=634 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310170169 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 17 Oct 2023 13:02:31 -0700 (PDT) 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_offload.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, }; +static int usb_qmi_get_pcm_num(struct snd_usb_audio *chip, int direction) +{ + struct snd_usb_substream *subs = NULL; + struct snd_usb_stream *as; + int count = 0; + + list_for_each_entry(as, &chip->pcm_list, list) { + subs = &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) sdev->card_idx = chip->card->number; sdev->chip_idx = chip->index; + sdev->num_playback = usb_qmi_get_pcm_num(chip, 0); + sdev->num_capture = usb_qmi_get_pcm_num(chip, 1); uadev[chip->card->number].sdev = sdev; uaudio_qdev->last_card_num = chip->card->number; @@ -1706,10 +1723,8 @@ static void qc_usb_audio_offload_disconnect(struct snd_usb_audio *chip) mutex_unlock(&chip->mutex); 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); }