Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1884019ybz; Thu, 30 Apr 2020 07:11:24 -0700 (PDT) X-Google-Smtp-Source: APiQypI3TJy6+esWJ5gnhCxs81Yyvr13CgmGg709S9vhtHuHEY+o4R5vf7fRK/3U0g+0O4g99EI+ X-Received: by 2002:a17:906:9518:: with SMTP id u24mr2854609ejx.320.1588255884424; Thu, 30 Apr 2020 07:11:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588255884; cv=none; d=google.com; s=arc-20160816; b=y9riZlMdUQilKNy4lAD8alALHJ+ESGEN7bvoUHFZslD6FxYsDNxJF2Apo1ADTah8eP HmLCV1vJpqWmhPEoGiycNPeUOQ+Cma/PS8T8yyF/8tJrlbSCTNEw4RO59H9kWWeTGUXB IUqvTJ9XLinw/cnesl6UOmdJEZEwx1BFSQNhIeAeMbg1nIJqqJUyp87DJ86NxullLv4U 7nBFMEveQP+Rlvd8l2Kro00nqUp6O6NZrwieZe6tcuombyQ/aRVI3iaz4uX3npFj4LaL kBjg4qhm6lOeWS4CsXfGLxRQonxaP/dLRcykUivt/BtYtuKkx3DQupu2vPaX6q422i7H +YzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=mO8UolLpO68wNFtl//UNX/f9zOKtpjwYOJbo5QVv0m8=; b=DITXE6q9e+y2y6xMmr/jq+BTY9k6+zZLpC+grcrnkrUOdunCwDXjbH9KSPfreKOsVU MZMLIH6VzuKrgz/cHn0JiFu0ZC/sIvblwc2Rtc++ICiQn5UN3Y8ZwdeCkoA89bH1LFLr FhfIb5KBOthkDx32ZBCuP8LifHr6/QCaVOZ560/YaroK3HwVE0qkqlfuqJ5CvrsI9ZS+ 3OwqMKhFPNgnCFZxLcVwiIyxMZbD6si4J4cB9x1R8//tp/ygGFQTau1GpQkxN6UkeyvZ qJgXW6PHkZKYcQQe/FeyhtlnKYAh3aJ2xjoehxTm8t02FQ2dPxwWJ5hFJ5H5qkTHRSkE fOag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cSoJaBgy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a23si5161731edy.27.2020.04.30.07.10.58; Thu, 30 Apr 2020 07:11:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cSoJaBgy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728198AbgD3Nvs (ORCPT + 99 others); Thu, 30 Apr 2020 09:51:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:60056 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728118AbgD3Nvh (ORCPT ); Thu, 30 Apr 2020 09:51:37 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CB0A824959; Thu, 30 Apr 2020 13:51:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588254696; bh=MPyBt+js+ZFj7/UkvTMgEb63O/0/GYa3hNOG0libZHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cSoJaBgyuKYwHRQS974aKdgIks3CKwh04cDs6HOJOLOdXT3ZJ6DmtJqT1RZ1nyHV3 +gCrH+DMZfoDZak2NcQdwE+rHXKGrdFWHefQUVxvQErQEqiN/aRHu0CjuR4Xz8kO95 iX6JkZfP4sLs/9k19VtdnvsB40BOyBnKPNXoB2Zs= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Matthias Blankertz , Kuninori Morimoto , Mark Brown , Sasha Levin , alsa-devel@alsa-project.org Subject: [PATCH AUTOSEL 5.6 46/79] ASoC: rsnd: Don't treat master SSI in multi SSI setup as parent Date: Thu, 30 Apr 2020 09:50:10 -0400 Message-Id: <20200430135043.19851-46-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200430135043.19851-1-sashal@kernel.org> References: <20200430135043.19851-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthias Blankertz [ Upstream commit 0c258657ddfe81b4fc0183378d800c97ba0b7cdd ] The master SSI of a multi-SSI setup was attached both to the RSND_MOD_SSI slot and the RSND_MOD_SSIP slot of the rsnd_dai_stream. This is not correct wrt. the meaning of being "parent" in the rest of the SSI code, where it seems to indicate an SSI that provides clock and word sync but is not transmitting/receiving audio data. Not treating the multi-SSI master as parent allows removal of various special cases to the rsnd_ssi_is_parent conditions introduced in commit a09fb3f28a60 ("ASoC: rsnd: Fix parent SSI start/stop in multi-SSI mode"). It also fixes the issue that operations performed via rsnd_dai_call() were performed twice for the master SSI. This caused some "status check failed" spam when stopping a multi-SSI stream as the driver attempted to stop the master SSI twice. Signed-off-by: Matthias Blankertz Acked-by: Kuninori Morimoto Link: https://lore.kernel.org/r/20200417153017.1744454-2-matthias.blankertz@cetitec.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sh/rcar/ssi.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index d51fb3a394486..9900a4f6f4e53 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -407,7 +407,7 @@ static void rsnd_ssi_config_init(struct rsnd_mod *mod, * We shouldn't exchange SWSP after running. * This means, parent needs to care it. */ - if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io)) + if (rsnd_ssi_is_parent(mod, io)) goto init_end; if (rsnd_io_is_play(io)) @@ -559,7 +559,7 @@ static int rsnd_ssi_start(struct rsnd_mod *mod, * EN is for data output. * SSI parent EN is not needed. */ - if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io)) + if (rsnd_ssi_is_parent(mod, io)) return 0; ssi->cr_en = EN; @@ -582,7 +582,7 @@ static int rsnd_ssi_stop(struct rsnd_mod *mod, if (!rsnd_ssi_is_run_mods(mod, io)) return 0; - if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io)) + if (rsnd_ssi_is_parent(mod, io)) return 0; cr = ssi->cr_own | @@ -620,7 +620,7 @@ static int rsnd_ssi_irq(struct rsnd_mod *mod, if (rsnd_is_gen1(priv)) return 0; - if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io)) + if (rsnd_ssi_is_parent(mod, io)) return 0; if (!rsnd_ssi_is_run_mods(mod, io)) @@ -737,6 +737,9 @@ static void rsnd_ssi_parent_attach(struct rsnd_mod *mod, if (!rsnd_rdai_is_clk_master(rdai)) return; + if (rsnd_ssi_is_multi_slave(mod, io)) + return; + switch (rsnd_mod_id(mod)) { case 1: case 2: -- 2.20.1