From patchwork Mon Jul 27 11:47:20 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sifan Naeem X-Patchwork-Id: 500364 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7B2751402C9 for ; Mon, 27 Jul 2015 21:45:35 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751775AbbG0Lpd (ORCPT ); Mon, 27 Jul 2015 07:45:33 -0400 Received: from mailapp01.imgtec.com ([195.59.15.196]:16389 "EHLO mailapp01.imgtec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751569AbbG0Lpc (ORCPT ); Mon, 27 Jul 2015 07:45:32 -0400 Received: from KLMAIL01.kl.imgtec.org (unknown [192.168.5.35]) by Websense Email Security Gateway with ESMTPS id 0531E406A4C72; Mon, 27 Jul 2015 12:45:28 +0100 (IST) Received: from hhmail02.hh.imgtec.org (10.100.10.20) by KLMAIL01.kl.imgtec.org (192.168.5.35) with Microsoft SMTP Server (TLS) id 14.3.195.1; Mon, 27 Jul 2015 12:45:30 +0100 Received: from iw-build-3.kl.imgtec.org (192.168.167.63) by hhmail02.hh.imgtec.org (10.100.10.20) with Microsoft SMTP Server (TLS) id 14.3.235.1; Mon, 27 Jul 2015 12:45:30 +0100 From: Sifan Naeem To: Wolfram Sang , James Hogan , CC: Sifan Naeem , "Stable kernel (v3.19+)" Subject: [PATCH 7/8] i2c: img-scb: improve transaction complete handle Date: Mon, 27 Jul 2015 12:47:20 +0100 Message-ID: <1437997641-32575-8-git-send-email-sifan.naeem@imgtec.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1437997641-32575-1-git-send-email-sifan.naeem@imgtec.com> References: <1437997641-32575-1-git-send-email-sifan.naeem@imgtec.com> MIME-Version: 1.0 X-Originating-IP: [192.168.167.63] Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Clear line status and all interrupts when transaction is complete, as not doing so might leave unserviced interrupts that might be handled in the context of a new transfer. Soft reset if the the transfer failed to bring back the i2c block to a reset state. Fixes: 27bce4 ("i2c: img-scb: Add Imagination Technologies I2C SCB driver") Signed-off-by: Sifan Naeem Cc: Stable kernel (v3.19+) --- drivers/i2c/busses/i2c-img-scb.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c index 341130e..bbfee33 100644 --- a/drivers/i2c/busses/i2c-img-scb.c +++ b/drivers/i2c/busses/i2c-img-scb.c @@ -626,7 +626,10 @@ static void img_i2c_complete_transaction(struct img_i2c *i2c, int status) img_i2c_switch_mode(i2c, MODE_INACTIVE); if (status) { i2c->msg_status = status; - img_i2c_transaction_halt(i2c, false); + img_i2c_soft_reset(i2c); + } else { + img_i2c_writel(i2c, SCB_INT_CLEAR_REG, ~0); + img_i2c_writel(i2c, SCB_CLEAR_REG, ~0); } complete(&i2c->msg_complete); }