From patchwork Sat Sep 16 00:10:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 140892 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1442739vqi; Fri, 15 Sep 2023 19:39:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG930X1Dc+fxOozCI/N9eIRfJc60CFsDiTyu9SnoOzawkfAb8emSLqo8TJLuAkRktiPpE9J X-Received: by 2002:a05:620a:4016:b0:76d:9bf2:f1e9 with SMTP id h22-20020a05620a401600b0076d9bf2f1e9mr4127004qko.13.1694831992370; Fri, 15 Sep 2023 19:39:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694831992; cv=none; d=google.com; s=arc-20160816; b=0CLIAkOfgNCYLrA3kgkRi0VLgwes6vwiQauEl/CvHPdXAAQ6F/YOT8LpxG/HPHtYt/ dxDP5CS27DA4Tzj9tjPecmxvfHrdsbkKsZp/ncKRU8kAVZHskYP9FhEKzX9L0i4aTU5G A8/O1GwopB7/88b5H3kio3YyrMCOqTz8YtPKWMtphPLEqKQRmoYK5LTKbL1nGTSQbzfH OM0BYQMbd8Xzntqap1hNIN9fF7z7AMGFeMM1RnIcJZJGHNDIiRVPtPP6XHCplWdLkU13 enIQGqx0hFFJGoEBuTUYhcNSKX7CLlI1o5RngBrigvhonBO3QxszujGh01uTFa/C0gUs pJqg== 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=qJXKjjLhMMPrOaanXxaV8UkfBmUx+QoL5jND24eyzIM=; fh=MhCCCRx4c0AeUz43uLzZOKA4YzcBN2mk3tAWrRRVvW4=; b=kLv0KQqnT0mo16cmm60e+on5ksAon4GovMfdb3xuzRq0Fs1PSaXCGTHERMgKuBP3iJ UyYkU9kq685tlT1bZgFbzKFPuKMxZfyHFLIxCJlz0nIFvQJnme9m+vNZMMmXjF0WZSJ/ GYqSd+GkhkWD5MaILY1M8tRdsu3+yL8aIcMml6U8/TAiCnmdBuVtkHSI6HAkuP/Pk0DO wZ53lLBL6Ebyb2V81atynVBppOwavedOh7Fz863e3LgWiFm600CNwsfxTcE53HNDXxIn GYFyzbDvK5wn+ET8W8fENVDFy0vYepr1Fp/WofFJ3j2OcLDECRSpyPAjH2n4rf/Zn9iq mqBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=XNntFfFf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id g19-20020a056a00079300b0068a3edcf2a6si4053689pfu.246.2023.09.15.19.39.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 19:39:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=XNntFfFf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 1637A8025AE6; Fri, 15 Sep 2023 17:14:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238254AbjIPALp (ORCPT + 28 others); Fri, 15 Sep 2023 20:11:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238222AbjIPALI (ORCPT ); Fri, 15 Sep 2023 20:11:08 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C818270E; Fri, 15 Sep 2023 17:11:01 -0700 (PDT) Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38FNYUZi014265; Sat, 16 Sep 2023 00:10:46 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=qJXKjjLhMMPrOaanXxaV8UkfBmUx+QoL5jND24eyzIM=; b=XNntFfFf+F1Xha2npAV9fiD9pDHk9vJmwtQSxW84vuhZZ45gjSttKqKPlY/5SvjR7fzl YIkpf8pm8MFGpK+NWb/sw4bshvs58x8pw19is3jKyI4idYDlQZP6+E6Es8z+x07q4aQj pI75LI3ynybMuzE8a1taYfEBeqiXnosuk8U+ytw8ahvT4TQiTq7lWCtBalnJIeab7Isv PT0RCHsbeO5/EegHoUFy7bCDtipL9uWar+9MKKX87amSbKKKYVIWbzD7L1XeqkapncNS 8j8YbLO+9UbkaY/3UYZl3ijy+EDyLjM1tqeOKniKTZ1ef3wL7hBJn4EqQRsVEEh8f7IG Vg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3t4g86tdey-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 16 Sep 2023 00:10:46 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 38G0AjWT018265 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 16 Sep 2023 00:10:45 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; Fri, 15 Sep 2023 17:10:44 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , Wesley Cheng Subject: [PATCH v6 27/33] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Date: Fri, 15 Sep 2023 17:10:20 -0700 Message-ID: <20230916001026.315-28-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230916001026.315-1-quic_wcheng@quicinc.com> References: <20230916001026.315-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: yq_lvku4MEJl6Sxdh2K8bHUtKi0_Qe0t X-Proofpoint-ORIG-GUID: yq_lvku4MEJl6Sxdh2K8bHUtKi0_Qe0t X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-15_20,2023-09-15_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 bulkscore=0 impostorscore=0 adultscore=0 suspectscore=0 malwarescore=0 spamscore=0 mlxscore=0 priorityscore=1501 mlxlogscore=931 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309150216 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 (howler.vger.email [0.0.0.0]); Fri, 15 Sep 2023 17:14:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777160151484935899 X-GMAIL-MSGID: 1777160151484935899 The USB backend should know about which sound resources are being shared between the ASoC and USB SND paths. This can be utilized to properly select and maintain the offloading devices. Signed-off-by: Wesley Cheng --- sound/soc/qcom/qdsp6/q6usb.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c index 0467d8a533fb..2c0d482de3ab 100644 --- a/sound/soc/qcom/qdsp6/q6usb.c +++ b/sound/soc/qcom/qdsp6/q6usb.c @@ -25,10 +25,18 @@ #define SID_MASK 0xF +struct q6usb_status { + unsigned int num_pcm; + unsigned int chip_index; + unsigned int pcm_index; +}; + struct q6usb_port_data { struct q6afe_usb_cfg usb_cfg; struct snd_soc_usb *usb; struct q6usb_offload priv; + unsigned long available_card_slot; + struct q6usb_status status[SNDRV_CARDS]; int active_idx; }; @@ -110,6 +118,14 @@ static int q6usb_alsa_connection_cb(struct snd_soc_usb *usb, if (connected) { /* We only track the latest USB headset plugged in */ data->active_idx = sdev->card_idx; + + set_bit(sdev->card_idx, &data->available_card_slot); + data->status[sdev->card_idx].num_pcm = sdev->num_playback; + data->status[sdev->card_idx].chip_index = sdev->chip_idx; + } else { + clear_bit(sdev->card_idx, &data->available_card_slot); + data->status[sdev->card_idx].num_pcm = 0; + data->status[sdev->card_idx].chip_index = 0; } return 0;