Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp1409080lqd; Thu, 25 Apr 2024 15:01:03 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVVHkN/CewlDoUcdEybuaEt/tbPI3L6wn1y7MLuid1bpnXcYU4PPLOnnlyPBU2HW5dQ992AfQBBkipo3VoHr4xFPBAr/2fFXWwSN/aIsw== X-Google-Smtp-Source: AGHT+IGUNq9UZw7lDkoky9QLKNdyx5pbzO+GaeG2ouI1ZjeoxxJvjc7ChXpTAFEiQIfxgJOPOvzR X-Received: by 2002:a17:90a:654c:b0:2a0:215f:dc9c with SMTP id f12-20020a17090a654c00b002a0215fdc9cmr899272pjs.35.1714082463245; Thu, 25 Apr 2024 15:01:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1714082463; cv=pass; d=google.com; s=arc-20160816; b=YnnbK5WHAJT4RgXiGrNMPqvSa2NPnu7UmB0rE7+z0UYGmpn7RVruYYDad7H9rT9jiF gMxSD1iphjf4PCsNMLER92iaihqpEy4XPrW1+lGZCpCQVT8nPfc/3LqOlbe+kmyHARPp ko3EwFIJUYhMw0H9y8AHst6sHUzQPjkoriWPULvhwJlfYeWspyybkhpxYHWJhtzA81rY +6F6ccbn9URSS8bUt0c7ErJX1kif/f7oykfHBzwB+kW67aoRpYuCdtqp+GSLpIcpq8rl OFXjvHdG7WtqEugkZaUQrYpW0i1zcAD36TcrCIY4IVMBsrDNBscjXeaTuVrYKUDd4EUv 1Hkw== 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=HUDTdfzQUbpe9qfiFp0bKWsasPQJ9GQd8pkL2h1cGwI=; fh=usWEz1eJjYCle08WABmDyuqCrJGq9m48/LVlmybnzRs=; b=dVlD67aD1BzCJJpsKEdve1Yagf3WkOM8cz9BTQiKIyi+wSJC6JlvLTlPh+P/8U407m LH0upi+vw/Me9spiFD5iwcwaxGJIsvhgDcRaDtMXtuJcvIEicguVYBcJwNRwzHFRYDwB 3wsrBZi2sx2QrXJjE0RxQBjb2Ihq4eKMuAjQ1xPQwZtUSpVZDXYUuaX34aLLn6sUksf0 qAORcBJAqjAGrYHYDHhpK7kcb8ZEAiaZy1MuefI4fYTNC3f+QiEWfzn4c3syIwZdNRrd oipgT85pOWqXoHhm2yY6+lRlDhm3AYPyx0VUiIsUL6DL6cH5PpKZEtMLekwsWFxVtoGj CPmw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=GIcDO0hd; 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-159265-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159265-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id l8-20020a17090aaa8800b002a537deacc5si13988581pjq.56.2024.04.25.15.01.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 15:01:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-159265-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=GIcDO0hd; 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-159265-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159265-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id C6D6128B6E9 for ; Thu, 25 Apr 2024 22:01:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 15EB419066D; Thu, 25 Apr 2024 21:52:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="GIcDO0hd" Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 766951802D3; Thu, 25 Apr 2024 21:52:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714081940; cv=none; b=f+h5dYw8adcLToZVDM9vozLhP6tyUx8UYMKDIynLL+2b/JUzpSlmVjbt1PNjO8zj3YzsOdN8mY37BftAwP3whVHPzBIv79pcaVdSZSBiB5X0XkOltLhzGe90FTyh5w2DHB893v/mUCgX8SjseTTBWeWL5z6CMzPgCCtIBLmp+Pk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714081940; c=relaxed/simple; bh=LtZV5CUXs48ixayeIGQ76IReB2d+LrWonLDPetBVXE0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=imNoCaMoprn1OWv+Zv7LS6L1KVam3KwuhlhEKvTQ1CWJorvy0O6V7HtwMK7nkjuWwjEJ26thQkIfOirVBRqsSPNZqpA9ltlBpft+NBRX/egHogVqNF+tGeIihKuYMpu2wA9DJ/YezA1+ODbQGpBuqCYz3FxmcPdvUkKhvo2MGNI= 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=GIcDO0hd; arc=none smtp.client-ip=205.220.180.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 (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 43PKp4hW003645; Thu, 25 Apr 2024 21:51:47 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=HUDTdfzQUbpe9qfiFp0b KWsasPQJ9GQd8pkL2h1cGwI=; b=GIcDO0hdTs3XekwKdWQ+39QeXrI8aAS+68gG wx2j3Vls3Uk8VG0DQkcXCMFwYtIPcDSnkX2RJF7+EmqW1tbztG7RD88EQjwE/CpR 6iZ+4xjIDZ8p6vnOFaBtz44iFtuuEXFOi2xmTCTyOEncvD7VzxF0mQXl58uc+Rg8 cGBkNejx5XKl8XJKcxHnv5qNueF6s6LKKbP2w3c6howe+2CjUipUt3nNVXm/IF++ gm3jk+V7/5Vpvl2eQedyG5pFRnp/cCJ4Yqpd6MbvyRme20NXihEskgB/aeAgHltP Azaox1r2aUFw+DxLIEH2DBvPFCldgWRuTBN+3J7WDg0ExJ5MyA== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3xqqtf15k0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Apr 2024 21:51:47 +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 43PLpkAm011226 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Apr 2024 21:51:46 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; Thu, 25 Apr 2024 14:51:46 -0700 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v20 35/41] ASoC: usb: Fetch ASoC sound card information Date: Thu, 25 Apr 2024 14:51:19 -0700 Message-ID: <20240425215125.29761-36-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240425215125.29761-1-quic_wcheng@quicinc.com> References: <20240425215125.29761-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: IdPzSiJ6nwUPN02bwYRCzBQX1hUG7dwC X-Proofpoint-ORIG-GUID: IdPzSiJ6nwUPN02bwYRCzBQX1hUG7dwC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-04-25_21,2024-04-25_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2404010003 definitions=main-2404250159 For USB sound to expose mixer controls to fetch information about the ASoC sound card, add an API that returns the platform sound card number that is registered with SOC USB. Knowing this allows for applications to further query about the offload status. Signed-off-by: Wesley Cheng --- include/sound/soc-usb.h | 6 ++++++ sound/soc/soc-usb.c | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/sound/soc-usb.h b/include/sound/soc-usb.h index 3137f538270f..56df503c4ecf 100644 --- a/include/sound/soc-usb.h +++ b/include/sound/soc-usb.h @@ -85,6 +85,7 @@ int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params, int snd_soc_usb_connect(struct device *usbdev, struct snd_soc_usb_device *sdev); int snd_soc_usb_disconnect(struct device *usbdev, struct snd_soc_usb_device *sdev); void *snd_soc_usb_find_priv_data(struct device *dev); +int snd_soc_usb_device_offload_available(struct device *dev); int snd_soc_usb_prepare_session(struct snd_soc_usb *usb, int card_idx, int pcm_idx); int snd_soc_usb_shutdown_session(struct snd_soc_usb *usb, int session_id); @@ -128,6 +129,11 @@ static inline void *snd_soc_usb_find_priv_data(struct device *dev) return NULL; } +static inline int snd_soc_usb_device_offload_available(struct device *dev) +{ + return -ENODEV; +} + static inline int snd_soc_usb_prepare_session(struct snd_soc_usb *usb, int card_idx, int pcm_idx) { diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 27c76a33da32..53c4e399909e 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -457,6 +457,32 @@ int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params, } EXPORT_SYMBOL_GPL(snd_soc_usb_find_format); +/** + * snd_soc_usb_device_offload_available() - Fetch BE DAI link sound card + * @dev: the device to find in SOC USB + * + * Finds the component linked to a specific SOC USB instance, and returns + * the sound card number for the platform card supporting offloading. + * + */ +int snd_soc_usb_device_offload_available(struct device *dev) +{ + struct snd_soc_usb *ctx; + struct device_node *node; + + node = snd_soc_find_phandle(dev); + if (IS_ERR(node)) + return -ENODEV; + + ctx = snd_soc_find_usb_ctx(node); + of_node_put(node); + if (!ctx) + return -ENODEV; + + return ctx->component->card->snd_card->number; +} +EXPORT_SYMBOL_GPL(snd_soc_usb_device_offload_available); + /** * snd_soc_usb_allocate_port() - allocate a SOC USB device * @component: USB DPCM backend DAI component