Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2970546imu; Sun, 9 Dec 2018 13:58:38 -0800 (PST) X-Google-Smtp-Source: AFSGD/UQfh9ox5QcL9zI1yTFfLDuZw5gRKnvbsknNaX++gBpZpKWG+McHDK+jSlqlLeywy36c5AN X-Received: by 2002:a63:d949:: with SMTP id e9mr8873932pgj.24.1544392718268; Sun, 09 Dec 2018 13:58:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544392718; cv=none; d=google.com; s=arc-20160816; b=TBx84+kD6yM26toMkz6EGTdo3ripjzJQDvLQEpH78lLQEHz9faFoEczziejPSeQ1xd pfGFCcsxmjZcQz6hUj0I5gzR87KXt7wnl2xTZ7Zn1e46haAY2SLFg7EczIs1FOS1U5++ V7leDx0s0HBmbB3ZHhIS0RgkQ6gT8cA25LI6eUYZXIvACMNBnbfq/5t9v/MDvLZoGNtR WrX2kNyfr1FWsJE4B6GUgG31hLiPJS3dWQQQmGaQIVtF+ZXv++Dtlza4i7w2pvOtxsop 3RgzxjClHjhFAYGgpurDSzbmzd3YvYTh/rZ7zLbhuXFkwhQ6eGTMr0B5uF/4JnXjUx94 eENA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=pB/0Tx4Gm+5/1vJlcel6wfgSxSfR1do7888Y3jzSyaM=; b=gjngijXUyr4MkhpoFZ6RAY//g3f7Km5zVch8GpCqz9K9RpGAUxRJMLkSscHvyWd/Ry xY26E1l5Xcggq27T4PfSFuReiG6b+EMANaF7AiLFJQ/tRMzWujjYgL2Y/68TYSZJK+g1 y8CDX6DWmWN7HErwDaod2OfOdyINz+qF7hoiYGpzsWmWmthhroqarMO//xd/LJB0knwU 4cium+rg97WLrshpegEAgROX9nohJKR7j5nuhnNhoKiCyQr7weS3kW5XuENJTrCoDeVl YYNvplDPAWg2u72hsJc0Cn4UYBgkYTLMNaPfiG4waroF6qVbr4e1nD3dj1WHitke21HH RfBQ== ARC-Authentication-Results: i=1; mx.google.com; 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 b24si8278028pgg.288.2018.12.09.13.58.22; Sun, 09 Dec 2018 13:58:38 -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; 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 S1726965AbeLIV4L (ORCPT + 99 others); Sun, 9 Dec 2018 16:56:11 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:36472 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726824AbeLIVzp (ORCPT ); Sun, 9 Dec 2018 16:55:45 -0500 Received: from pub.yeoldevic.com ([81.174.156.145] helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gW738-0002pp-Dw; Sun, 09 Dec 2018 21:55:43 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gW72f-0003TE-EK; Sun, 09 Dec 2018 21:55:13 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "Marcel Ziswiler" , "Mark Brown" Date: Sun, 09 Dec 2018 21:50:33 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 186/328] spi: tegra20-slink: explicitly enable/disable clock In-Reply-To: X-SA-Exim-Connect-IP: 81.174.156.145 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.62-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Marcel Ziswiler commit 7001cab1dabc0b72b2b672ef58a90ab64f5e2343 upstream. Depending on the SPI instance one may get an interrupt storm upon requesting resp. interrupt unless the clock is explicitly enabled beforehand. This has been observed trying to bring up instance 4 on T20. Signed-off-by: Marcel Ziswiler Signed-off-by: Mark Brown Signed-off-by: Ben Hutchings --- drivers/spi/spi-tegra20-slink.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) --- a/drivers/spi/spi-tegra20-slink.c +++ b/drivers/spi/spi-tegra20-slink.c @@ -1063,6 +1063,24 @@ static int tegra_slink_probe(struct plat goto exit_free_master; } + /* disabled clock may cause interrupt storm upon request */ + tspi->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(tspi->clk)) { + ret = PTR_ERR(tspi->clk); + dev_err(&pdev->dev, "Can not get clock %d\n", ret); + goto exit_free_master; + } + ret = clk_prepare(tspi->clk); + if (ret < 0) { + dev_err(&pdev->dev, "Clock prepare failed %d\n", ret); + goto exit_free_master; + } + ret = clk_enable(tspi->clk); + if (ret < 0) { + dev_err(&pdev->dev, "Clock enable failed %d\n", ret); + goto exit_free_master; + } + spi_irq = platform_get_irq(pdev, 0); tspi->irq = spi_irq; ret = request_threaded_irq(tspi->irq, tegra_slink_isr, @@ -1071,14 +1089,7 @@ static int tegra_slink_probe(struct plat if (ret < 0) { dev_err(&pdev->dev, "Failed to register ISR for IRQ %d\n", tspi->irq); - goto exit_free_master; - } - - tspi->clk = devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(tspi->clk)) { - dev_err(&pdev->dev, "can not get clock\n"); - ret = PTR_ERR(tspi->clk); - goto exit_free_irq; + goto exit_clk_disable; } tspi->rst = devm_reset_control_get(&pdev->dev, "spi"); @@ -1138,6 +1149,8 @@ exit_rx_dma_free: tegra_slink_deinit_dma_param(tspi, true); exit_free_irq: free_irq(spi_irq, tspi); +exit_clk_disable: + clk_disable(tspi->clk); exit_free_master: spi_master_put(master); return ret; @@ -1150,6 +1163,8 @@ static int tegra_slink_remove(struct pla free_irq(tspi->irq, tspi); + clk_disable(tspi->clk); + if (tspi->tx_dma_chan) tegra_slink_deinit_dma_param(tspi, false);