Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp5449686imm; Tue, 16 Oct 2018 10:23:28 -0700 (PDT) X-Google-Smtp-Source: ACcGV61APFUBDe9sQ0s0vh/sP3riWPRs9VInCCyh1/gXKHj2yV23qOXhFxE+6D+LtPzddtyWOZa1 X-Received: by 2002:a63:d30c:: with SMTP id b12-v6mr21069722pgg.61.1539710608332; Tue, 16 Oct 2018 10:23:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539710608; cv=none; d=google.com; s=arc-20160816; b=pgKyKP8hVp1ttMl99wtlkN9KTUSpb9BdUufnQVd8QcN4RF3axarLJlk4drgLSrHusc YxMK37S6d5XAxa4cd13KlYThfJEwnL1d7VMofNMHcW+Im6Qox/YhibhcqcdHeo4Ik//h fadi+rMemLO//Rvqneg0y1FHEgprUxTQ3f6qgwSxjoyoUyMrIH0GNxZmGHV6bU7dy9fp 93iImfwmJhVghQSkabNPmUheok5uFuKnGQK2yt50uTXb1q8HPB1X11f8FkP+x9Ri51zB TvmO5/IROmC/7QSjfmh59IJ3ArFK7vGSmx4HZQtwU1hYSN8ZKPMXOkPfTvPaXfj8SKZG LrbA== 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=p1ZQDCpON3u2kqDChwr5kNYuJ2OSxZdGzgp6B+XZ15g=; b=vowxGdjvTBKloEZoTPk1TmKDrss+GfzzYg/opzdqdITsU3iQ6eeI2YPjkpy8OvHQk/ 88642nlZR/J26VevyW08YHouhXqZzY24IOf0B3i3fe8HVdzJI8B/vv46vumX/G9SDrS9 4Q/ooThxI64ngqm0yNYTsn/94XA3+dR05+4fvZ3o6NdIwBSF+M7P1pJkU5xCCuLZ0DC8 fUWb4nYb4A8Oq3eN0xwnliEemwE80i0kXwOsEHP2ZzR9XAn5YoHfidkC9KYO8vls02V1 UIbvq91eHGsoeeH/hILlkzXz2n1DwJ4oTEvGegZPPhDPcGlpb1cU1lOIDoL19hkD+FVM sGCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=YaCMOAyh; 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 j19-v6si14407411pgh.198.2018.10.16.10.23.12; Tue, 16 Oct 2018 10:23:28 -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=@kernel.org header.s=default header.b=YaCMOAyh; 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 S1730730AbeJQBMP (ORCPT + 99 others); Tue, 16 Oct 2018 21:12:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:57706 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729296AbeJQBMP (ORCPT ); Tue, 16 Oct 2018 21:12:15 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 0564B2098A; Tue, 16 Oct 2018 17:20:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539710450; bh=XOHEfNleFC+6Y6TxFaAktDUPEZc/Jn8IwnqlVgNumfs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YaCMOAyhC9Isfb8ecER4wGGejrVSZ3dN39OPLnGIdTm/ymn+7Es33KKag9yUeLTLW z9huxapXn1YWpjcOJFSMvagL0s/nyJIZfCg5QYA+gWeFDW46TfIepq+BnxhMUqhWvq gbk/TQi2om0b1fQrnvFmdXz3xaJiott0fBdk4mXU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kuninori Morimoto , Mark Brown , Sasha Levin Subject: [PATCH 4.14 045/109] ASoC: rsnd: dont fallback to PIO mode when -EPROBE_DEFER Date: Tue, 16 Oct 2018 19:05:13 +0200 Message-Id: <20181016170527.428381156@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181016170524.530541524@linuxfoundation.org> References: <20181016170524.530541524@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Kuninori Morimoto [ Upstream commit 6c92d5a2744e27619a8fcc9d74b91ee9f1cdebd1 ] Current rsnd driver will fallback to PIO mode if it can't get DMA handler. But, DMA might return -EPROBE_DEFER when probe timing. This driver always fallback to PIO mode especially from commit ac6bbf0cdf4206c ("iommu: Remove IOMMU_OF_DECLARE") because of this reason. The DMA driver will be probed later, but sound driver might be probed as PIO mode in such case. This patch fixup this issue. Then, -EPROBE_DEFER is not error. Thus, let's don't indicate error message in such case. And it needs to call rsnd_adg_remove() individually if probe failed, because it registers clk which should be unregister. Maybe PIO fallback feature itself is not needed, but let's keep it so far. Signed-off-by: Kuninori Morimoto Signed-off-by: Mark Brown Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- sound/soc/sh/rcar/core.c | 10 +++++++++- sound/soc/sh/rcar/dma.c | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -486,7 +486,7 @@ static int rsnd_status_update(u32 *statu (func_call && (mod)->ops->fn) ? #fn : ""); \ if (func_call && (mod)->ops->fn) \ tmp = (mod)->ops->fn(mod, io, param); \ - if (tmp) \ + if (tmp && (tmp != -EPROBE_DEFER)) \ dev_err(dev, "%s[%d] : %s error %d\n", \ rsnd_mod_name(mod), rsnd_mod_id(mod), \ #fn, tmp); \ @@ -1469,6 +1469,14 @@ exit_snd_probe: rsnd_dai_call(remove, &rdai->capture, priv); } + /* + * adg is very special mod which can't use rsnd_dai_call(remove), + * and it registers ADG clock on probe. + * It should be unregister if probe failed. + * Mainly it is assuming -EPROBE_DEFER case + */ + rsnd_adg_remove(priv); + return ret; } --- a/sound/soc/sh/rcar/dma.c +++ b/sound/soc/sh/rcar/dma.c @@ -330,6 +330,10 @@ static int rsnd_dmaen_attach(struct rsnd /* try to get DMAEngine channel */ chan = rsnd_dmaen_request_channel(io, mod_from, mod_to); if (IS_ERR_OR_NULL(chan)) { + /* Let's follow when -EPROBE_DEFER case */ + if (PTR_ERR(chan) == -EPROBE_DEFER) + return PTR_ERR(chan); + /* * DMA failed. try to PIO mode * see