Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp3913891imm; Mon, 8 Oct 2018 11:35:55 -0700 (PDT) X-Google-Smtp-Source: ACcGV61KfWIUzZA6lI3W/9w/XwXqUdiT7QjFe+bwV2r8coXHP4DXv2ezck+dQdiPTy8c2Y+fSAFz X-Received: by 2002:a63:dc14:: with SMTP id s20-v6mr12292124pgg.398.1539023755527; Mon, 08 Oct 2018 11:35:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539023755; cv=none; d=google.com; s=arc-20160816; b=P5f+3/HQv+qXJjQR+QwEnv7AzUTKzAFW5WTd0jpQdZCRRxfrC2P0r86qk4Vmuelrg2 NfE3K0bsnSXVva40O5sPu6akgegG0PbzU46gDtNm3qAHLmRFkYI2ql6Rt6oLxtPS2Ayu WIbi09pBHNHpsRbo4JF3J28Fpb6WczIONF9DMLFq3YRzuFj1+ol0nc+QeKW1zJOVzj8R xKDpiQCHseDMqVubj4MItHQ/NKdF4RQTeZqRlkctamtLS2Opj74LEi5Z7RtyC5xEVPr9 l1TG5C+PXL2O2RRESgN5KAblyrZwveCMt/0BITAWol517/JG/Za6slvm3zQ+6dBSZeBN aZyA== 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=8AV2uMG7NU+FGTQFkD4XLjyOwnABMsEXBc8K6Upx+LM=; b=IJNE2prLCkantNXwalT4Ln/k/Qb86eLRdnsyym72uV+m4kWsuzguXgiE2P9JSlb+EQ TO0yx86bPQR5Jpe8DUcXKx/eRe+efl0IIjqISNHQX34lCTIM/MyasnA1JFtJBCIQw2zd DqDbWUDkyK8V2arAx458G0Z52dt3UINSBDhm+SnUv5riQJ/BSiDslWNSmow1APdIZ8cq O6ws5SYoh/X3nkAScVWOpkh38NLYiF3N3Kt1mj0KVEpMyyczDZUXRqTftGe42OLY70y7 eMVGZcO2ybH2X35v641OnLoSWYGddqVdJwdsehmSMfxQ8zFbbKyjZIQs6QwEaiVxj9am J07g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="c3owd/kb"; 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 k5-v6si17582704pgi.99.2018.10.08.11.35.40; Mon, 08 Oct 2018 11:35:55 -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="c3owd/kb"; 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 S1727870AbeJIBrj (ORCPT + 99 others); Mon, 8 Oct 2018 21:47:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:59024 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726691AbeJIBrj (ORCPT ); Mon, 8 Oct 2018 21:47:39 -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 DCCFD20C0A; Mon, 8 Oct 2018 18:34:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539023676; bh=QnPmBnlyQqkHDjdFmHJs8oUvNlHQ+D3GPqXXvoetNnM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c3owd/kb1dAsCJYEBnpOyXazQlFmrCovjnDrCal0CkIjuIKtHWmf5+mv4wmD/KsmN nwG/On8BLcqvt6G6C3Fpgf4yx4IGdtUM29ZsUAcSrSDfsxhb3jz9SkBdWlx0cNEJjH /u2XPcK/UffcgjjcHv42czc1RQgZizvYpnoDRJZI= 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.4 045/113] spi: tegra20-slink: explicitly enable/disable clock Date: Mon, 8 Oct 2018 20:30:46 +0200 Message-Id: <20181008175533.097141304@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008175530.864641368@linuxfoundation.org> References: <20181008175530.864641368@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.4-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(&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);