From patchwork Tue Oct 17 20:01:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 154457 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4369813vqb; Tue, 17 Oct 2023 13:02:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXA70GDDSxlq40brbT1cubzmibhlq5NGtITL57y0syttEY/TQ61zy5MhobzaOEgYei7PTA X-Received: by 2002:a17:90b:3510:b0:27d:6268:b75c with SMTP id ls16-20020a17090b351000b0027d6268b75cmr3466073pjb.4.1697572970205; Tue, 17 Oct 2023 13:02:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697572970; cv=none; d=google.com; s=arc-20160816; b=LCzwqQTVTpclYBxhtwmqxPSeeEL3/oKFC8Bc4oSI3OCws6xyvUE5rWdDpy06SUSgHr p3J6LU9dE50c2fbDSPT+N2yxyK8C6YnFNe3f8HnQ2SLgo50eXRSf4PXeKtRVc2IbE0gt 3GNiT/CZ+bpA7k0WcxU7ubkhaOkm3jf2F5P/KnF7/o+4GUiOcccebwSWZo3qNJeNO5X5 b2vVmjKxrvf70KhbfwAxsvk9BB01L+kgVF5Ub7kHO8QZNT2NDiFFG1xo7WeKplchMfer TdxZwuCEO2CAoOCMalOb0FkNr5GNzYkatvHm91DSk8+S2LucQ3gd9jd58a3PZqo2CEkF GNYQ== 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=Kd7JVRVp+I+Xk7DXDTAeHHZpvD4f/oHbrP3CUMWtwu0=; fh=ASZxE/GudOQkGCAz0d02NHHSpg4iNHYOcDWl1imlof0=; b=Q5cFVKTKvqyjN2bEL2HDv0KpHCF/CV1PYmCRTdCXyCvbw2AeboDWl7mkeid0DNDVjL 7ChFbCjTVnQfaR0CcC/+eX/AYqnST4pmRNWEBTaZ8Q0csBO1rmv0G8RczS1AkCWbHjrG vaD3d0a7bU8UH5H3JwSf4PD6x8bXh+6aukzM+0qCtQPzgDcK3ScIndORObxI07t9Qltt KiwWZQNCeFLXoi7E6/PwZ7PyIZMpXNUCzZuQNn3Ah/L5i/89Pa8jIUrchIuXHVlR42YR CpthlETrVJPap4YM71wlgStYvtxnLuNSnG5B99aSiqgE/p5hCgxZkXpaeYZXnIlfWZZw sQwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=hiMRSIr7; 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id t7-20020a17090abc4700b002791cef6654si9417073pjv.1.2023.10.17.13.02.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 13:02:50 -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=hiMRSIr7; 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 6A28E80226AF; Tue, 17 Oct 2023 13:02:37 -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 S235158AbjJQUCR (ORCPT + 21 others); Tue, 17 Oct 2023 16:02:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344026AbjJQUBy (ORCPT ); Tue, 17 Oct 2023 16:01:54 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E68949E; Tue, 17 Oct 2023 13:01:47 -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 39HGo1og012906; Tue, 17 Oct 2023 20:01:37 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=Kd7JVRVp+I+Xk7DXDTAeHHZpvD4f/oHbrP3CUMWtwu0=; b=hiMRSIr7RbWKDJXPpZkhPL+M9HXmsQ074xz2fR6Blzd3uGdgL6tZdujs5Q8IHBnbbt/j 79Jb3bFrOBP9YGEOwonhd6rGiVltuguH6ow01WoImoox698sTxfP/4VMQjBpQgJVPyO9 VbXt6BFC+t3JjkWBFCGTZ7qqA750oRe7gkhffK7h2GnXvrmMYJ7EMEhfTyTtQWigJ3RX XdcKKgkxWRNVa8hi8cZGaG/cD3GfxUP6r1soquruWSCF+rQbJoLrP1ASw6ce75agSQgl YgQ4ScrXvLh+j3TIp1oYlCgPO60BC5l7YKoC+lDrpY7zgdzym1tZTMy3IJ6L6aYg7aj9 iQ== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tsaf0u42k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Oct 2023 20:01:37 +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 39HK1S2a027390 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Oct 2023 20:01:28 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 28/34] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Date: Tue, 17 Oct 2023 13:01:03 -0700 Message-ID: <20231017200109.11407-29-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: 2Tk-uyE0_F0qjFNQVrsmaSZboejwWAco X-Proofpoint-ORIG-GUID: 2Tk-uyE0_F0qjFNQVrsmaSZboejwWAco 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 suspectscore=0 priorityscore=1501 bulkscore=0 adultscore=0 mlxlogscore=894 malwarescore=0 mlxscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310170170 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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, 17 Oct 2023 13:02:37 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780034274659224945 X-GMAIL-MSGID: 1780034274659224945 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 329a7d4a3c01..d697cbe7f184 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;