From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757494AbcCDL0y (ORCPT ); Fri, 4 Mar 2016 06:26:54 -0500 Received: from mail.dev.rtsoft.ru ([213.79.90.226]:45376 "EHLO mail.dev.rtsoft.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750870AbcCDL0s (ORCPT ); Fri, 4 Mar 2016 06:26:48 -0500 X-Greylist: delayed 1223 seconds by postgrey-1.27 at vger.kernel.org; Fri, 04 Mar 2016 06:26:47 EST DKIM-Filter: OpenDKIM Filter v2.10.3 mail.dev.rtsoft.ru 829BA416B4 Subject: Re: [PATCH] i2c: imx: add slave support. v2 To: Wolfram Sang , Dmitriy Baranov References: <1453824880-4844-1-git-send-email-dbaranov@dev.rtsoft.ru> <20160303213509.GF1501@katana> Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org From: Maxim Syrchin Message-ID: <56D96C22.8030104@dev.rtsoft.ru> Date: Fri, 4 Mar 2016 14:06:10 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160303213509.GF1501@katana> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Wolfram, I'm now working on creating new driver version. I think I'll be able to sent it soon. 04.03.2016 0:35, Wolfram Sang пишет: >> There are might be race conditions. > Can you name them Most of races are fixed already. There were some issues with interrupt latencies - sometimes slave interrupt appears in process of starting master xfer. >> +enum imx_i2c_slave_state { >> + I2C_IMX_SLAVE_IDLE, >> + I2C_IMX_SLAVE_IRQ, >> + I2C_IMX_SLAVE_POLLING > Highlevel question first: Why do you have polling? Why would anyone not > want to use interrupts here? Since imx doesn't generate interrupt on "bus stop" condition we'd had to implement polling scheme. Interrupts are used for starting polling and for waking polling loop on new slave request. Without polling we can't handle "end-of-packet" event correctly. In current version states are: I2C_IMX_SLAVE_IDLE // default state. slave process is waiting for interrupt I2C_IMX_SLAVE_POLLING // slave transfer is in process. I2C_IMX_MASTER // master transfer is in process.