Received: by 2002:a05:7412:bbc7:b0:fc:a2b0:25d7 with SMTP id kh7csp1210527rdb; Fri, 2 Feb 2024 18:58:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHSgHd0l4bLx7bAU3RDFG0926DiIt9c/L1CdMHGr1u1hpAYLDxl0jG4TdxHYX4t74dKllj7 X-Received: by 2002:a6b:db12:0:b0:7c0:8f3:14ec with SMTP id t18-20020a6bdb12000000b007c008f314ecmr4391050ioc.9.1706929109078; Fri, 02 Feb 2024 18:58:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706929109; cv=pass; d=google.com; s=arc-20160816; b=I3l+c4IH4bAS0p4ZgE26tjGzTFA7no+hIyun/6tZ8Nt/ZAco5ygp1XSLtPgMPal586 4xx4Msm3eBOzCqpsZezQq3htPyS6l1AU542KzWRxiOqJZ4jlAHIWW/bWBVMIlNbynyeG QFIoStCN9xxyNhoKuuDlrjFFFVST/xyxYU500lVuvrRhxmngA48xFanPExobh//JHsm/ BT+cEn+1aoSpgQ49UNLrf0J6THRetSs0GpLCi/NZtiiGzE/IgNirA+QC3Z8yLEDhggrN gARykJHDgu+s+UYEPJar2wJkrU/r4Eh24pi3Et9Clzt7oYNjX1+hS+BzF2ORQ1o9gKl6 hLNg== 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=z7heKU0tQVPnmIkv2xZvzZoY0z7BSQO0XC5+nrTsSyA=; b=jxnTWLm42fupywcKLnZ03DfbZbtPFJRqMYTNi4v3DWzPUvJB9JodR0TBUXOpQilN0t FeXpGkV7rbw/cOSQaylsAC9sh5dAwT9JWn/MzmHQiAy1yf3bZuEEXuS9ssfNiweTZsa7 rKfnFkY6H8Epsx2g0TLzHqqWgYl6c8u5meifRRgOkJWLiiRrBw81brHwI1MWVpvf5bxn kDV1ClCGC7YYhDH2TGWTl6XdbjdicjVJeORcDCNs2EORL5jIuWkX6MsizXir78PyYvwf qaILSOFTmGpUqhv+2c3Q47iqWb+DlUSH1V60K4IgW+W+XYeKjNIJ9Bzijx9BZZHes56P To0w==; 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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50874-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com X-Forwarded-Encrypted: i=1; AJvYcCWPm7qV3g8mjXn5RqZdKLlwCfb5605lEigkEZTngmee8a/N6N2Zy+qIZdySXzZg7XFsistYJfK9enj4EXVokxuaVD0C5y48k4zoJTTWzg== Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id r7-20020a6560c7000000b005be09b723b7si2496152pgv.636.2024.02.02.18.58.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Feb 2024 18:58:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-50874-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=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-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50874-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 B42D7283D07 for ; Sat, 3 Feb 2024 02:57:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 894B05B663; Sat, 3 Feb 2024 02:38:24 +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 To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng 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: List-Subscribe: List-Unsubscribe: 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 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 --- 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