Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1045394imu; Wed, 16 Jan 2019 11:47:06 -0800 (PST) X-Google-Smtp-Source: ALg8bN6yTmTP0YN1BiRtJhciPC4Fz+usuJc4JVUHohQzdnxxxchUw5YAppCoMxqixr4JxQP1KYGE X-Received: by 2002:a63:cf02:: with SMTP id j2mr10546675pgg.113.1547668026024; Wed, 16 Jan 2019 11:47:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547668026; cv=none; d=google.com; s=arc-20160816; b=E4toAFIFtldVOSdrBEprs54+M1yud5ZDlcrfQHgJEH2DiE+akE1EIsxoyPEXfUKyPI 6+RV688oGONDP4hWOUjLdaDvlvSBf+mZtbxgmCE2CeIWF4TdxO+bO9Bu75bQkSYnxQVr VjWI5bhsBg6QEX/XP/P3S7deNB0nRFiyCNCcHeL3iQZhx7hbpIU4/rvlhLYnksbmjkrM 1TBsJA/7pxedORp0R8arV8cPO6+4Q07nhulKHLyIVskXHHn2vSUNcN+1MvcumCUW/+gg MbabMIucfa4hnPU0+OCkZ9ya86xzg9JHebUHktg+05aBJRTKswNECAT7bMpC+tqfozr8 jT+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=f0Z3PtZogW7lNJKYHYL+uANWgeij05U+fRVAfPK0KMM=; b=eh82rQ3xTDlBPxHnJLRJGx6ynFRxGjXaF47wGpn+toRMJ1SJxUJtX6xu9v96BBqaI9 jPZUqj06Y3XbDiIV3Gm4q/BtKLpVyp5NCN2blE1A3gM8xtdTdmYl4o8JCKzkGMsbgH4g G7RKE0eZwtNccUu6n8t33ceHGz+OnmLCQhIRxphk7W0sFWE87sBCD8/iC4VydIvpuxtZ 9eZapykqIPJo7JJhzXPht/8v5RyDHL+0zgmEdGJgqp5XSMfZMKqSpsRaF7XZb0TarYHa +jk0qSJYmjoASWDllBUQ768hw7tYRc7NKsZMW5AypKCZs3eqgtrrAUxe/v16H7fej+9S Zvhw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e127si7294344pfg.167.2019.01.16.11.46.50; Wed, 16 Jan 2019 11:47:06 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389905AbfAPL3d (ORCPT + 99 others); Wed, 16 Jan 2019 06:29:33 -0500 Received: from inva021.nxp.com ([92.121.34.21]:59456 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730420AbfAPL3c (ORCPT ); Wed, 16 Jan 2019 06:29:32 -0500 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 847BB2000BB; Wed, 16 Jan 2019 12:29:30 +0100 (CET) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 77A3C200046; Wed, 16 Jan 2019 12:29:30 +0100 (CET) Received: from fsr-ub1864-101.ea.freescale.net (fsr-ub1864-101.ea.freescale.net [10.171.82.46]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id DAC532060F; Wed, 16 Jan 2019 12:29:29 +0100 (CET) From: Laurentiu Tudor To: linux-i2c@vger.kernel.org, linux-imx@nxp.com, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, wsa@the-dreams.de Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, fabio.estevam@nxp.com, leoyang.li@nxp.com, Laurentiu Tudor Subject: [PATCH v2 2/2] i2c: imx: defer probing on dma channel request Date: Wed, 16 Jan 2019 13:28:55 +0200 Message-Id: <20190116112855.13824-2-laurentiu.tudor@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190116112855.13824-1-laurentiu.tudor@nxp.com> References: <20190116112855.13824-1-laurentiu.tudor@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the dma controller is not yet probed, defer i2c probe. The error path in probe was slightly modified (no functional change) to avoid triggering this WARN_ON(): "cg-pll0-div1 already disabled WARNING: CPU: 1 PID: 1 at drivers/clk/clk.c:828 clk_core_disable+0xa8/0xb0" Signed-off-by: Laurentiu Tudor --- Changes in v2: - rebased on latest i2c tree - fix small error introduced by a previous commit (first patch) drivers/i2c/busses/i2c-imx.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 42fed40198a0..4e34b1572756 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -1111,7 +1111,8 @@ static int i2c_imx_probe(struct platform_device *pdev) pdev->name, i2c_imx); if (ret) { dev_err(&pdev->dev, "can't claim irq %d\n", irq); - goto clk_disable; + clk_disable_unprepare(i2c_imx->clk); + return ret; } /* Init queue */ @@ -1161,19 +1162,25 @@ static int i2c_imx_probe(struct platform_device *pdev) pm_runtime_mark_last_busy(&pdev->dev); pm_runtime_put_autosuspend(&pdev->dev); + /* Init DMA config if supported */ + ret = i2c_imx_dma_request(i2c_imx, phy_addr); + if (ret) { + if (ret != -EPROBE_DEFER) + dev_info(&pdev->dev, "can't use DMA, using PIO instead.\n"); + else + goto del_adapter; + } + dev_dbg(&i2c_imx->adapter.dev, "claimed irq %d\n", irq); dev_dbg(&i2c_imx->adapter.dev, "device resources: %pR\n", res); dev_dbg(&i2c_imx->adapter.dev, "adapter name: \"%s\"\n", i2c_imx->adapter.name); - /* Init DMA config if supported */ - ret = i2c_imx_dma_request(i2c_imx, phy_addr); - if (ret < 0) - goto clk_notifier_unregister; - dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n"); return 0; /* Return OK */ +del_adapter: + i2c_del_adapter(&i2c_imx->adapter); clk_notifier_unregister: clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); rpm_disable: @@ -1182,8 +1189,6 @@ static int i2c_imx_probe(struct platform_device *pdev) pm_runtime_set_suspended(&pdev->dev); pm_runtime_dont_use_autosuspend(&pdev->dev); -clk_disable: - clk_disable_unprepare(i2c_imx->clk); return ret; } -- 2.17.1