linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org
Cc: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.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-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 3680 bytes --]

On Wed, May 16, 2012 at 03:20:20PM +0800, sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org wrote:
> From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
> 
> 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-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
> 
> 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-u79uwXL29TY76Z2rM5mHXA@public.gmane.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 --]

  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
     [not found] ` <1337152826-9850-1-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-16  7:20   ` [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt sonic.zhang-OyLXuOCK7orQT0dZR+AlfA
2012-05-24  9:18     ` Sonic Zhang
     [not found]     ` <1337152826-9850-2-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-3-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-17  5:20       ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2csTziLb0niCTj6oW9G=BPa2VWN58rW2jF-A1VJKXwNfCQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-17  5:23           ` Mike Frysinger
     [not found]             ` <CAMjpGUf-AQHigrpBhxmOGJZgjfqfCWvRa29wURpGkVuj58suPg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-17 10:51               ` Shubhrajyoti Datta
2012-06-11 16:30     ` Wolfram Sang
     [not found]       ` <20120611163044.GD3887-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-4-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-17 11:30       ` Shubhrajyoti Datta
2012-05-18  2:41         ` Zhang, Sonic
     [not found]           ` <DB904C5425BA6F4E8424B3B51A1414D16F64F8527E-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-18  6:22             ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2cta_a2XcOLoOnnUUjZOpj1phUH99xfgZnh4nhxG8QX3-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
2012-05-16  7:20   ` [PATCH 6/8] i2c:i2c-bfin-twi: include twi head file sonic.zhang-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-6-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-7-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-8-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-24  9:19       ` Sonic Zhang
2012-05-25  9:48       ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2csSuQ3R9U=XKwj9F0xijTxx_ULperAiQYD_X3a5GKVjFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-25  9:54           ` Zhang, Sonic
     [not found]             ` <DB904C5425BA6F4E8424B3B51A1414D170230E5ADF-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-25 10:10               ` Shubhrajyoti Datta
2012-05-25 10:12                 ` Zhang, Sonic
     [not found]                   ` <DB904C5425BA6F4E8424B3B51A1414D170230E5AF6-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-25 10:16                     ` Shubhrajyoti Datta
2012-06-11 16:36                       ` Wolfram Sang
2012-06-11 16:24   ` [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios Wolfram Sang
2012-05-24  9:17 ` Sonic Zhang

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-bicnvbalz9megne8c9+irq@public.gmane.org \
    --cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org \
    --cc=uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.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;
as well as URLs for NNTP newsgroup(s).