From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752853AbbCJN4J (ORCPT ); Tue, 10 Mar 2015 09:56:09 -0400 Received: from eusmtp01.atmel.com ([212.144.249.243]:8339 "EHLO eusmtp01.atmel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752233AbbCJN4G (ORCPT ); Tue, 10 Mar 2015 09:56:06 -0400 Date: Tue, 10 Mar 2015 14:55:20 +0100 From: Ludovic Desroches To: Wolfram Sang CC: , , , , Benjamin Herrenschmidt , Ludovic Desroches , Yingjoe Chen , Eddie Huang , Subject: Re: [RFC V2 03/12] i2c: at91: make use of the new infrastructure for quirks Message-ID: <20150310135520.GY9132@odux.rfo.atmel.com> Mail-Followup-To: Wolfram Sang , linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-mips@linux-mips.org, Benjamin Herrenschmidt , Yingjoe Chen , Eddie Huang , linux-kernel@vger.kernel.org References: <1424880126-15047-1-git-send-email-wsa@the-dreams.de> <1424880126-15047-4-git-send-email-wsa@the-dreams.de> <20150308082845.GB1904@katana> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20150308082845.GB1904@katana> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Wolfram, You can add my Acked-by and Tested-By: Ludovic Desroches Tested on sama5d3, some problems with at24 eeprom on sama5d4 but it doesn't come from the i2c quirks patch series. Regards Ludovic On Sun, Mar 08, 2015 at 09:28:45AM +0100, Wolfram Sang wrote: > On Wed, Feb 25, 2015 at 05:01:54PM +0100, Wolfram Sang wrote: > > From: Wolfram Sang > > > > Signed-off-by: Wolfram Sang > > Hi Ludovic, > > if you have a few minutes, could you please test this series? I'd like to > include it in 4.1. and because at91 is using the quirk infrastructure in > a more complex way, it is a really good test candidate. > > Thanks, > > Wolfram > > > --- > > drivers/i2c/busses/i2c-at91.c | 32 +++++++++++--------------------- > > 1 file changed, 11 insertions(+), 21 deletions(-) > > > > diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c > > index 636fd2efad8850..b3a70e8fc653c5 100644 > > --- a/drivers/i2c/busses/i2c-at91.c > > +++ b/drivers/i2c/busses/i2c-at91.c > > @@ -487,30 +487,10 @@ static int at91_twi_xfer(struct i2c_adapter *adap, struct i2c_msg *msg, int num) > > if (ret < 0) > > goto out; > > > > - /* > > - * The hardware can handle at most two messages concatenated by a > > - * repeated start via it's internal address feature. > > - */ > > - if (num > 2) { > > - dev_err(dev->dev, > > - "cannot handle more than two concatenated messages.\n"); > > - ret = 0; > > - goto out; > > - } else if (num == 2) { > > + if (num == 2) { > > int internal_address = 0; > > int i; > > > > - if (msg->flags & I2C_M_RD) { > > - dev_err(dev->dev, "first transfer must be write.\n"); > > - ret = -EINVAL; > > - goto out; > > - } > > - if (msg->len > 3) { > > - dev_err(dev->dev, "first message size must be <= 3.\n"); > > - ret = -EINVAL; > > - goto out; > > - } > > - > > /* 1st msg is put into the internal address, start with 2nd */ > > m_start = &msg[1]; > > for (i = 0; i < msg->len; ++i) { > > @@ -540,6 +520,15 @@ out: > > return ret; > > } > > > > +/* > > + * The hardware can handle at most two messages concatenated by a > > + * repeated start via it's internal address feature. > > + */ > > +static struct i2c_adapter_quirks at91_twi_quirks = { > > + .flags = I2C_AQ_COMB | I2C_AQ_COMB_WRITE_FIRST | I2C_AQ_COMB_SAME_ADDR, > > + .max_comb_1st_msg_len = 3, > > +}; > > + > > static u32 at91_twi_func(struct i2c_adapter *adapter) > > { > > return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL > > @@ -777,6 +766,7 @@ static int at91_twi_probe(struct platform_device *pdev) > > dev->adapter.owner = THIS_MODULE; > > dev->adapter.class = I2C_CLASS_DEPRECATED; > > dev->adapter.algo = &at91_twi_algorithm; > > + dev->adapter.quirks = &at91_twi_quirks; > > dev->adapter.dev.parent = dev->dev; > > dev->adapter.nr = pdev->id; > > dev->adapter.timeout = AT91_I2C_TIMEOUT; > > -- > > 2.1.4 > >