Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp3349055img; Mon, 25 Mar 2019 08:31:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqwqWZJNukZU1y08xY9OY3YUTBbmPMxUOkjdJxn7cYlomOkNq2sHskAeHBdGdr4qGDluAcXh X-Received: by 2002:aa7:83cb:: with SMTP id j11mr24502775pfn.117.1553527882117; Mon, 25 Mar 2019 08:31:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553527882; cv=none; d=google.com; s=arc-20160816; b=pEtWdLIeVMuItdj7TFay7mS3anczzQy8zPBL2JMB6NBApuxTRINfrid4NGznidGa3Z TaAps2F56V8E8VepOpWq8mUxrnjIp5OAM4yBXYsG31YHKjR1oMuY02puPafBAmRT9iqt pTcNry85QRxFw4Ripvlv07GGYx9vEiEwUPmeLf3iLoVCu+IK1x5A5u02yi1DKp1bEeNe v7rtqBMSyy6GEErEtI7e5v0SWAnMmbAC3fNu2yUsdThtbuGBDXn2APF+xrxyAYyNQctD fMh4Kjy7cMhT9lzRhnuYi+mXhHGKxwBDpilFPIReh+94hJYGhRQIyBwKvweZrlTrolVU ZfqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=tZ4cLHOhNhtbMY28EfxmghgckfnamrsdzXQoVMdpdJU=; b=aQ1WIzgp7GfpKRYDoOAWrSpzwOrtDq+mowEIEXp1P97/oLPRB18CEz3ZJuL53U+194 1fYVmsjWekg6VhoOOkG/LTWoIlYZ3g40N4xqNR807hYH9S2oQ72A0RqkWiQspNbMr4sL LUOLTOnKrFsWC53GvlxI3ZJot77IbdNvPo2hUbGniCks9KhgzfOl1cf14J5J4G1OXMxA WJViFNJ1j330o8Z6dZkKGBt70YD39uwdu37gKbXMBc8gW9u8Jc/zKencLEDdTiDKHdan 8bWtYMuEabTpKW1BncwRQHHuE3o6TZffk68bRFKHRpqdmFP5x56zPoogDnQ/bITQrXhw gjjw== 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 25si13710458pgl.60.2019.03.25.08.31.05; Mon, 25 Mar 2019 08:31:22 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729182AbfCYPaX (ORCPT + 99 others); Mon, 25 Mar 2019 11:30:23 -0400 Received: from inva020.nxp.com ([92.121.34.13]:56572 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbfCYPaX (ORCPT ); Mon, 25 Mar 2019 11:30:23 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id EC3391A00DE; Mon, 25 Mar 2019 16:30:20 +0100 (CET) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id E000B1A00DD; Mon, 25 Mar 2019 16:30:20 +0100 (CET) Received: from fsr-ub1864-101.ea.freescale.net (fsr-ub1864-101.ea.freescale.net [10.171.74.120]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 5F67A205D8; Mon, 25 Mar 2019 16:30:20 +0100 (CET) From: laurentiu.tudor@nxp.com To: linux-i2c@vger.kernel.org, ying.zhang22455@nxp.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, upstream-release@linux.nxdi.nxp.com, leoyang.li@nxp.com, Laurentiu Tudor Subject: [RESEND] i2c: imx: defer probing on dma channel request Date: Mon, 25 Mar 2019 17:30:16 +0200 Message-Id: <20190325153016.12626-1-laurentiu.tudor@nxp.com> X-Mailer: git-send-email 2.17.1 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 From: Laurentiu Tudor 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 --- 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