Message ID | 20240203023645.31105-34-quic_wcheng@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-50874-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:9bc1:b0:106:209c:c626 with SMTP id op1csp821428dyc; Fri, 2 Feb 2024 18:59:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IE0TRbQLc5Fr2W6SEwGTp4bWtxtGw6THc5r06Dl4lILF00GsUJKLFwWGbhvoFLmjTIIP8zc X-Received: by 2002:a05:6a20:4282:b0:19c:acfe:5fe6 with SMTP id o2-20020a056a20428200b0019cacfe5fe6mr4643793pzj.21.1706929148866; Fri, 02 Feb 2024 18:59:08 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706929148; cv=pass; d=google.com; s=arc-20160816; b=WaSmxFDPMruOO+XR3/V5C66h5LetYcovWmob652uTH+hOzaBSKbBdmeOAe3c7Xq9S8 T9Wra+/OumdK4D2D31TPBdwBQA1gEtv2uL3WylHxRnnP0uYawHid+fSmFD3W28StqJar /0GJfPYsPn5GpeRHRbgHKRH5t9wMqNSyCDC+NcC260tv1eovVXyG7SUfYZFokxVewuM1 mTtIZnUdG0QPE/kgz0qgd/i0GS8Nc/8agbV1VKBBZ21YJSTWV1UuOdePA05UOJIywcas ni/D/W4yw7SVlNxjbbaZ+qNRF1Jbc5m2t8YughLqYrnTAAhRVosZwIYxq7xLTUDUaaEr 7DpQ== 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=As/LdtUmbbB5siySloFf0kGunSrAkzqtvS8hEof3Hjw=; fh=LEl6JRXhNqkVyfmUMtsEuTYFRqUjevl14hgwDKzsi/U=; b=VEdCfcEMfB8y+2PqpyoNeI3hKAhnt/6z1aDw9G9i5PHVfWx9MjXzjv7Mle9/cJrOUE MZMtvo/y/XCimBw0TfTJqx5KsFonOMt7TNSHyLzMsPDEXPO6dbZAwuvvHRccq/7hPCGT mauDBkqPP9t4KIQZBvzFpuR4zAjX+Gfq5HTEBf+0e8eFraMSv0Xl1BJEmsvq/RDB5gWQ +QYnJXoZcOP5DkkqlnqUXDJMD47JKCKX7odvexW/8J0n2YUD9bMyJCywt1TBn0bBQJ6E lPXNzxeAsMXChU/L4EZQGi8xqvkIeYhRJyape2FsR/ezmuGD73L8bykTKA6e5xVhm8+T J3FQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=j1a9vamk; 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-50874-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50874-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com X-Forwarded-Encrypted: i=1; AJvYcCXcVJOlvrY+usT2xdenq9MvYJRqSG4y15MeDdbEo25w2vl8XpQkp7xjEUKIUBLaZPGjDSTAzNATMPPG2W0aiIO+AP4LwA== Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id y4-20020a63ce04000000b005dbdd60e439si2482624pgf.485.2024.02.02.18.59.08 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Feb 2024 18:59:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-50874-ouuuleilei=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=j1a9vamk; 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-50874-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50874-ouuuleilei=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 0678A284AAB for <ouuuleilei@gmail.com>; Sat, 3 Feb 2024 02:58:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D4E2D5C905; Sat, 3 Feb 2024 02:38:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="j1a9vamk" 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 ED77779E1; Sat, 3 Feb 2024 02:38:21 +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=1706927903; cv=none; b=pnla2N4GazrUkBqm1ZDx/UGfe8xQC1dPAMPjQ89/smTl2TotBBlHwkvM3A2yhW1xDB4XcXz6y0i6VsAbgkMcuwT92M2c5+PdpcKSxdKH/1JPVMHPJr68T0IZNuH+5pcmr3dKy/rYrKfAYG7YXhDA/mIpqyIVzboHHkYS+umuMOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706927903; c=relaxed/simple; bh=Zn94y7bErg2fCTqgECKQemiKoOfcE1kcsfixHwdqr+Q=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OuI6qrDJqdE/8bEV8ZxK8B+ZVfFn9KX9L7Su+EhbVkyNt27OZQMR0Csu+okHvHYZ/YBIRzd7NBv0/LftTwPE1S0RStY53H0o1OE7XF3rVJ4m2X3lEv3wi4+O4UDS6BdW+krxZhCqNgJ9eyT/QhtcLF/5k8oMvEEKpQQWVyC26RU= 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=j1a9vamk; 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 (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 4132PXTd002870; Sat, 3 Feb 2024 02:38:06 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=As/LdtUmbbB5siySloFf 0kGunSrAkzqtvS8hEof3Hjw=; b=j1a9vamk/KuJ54vzMkgK3oAGhbqo5/wf8tZH U91KxAmkBXY4Og8BSYKcO0T7PxgR1zi4tVYtAl8HxtgoTnKn0JJY2C+gkDTfOYNM t5/wneUWsRoyuls9VaD+zsS55jKWFs/vmH/mLL8BdqmnO2YzjrMvN98yas7Y75G5 of/2Sow2J/oWju8EIQvDY/TPj8lf2TA8CZgH2EemxKUfyrf/CBXZqGRUCByBLihs ceocmJxNsE+CUCJgiw8SZzYowOg+A42OKaa2M1wFPPe2/dLafWuA4xrPnCFaqtY9 EUOi6SISMUOq9EZVbIiNq9gYnUDWHbfaacCuYDB/MRmCAa3mwg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3w0pwjjuj6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 03 Feb 2024 02:38:05 +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 4132bRNd004275 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 3 Feb 2024 02:37:27 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, 2 Feb 2024 18:37:27 -0800 From: Wesley Cheng <quic_wcheng@quicinc.com> To: <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>, <perex@perex.cz>, <conor+dt@kernel.org>, <corbet@lwn.net>, <lgirdwood@gmail.com>, <andersson@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <gregkh@linuxfoundation.org>, <Thinh.Nguyen@synopsys.com>, <broonie@kernel.org>, <bgoswami@quicinc.com>, <tiwai@suse.com>, <robh+dt@kernel.org>, <konrad.dybcio@linaro.org> CC: <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-sound@vger.kernel.org>, <linux-usb@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <linux-doc@vger.kernel.org>, <alsa-devel@alsa-project.org>, Wesley Cheng <quic_wcheng@quicinc.com> Subject: [PATCH v13 33/53] ASoC: usb: Add PCM format check API for USB backend Date: Fri, 2 Feb 2024 18:36:25 -0800 Message-ID: <20240203023645.31105-34-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240203023645.31105-1-quic_wcheng@quicinc.com> References: <20240203023645.31105-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) 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: FtFEGaf0EJDoW-hUlOu0fOgW_sJnnpNn X-Proofpoint-ORIG-GUID: FtFEGaf0EJDoW-hUlOu0fOgW_sJnnpNn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-02_16,2024-01-31_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 mlxscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2401310000 definitions=main-2402030015 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789844938979408044 X-GMAIL-MSGID: 1789844938979408044 |
Series |
Introduce QC USB SND audio offloading support
|
|
Commit Message
Wesley Cheng
Feb. 3, 2024, 2:36 a.m. UTC
Introduce a helper to check if a particular PCM format is supported by the
USB audio device connected. If the USB audio device does not have an
audio profile which can support the requested format, then notify the USB
backend.
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
---
include/sound/soc-usb.h | 2 ++
sound/soc/soc-usb.c | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/include/sound/soc-usb.h b/include/sound/soc-usb.h index c0c6b5abacdf..d9fc83180c56 100644 --- a/include/sound/soc-usb.h +++ b/include/sound/soc-usb.h @@ -38,6 +38,8 @@ struct snd_soc_usb { }; const char *snd_soc_usb_get_components_tag(bool playback); +int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params, + int direction); 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); diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 5b127141f0a1..cad8e1d798e4 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -80,6 +80,31 @@ void *snd_soc_usb_find_priv_data(struct device *dev) } EXPORT_SYMBOL_GPL(snd_soc_usb_find_priv_data); +/** + * snd_soc_usb_find_format() - Check if audio format is supported + * @card_idx: USB sound chip array index + * @params: PCM parameters + * @direction: capture or playback + * + * Ensure that a requested audio profile from the ASoC side is able to be + * supported by the USB device. + * + * Return 0 on success, negative on error. + * + */ +int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params, + int direction) +{ + struct snd_usb_stream *as; + + as = snd_usb_find_suppported_substream(card_idx, params, direction); + if (!as) + return -EOPNOTSUPP; + + return 0; +} +EXPORT_SYMBOL_GPL(snd_soc_usb_find_format); + /** * snd_soc_usb_allocate_port() - allocate a SOC USB device * @component: USB DPCM backend DAI component