From: Wolfram Sang <w.sang@pengutronix.de>
To: sonic.zhang@analog.com
Cc: Ben Dooks <ben-linux@fluff.org>,
linux-i2c@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
uclinux-dist-devel@blackfin.uclinux.org
Subject: Re: [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt.
Date: Mon, 11 Jun 2012 18:28:07 +0200 [thread overview]
Message-ID: <20120611162807.GC3887@pengutronix.de> (raw)
In-Reply-To: <1337152826-9850-2-git-send-email-sonic.zhang@analog.com>
[-- Attachment #1: Type: text/plain, Size: 3569 bytes --]
On Wed, May 16, 2012 at 03:20:20PM +0800, sonic.zhang@analog.com wrote:
> From: Sonic Zhang <sonic.zhang@analog.com>
>
> Also wake up waiting process when transfer completes.
The description says what you do, but not why it is needed. What bug was
experienced and why is this change proper? Patch 5/8 does that quite
good.
>
> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
>
> git-svn-id: svn://localhost/svn/linux-kernel/trunk@9105 526b6c2d-f592-4532-a319-5dd88ccb003d
Please remove this line.
> ---
> drivers/i2c/busses/i2c-bfin-twi.c | 43 ++++++++++++++++++++----------------
> 1 files changed, 24 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-bfin-twi.c b/drivers/i2c/busses/i2c-bfin-twi.c
> index e6dd3c9..376e331 100644
> --- a/drivers/i2c/busses/i2c-bfin-twi.c
> +++ b/drivers/i2c/busses/i2c-bfin-twi.c
> @@ -130,21 +130,25 @@ static void bfin_twi_handle_interrupt(struct bfin_twi_iface *iface,
> }
> iface->transPtr++;
> iface->readNum--;
> - } else if (iface->manual_stop) {
> - /* Avoid possible bus stall -
> - * Flush FIFO before issuing the STOP condition
> - */
> - read_RCV_DATA16(iface);
> - write_MASTER_CTL(iface,
> - read_MASTER_CTL(iface) | STOP);
> - } else if (iface->cur_mode == TWI_I2C_MODE_REPEAT &&
> - iface->cur_msg + 1 < iface->msg_num) {
> - if (iface->pmsg[iface->cur_msg + 1].flags & I2C_M_RD)
> - write_MASTER_CTL(iface,
> - read_MASTER_CTL(iface) | RSTART | MDIR);
> - else
> + }
> +
> + if (iface->readNum == 0) {
> + if (iface->manual_stop) {
> + /* Avoid possible bus stall -
> + * Flush FIFO before issuing the STOP condition
> + */
> + read_RCV_DATA16(iface);
> write_MASTER_CTL(iface,
> - (read_MASTER_CTL(iface) | RSTART) & ~MDIR);
> + read_MASTER_CTL(iface) | STOP);
> + } else if (iface->cur_mode == TWI_I2C_MODE_REPEAT &&
> + iface->cur_msg + 1 < iface->msg_num) {
> + if (iface->pmsg[iface->cur_msg + 1].flags & I2C_M_RD)
> + write_MASTER_CTL(iface,
> + read_MASTER_CTL(iface) | RSTART | MDIR);
> + else
> + write_MASTER_CTL(iface,
> + (read_MASTER_CTL(iface) | RSTART) & ~MDIR);
> + }
> }
> }
> if (twi_int_status & MERR) {
> @@ -245,12 +249,13 @@ static void bfin_twi_handle_interrupt(struct bfin_twi_iface *iface,
> }
> }
>
> - if (iface->pmsg[iface->cur_msg].len <= 255)
> - write_MASTER_CTL(iface,
> + if (iface->pmsg[iface->cur_msg].len <= 255) {
> + write_MASTER_CTL(iface,
> (read_MASTER_CTL(iface) &
> (~(0xff << 6))) |
> - (iface->pmsg[iface->cur_msg].len << 6));
> - else {
> + (iface->pmsg[iface->cur_msg].len << 6));
> + iface->manual_stop = 0;
> + } else {
> write_MASTER_CTL(iface,
> (read_MASTER_CTL(iface) |
> (0xff << 6)));
> @@ -264,8 +269,8 @@ static void bfin_twi_handle_interrupt(struct bfin_twi_iface *iface,
> write_INT_MASK(iface, 0);
> write_MASTER_CTL(iface, 0);
> }
> + complete(&iface->complete);
> }
> - complete(&iface->complete);
> }
>
> /* Interrupt handler */
> --
> 1.7.0.4
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2012-06-11 16:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-16 7:20 [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios sonic.zhang
2012-05-16 7:20 ` [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt sonic.zhang
2012-05-24 9:18 ` Sonic Zhang
2012-06-11 16:28 ` Wolfram Sang [this message]
2012-05-16 7:20 ` [PATCH 3/8] i2c: i2c-bfin-twi: Break dead waiting loop if i2c device misbehaves sonic.zhang
2012-05-17 5:20 ` Shubhrajyoti Datta
2012-05-17 5:23 ` Mike Frysinger
2012-05-17 10:51 ` Shubhrajyoti Datta
2012-06-11 16:30 ` Wolfram Sang
2012-06-13 7:47 ` Zhang, Sonic
2012-05-16 7:20 ` [PATCH 4/8] i2c: i2c-bfin-twi: Tighten condition when failing I2C transfer if MEN bit is reset unexpectedly sonic.zhang
2012-05-17 11:30 ` Shubhrajyoti Datta
2012-05-18 2:41 ` Zhang, Sonic
2012-05-18 6:22 ` Shubhrajyoti Datta
2012-06-11 16:33 ` Wolfram Sang
2012-05-16 7:20 ` [PATCH 5/8] i2c:i2c-bfin-twi: TWI fails to restart next transfer in high system load sonic.zhang
2012-05-16 7:20 ` [PATCH 6/8] i2c:i2c-bfin-twi: include twi head file sonic.zhang
2012-05-24 9:18 ` Sonic Zhang
2012-06-11 16:34 ` Wolfram Sang
2012-05-16 7:20 ` [PATCH 7/8] i2c: i2c-bfin-twi: Move TWI peripheral pin request array to platform data sonic.zhang
2012-06-11 16:35 ` Wolfram Sang
2012-05-16 7:20 ` [PATCH 8/8] i2c: i2c-bfin-twi: Move blackfin TWI register access Macro to head file sonic.zhang
2012-05-24 9:19 ` Sonic Zhang
2012-05-25 9:48 ` Shubhrajyoti Datta
2012-05-25 9:54 ` Zhang, Sonic
2012-05-25 10:10 ` Shubhrajyoti Datta
2012-05-25 10:12 ` Zhang, Sonic
2012-05-25 10:16 ` Shubhrajyoti Datta
2012-06-11 16:36 ` Wolfram Sang
2012-05-24 9:17 ` [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios Sonic Zhang
2012-06-11 16:24 ` Wolfram Sang
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=20120611162807.GC3887@pengutronix.de \
--to=w.sang@pengutronix.de \
--cc=ben-linux@fluff.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sonic.zhang@analog.com \
--cc=uclinux-dist-devel@blackfin.uclinux.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox