linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vitaly Wool <vitalywool-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Linus Walleij <linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>
Cc: Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Magnus Templing
	<magnus.templing-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/2] spi/pl022: timeout on polled transfer v2
Date: Thu, 19 May 2011 19:04:29 +0200	[thread overview]
Message-ID: <BANLkTi=s4nzi=5f+Vvh3ABuspnKXQVUfLw@mail.gmail.com> (raw)
In-Reply-To: <1305821134-26147-1-git-send-email-linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>

Hi Linus,

On Thu, May 19, 2011 at 6:05 PM, Linus Walleij
<linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org> wrote:
> From: Magnus Templing <magnus.templing-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>
>
> This adds the missing handling of polling timeouts and deletes
> our last todo.
>
> Signed-off-by: Magnus Templing <magnus.templing-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>
> Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>
> [Fixups from review by Wolfram Sang]
> Signed-off-by: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
>  drivers/spi/amba-pl022.c |   23 +++++++++++++++--------
>  1 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/spi/amba-pl022.c b/drivers/spi/amba-pl022.c
> index 08de58e..18667de 100644
> --- a/drivers/spi/amba-pl022.c
> +++ b/drivers/spi/amba-pl022.c
> @@ -24,11 +24,6 @@
>  * GNU General Public License for more details.
>  */
>
> -/*
> - * TODO:
> - * - add timeout on polled transfers
> - */
> -
>  #include <linux/init.h>
>  #include <linux/module.h>
>  #include <linux/device.h>
> @@ -287,6 +282,8 @@
>
>  #define CLEAR_ALL_INTERRUPTS  0x3
>
> +#define SPI_POLLING_TIMEOUT 1000
> +
>
>  /*
>  * The type of reading going on on this chip
> @@ -1378,6 +1375,7 @@ static void do_polling_transfer(struct pl022 *pl022)
>        struct spi_transfer *transfer = NULL;
>        struct spi_transfer *previous = NULL;
>        struct chip_data *chip;
> +       unsigned long time, timeout;
>
>        chip = pl022->cur_chip;
>        message = pl022->cur_msg;
> @@ -1415,9 +1413,18 @@ static void do_polling_transfer(struct pl022 *pl022)
>                       SSP_CR1(pl022->virtbase));
>
>                dev_dbg(&pl022->adev->dev, "polling transfer ongoing ...\n");
> -               /* FIXME: insert a timeout so we don't hang here indefinitely */
> -               while (pl022->tx < pl022->tx_end || pl022->rx < pl022->rx_end)
> +
> +               timeout = jiffies + msecs_to_jiffies(SPI_POLLING_TIMEOUT);
> +               while (pl022->tx < pl022->tx_end || pl022->rx < pl022->rx_end) {
> +                       time = jiffies;
>                        readwriter(pl022);
> +                       if (time_after(time, timeout)) {
> +                               dev_warn(&pl022->adev->dev,
> +                               "%s: timeout!\n", __func__);
> +                               message->state = STATE_ERROR;
> +                               goto out;
> +                       }
> +               }

just out of curiosity: is it a busy wait? Looks like it is...

Thanks,
   Vitaly

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay

  parent reply	other threads:[~2011-05-19 17:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-19 16:05 [PATCH 1/2] spi/pl022: timeout on polled transfer v2 Linus Walleij
2011-05-19 16:55 ` Grant Likely
     [not found] ` <1305821134-26147-1-git-send-email-linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org>
2011-05-19 17:04   ` Vitaly Wool [this message]
2011-05-19 17:36     ` Linus Walleij
2011-05-19 17:40       ` Vitaly Wool
2011-05-19 18:06         ` Linus Walleij

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='BANLkTi=s4nzi=5f+Vvh3ABuspnKXQVUfLw@mail.gmail.com' \
    --to=vitalywool-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org \
    --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=magnus.templing-0IS4wlFg1OjSUeElwK9/Pw@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 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).