All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Nikula <jarkko.nikula@linux.intel.com>
To: Sultan Alsawaf <sultan@kerneltoast.com>
Cc: aaron.ma@canonical.com, admin@kryma.net,
	andriy.shevchenko@linux.intel.com, benjamin.tissoires@redhat.com,
	hdegoede@redhat.com, hn.chen@weidahitech.com, jikos@kernel.org,
	kai.heng.feng@canonical.com, linux-i2c@vger.kernel.org,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
	mika.westerberg@linux.intel.com, vicamo.yang@canonical.com,
	wsa@kernel.org
Subject: Re: [PATCH v3] i2c: Squash of SMBus block read patchset to save power
Date: Wed, 16 Sep 2020 17:09:18 +0300	[thread overview]
Message-ID: <796a23d2-cb98-c431-3494-b59044189468@linux.intel.com> (raw)
In-Reply-To: <20200915174844.GA16807@sultan-box.localdomain>

On 9/15/20 8:48 PM, Sultan Alsawaf wrote:
> On Tue, Sep 15, 2020 at 02:55:48PM +0300, Jarkko Nikula wrote:
>> I tested this on top of fc4f28bb3daf ("Merge tag 'for-5.9-rc5-tag' of
>> git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux") and seems to be
>> working fine. What was the key change compared to previous version that was
>> regressing for me?
> 
> This change fixed your issue (and my issue with 5.8):
> --- a/drivers/i2c/busses/i2c-designware-master.c
> +++ b/drivers/i2c/busses/i2c-designware-master.c
> @@ -395,8 +395,9 @@ i2c_dw_recv_len(struct dw_i2c_dev *dev, u8 len)
>   	 * Adjust the buffer length and mask the flag
>   	 * after receiving the first byte.
>   	 */
> -	len += (flags & I2C_CLIENT_PEC) ? 2 : 1;
> -	dev->tx_buf_len = len - min_t(u8, len, dev->rx_outstanding);
> +	if (flags & I2C_CLIENT_PEC)
> +		len++;
> +	dev->tx_buf_len = len - min_t(u8, len - 1, dev->rx_outstanding);
>   	msgs[dev->msg_read_idx].len = len;
>   	msgs[dev->msg_read_idx].flags &= ~I2C_M_RECV_LEN;
> 
> I've attributed this change with the following commit message:
> "i2c: designware: Ensure tx_buf_len is nonzero for SMBus block reads
> 
> The point of adding a byte to len in i2c_dw_recv_len() is to make sure
> that tx_buf_len is nonzero, so that i2c_dw_xfer_msg() can let the i2c
> controller know that the i2c transaction can end. Otherwise, the i2c
> controller will think that the transaction can never end for block
> reads, which results in the stop-detection bit never being set and thus
> the transaction timing out.
> 
> Adding a byte to len is not a reliable way to do this though; sometimes
> it lets tx_buf_len become zero, which results in the scenario described
> above. Therefore, just directly ensure tx_buf_len cannot be zero to fix
> the issue."
> 
Ok, nice that you found it.

> Does the patch series look good to submit?
> 
Yes, go ahead.

Jarkko

  reply	other threads:[~2020-09-16 17:51 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-14 21:02 [PATCH 0/2] i2c-hid: Save power by reducing i2c xfers with block reads Sultan Alsawaf
2020-06-14 21:02 ` [PATCH 1/2] i2c: designware: Only check the first byte for SMBus block read length Sultan Alsawaf
2020-06-15  9:40   ` Andy Shevchenko
2020-06-15 16:03     ` Sultan Alsawaf
2020-06-15 16:07       ` Andy Shevchenko
2020-06-15 17:15         ` Sultan Alsawaf
2020-06-16 13:22   ` Jarkko Nikula
2020-06-16 15:43     ` [PATCH v2] " Sultan Alsawaf
2020-06-17 11:08       ` Jarkko Nikula
2020-06-14 21:02 ` [PATCH 2/2] HID: i2c-hid: Use block reads when possible to save power Sultan Alsawaf
2020-06-16 13:43   ` Jarkko Nikula
2020-06-16 15:49     ` [PATCH v2] " Sultan Alsawaf
2020-06-16 16:41       ` Andy Shevchenko
2020-06-16 17:18         ` Andi Shyti
2020-06-16 17:32           ` Sultan Alsawaf
2020-06-16 18:02             ` Andi Shyti
2020-06-16 18:17               ` Sultan Alsawaf
2020-06-17 11:17       ` Jarkko Nikula
2020-06-29 17:43         ` Sultan Alsawaf
2020-07-01  8:04           ` Jarkko Nikula
2020-07-01 15:00             ` Sultan Alsawaf
2020-07-03 11:18               ` Jarkko Nikula
2020-09-14  0:15                 ` [PATCH v3] i2c: Squash of SMBus block read patchset " Sultan Alsawaf
     [not found]                   ` <bcf9cd02-13d1-8f87-8ef9-2f05f0b54808@linux.intel.com>
2020-09-15 17:48                     ` Sultan Alsawaf
2020-09-16 14:09                       ` Jarkko Nikula [this message]
2020-09-15 20:44                   ` Jiri Kosina
2020-06-22  0:58   ` [HID] 0b987151f0: kmsg.i2c_designware_i2c_designware.#: controller_timed_out kernel test robot
2020-06-22  0:58     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=796a23d2-cb98-c431-3494-b59044189468@linux.intel.com \
    --to=jarkko.nikula@linux.intel.com \
    --cc=aaron.ma@canonical.com \
    --cc=admin@kryma.net \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=hdegoede@redhat.com \
    --cc=hn.chen@weidahitech.com \
    --cc=jikos@kernel.org \
    --cc=kai.heng.feng@canonical.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=sultan@kerneltoast.com \
    --cc=vicamo.yang@canonical.com \
    --cc=wsa@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.