From patchwork Mon Nov 17 08:02:57 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qiao Zhou X-Patchwork-Id: 5315871 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 4F19CC11AC for ; Mon, 17 Nov 2014 08:03:24 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7DF47201FB for ; Mon, 17 Nov 2014 08:03:23 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 500AC201ED for ; Mon, 17 Nov 2014 08:03:22 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 795F3261548; Mon, 17 Nov 2014 09:03:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NO_DNS_FOR_FROM, RCVD_IN_DNSWL_NONE,UNPARSEABLE_RELAY autolearn=no version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id 252D52614E3; Mon, 17 Nov 2014 09:03:13 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 868E32614EE; Mon, 17 Nov 2014 09:03:11 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by alsa0.perex.cz (Postfix) with ESMTP id 29A9D2614E3 for ; Mon, 17 Nov 2014 09:03:02 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.14.5/8.14.5) with SMTP id sAH80FVO016244; Mon, 17 Nov 2014 00:03:01 -0800 Received: from sc-owa.marvell.com ([199.233.58.135]) by mx0b-0016f401.pphosted.com with ESMTP id 1qmmcj0f0u-15 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Mon, 17 Nov 2014 00:03:01 -0800 Received: from maili.marvell.com (10.93.76.43) by SC-OWA.marvell.com (10.93.76.28) with Microsoft SMTP Server id 8.3.327.1; Mon, 17 Nov 2014 00:02:58 -0800 Received: from localhost (unknown [10.38.36.117]) by maili.marvell.com (Postfix) with ESMTP id C2CB13F703F; Mon, 17 Nov 2014 00:02:58 -0800 (PST) From: Qiao Zhou To: , , , , Date: Mon, 17 Nov 2014 16:02:57 +0800 Message-ID: <1416211377-9559-1-git-send-email-zhouqiao@marvell.com> X-Mailer: git-send-email 1.7.0.4 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68, 1.0.28, 0.0.0000 definitions=2014-11-17_01:2014-11-15, 2014-11-16, 1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1402240000 definitions=main-1411170075 Cc: Qiao Zhou Subject: [alsa-devel] [PATCH] ASoC: soc-pcm: skip dpcm path checking with incapable/unready FE X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP Skip dpcm path checking for playback or capture, if corresponding FE doesn't support playback or capture, or currently is not ready. It can reduce the unnecessary cost to search connected widgets. Signed-off-by: Qiao Zhou --- sound/soc/soc-pcm.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 002311a..3b068d4 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -2248,7 +2248,13 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card) fe->dai_link->name); /* skip if FE doesn't have playback capability */ - if (!fe->cpu_dai->driver->playback.channels_min) + if (!fe->cpu_dai->driver->playback.channels_min + || !fe->codec_dai->driver->playback.channels_min) + goto capture; + + /* skip if FE doesn't do playback */ + if (!fe->cpu_dai->playback_active + || !fe->codec_dai->playback_active) goto capture; paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_PLAYBACK, &list); @@ -2278,7 +2284,13 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card) dpcm_path_put(&list); capture: /* skip if FE doesn't have capture capability */ - if (!fe->cpu_dai->driver->capture.channels_min) + if (!fe->cpu_dai->driver->capture.channels_min + || !fe->codec_dai->driver->capture.channels_min) + continue; + + /* skip if FE doesn't do capture */ + if (!fe->cpu_dai->capture_active + || !fe->codec_dai->capture_active) continue; paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_CAPTURE, &list);