From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B6625C43603 for ; Mon, 16 Dec 2019 17:53:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8B983206D3 for ; Mon, 16 Dec 2019 17:53:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576518813; bh=mcG230k4lamzWpW3NpAe1KHV2HqJzW67mkEHLprDO9Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=YoYM3+bkR01A31JfsFncb0PriXU6aATeNqLjVK+oITNhiEZmN4LcSvK/4VkR0/bo9 d+8v0UabW/8m6XLmDcz6tdr4yQUWin/uNiMHb4L2UD9uwgBDEp8pLOia/7jMnNC5CA yFhQLM3EdhURf6s6bA+CFuxFmi49dvZq5SmuUr3E= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727764AbfLPRxc (ORCPT ); Mon, 16 Dec 2019 12:53:32 -0500 Received: from mail.kernel.org ([198.145.29.99]:47526 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727241AbfLPRx3 (ORCPT ); Mon, 16 Dec 2019 12:53:29 -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 50473206D3; Mon, 16 Dec 2019 17:53:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576518808; bh=mcG230k4lamzWpW3NpAe1KHV2HqJzW67mkEHLprDO9Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BnBcZxcncbTrL0OOxPJf6Uv89dcYHev6XMmGRf3fGkU6X64l96lzFiBK9g1WF+e52 Pmwn8kQcMOVZ6rty6iyfkXOSJc3eEjjwS5XOZtFHCPwQmvtctMawHfcPCb7xM4D5Vp XXpjpCdvpvlI6mrY/TcTuGTEJw2VbF1wY3zZSwvw= 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.14 076/267] ASoC: rsnd: tidyup registering method for rsnd_kctrl_new() Date: Mon, 16 Dec 2019 18:46:42 +0100 Message-Id: <20191216174856.947138993@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191216174848.701533383@linuxfoundation.org> References: <20191216174848.701533383@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 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index ab0bbef7eb48a..bb06dd72ca9a7 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -1278,6 +1278,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; -- 2.20.1