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 <[email protected]>
> 
> ---
>   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

------------------------------------------------------------------------------
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to