From patchwork Tue Oct 17 20:01:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 154455 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4369781vqb; Tue, 17 Oct 2023 13:02:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGlah8XwxvkPILWQurjX2tvXCM21N/6/cmfobcTH5wTkL6r+wx1ZyruHyCYqdQU4fp8gXPh X-Received: by 2002:a05:6a21:627:b0:15c:b7bb:2bd9 with SMTP id ll39-20020a056a21062700b0015cb7bb2bd9mr2931835pzb.6.1697572960420; Tue, 17 Oct 2023 13:02:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697572960; cv=none; d=google.com; s=arc-20160816; b=hVlWz4xzStEvMWZLFTNIrqBG427RtcNNIx2RfOYk6I+UBgn3MUj+y7RrCxfUoKVnCz VHsjSEvYbKl3RCo88xu3Mo3qVNqkae1EiEfkZrfV405MWA+Ymx4248hnoqX9XsT/tu1I 9uxGp3Yxrxc/NQ1hs8wwbPLDAv3TOQmA9O8zkNdRcYwiMj+xt2CNTEoUACLq4ePNHMEc RSgDJtcsOP7X8yE7+vXd+5b2ybJpr56Y494NIvse9GIn0NE12+rTa0qyNcPmH1ei7z1k +0IwKhhh5FYeLkop7FkCDZCFYhYhcsFSrci4JUjMWoqUZ/jOml6JiNZVr6lrzd3ozOtd 6SWA== 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 Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id i130-20020a639d88000000b005b01279150fsi469987pgd.528.2023.10.17.13.02.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 13:02:40 -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 1047E80FDDE6; Tue, 17 Oct 2023 13:02:34 -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 S234143AbjJQUCW (ORCPT + 21 others); Tue, 17 Oct 2023 16:02:22 -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 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:34 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780034264676508308 X-GMAIL-MSGID: 1780034264676508308 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); }