From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Christ, Austin" Subject: Re: [PATCH v2 2/2] i2c: qup: support SMBus block read Date: Mon, 23 May 2016 11:45:51 -0600 Message-ID: <4ca84ab1-f558-25b1-2fa5-dbcf9e8cc2e7@codeaurora.org> References: <1463006736-24652-1-git-send-email-nkaje@codeaurora.org> <1463006736-24652-2-git-send-email-nkaje@codeaurora.org> <000d01d1b0d3$d70e1f30$852a5d90$@codeaurora.org> <757c18e2-562a-9f43-0fb6-ab3e7ac3af88@codeaurora.org> <000501d1b271$fef3bc90$fcdb35b0$@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]:45734 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751429AbcEWRpx (ORCPT ); Mon, 23 May 2016 13:45:53 -0400 In-Reply-To: <000501d1b271$fef3bc90$fcdb35b0$@codeaurora.org> Sender: linux-i2c-owner@vger.kernel.org List-Id: linux-i2c@vger.kernel.org To: Sricharan , 'Naveen Kaje' , wsa@the-dreams.de, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org, rruigrok@codeaurora.org, timur@codeaurora.org, cov@codeaurora.org, linux-arm-kernel@lists.infradead.org On 5/20/2016 2:31 AM, Sricharan wrote: > Hi, > > >>>> @@ -1128,6 +1173,22 @@ static int qup_i2c_read_one_v2(struct >>>> qup_i2c_dev *qup, struct i2c_msg *msg) >>>> goto err; >>>> >>>> qup->blk.pos++; >>>> + >>>> + /* Handle SMBus block read length */ >>>> + if (qup_i2c_check_msg_len(msg) && (msg->len == 1)) { >>>> + if (msg->buf[0] > I2C_SMBUS_BLOCK_MAX) { >>>> + ret = -EPROTO; >>>> + goto err; >>>> + } >>>> + msg->len += msg->buf[0]; >>>> + qup->pos = 0; >>>> + qup_i2c_set_read_mode_v2(qup, msg->len); >>>> + qup_i2c_issue_xfer_v2(qup, msg); >>>> + ret = qup_i2c_wait_for_complete(qup, msg); >>>> + if (ret) >>>> + goto err; >>> Is the issue_xfer_v2 needed inside this here ? >> No, qup_i2c_issue_xfer_v2 is needed so that we read rest of the data >> that is indicated by the length we read earlier. > So qup_i2c_issue_xfer_v2 writes the tags and there is one already in the loop above this > check. So if you just do qup_i2c_set_read_mode_v2 and qup_i2c_set_blk_data inside this > check, will not be enough ? > > Regards, > Sricharan > In testing, removing the call to qup_i2c_issue_xfer_v2() within the conditional statement for SMBus length causes failures. That transfer request is needed to read that block of data. Thanks, Austin