From patchwork Mon Jul 9 09:43:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Esben Haabendal X-Patchwork-Id: 941176 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="cY6DjtOo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41PL421KYvz9s00 for ; Mon, 9 Jul 2018 19:43:14 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932225AbeGIJnN (ORCPT ); Mon, 9 Jul 2018 05:43:13 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:34201 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754405AbeGIJnM (ORCPT ); Mon, 9 Jul 2018 05:43:12 -0400 Received: by mail-lj1-f196.google.com with SMTP id c12-v6so13601664ljj.1; Mon, 09 Jul 2018 02:43:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=85O4D3Im7ZGdIr6UyDQTi5ey/7Ka1XJWMpnpdcRleeQ=; b=cY6DjtOo43BxOe6+0TtGpzDe9c9duXo70ONW9OGgfDGJWfNpH0iYBhsKEv1fAIdkzL 7nskHhRiJiwcrajlQ6Ryd7vFHMKjoQYV1b/t+hSvl6QCiHLnS1jMmET9tbAHN96C9ISW S3CzVch52IRUs++qXcBtuNZNgt7i1AaDzhroBjhqrY2jyiCn+ysPu0K3EsBu9fhDfKj6 pLIJEsTxod/pzxaxqrFzbF6n1L1JWrljfrwvCiLcPlYNLsf5klAAz30hkzdW0gjQHvV9 gQWP1Zbw6Mw8DEfO8+okeDXGtk0YxEaAzmV5pyPRR73iOLS0+b+MXseOdMaB5d2lWIeF 6ghw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=85O4D3Im7ZGdIr6UyDQTi5ey/7Ka1XJWMpnpdcRleeQ=; b=JFeAI6NuhWBkjFls8I0FkASKntO9BqQrvyBa7K5AgYYuErIINpR10kY3k6XebdCjHo +qOZaf9kmm222StPo3O6AKgI7N67DhrnKzk7cNCfJJoQVONoYI8Y1KIh9IUUFYyUzRhO eoKLswHHCgdJJgzvL17WAIEzFCXhB+7ww0ipi9QGVAZKIPvF5jfLtnWM6JRthuPbzmhY NhMyGv07vofLmn5YfbLubvrijL683SRWih7Nun/SDBeE60qiKsPPyaAQohpBGq/y4+AA y+uZBoIfKmZQQU9L+qjAokjs90MMUnPgpt8Cu1aFSqr43sN9JupZke0TR4WDPNX2upGw FI7A== X-Gm-Message-State: APt69E167x1B8e3fI2IAT6zZeNFbvLRzOqMYv3Y5gkyqzLhqwd8lfZOh FHxjnfLiFLEHEWj3HFTtzYeTtIDlj6M= X-Google-Smtp-Source: AAOMgpd0oQmLUjA6AkoOnZZ8XdAk5GtjlEZpOJDq+VxPrjL8stc8CnaZfsdyPWVPw++LxgF1OTs87g== X-Received: by 2002:a2e:1d50:: with SMTP id d77-v6mr12189910ljd.104.1531129390376; Mon, 09 Jul 2018 02:43:10 -0700 (PDT) Received: from localhost (87-57-30-174-static.dk.customer.tdc.net. [87.57.30.174]) by smtp.gmail.com with ESMTPSA id k65-v6sm839279lje.3.2018.07.09.02.43.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Jul 2018 02:43:09 -0700 (PDT) From: Esben Haabendal To: linux-i2c@vger.kernel.org Cc: Wolfram Sang , =?utf-8?q?Uwe_Kleine-?= =?utf-8?b?S8O2bmln?= , Rob Herring , Mark Rutland , Yuan Yao , Esben Haabendal , Phil Reid , Lucas Stach , Linus Walleij , Peter Rosin , Fabio Estevam , linux-kernel@vger.kernel.org Subject: [PATCH v2 1/4] i2c: imx: Fix reinit_completion() use Date: Mon, 9 Jul 2018 11:43:01 +0200 Message-Id: <20180709094304.8814-2-esben.haabendal@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180709094304.8814-1-esben.haabendal@gmail.com> References: <20180709094304.8814-1-esben.haabendal@gmail.com> MIME-Version: 1.0 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Esben Haabendal Make sure to call reinit_completion() before dma is started to avoid race condition where reinit_completion() is called after complete() and before wait_for_completion_timeout(). Signed-off-by: Esben Haabendal Fixes: ce1a78840ff7 ("i2c: imx: add DMA support for freescale i2c driver") Reviewed-by: Uwe Kleine-König --- drivers/i2c/busses/i2c-imx.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 0207e194f84b..39cfd98c7b23 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -368,6 +368,7 @@ static int i2c_imx_dma_xfer(struct imx_i2c_struct *i2c_imx, goto err_desc; } + reinit_completion(&dma->cmd_complete); txdesc->callback = i2c_imx_dma_callback; txdesc->callback_param = i2c_imx; if (dma_submit_error(dmaengine_submit(txdesc))) { @@ -622,7 +623,6 @@ static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx, * The first byte must be transmitted by the CPU. */ imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); - reinit_completion(&i2c_imx->dma->cmd_complete); time_left = wait_for_completion_timeout( &i2c_imx->dma->cmd_complete, msecs_to_jiffies(DMA_TIMEOUT)); @@ -681,7 +681,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx, if (result) return result; - reinit_completion(&i2c_imx->dma->cmd_complete); time_left = wait_for_completion_timeout( &i2c_imx->dma->cmd_complete, msecs_to_jiffies(DMA_TIMEOUT)); From patchwork Mon Jul 9 09:43:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Esben Haabendal X-Patchwork-Id: 941180 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="abi80z4z"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41PL4q3Fwgz9s00 for ; Mon, 9 Jul 2018 19:43:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932743AbeGIJnV (ORCPT ); Mon, 9 Jul 2018 05:43:21 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:43943 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754405AbeGIJnP (ORCPT ); Mon, 9 Jul 2018 05:43:15 -0400 Received: by mail-lj1-f195.google.com with SMTP id r13-v6so13587398ljg.10; Mon, 09 Jul 2018 02:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=KoC99XQjYMvYaeFlk1wVGqBun0Bm6WwvjfwbDmoYkF8=; b=abi80z4zuLEZR1FqD25bFzz3m29Z5cWuqrq12SSooGE/+l7sGFR6wuDV4q/l+2/uiI EIOwcu/Su7eOUVSDgpaN9KMJwccelmvx5Os43KG69viR4Fq+V3olFOnV/gwOk3cMfE9B Rc4B2JQYHZvALYRE9wn6wjOvJjWKV3/4DGe02TvSyWygHUggKTfaaQ30NZV7RfSp0EDq WAlXOzYjcCQgv3woJj18s4nSRdjfrV+37n/s/U3q7n1eu7AqexmoyZJ+VGitrehPb6Vb ruuvessCfXpJKjCt3tpyb4hWO3AnqWzKErtLOlHzfHajBjQPXFGtQhA7j2fcRY8J/gq4 4mfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=KoC99XQjYMvYaeFlk1wVGqBun0Bm6WwvjfwbDmoYkF8=; b=AxXEYKyC2KPXlzrtwfTU1MZVB+wDufCgS+3eAQGpXWVzLfCv9Lw98+N8Q3HaBONaap g5UsEdIFSrEp3fjD5b+a5FqUNL/tw6oAGrN+m6Lxzg0XpaE5giPQLRC09m+CBrhbXieF btsRiTNLPO2IurUpwetyaLinkLB4DG19wDdCQ8IWKrtVszxVZagCNnh8tVf9peOav3f6 abvhwMC7PBiOgK/X4/yVmhi45gbfverNE1asszYlSLPGFTFoD5G+vUUsdW0RRBclyRpq 6n6sUAcN8JN99N4B22vCsjDbAqyReIiAb3iLyV2jqJvPtL0olfPxsil+4zvJZebzHQZD CqHw== X-Gm-Message-State: APt69E1dQzBH34fFePqx0GageaHvlKVvNV54s3s9Hwj8I2WJbuKky3jV JuZFjIxDG79ZJcAW2xVooGcqwoSfYJk= X-Google-Smtp-Source: AAOMgpfga20h+6xcX96OmzEnrWhQ9fCozSdTWMMXwnbaRvjyVysgUJbKCaYIuj90sq9/fVFODhBxlQ== X-Received: by 2002:a2e:40c6:: with SMTP id r67-v6mr12632960lje.41.1531129393815; Mon, 09 Jul 2018 02:43:13 -0700 (PDT) Received: from localhost (87-57-30-174-static.dk.customer.tdc.net. [87.57.30.174]) by smtp.gmail.com with ESMTPSA id v20-v6sm1496115ljc.94.2018.07.09.02.43.12 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Jul 2018 02:43:13 -0700 (PDT) From: Esben Haabendal To: linux-i2c@vger.kernel.org Cc: Wolfram Sang , =?utf-8?q?Uwe_Kleine-?= =?utf-8?b?S8O2bmln?= , Rob Herring , Mark Rutland , Yuan Yao , Esben Haabendal , Fabio Estevam , Lucas Stach , Phil Reid , Clemens Gruber , Peter Rosin , linux-kernel@vger.kernel.org Subject: [PATCH v2 2/4] i2c: imx: Fix race condition in dma read Date: Mon, 9 Jul 2018 11:43:02 +0200 Message-Id: <20180709094304.8814-3-esben.haabendal@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180709094304.8814-1-esben.haabendal@gmail.com> References: <20180709094304.8814-1-esben.haabendal@gmail.com> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Esben Haabendal This fixes a race condition, where the DMAEN bit ends up being set after I2C slave has transmitted a byte following the dummy read. When that happens, an interrupt is generated instead, and no DMA request is generated to kickstart the DMA read, and a timeout happens after DMA_TIMEOUT (1 sec). Fixed by setting the DMAEN bit before the dummy read. Signed-off-by: Esben Haabendal --- drivers/i2c/busses/i2c-imx.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 39cfd98c7b23..d86f152176a4 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -668,9 +668,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx, struct imx_i2c_dma *dma = i2c_imx->dma; struct device *dev = &i2c_imx->adapter.dev; - temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); - temp |= I2CR_DMAEN; - imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); dma->chan_using = dma->chan_rx; dma->dma_transfer_dir = DMA_DEV_TO_MEM; @@ -810,6 +807,11 @@ static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, bo if ((msgs->len - 1) || block_data) temp &= ~I2CR_TXAK; imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); + if (i2c_imx->dma && msgs->len >= DMA_THRESHOLD && !block_data) { + temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); + temp |= I2CR_DMAEN; + imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); + } imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); /* dummy read */ dev_dbg(&i2c_imx->adapter.dev, "<%s> read data\n", __func__); From patchwork Mon Jul 9 09:43:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Esben Haabendal X-Patchwork-Id: 941181 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="T1nQl/1g"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41PL5627Gkz9s00 for ; Mon, 9 Jul 2018 19:44:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754374AbeGIJn4 (ORCPT ); Mon, 9 Jul 2018 05:43:56 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:34207 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932436AbeGIJnT (ORCPT ); Mon, 9 Jul 2018 05:43:19 -0400 Received: by mail-lj1-f193.google.com with SMTP id c12-v6so13601894ljj.1; Mon, 09 Jul 2018 02:43:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=ACdevhe59HqxDEaM7CGxNaIQFaq7aeM3wEmuzAxHDTs=; b=T1nQl/1gaBDHAqWSDEmbsvhq1ItVAsZPJjCYhqW0JCTcSpkRO81BTs8kN3XnfLFr02 uLfb9Tg5J0ZRtCsAD8vVHpE6McwB3crmtydYSuJo0iV5iWZmEPnKR2nE2dJm37Obo3oB LpNNQ7BvEGpXGWbb/sEvLfquBmZyfbHi7xFsvCxk8WPA9HB/OyiykXJGOyb5pOl9d88Y oJnteeWsHpL7dDmGM9Wwkf2AIsU4C852qqVGVG9htk0h5eRMWHsQmhiTMJqngm4jEf2Y uiaD3WXfvQKfVcUk1TZTEdlzEmHPSbB6ed1ounQrGCS+KbmiIV5araYE66/mOg2M1Dyr R4nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=ACdevhe59HqxDEaM7CGxNaIQFaq7aeM3wEmuzAxHDTs=; b=kS9jgoxhjlJeUyAKoP5tIB6PuqsHnvJvBMPHK/9z4ir6fmzx8RDP9M+iUyysshuFc6 VxJaS89dyX6+SLHDfBJngmaROsxZJFfAWs20J/PDOrWS4a8iFWDHpPGlmgd2s11mSL7T 1CPo3jHK/AiEnde4uo9IXANcGj5slZ4pvRmNHvXGJ/m+COtBdzeyxZpHz32IDzqBC3qu BL3mTmeM1bNRFOJIUbbXbYTBxfDrpgXjvhvYWD8ZntFirEcF9QpHAn4dxZVWtTL3BvTQ M4fBNfkVLdCODOHN+/vm52mOwPZtGdrrr6TqG0D7S8FC/LK0lSqPNtgM4cP1HiwqcUon cWuw== X-Gm-Message-State: APt69E2nGMzRxiZ8IO7ykLNZpINrASTjbnPK/HIkY0uvuPZ/OXUlwi/E cpkpFuEcHI4wpfS8MB6reOa4tViGw80= X-Google-Smtp-Source: AAOMgpf77IhVGvK4Rina4pMwzz7VUmAqskSBpSUtQQrKgHpmn9/KYsv5BhXBCm6l3uDFLxKs5XfAvg== X-Received: by 2002:a2e:7c12:: with SMTP id x18-v6mr11774508ljc.71.1531129397465; Mon, 09 Jul 2018 02:43:17 -0700 (PDT) Received: from localhost (87-57-30-174-static.dk.customer.tdc.net. [87.57.30.174]) by smtp.gmail.com with ESMTPSA id e20-v6sm3856684lff.41.2018.07.09.02.43.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Jul 2018 02:43:16 -0700 (PDT) From: Esben Haabendal To: linux-i2c@vger.kernel.org Cc: Wolfram Sang , =?utf-8?q?Uwe_Kleine-?= =?utf-8?b?S8O2bmln?= , Rob Herring , Mark Rutland , Yuan Yao , Esben Haabendal , Philipp Zabel , Phil Reid , Lucas Stach , Clemens Gruber , Peter Rosin , Fabio Estevam , linux-kernel@vger.kernel.org Subject: [PATCH v2 3/4] i2c: imx: Simplify stopped state tracking Date: Mon, 9 Jul 2018 11:43:03 +0200 Message-Id: <20180709094304.8814-4-esben.haabendal@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180709094304.8814-1-esben.haabendal@gmail.com> References: <20180709094304.8814-1-esben.haabendal@gmail.com> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Esben Haabendal Always update the stopped state when busy status have been checked. This is identical to what was done before, with the exception of error handling. Without this change, some errors cause the stopped state to be left in incorrect state in i2c_imx_stop(), i2c_imx_dma_read(), i2c_imx_read() and i2c_imx_xfer(). Signed-off-by: Esben Haabendal --- drivers/i2c/busses/i2c-imx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index d86f152176a4..1db8e6790afc 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c @@ -421,10 +421,14 @@ static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy) return -EAGAIN; } - if (for_busy && (temp & I2SR_IBB)) + if (for_busy && (temp & I2SR_IBB)) { + i2c_imx->stopped = 0; break; - if (!for_busy && !(temp & I2SR_IBB)) + } + if (!for_busy && !(temp & I2SR_IBB)) { + i2c_imx->stopped = 1; break; + } if (time_after(jiffies, orig_jiffies + msecs_to_jiffies(500))) { dev_dbg(&i2c_imx->adapter.dev, "<%s> I2C bus is busy\n", __func__); @@ -538,7 +542,6 @@ static int i2c_imx_start(struct imx_i2c_struct *i2c_imx) result = i2c_imx_bus_busy(i2c_imx, 1); if (result) return result; - i2c_imx->stopped = 0; temp |= I2CR_IIEN | I2CR_MTX | I2CR_TXAK; temp &= ~I2CR_DMAEN; @@ -569,7 +572,6 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx) if (!i2c_imx->stopped) { i2c_imx_bus_busy(i2c_imx, 0); - i2c_imx->stopped = 1; } /* Disable I2C controller */ @@ -724,7 +726,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx, temp &= ~(I2CR_MSTA | I2CR_MTX); imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); i2c_imx_bus_busy(i2c_imx, 0); - i2c_imx->stopped = 1; } else { /* * For i2c master receiver repeat restart operation like: @@ -852,7 +853,6 @@ static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, bo temp &= ~(I2CR_MSTA | I2CR_MTX); imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); i2c_imx_bus_busy(i2c_imx, 0); - i2c_imx->stopped = 1; } else { /* * For i2c master receiver repeat restart operation like: From patchwork Mon Jul 9 09:43:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Esben Haabendal X-Patchwork-Id: 941179 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dIXNFI/z"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41PL4p1Ddlz9s1B for ; Mon, 9 Jul 2018 19:43:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752914AbeGIJne (ORCPT ); Mon, 9 Jul 2018 05:43:34 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:38140 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932699AbeGIJnV (ORCPT ); Mon, 9 Jul 2018 05:43:21 -0400 Received: by mail-lf0-f66.google.com with SMTP id a4-v6so14686497lff.5; Mon, 09 Jul 2018 02:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=1koQvgLpOHKSo2UbGrEiF0QLYvVVtdV9mxihlxpb/Nw=; b=dIXNFI/z+xlQuMy7LKtYylJ4lEM7z2Iy7LOAKH9+KgV3iFAmWPVSaD1wC+cWW9F4qK TfPmBLRngm+CULDO/pwAva1Uh3C/86/q4Q1sNGRvLQfxyzSIFJPK/vBcQTnGxC2uirxv cgipnJEfZYynpUQxfV1yqgDJXDf/KOXThZj07ndoB9TUVqHcDHJS7Oj0vaSgNutmXWQv qayxOO3cKQHxLPoLzEqMcSIkv1rbVoYIoRHU3yz661TGl+hTCxQWGD+CQLGr5vULmJN3 NgT2eGRzxCf62pjQri8MrXJxm9g+kLi0Wk9wGSF4lZjOQj5JHGcGc7Crikia93nayA6S gaRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=1koQvgLpOHKSo2UbGrEiF0QLYvVVtdV9mxihlxpb/Nw=; b=C+CrZcyYjrOLsTudI5CGS11CayjaR5JZubaiKxSH0JtozwQC6N7tR87oaWZHdHNGKl m23qCYK3Pt2FpfIJ0ScNmDvDjYDmgSsygg9gH9B/Dq/Nin257VApId4FWRBHT36zd9+X grQCYv88jGmWS/QMZAFZKhaG8YaoZlsLuxdc2m+jQWgkiILTVpZhFIQC+p55PZkrx/8m CoNx4CX6RE2UbB40B/dXCU7y39YrnZYLL4442F4pzZW9LYgioBOVnMYUgpOTs1tM9C8e C8wAUvcsAsBV9ChyLyU9nYLy5bVdo31XBGXCIz9rhTTlMOJEqlbJHk/naGgzWZHb0EcI O5Xw== X-Gm-Message-State: APt69E0qvUuOw0HE3sZq2E8ZRivwfYOGVg9duay308NTalVUWLx5ulnt Tak9JUSpmdqyvdbyRcHTZRQ4fukTTvE= X-Google-Smtp-Source: AAOMgpcfJgib2kY0uvp14/OTB54wyBGroPzAACsvRISUpRshtNAyqsMW7STi5yxvKaKHdPr5BZ9Fdg== X-Received: by 2002:a19:ef13:: with SMTP id n19-v6mr14571206lfh.48.1531129399648; Mon, 09 Jul 2018 02:43:19 -0700 (PDT) Received: from localhost (87-57-30-174-static.dk.customer.tdc.net. [87.57.30.174]) by smtp.gmail.com with ESMTPSA id q6-v6sm3396357lfk.31.2018.07.09.02.43.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Jul 2018 02:43:19 -0700 (PDT) From: Esben Haabendal To: linux-i2c@vger.kernel.org Cc: Wolfram Sang , =?utf-8?q?Uwe_Kleine-?= =?utf-8?b?S8O2bmln?= , Rob Herring , Mark Rutland , Yuan Yao , Esben Haabendal , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/4] arm: dts: ls1021a: Enable I2C DMA support Date: Mon, 9 Jul 2018 11:43:04 +0200 Message-Id: <20180709094304.8814-5-esben.haabendal@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180709094304.8814-1-esben.haabendal@gmail.com> References: <20180709094304.8814-1-esben.haabendal@gmail.com> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Esben Haabendal Gives substantial performance improvement for transfers larger than 16 bytes (DMA_THRESHOLD). Smaller transfers are unaffected. Signed-off-by: Esben Haabendal --- arch/arm/boot/dts/ls1021a.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm/boot/dts/ls1021a.dtsi b/arch/arm/boot/dts/ls1021a.dtsi index c55d479971cc..1e5640701c65 100644 --- a/arch/arm/boot/dts/ls1021a.dtsi +++ b/arch/arm/boot/dts/ls1021a.dtsi @@ -363,6 +363,8 @@ interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 1>; + dma-names = "tx", "rx"; + dmas = <&edma0 1 39>, <&edma0 1 38>; status = "disabled"; }; @@ -374,6 +376,8 @@ interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 1>; + dma-names = "tx", "rx"; + dmas = <&edma0 1 37>, <&edma0 1 36>; status = "disabled"; }; @@ -385,6 +389,8 @@ interrupts = ; clock-names = "i2c"; clocks = <&clockgen 4 1>; + dma-names = "tx", "rx"; + dmas = <&edma0 1 35>, <&edma0 1 34>; status = "disabled"; };