Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp777871ybl; Wed, 11 Dec 2019 07:22:44 -0800 (PST) X-Google-Smtp-Source: APXvYqzOsc2hj9QFvYUN5n/pEc8vern16cnuRkR2b4juSa5XjaD2jPxEUh/pn/2k6Vu0YC1dOGJg X-Received: by 2002:a05:6830:1d1:: with SMTP id r17mr2796832ota.151.1576077764055; Wed, 11 Dec 2019 07:22:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576077764; cv=none; d=google.com; s=arc-20160816; b=FifPIXYzWLglfe5LqSlqtY92CYDRsJ8WwEhwAGgx6ZmD3utLPVBnQWD+Ws1T7mbQiw z+Np8rN4U+b6/RyPBP1ps9W1/j+KPEauvSquoarGMHWDw2axBQRsqy4DsY2B0tp5vRz4 7QUnOSaFvUeAZwFUJvIYr/t6IcKowsLOynvcH9yEjLfpG+kerYVM4h38q1aX3RBT5gB3 QFAYr/f1+fHN+y8QJAPYXg2ajo3t0QUT4BzGG2Kl1PqEHdIXqz7YzxlJ7946KzPoUIQm yEGXXccOfD9oYPffdL8wKOAheP3M9uLabv2NWAC1zcYePPNkaLwLJYpwgqrqcslXeOXX Lphg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9IYz3R/SE6k8f/Bw6xtCxLKsIXxoUwd2jLAZiAOfGOI=; b=kvJpIcnPMHoMx+I2zQG7bu/zoLJpsyN+Egsrze+9K45kD7N6B/nbjk9k3ej8O3WXou /5J7+yJ/2NSejV8uLsly3F2yk0bul5907JAGrwHWGfdfwP2mqgVijEghYDFxkHTRzswE z23oaS8LRF/rsmtixpk3ehyKA7Bfyw5CK8O5bwPfEz2nvfbvPFSh1vxmIQ6rEgzoEk/S fyxAIN0Nprf4QG+xDdBQiR5/tgaNQTdE0aPYKLhgbHHcHOzjxbae893lpP06ECNQo2IO GShlkBPvp8MCpb8wl8O248RuyKldaP/depPHId9lPXz5VVf4n72zns58IfzOW8nbQtqh 2Fug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=KO5zD5Ew; 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 u186si1318139oig.29.2019.12.11.07.22.32; Wed, 11 Dec 2019 07:22:44 -0800 (PST) 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=@kernel.org header.s=default header.b=KO5zD5Ew; 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 S1732400AbfLKPU6 (ORCPT + 99 others); Wed, 11 Dec 2019 10:20:58 -0500 Received: from mail.kernel.org ([198.145.29.99]:50670 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732121AbfLKPU5 (ORCPT ); Wed, 11 Dec 2019 10:20:57 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 16B6622527; Wed, 11 Dec 2019 15:20:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576077655; bh=xjFHwy3tKm92+fBMltwUj/RklLKzz/nTDFtDUYRkT7Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KO5zD5EwugBx/Ix0aV2IwJZGkX+tI8GV0hhgBcnLd3VPzo73wur1c8H5qqknQj4K1 FcW0a9GRrZI4Z6LgXn+GgOLPh+jTLXIqGVzOwzDndXE2ciS8A1Xs+ao3vH35oBXwAT 6XysL7uxfx8sqnqPD1KFDwQtZWYg80Dd1zGL3y54= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nguyen Viet Dung , Kuninori Morimoto , Hiroyuki Yokoyama , Mark Brown , Sasha Levin Subject: [PATCH 4.19 121/243] ASoC: rsnd: tidyup registering method for rsnd_kctrl_new() Date: Wed, 11 Dec 2019 16:04:43 +0100 Message-Id: <20191211150347.300543701@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191211150339.185439726@linuxfoundation.org> References: <20191211150339.185439726@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kuninori Morimoto [ Upstream commit 9c698e8481a15237a5b1db5f8391dd66d59e42a4 ] Current rsnd dvc.c is using flags to avoid duplicating register for MIXer case. OTOH, commit e894efef9ac7 ("ASoC: core: add support to card rebind") allows to rebind sound card without rebinding all drivers. Because of above patch and dvc.c flags, it can't re-register kctrl if only sound card was rebinded, because dvc is keeping old flags. (Of course it will be no problem if rsnd driver also be rebinded, but it is not purpose of above patch). This patch checks current card registered kctrl when registering. In MIXer case, it can avoid duplicate register if card already has same kctrl. In rebind case, it can re-register kctrl because card registered kctl had been removed when unbinding. This patch is updated version of commit b918f1bc7f1ce ("ASoC: rsnd: DVC kctrl sets once") Reported-by: Nguyen Viet Dung Signed-off-by: Kuninori Morimoto Tested-by: Nguyen Viet Dung Cc: Hiroyuki Yokoyama Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sh/rcar/core.c | 12 ++++++++++++ sound/soc/sh/rcar/dvc.c | 8 -------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 15a31820df169..99cd52b9ff228 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -1344,6 +1344,18 @@ int rsnd_kctrl_new(struct rsnd_mod *mod, }; int ret; + /* + * 1) Avoid duplicate register (ex. MIXer case) + * 2) re-register if card was rebinded + */ + list_for_each_entry(kctrl, &card->controls, list) { + struct rsnd_kctrl_cfg *c = kctrl->private_data; + + if (strcmp(kctrl->id.name, name) == 0 && + c->mod == mod) + return 0; + } + if (size > RSND_MAX_CHANNELS) return -EINVAL; diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c index 2b16e0ce6bc53..024ece46bf685 100644 --- a/sound/soc/sh/rcar/dvc.c +++ b/sound/soc/sh/rcar/dvc.c @@ -40,11 +40,8 @@ struct rsnd_dvc { struct rsnd_kctrl_cfg_s ren; /* Ramp Enable */ struct rsnd_kctrl_cfg_s rup; /* Ramp Rate Up */ struct rsnd_kctrl_cfg_s rdown; /* Ramp Rate Down */ - u32 flags; }; -#define KCTRL_INITIALIZED (1 << 0) - #define rsnd_dvc_get(priv, id) ((struct rsnd_dvc *)(priv->dvc) + id) #define rsnd_dvc_nr(priv) ((priv)->dvc_nr) @@ -227,9 +224,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, int channels = rsnd_rdai_channels_get(rdai); int ret; - if (rsnd_flags_has(dvc, KCTRL_INITIALIZED)) - return 0; - /* Volume */ ret = rsnd_kctrl_new_m(mod, io, rtd, is_play ? @@ -285,8 +279,6 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, if (ret < 0) return ret; - rsnd_flags_set(dvc, KCTRL_INITIALIZED); - return 0; } -- 2.20.1