Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp493521rdg; Tue, 10 Oct 2023 17:24:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEg0gYgi0ZcC+Ip1SFdsSnQDo9atxebgWVR2oXgwKx5Hg5XSSazOJt8F0V/p5sVjNbmrtvs X-Received: by 2002:a17:902:e5c1:b0:1c8:9901:85d0 with SMTP id u1-20020a170902e5c100b001c8990185d0mr12657352plf.46.1696983839654; Tue, 10 Oct 2023 17:23:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696983839; cv=none; d=google.com; s=arc-20160816; b=aqZdxeVllcQBfMr+y7HzoL5uoGDSLo6ywWUa8blVA4TOOyja8s69Tv5DQuxqbLt34i qKI5pRo86ZRsIEN5ZHgVXJUO5uTaea9Xgm7OduTFbnP5Kiydxs1d/7CNl4xlSJW7Y67g F2z/vq/i2fNu52K7HoZ9B5SV0Iew4ycGtKzL8UczKiI4RC2W2lMTcFqLDXJMMc0bDo5p EhbbDS5XiDBOy/rw6TXdGr5ru68rg04ZoGPtx1B7uOusovTTOYZfpz9hdpn999+rG+JY a/OUpQZLFHP9FMoD0M0dU4N/+ELWA8d51kZ+NENZmEvW+euSNCaLXsFuFNoFoXGNXOSY i+CQ== 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=G5cSdczvjstVFsyizy4AhMUF6zW5vjWBK85vXLkJ5JHSMGqX4sJ9Pz3ztR/iF8dDfH FYfagizdAAk39C8YFhCDRBGYrZm5NjSwgvxrmHSeOiut/yfxOdKCpznODLqnCNxT82eR +SGk4o2CidxX54sH++h3FIMxNUK5Oxj9z1netJOpYJ4BMsUhAsqMhu7O4MmJjDz0UESn rhwVJ5hlZgtLoi2qsBjtdFhAmYANWBmsIuhx6aodHVap3JH4ATkY9GpiY/0IEANZxvPz lTR3lUujDBfez2nCRgKzanHn4c4AgNbrB0ONE6tZlcmwDwwS0P3yzVXfjxThSSf7K0u0 LyOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=S565xj1t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id s9-20020a170902c64900b001c5b9ef1d34si12092518pls.340.2023.10.10.17.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 17:23:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=S565xj1t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 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 lipwig.vger.email (Postfix) with ESMTP id 3B7D881DE382; Tue, 10 Oct 2023 17:23:55 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344351AbjJKAXL (ORCPT + 99 others); Tue, 10 Oct 2023 20:23:11 -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 Content-Type: text/plain 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 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Tue, 10 Oct 2023 17:23:55 -0700 (PDT) X-Spam-Level: ** 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); }