Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1878935ybz; Thu, 30 Apr 2020 07:06:59 -0700 (PDT) X-Google-Smtp-Source: APiQypIWRjpAHrLrMxJVBuxOZpA2rr/RtAFZJRWUwymlRKn4sshbkvktKJvXhDRjn8YiWmy3gU9g X-Received: by 2002:a17:906:6b1b:: with SMTP id q27mr2725917ejr.158.1588255619008; Thu, 30 Apr 2020 07:06:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588255618; cv=none; d=google.com; s=arc-20160816; b=QGuBGJ27jpGN8JHH/nzx0pYQZ6u8FPRYOFoAABILCmkhk93oR2T3fSF/Me2YjQMnGC DvIUpP4xndVJ1mB9sBNcHKZCyTQqX4ID0cuWOLj2Y28WUcEocLbRa2/6D8YYwaVcR2qZ 28PSe5WqAXAhuedwcS/tPf2wGQ8WDxPjGhmj66pQ87+Z6PMN8VjRQtIIQxeuj8pmWmqL HkF5NPe+JUOlWdNQjESHt3KZnO7JUPbKcUsLKWixek787qTwQpGDTVk175lD7XxS0OJ3 WPrx97uk1JTI9z//evVBZ4r3wWzFXZtGjOBj8ENq6NeFtggndwebqXDKLPfyzruuEL1Y Oqkg== 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=LqCiXofEF5c3UtxVprDRQrdD5jIipPbLNNArb+XDBe8UsiOC5El67M1acxEIm89jWy M0KSgmLl8u2RnfU0xHw+LAxSpxt/y4R7mtf0JFHXB77LLjhHZZurocFwMY7zBvzDeDih BrBapl1bH2a6Qe6MaeWOpLm+pboNdwVzxhspV/kYgbe7qYEw971UsL1fIzehHzG35ys4 RemR19bTkWYOZnwPb73+GWXYqjzKHrv6gzQRfNI7w424OFBjo1RUKk6qN+IUQIrBto/v tR/66zFZm8MJ25H01LLDBzcsfJ3Akog80zzr42NbA/AVM2xOUaAvBAR5nROnNN3qXw1i DruQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BjQbMM48; 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 d9si6021688ejb.387.2020.04.30.07.06.03; Thu, 30 Apr 2020 07:06:58 -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=BjQbMM48; 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 S1728725AbgD3Nxb (ORCPT + 99 others); Thu, 30 Apr 2020 09:53:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:34370 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728550AbgD3Nwz (ORCPT ); Thu, 30 Apr 2020 09:52:55 -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 4E933208DB; Thu, 30 Apr 2020 13:52:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588254775; bh=MPyBt+js+ZFj7/UkvTMgEb63O/0/GYa3hNOG0libZHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BjQbMM4806GocKYVyQ7NBjGz3cQdNvCxbVut8kH9oe+20/OR4tSwN/r8gb5xrIZwf 0S4JNO46D+fLO+RH5/kDFauJ68eQJOWfVaBNvlRjQXX8ulbjgDMLulImV7+1jO18iT 7WNdU7QEGgE/2uby4NowbXEbH3cAxA8PqExKsXnQ= 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.4 32/57] ASoC: rsnd: Don't treat master SSI in multi SSI setup as parent Date: Thu, 30 Apr 2020 09:51:53 -0400 Message-Id: <20200430135218.20372-32-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200430135218.20372-1-sashal@kernel.org> References: <20200430135218.20372-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