From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Lunn Subject: Re: [PATCH v3 3/3] i2c-ocores: sifive: add polling mode workaround for FU540-C000 SoC Date: Thu, 16 May 2019 15:07:20 +0200 Message-ID: <20190516130720.GE14298@lunn.ch> References: <1557983320-14461-1-git-send-email-sagar.kadam@sifive.com> <1557983320-14461-4-git-send-email-sagar.kadam@sifive.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1557983320-14461-4-git-send-email-sagar.kadam@sifive.com> Sender: linux-kernel-owner@vger.kernel.org To: Sagar Shrikant Kadam Cc: robh+dt@kernel.org, mark.rutland@arm.com, peter@korsgaard.com, palmer@sifive.com, paul.walmsley@sifive.com, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org List-Id: linux-i2c@vger.kernel.org On Thu, May 16, 2019 at 10:38:40AM +0530, Sagar Shrikant Kadam wrote: > The i2c-ocore driver already has a polling mode interface.But it needs > a workaround for FU540 Chipset on HiFive unleashed board (RevA00). > There is an erratum in FU540 chip that prevents interrupt driven i2c > transfers from working, and also the I2C controller's interrupt bit > cannot be cleared if set, due to this the existing i2c polling mode > interface added in mainline earlier doesn't work, and CPU stall's > infinitely, when-ever i2c transfer is initiated. > > Ref:previous polling mode support in mainline > > commit 69c8c0c0efa8 ("i2c: ocores: add polling interface") > > The workaround / fix under OCORES_FLAG_BROKEN_IRQ is particularly for > FU540-COOO SoC. > > Signed-off-by: Sagar Shrikant Kadam > --- > drivers/i2c/busses/i2c-ocores.c | 34 ++++++++++++++++++++++++++++------ > 1 file changed, 28 insertions(+), 6 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c > index aee1d86..00ee45c 100644 > --- a/drivers/i2c/busses/i2c-ocores.c > +++ b/drivers/i2c/busses/i2c-ocores.c > @@ -27,6 +27,7 @@ > #include > > #define OCORES_FLAG_POLL BIT(0) > +#define OCORES_FLAG_BROKEN_IRQ BIT(2) /* Broken IRQ in HiFive Unleashed */ Hi Sigar BIT(1). Don't leave a gap. Andrew