Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp6979697rdb; Fri, 15 Dec 2023 13:59:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFJLkGdMmQHqIr89hYIm+gtb1T+vWnok9/3TbSAB+bsIwCVo3eo3HyV1YamNDnl6R10XwGP X-Received: by 2002:a05:600c:920:b0:40c:22e2:14ea with SMTP id m32-20020a05600c092000b0040c22e214eamr6801102wmp.1.1702677543971; Fri, 15 Dec 2023 13:59:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702677543; cv=none; d=google.com; s=arc-20160816; b=y2pXYWcDv/LtS5Ex4e36s5hrLm3WOzqonFIVHyYHAmU/n8tt8JF6qvDFrn7ePvMiNI 25luJyjrGRdvag0e1FIecVLIc3+JURyQmA0wSvJAdqsOx9hXaKj95wkmit4haB4NaxFj xXi/0MhatnUe4Az1zh0IXjvh3bu/5SdNCA9pwN4CdrxM7CXzkdC/5XmTEWLVeOdF041c 0STGndwA+M0ONDMoGOSN2W761FyeCNjOpVx4eAlXZIW+lWjdozD97Z6AXbSLF8v4gMOI iEEOreEoy28dhgauDbT1UnnsXcEHEEGgMzkQnheZqrCAJIbshOzQ4qpQQIdZYZuH699U PI2A== ARC-Message-Signature: i=1; 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=ZvoS3HLjg5Fu4BDsgBt8WUSU9w+4N+LsV93zchjmxcY=; fh=0KzismZj+xI0Z//ZGdqKIH/FO9LtSZM7Yj4P0VtrCz0=; b=IKHOsI3G7NQeQewVv4mO1v0Us9Za4plOHe1zF+IqIYZ9nsGMDlVvKWcyGmgrxDbd99 WJYxQYovz1z+u+iHLOQY7ZrbMEdp0jZCmSJ8zAY1nN08VeTK/SYR+q/DhNSQ8yUHU+9I HaasnZZCuVV42A6sz0NJQ2Kbnvngeh8W/8xdzIolQ80Td2KB3UK4/pxKws8M5LdMh0u+ 4QLp1fiODmklE465eUUxEX43lyhM2/ra3DmqrPCMtdfeRz4zDer+pqBnfnX3NQHcMPsr Hl6u8lbjf6IcmUPMf51WF+gaDWpCZHEVzmQ/ea3ppormtAMuE4qmredvm3GpPbrXDKps 1vkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=L61dUtdM; spf=pass (google.com: domain of linux-kernel+bounces-1700-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-1700-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id p23-20020a170906141700b00a1cfa7e0d3fsi7431385ejc.986.2023.12.15.13.59.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Dec 2023 13:59:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-1700-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=L61dUtdM; spf=pass (google.com: domain of linux-kernel+bounces-1700-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-1700-linux.lists.archive=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 am.mirrors.kernel.org (Postfix) with ESMTPS id 6C1231F231D7 for ; Fri, 15 Dec 2023 21:59:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8961118EB0; Fri, 15 Dec 2023 21:50:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="L61dUtdM" X-Original-To: linux-kernel@vger.kernel.org Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 E4ABA6979B; Fri, 15 Dec 2023 21:50:30 +0000 (UTC) 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 (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BFICXWt011007; Fri, 15 Dec 2023 21:50:15 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=ZvoS3HLjg5Fu4BDsgBt8 WUSU9w+4N+LsV93zchjmxcY=; b=L61dUtdMRTW/prS5b1nOL2AHnD3JkTq5/r3N +1qylohCtGfhhJcQxdwk+hKJRpmnuxcJU75sTBYAHBl5k1qjjIz+zN5JlmntMA/1 izYA6RYOvb/3HKIj36ms0jPOd05lWPNwHK7KN6oNZ7l7sw/ZryT+iTD7yWpnKDcr lFKjRAqIXucgv8QOflD3s0e2QERFpj9vcDYvc3BJVGrza1ng5iZXHvH1DTB5oxzT yitwx5eUsR9QZ3hLj647pAX2x1hoKhh3RBvYjKb7iLtgucLDWGc0mZ3aOdZkqzTn fwWyjtgXd/0UVQPdX1oeddhmsEvf9fLAWBoXiXmp1kRIVpN3Dw== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3v0m46hngc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 21:50:14 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 3BFLoEKe018004 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 21:50:14 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; Fri, 15 Dec 2023 13:50:13 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v10 27/41] ALSA: usb-audio: qcom: Populate PCM and USB chip information Date: Fri, 15 Dec 2023 13:49:41 -0800 Message-ID: <20231215214955.12110-28-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231215214955.12110-1-quic_wcheng@quicinc.com> References: <20231215214955.12110-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) 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: M99dgLfBzC2FPbz-iLvzJLfKpZm6cEsW X-Proofpoint-ORIG-GUID: M99dgLfBzC2FPbz-iLvzJLfKpZm6cEsW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-09_01,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 adultscore=0 phishscore=0 mlxscore=0 clxscore=1015 mlxlogscore=666 impostorscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2312150152 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 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sound/usb/qcom/qc_audio_offload.c b/sound/usb/qcom/qc_audio_offload.c index 754c4242f8bc..1104499f89f7 100644 --- a/sound/usb/qcom/qc_audio_offload.c +++ b/sound/usb/qcom/qc_audio_offload.c @@ -172,6 +172,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) { @@ -1627,6 +1642,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;