Hi Andrew, On Thu, May 16, 2019 at 6:37 PM Andrew Lunn <andrew@xxxxxxx> wrote: > > 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 <sagar.kadam@xxxxxxxxxx> > > --- > > 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 <linux/jiffies.h> > > > > #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. I will remove the gap and update this in V4. Thanks, Sagar > > Andrew