Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1345331imm; Tue, 2 Oct 2018 06:52:18 -0700 (PDT) X-Google-Smtp-Source: ACcGV63tDwc2wwM04Sa92GoH0GrKJSriyori9JfaNHu3dFgQ4UoLf85lqdGE1VvFSkwxM3sKOevb X-Received: by 2002:a17:902:981:: with SMTP id 1-v6mr16819538pln.60.1538488338793; Tue, 02 Oct 2018 06:52:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538488338; cv=none; d=google.com; s=arc-20160816; b=sPHzKAKdll8hvEL3Iawto29H0bKkP35Z/VjYul8Uef64/nOT+T4jHyNs/E0JUnAdP7 1ZAX/yzfuaLiVGvzSaQX8aCc9eXQVHHbw27k2leEh6/SvKcd9URw9k0Ia63RISQi7+S4 3gsdR+9T19jDVIyJ6eFqOCmqyIDh6AyhKXmm+4sA3dsSLOeKLDXYKNhlsc2doRpTTEAH 9QSjsjG20v9VZhqPSJRGi8aGuKkeQlY1UrP5zaqrM5AvLcpPnR8yjY+PXSMWBzN3wpHd 6sMBMXAg8X7pF4FCSSOD/2lNL4HmU815Ha22ls+YvWxPy8ToQ00nd7bBOzU56O/fC8Q9 YpGg== 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; bh=cLdHFk+OFlmDIOakU5qfRIULKRooyeIuLa4lQAP9V/o=; b=CefEmXXAlO8C/T0Hx5s32C2BIP93+vQLZ0UGr/bTJ52DKvzHfW6zYvkcr49zwNvFAa 023wU+K6OvKNVNo8yr1EZXUE/Y2ls960VuN1hfS8nQcv4erO/q4rkZfA+RP0cYuzFYm6 P8Yxs/YUeGOi93LAm7iMDFsYIrAddsZH6bGfHghnvAUa9pw3GyuMZbY8iviPnRi9hh1v et4uGXnJyfKIe9L/uTLQ6ZcqSPLKEkA5uGDmUXF7LZ3CjP6hUX1X1CgwTH2cA4iXNQ47 NbVK2AD/dv5ZFa8TNX3d46GZ+iPJAv4oLoJ1ZkkubBmIDRmsx9j2k8kYCbjnvd6ApZ2u nqOw== 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 t13-v6si11925346ply.279.2018.10.02.06.52.03; Tue, 02 Oct 2018 06:52:18 -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; 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 S1732061AbeJBURT (ORCPT + 99 others); Tue, 2 Oct 2018 16:17:19 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:35098 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732052AbeJBURR (ORCPT ); Tue, 2 Oct 2018 16:17:17 -0400 Received: from localhost (24-104-73-23-ip-static.hfc.comcastbusiness.net [24.104.73.23]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 4A76D5AA; Tue, 2 Oct 2018 13:33:54 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marcel Ziswiler , Mark Brown Subject: [PATCH 4.14 088/137] spi: tegra20-slink: explicitly enable/disable clock Date: Tue, 2 Oct 2018 06:24:49 -0700 Message-Id: <20181002132504.676540079@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181002132458.446916963@linuxfoundation.org> References: <20181002132458.446916963@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: 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 Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- 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_exclusive(&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);