Received: by 2002:ab2:6991:0:b0:1f7:f6c3:9cb1 with SMTP id v17csp87380lqo; Tue, 7 May 2024 13:03:12 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXfUAsT+G6ZAAiRf1flqlCAyWbdWvPoQVb0EdnjKfmOcA78CMaSc16DqUNefVRMGT3juiaNw4X3ctDIheEy+H421+CpIeI2+H80jmbOQA== X-Google-Smtp-Source: AGHT+IH6izuwaiec9llgSph3jEWJ0W+Exzylez6Yh69ORzVxdPET8oxTbOXFIbGIEytOX5zFLQ1N X-Received: by 2002:a05:6a00:2d1e:b0:6f3:e9bc:7ed5 with SMTP id d2e1a72fcca58-6f49c1f6c02mr882656b3a.4.1715112192623; Tue, 07 May 2024 13:03:12 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1715112192; cv=pass; d=google.com; s=arc-20160816; b=THWgwVZaTO8t+cn+VIKa7GIx8W8BMq802NZVsftFRmG8UuyGV1TMIpDpNom0PE5gio yLjQjPKbwQBYFjrQDJ9sDIBC9rlV2y4ZH+5zO052mZpKoUzLaGQwuuDIGHISzEdpmZ9+ vYUqPVAZ4Qb5Tlb8rCiX0H8zEasJT5M8gHjJQ+7hA5z+EcOonY2dSsOinadLDI6IVmQt 4CEysePqHTqRIGLxuMSfv89zbofZ0zR3DIr9II7OFtikdRigg066/7qHYEK8tDTH7POL L8JM0JnNDQjCNNWKaKFuSjNpNnQw/3QOQEYfOVPDA8RLDnE8Q6Q0ptpLKSJxxwnzwHqD LdPg== ARC-Message-Signature: i=2; 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=XLviA2oSMRjiW8J8AQWkGxTYbdZG1voFDEaJrY8b778=; fh=tk8sqZoIP78riW3PYc75n3+DQFkqFrW+9GPE0/sstVA=; b=lm8vF/5I+PtWnphde29fRrUmybrw7GIbjLH1EIYPdf3neTmnZ7TNiMDT6FGHozfz8+ qtW4oEvuvyQN+q3hvQdeXDlHOFknTswYFNxw8yNJLD+JZNclDdOaDI36prruWJ08504w wqDYXTlUNoZ/Zg0xSyVjyDwnQHRfWn5ich1Hf0eZPGaKfq9b/iAF85Q0PcySjcS+ypzp rTHXyKFKuQxoJeiTh1oYSCauQJIYKsnNHKveMJ8kBYb43Aq775vG3oftikFz14HkJB1o vJB/sINs3sr6XsdY6JS5vFq/UdM+KnLITeE5aY9QnIg252Lc56EUDA9LJBCatHzllgNF H8bw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=i6mXKCrA; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-172099-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-172099-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id b21-20020a656695000000b0061fbdc334d3si7980634pgw.148.2024.05.07.13.03.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 May 2024 13:03:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-172099-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=i6mXKCrA; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-172099-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-172099-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 sy.mirrors.kernel.org (Postfix) with ESMTPS id 0FC0AB21A73 for ; Tue, 7 May 2024 19:59:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 229932101A0; Tue, 7 May 2024 19:52:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="i6mXKCrA" 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 7D9161C688C; Tue, 7 May 2024 19:52:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715111522; cv=none; b=M+K+Gb+vKh8Vz3NktGI7654J1aT6q1RwDQcqUxAvPn3xBD3wI49LaW+KK4PXkE4Io5jpOdNxZk0NdbP8pow4zJsTva4t9DhOPko3Y25kkClX/e6GAFuYBRUVpWMShgTibNtXWKRwZllD1ete5ZZH5WJnMwT2SxCGZ+qplkWhZBo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715111522; c=relaxed/simple; bh=dzjNmhNw1SGNMUntenbwC5rTPPQwpLEL9mPtT7CD4HY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FkdjreEH8BsmY+6qXYthanx+eaJyRj/p4i83LqSjsg6RmETh0Cm/URQrJiDx7EdfLHQAZ9SBHR59D8dTTjQOu9Mi5imLSqICu5LwRim+bGhxvOWbZcEQBsCaiuFoUE7J1qTntTlE8dA+ijReLTkVcnuMt3sWUWVf/BkHLsYZ+vs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=i6mXKCrA; arc=none smtp.client-ip=205.220.168.131 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.18.1.2/8.18.1.2) with ESMTP id 447JKp5h004238; Tue, 7 May 2024 19:51:35 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=XLviA2oSMRjiW8J8AQWk GxTYbdZG1voFDEaJrY8b778=; b=i6mXKCrANr+3Cvong6aOPy3wHwE2jBSD8d28 jQEu4qm6oHM9akTPlB9irNgSK0dwWJlWcWYORrdd+RxLE49vBm9Dc3OpDWWH5TK5 M1Dfv9cJo9gYKggj5ik7typCIygviNsAwOVcOWwQUPGCWOsBWMIJh7tBOalvw/0f Db9UWMHTEHpiHjeuyRMbUm/8siguq3JeROW0zabGsnFUOvUi2+at9Ew97Ut+DxIy 4yqzjV38yt1198XVfFr27QQZSu+pZsdwtJpENhRMlSPZB3NLR7NgGrjrpUqsMvvf bjPvdNgDOttHRg8PNalcBHjCZKusTnwOsC5NMOYG8gfnTgjXmw== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3xysg4r5u8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 07 May 2024 19:51:35 +0000 (GMT) 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 447JpZRR019836 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 7 May 2024 19:51:35 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.1544.9; Tue, 7 May 2024 12:51:34 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v21 26/39] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Date: Tue, 7 May 2024 12:51:03 -0700 Message-ID: <20240507195116.9464-27-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240507195116.9464-1-quic_wcheng@quicinc.com> References: <20240507195116.9464-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: 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: 3vdJDCBN0i-0yMai1q8q2nUrD-e8Hr5E X-Proofpoint-ORIG-GUID: 3vdJDCBN0i-0yMai1q8q2nUrD-e8Hr5E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-05-07_12,2024-05-06_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 mlxscore=0 impostorscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405010000 definitions=main-2405070138 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 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c index ee082d2fe786..1e85636bc6cb 100644 --- a/sound/soc/qcom/qdsp6/q6usb.c +++ b/sound/soc/qcom/qdsp6/q6usb.c @@ -27,11 +27,18 @@ #define Q6_USB_SID_MASK 0xF +struct q6usb_status { + struct snd_soc_usb_device *sdev; + unsigned int pcm_index; +}; + struct q6usb_port_data { struct q6afe_usb_cfg usb_cfg; struct snd_soc_usb *usb; struct q6usb_offload priv; int active_usb_chip_idx; + unsigned long available_card_slot; + struct q6usb_status status[SNDRV_CARDS]; }; static const struct snd_soc_dapm_widget q6usb_dai_widgets[] = { @@ -113,6 +120,12 @@ static int q6usb_alsa_connection_cb(struct snd_soc_usb *usb, if (connected) { /* We only track the latest USB headset plugged in */ data->active_usb_chip_idx = sdev->card_idx; + + set_bit(sdev->card_idx, &data->available_card_slot); + data->status[sdev->card_idx].sdev = sdev; + } else { + clear_bit(sdev->card_idx, &data->available_card_slot); + data->status[sdev->card_idx].sdev = NULL; } return 0;