From patchwork Wed Jun 27 15:36:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 140358 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp1035148ljj; Wed, 27 Jun 2018 08:37:12 -0700 (PDT) X-Google-Smtp-Source: AAOMgpePPXnb7OMRh4CIzNdwXHtJYMaxhWM39+U8R85UGWzopuZAeTeK6Kz/+67E7jQ339wb7uxr X-Received: by 2002:a62:32c4:: with SMTP id y187-v6mr6355277pfy.241.1530113832171; Wed, 27 Jun 2018 08:37:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530113832; cv=none; d=google.com; s=arc-20160816; b=l/KoX4+odQ/9W8CVnIQwxbitLg6TGsVqkCIwcLhMAz5jzWsvgqzWacNskyU9Erfz1R a/0ISHDLrOFtt5BPybBFWuClE5hhQaurWcPxDMNjejoJ1DL84axW2jabvsjUTDuU5HpF 5+USsyz349oSHv85LoTksQ+TUHKANqLZYVbBgCfMykNdDG75gRYp0jdKhY8ATYsp10aH NQ7AvMx14/0UMs4dZ/Qh+lzLWYFdu4gJwFcDzdF64YU2jr0R6sGX6kmNzbzweZ9nJpb7 IZ7CaW80KAw61J52nqWaPQND3a0+CswCG98tM8NhmK1HAcybM3VW2BqgXZ4HA4GE+XlL A1BQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=ePBNCvJz3xvHJS0zMubFqbnZQOi/FaMeoOc4XqqaujI=; b=FzeoNL1cYO2HN5LIaFDHzt8lWNc+xiGGfXbI0LWjN4lo3l9TceX6uL0BqA8boNlCbG Zl1538Lky2JeosJSlLG8BM1wrSQpjJnzKykXuluUUJEuhfj1AlacVsI52pIPFMOkb14V f61o99c5mqKnJVxnpTo6e1/6/+XaEPtxDZMlWo8pOhbGm3uHbGc56fk55ATqm80riq+l CF+O9Z87KBGM0yHZh73thb5r/8a4MfBiTynCBCNqaB6YqRKdbVDs+LvM5KhHSebpGqeD +wpt+UF+rfZ7Np+QTZnEF0YkGoARw0EweHKqT48LZ53sXf+kxvsdLHf57sxXnYu+ptiT 1kNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=rOmAR9U3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t14-v6si3799956pgr.275.2018.06.27.08.37.11; Wed, 27 Jun 2018 08:37:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=rOmAR9U3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934914AbeF0PhJ (ORCPT + 31 others); Wed, 27 Jun 2018 11:37:09 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:46728 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934130AbeF0PhH (ORCPT ); Wed, 27 Jun 2018 11:37:07 -0400 Received: by mail-wr0-f195.google.com with SMTP id t6-v6so2489870wrq.13 for ; Wed, 27 Jun 2018 08:37:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=ePBNCvJz3xvHJS0zMubFqbnZQOi/FaMeoOc4XqqaujI=; b=rOmAR9U3iYztRC4+WrxG9/eXsYk9FCmt4z2fMbIJOllCJfupXqk63FFVNYAJ9RnnR7 9w7ekYiLtR978VuV+qNCjQ5oJTOBZaG9BHS4rBLVIbOcDC5/VnZw3JlOC3NoS0ELtS7X b1Q2xv8JvcU0LtlNfiZMSrZFQ5hH7VdPEk45dRccYLXdxscTF3mgnWVPPWuua3mGxCGI bwD/T3AwIUl/p7omjxO7V1mLwYmXnGsqXO4AlOEItS+RveHm61G2JD6H8fQ6JDwVVhha 3TL7vSXgd3MolWXOPgq9cpPSMEjYhkcCLxGJQuBwaZ07ucn2iq7GmY6SzcjhO0o96Dad pLHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ePBNCvJz3xvHJS0zMubFqbnZQOi/FaMeoOc4XqqaujI=; b=ATsBnfcqAcy2Q8W/sRMuX3bN4bHrsrvYnauF+yfaFnt/fRq8sKNlpqUGHaTDbZSrvO ymKVOGLUYZ1iIjWyDKgmwFwmqx+4wtxEdmw73drtSj8dZKCMyIPCSGIrsNp2L1wr5RrB jZG5EdA+MGCrfbv6qrIH5AubxW0QhvhkS/2qXuAp+zjHD1NOKf8dwgIQ+fZhK8Wkf+m9 FxYRoxqCsSO0ktUiOH5K8oRRrFYd1jvcd/BnNM+7tOOVkLM0EqcJx5554+LDJjjVlp/i IuhRv7eCRs6Z/Pfq+AX/oBreINtQVxwthvJuhZeR3c/6uyoh2y/CnoJ0sJ7Oc8Snd5Ll HkUw== X-Gm-Message-State: APt69E3lUjF9/XSWCScgsCc1SK4AsjrGu0v/OPtSVXchByMiadZQcojb hegAK1o3IgYy8p+BdBdHyhtUPg== X-Received: by 2002:adf:f811:: with SMTP id s17-v6mr5363980wrp.172.1530113826410; Wed, 27 Jun 2018 08:37:06 -0700 (PDT) Received: from boomer.baylibre.local ([90.63.244.31]) by smtp.googlemail.com with ESMTPSA id m145-v6sm5583678wma.19.2018.06.27.08.37.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 27 Jun 2018 08:37:05 -0700 (PDT) From: Jerome Brunet To: Liam Girdwood , Mark Brown Cc: Jerome Brunet , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: [PATCH] ASoC: dpcm: don't merge format from invalid codec dai Date: Wed, 27 Jun 2018 17:36:38 +0200 Message-Id: <20180627153638.11832-1-jbrunet@baylibre.com> X-Mailer: git-send-email 2.14.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When merging codec formats, dpcm_runtime_base_format() should skip the codecs which are not supporting the current stream direction. At the moment, if a BE link has more than one codec, and only one of these codecs has no capture DAI, it becomes impossible to start a capture stream because the merged format would be 0. Skipping invalid codec DAI solves the problem. Fixes: b073ed4e2126 ("ASoC: soc-pcm: DPCM cares BE format") Signed-off-by: Jerome Brunet --- sound/soc/soc-pcm.c | 8 ++++++++ 1 file changed, 8 insertions(+) -- 2.14.4 diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 5141409ccaed..a58d8e7bf52b 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -1694,6 +1694,14 @@ static u64 dpcm_runtime_base_format(struct snd_pcm_substream *substream) int i; for (i = 0; i < be->num_codecs; i++) { + /* + * Skip CODECs which don't support the current stream + * type. See soc_pcm_init_runtime_hw() for more details + */ + if (!snd_soc_dai_stream_valid(be->codec_dais[i], + stream)) + continue; + codec_dai_drv = be->codec_dais[i]->driver; if (stream == SNDRV_PCM_STREAM_PLAYBACK) codec_stream = &codec_dai_drv->playback;