From patchwork Thu Feb 8 18:12:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Gardner X-Patchwork-Id: 871026 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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kz6iXfvx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zcmWy6HZqz9s7v for ; Fri, 9 Feb 2018 05:13:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752021AbeBHSNC (ORCPT ); Thu, 8 Feb 2018 13:13:02 -0500 Received: from mail-io0-f195.google.com ([209.85.223.195]:42763 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751848AbeBHSNB (ORCPT ); Thu, 8 Feb 2018 13:13:01 -0500 Received: by mail-io0-f195.google.com with SMTP id g14so566399iob.9 for ; Thu, 08 Feb 2018 10:13:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=xzZwNwgbgQq+uUPinSNs5o3hI/y4Hmn7OIewGH8xwH4=; b=kz6iXfvxNjsHWV8PDYjvdOV0Q6eQCW8/5/rgM28r4K8CCfiD/1XlEgzBIkCcxK7YDt iCoNg4f1qgA8MaKbS7sE4pJu9WKLxhBfEDCK6DALh5UXxTeZfHNhz5WvgT4oQOxkJXG6 LjNRyCuV9oyrdAwRnBX3i8kNUJ0pggIEFYSvlmGUKqKmMAw3y6TS8MMauzDm5ESRxL39 4QTp6K7WsyxYeLQQ8INP3nGlGwvMVgM6Q2Y9s3QYdHLAZD+kqLmH+bvSLxqohwEB17xG OvOLq1DRKQNOSlRj9EhAThJjfh2ogjlbtTV9enRB9/Yl1IWssp1kyF1SionhqzAQqY4A VOnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=xzZwNwgbgQq+uUPinSNs5o3hI/y4Hmn7OIewGH8xwH4=; b=kyLUpVYy2wl6rZbI6vEgpvxMllEr/tyYpc96TKd7CWRswTTdZovbAWm5bVCiBlxnT8 Tv2t51ENwJcRkmfWnlex9hnY4kF3oZMAh4c32iN1vnXFUpV7nis5JdKo0GnBMTkfmnem b/Cz91DFP7O1ivnqZ+y+jWh2aEO3DHarGXGaa1MtaWazYAvO5yvcXuGPv3HI9J+kqupO a/6uj0qP+Y169zOzSsXUxgYLTCiCMIh2SrceWqZoVkpz+aFQV84T3H429Zx/uYE0mr4O XvwFzZgPzkUIJTEab/ii18eNczYlZ7ZcKc2xA5SOwlR/DaRcM/wlNecJYre8EfHxUKQV joLA== X-Gm-Message-State: APf1xPBE1Lxi8T3z4JFLlE5ECd/QIJuxOifhlo26JcSDbz+OkM/uFDXK peVYCBfV8INa6pKPh7ojE4mYgA== X-Google-Smtp-Source: AH8x224tEtReVdfIQXP/vBGIqNHUgC8blmSqj+rM17JQOx1dmScGRml6Tji6gumrWQomVNnPcAcoxg== X-Received: by 10.107.186.86 with SMTP id k83mr16455iof.208.1518113580859; Thu, 08 Feb 2018 10:13:00 -0800 (PST) Received: from wcrdsk1072.ad.wabtec.com ([216.243.219.251]) by smtp.gmail.com with ESMTPSA id q136sm370380ioe.34.2018.02.08.10.12.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 08 Feb 2018 10:12:59 -0800 (PST) From: Ben Gardner To: Jarkko Nikula , linux-i2c@vger.kernel.org Cc: Ben Gardner , Andy Shevchenko , Mika Westerberg Subject: [PATCH] i2c: designware: Fix failure on baytrail Date: Thu, 8 Feb 2018 12:12:49 -0600 Message-Id: <1518113569-19991-1-git-send-email-gardner.ben@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org The I2C driver for my Atom E3845 board has been broken since 4.9. These kernel logs show up whenever am I2C transaction is attempted. i2c-designware-pci 0000:00:18.3: timeout in disabling adapter i2c-designware-pci 0000:00:18.3: timeout waiting for bus ready The root issue is that the I2C port takes a while to enable and somewhere along the way, the 'enable-and-wait' approach to enabling the adapter was changed to 'enable'. That caused the driver and hardware to get out of sync and fail. I have tested this patch on 4.14 and 4.15. Signed-off-by: Ben Gardner --- drivers/i2c/busses/i2c-designware-master.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c index ae69188..55926ef 100644 --- a/drivers/i2c/busses/i2c-designware-master.c +++ b/drivers/i2c/busses/i2c-designware-master.c @@ -209,7 +209,7 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev) i2c_dw_disable_int(dev); /* Enable the adapter */ - __i2c_dw_enable(dev, true); + __i2c_dw_enable_and_wait(dev, true); /* Clear and enable interrupts */ dw_readl(dev, DW_IC_CLR_INTR);