From patchwork Fri Jul 24 16:24:26 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Smith X-Patchwork-Id: 6861771 Return-Path: X-Original-To: patchwork-dmaengine@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id E13949F380 for ; Fri, 24 Jul 2015 16:25:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1947C20549 for ; Fri, 24 Jul 2015 16:25:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 34C6320546 for ; Fri, 24 Jul 2015 16:25:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753407AbbGXQZ0 (ORCPT ); Fri, 24 Jul 2015 12:25:26 -0400 Received: from mailapp01.imgtec.com ([195.59.15.196]:38085 "EHLO mailapp01.imgtec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753084AbbGXQZZ (ORCPT ); Fri, 24 Jul 2015 12:25:25 -0400 Received: from KLMAIL01.kl.imgtec.org (unknown [192.168.5.35]) by Websense Email Security Gateway with ESMTPS id EE876C2A6DA05; Fri, 24 Jul 2015 17:25:20 +0100 (IST) Received: from LEMAIL01.le.imgtec.org (192.168.152.62) by KLMAIL01.kl.imgtec.org (192.168.5.35) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 24 Jul 2015 17:25:24 +0100 Received: from asmith-linux.le.imgtec.org (192.168.154.115) by LEMAIL01.le.imgtec.org (192.168.152.62) with Microsoft SMTP Server (TLS) id 14.3.210.2; Fri, 24 Jul 2015 17:25:23 +0100 From: Alex Smith To: Vinod Koul CC: Zubair Lutfullah Kakakhel , , Alex Smith Subject: [PATCH v3 7/8] dmaengine: jz4780: Don't use devm_*_irq() functions Date: Fri, 24 Jul 2015 17:24:26 +0100 Message-ID: <1437755067-28622-8-git-send-email-alex.smith@imgtec.com> X-Mailer: git-send-email 2.4.6 In-Reply-To: <1437755067-28622-1-git-send-email-alex.smith@imgtec.com> References: <1437755067-28622-1-git-send-email-alex.smith@imgtec.com> MIME-Version: 1.0 X-Originating-IP: [192.168.154.115] Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We must explicitly free the IRQ before the device is unregistered in case any device interrupt still occurs, so there's no point in using the managed variations of the IRQ functions. Change to the regular versions. Signed-off-by: Alex Smith Cc: Vinod Koul Cc: Zubair Lutfullah Kakakhel Cc: dmaengine@vger.kernel.org --- Changes in v3: - New patch. --- drivers/dma/dma-jz4780.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c index d260c057420e..92954cde0566 100644 --- a/drivers/dma/dma-jz4780.c +++ b/drivers/dma/dma-jz4780.c @@ -774,8 +774,8 @@ static int jz4780_dma_probe(struct platform_device *pdev) jzdma->irq = ret; - ret = devm_request_irq(dev, jzdma->irq, jz4780_dma_irq_handler, 0, - dev_name(dev), jzdma); + ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev), + jzdma); if (ret) { dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); return ret; @@ -784,7 +784,8 @@ static int jz4780_dma_probe(struct platform_device *pdev) jzdma->clk = devm_clk_get(dev, NULL); if (IS_ERR(jzdma->clk)) { dev_err(dev, "failed to get clock\n"); - return PTR_ERR(jzdma->clk); + ret = PTR_ERR(jzdma->clk); + goto err_free_irq; } clk_prepare_enable(jzdma->clk); @@ -856,6 +857,9 @@ err_unregister_dev: err_disable_clk: clk_disable_unprepare(jzdma->clk); + +err_free_irq: + free_irq(jzdma->irq, jzdma); return ret; } @@ -864,7 +868,7 @@ static int jz4780_dma_remove(struct platform_device *pdev) struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev); of_dma_controller_free(pdev->dev.of_node); - devm_free_irq(&pdev->dev, jzdma->irq, jzdma); + free_irq(jzdma->irq, jzdma); dma_async_device_unregister(&jzdma->dma_device); return 0; }