All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Sebastian Heutling
	<heutling-U9zb0o/1OQCELgA04lAiVw@public.gmane.org>
Subject: Re: [PATCH 1/1] spi: Fix "not ready" timeout after write in at25
Date: Thu, 2 Jul 2009 18:48:36 -0700	[thread overview]
Message-ID: <200907021848.36757.david-b@pacbell.net> (raw)
In-Reply-To: <4A2CE07F.2060302-U9zb0o/1OQCELgA04lAiVw@public.gmane.org>

On Monday 08 June 2009, Sebastian Heutling wrote:
> Under certain circumstances msleep(1) within the loop, which waits
> for the EEPROM to be finished, might take longer than the timeout.
> On the next loop the status register might return to be ready and 
> therefore the loop finishes. The following check now tests if
> a timeout occurred and if so returns an error although the device
> reported to be finished.
> This fix replaces testing the occurrence of the timeout by testing
> the "not ready" bit in the status register.
> The patch is against 2.6.29.2.

This got badly mangled by your mailer.  Care to re-send?

> 
> Signed-off-by: Sebastian Heutling <heutling-U9zb0o/1OQCELgA04lAiVw@public.gmane.org>
> 
> ---
>   drivers/misc/eeprom/at25.c |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/misc/eeprom/at25.c b/drivers/misc/eeprom/at25.c
> index 290dbe9..ea83604 100644
> --- a/drivers/misc/eeprom/at25.c
> +++ b/drivers/misc/eeprom/at25.c
> @@ -160,6 +160,7 @@ at25_ee_write(struct at25_data *at25, char *buf, 
> loff_t off, size_t count)
>   	bounce[0] = AT25_WRITE;
>   	mutex_lock(&at25->lock);
>   	do {
> +		int	sr;
>   		unsigned long	timeout, retries;
>   		unsigned	segment;
>   		unsigned	offset = (unsigned) off;
> @@ -205,7 +206,6 @@ at25_ee_write(struct at25_data *at25, char *buf, 
> loff_t off, size_t count)
>   		timeout = jiffies + msecs_to_jiffies(EE_TIMEOUT);
>   		retries = 0;
>   		do {
> -			int	sr;
>    			sr = spi_w8r8(at25->spi, AT25_RDSR);
>   			if (sr < 0 || (sr & AT25_SR_nRDY)) {
> @@ -219,7 +219,7 @@ at25_ee_write(struct at25_data *at25, char *buf, 
> loff_t off, size_t count)
>   				break;
>   		} while (retries++ < 3 || time_before_eq(jiffies, timeout));
>   -		if (time_after(jiffies, timeout)) {
> +		if ((sr < 0) || (sr & AT25_SR_nRDY)) {
>   			dev_err(&at25->spi->dev,
>   				"write %d bytes offset %d, "
>   				"timeout after %u msecs\n",
> -- 
> 1.6.3.2

------------------------------------------------------------------------------

  parent reply	other threads:[~2009-07-03  1:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-08  9:57 [PATCH 1/1] spi: Fix "not ready" timeout after write in at25 Sebastian Heutling
     [not found] ` <4A2CE07F.2060302-U9zb0o/1OQCELgA04lAiVw@public.gmane.org>
2009-07-03  1:48   ` David Brownell [this message]
  -- strict thread matches above, loose matches on Subject: below --
2009-07-03  7:10 Sebastian Heutling

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=200907021848.36757.david-b@pacbell.net \
    --to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
    --cc=heutling-U9zb0o/1OQCELgA04lAiVw@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@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 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.