From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Michal Suchanek <hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Ian Campbell
<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/9] spi: sunxi: fix transfer timeout
Date: Thu, 20 Aug 2015 16:43:07 +0200 [thread overview]
Message-ID: <20150820144307.GT30520@lukather> (raw)
In-Reply-To: <0e0b52774a48ddb71dc8095b66942451cd31ff7d.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1904 bytes --]
On Thu, Aug 20, 2015 at 02:19:45PM -0000, Michal Suchanek wrote:
> The trasfer timeout is fixed at 1000 ms. Reading a 4Mbyte flash over
> 1MHz SPI bus takes way longer than that. Calculate the timeout from the
> actual time the transfer is supposed to take and multiply by 2 for good
> measure.
>
> Signed-off-by: Michal Suchanek <hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
> drivers/spi/spi-sun4i.c | 10 +++++++++-
> drivers/spi/spi-sun6i.c | 10 +++++++++-
> 2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
> index fbb0a4d..48532ec 100644
> --- a/drivers/spi/spi-sun4i.c
> +++ b/drivers/spi/spi-sun4i.c
> @@ -170,6 +170,7 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> {
> struct sun4i_spi *sspi = spi_master_get_devdata(master);
> unsigned int mclk_rate, div, timeout;
> + unsigned int start, end, tx_time;
> unsigned int tx_len = 0;
> int ret = 0;
> u32 reg;
> @@ -279,9 +280,16 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
> sun4i_spi_write(sspi, SUN4I_CTL_REG, reg | SUN4I_CTL_XCH);
>
> + tx_time = max_t(int, tfr->len * 8 * 2 / (speed / 1000), 100);
> + start = jiffies;
> timeout = wait_for_completion_timeout(&sspi->done,
> - msecs_to_jiffies(1000));
> + msecs_to_jiffies(tx_time));
> + end = jiffies;
> if (!timeout) {
> + dev_warn(&master->dev,
> + "%s: timeout transferring %u bytes@%iHz for %i(%i)ms",
> + dev_name(&spi->dev), tfr->len, speed,
> + jiffies_to_msecs(end - start), tx_time);
Timeout already contains the number of jiffies elapsed (and I'm not
sure anyone reading that message would get that the last number is
actually the maximum timeout).
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: maxime.ripard@free-electrons.com (Maxime Ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/9] spi: sunxi: fix transfer timeout
Date: Thu, 20 Aug 2015 16:43:07 +0200 [thread overview]
Message-ID: <20150820144307.GT30520@lukather> (raw)
In-Reply-To: <0e0b52774a48ddb71dc8095b66942451cd31ff7d.1440080122.git.hramrach@gmail.com>
On Thu, Aug 20, 2015 at 02:19:45PM -0000, Michal Suchanek wrote:
> The trasfer timeout is fixed at 1000 ms. Reading a 4Mbyte flash over
> 1MHz SPI bus takes way longer than that. Calculate the timeout from the
> actual time the transfer is supposed to take and multiply by 2 for good
> measure.
>
> Signed-off-by: Michal Suchanek <hramrach@gmail.com>
> ---
> drivers/spi/spi-sun4i.c | 10 +++++++++-
> drivers/spi/spi-sun6i.c | 10 +++++++++-
> 2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
> index fbb0a4d..48532ec 100644
> --- a/drivers/spi/spi-sun4i.c
> +++ b/drivers/spi/spi-sun4i.c
> @@ -170,6 +170,7 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> {
> struct sun4i_spi *sspi = spi_master_get_devdata(master);
> unsigned int mclk_rate, div, timeout;
> + unsigned int start, end, tx_time;
> unsigned int tx_len = 0;
> int ret = 0;
> u32 reg;
> @@ -279,9 +280,16 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
> sun4i_spi_write(sspi, SUN4I_CTL_REG, reg | SUN4I_CTL_XCH);
>
> + tx_time = max_t(int, tfr->len * 8 * 2 / (speed / 1000), 100);
> + start = jiffies;
> timeout = wait_for_completion_timeout(&sspi->done,
> - msecs_to_jiffies(1000));
> + msecs_to_jiffies(tx_time));
> + end = jiffies;
> if (!timeout) {
> + dev_warn(&master->dev,
> + "%s: timeout transferring %u bytes@%iHz for %i(%i)ms",
> + dev_name(&spi->dev), tfr->len, speed,
> + jiffies_to_msecs(end - start), tx_time);
Timeout already contains the number of jiffies elapsed (and I'm not
sure anyone reading that message would get that the last number is
actually the maximum timeout).
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150820/ca920d73/attachment.sig>
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: Michal Suchanek <hramrach@gmail.com>
Cc: linux-sunxi@googlegroups.com, Rob Herring <robh+dt@kernel.org>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Russell King <linux@arm.linux.org.uk>,
Mark Brown <broonie@kernel.org>,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org
Subject: Re: [PATCH 1/9] spi: sunxi: fix transfer timeout
Date: Thu, 20 Aug 2015 16:43:07 +0200 [thread overview]
Message-ID: <20150820144307.GT30520@lukather> (raw)
In-Reply-To: <0e0b52774a48ddb71dc8095b66942451cd31ff7d.1440080122.git.hramrach@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1925 bytes --]
On Thu, Aug 20, 2015 at 02:19:45PM -0000, Michal Suchanek wrote:
> The trasfer timeout is fixed at 1000 ms. Reading a 4Mbyte flash over
> 1MHz SPI bus takes way longer than that. Calculate the timeout from the
> actual time the transfer is supposed to take and multiply by 2 for good
> measure.
>
> Signed-off-by: Michal Suchanek <hramrach@gmail.com>
> ---
> drivers/spi/spi-sun4i.c | 10 +++++++++-
> drivers/spi/spi-sun6i.c | 10 +++++++++-
> 2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
> index fbb0a4d..48532ec 100644
> --- a/drivers/spi/spi-sun4i.c
> +++ b/drivers/spi/spi-sun4i.c
> @@ -170,6 +170,7 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> {
> struct sun4i_spi *sspi = spi_master_get_devdata(master);
> unsigned int mclk_rate, div, timeout;
> + unsigned int start, end, tx_time;
> unsigned int tx_len = 0;
> int ret = 0;
> u32 reg;
> @@ -279,9 +280,16 @@ static int sun4i_spi_transfer_one(struct spi_master *master,
> reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
> sun4i_spi_write(sspi, SUN4I_CTL_REG, reg | SUN4I_CTL_XCH);
>
> + tx_time = max_t(int, tfr->len * 8 * 2 / (speed / 1000), 100);
> + start = jiffies;
> timeout = wait_for_completion_timeout(&sspi->done,
> - msecs_to_jiffies(1000));
> + msecs_to_jiffies(tx_time));
> + end = jiffies;
> if (!timeout) {
> + dev_warn(&master->dev,
> + "%s: timeout transferring %u bytes@%iHz for %i(%i)ms",
> + dev_name(&spi->dev), tfr->len, speed,
> + jiffies_to_msecs(end - start), tx_time);
Timeout already contains the number of jiffies elapsed (and I'm not
sure anyone reading that message would get that the last number is
actually the maximum timeout).
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-08-20 14:43 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 14:15 [PATCH 0/9] spi/sunxi patches Michal Suchanek
2015-08-20 14:15 ` Michal Suchanek
2015-08-20 14:15 ` Michal Suchanek
[not found] ` <cover.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:19 ` [PATCH 1/9] spi: sunxi: fix transfer timeout Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
[not found] ` <0e0b52774a48ddb71dc8095b66942451cd31ff7d.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:43 ` Maxime Ripard [this message]
2015-08-20 14:43 ` Maxime Ripard
2015-08-20 14:43 ` Maxime Ripard
2015-08-20 18:41 ` Mark Brown
2015-08-20 18:41 ` Mark Brown
2015-08-20 18:41 ` Mark Brown
[not found] ` <20150820184132.GO12027-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-08-20 19:34 ` Maxime Ripard
2015-08-20 19:34 ` Maxime Ripard
2015-08-20 19:34 ` Maxime Ripard
2015-08-20 21:08 ` Mark Brown
2015-08-20 21:08 ` Mark Brown
2015-08-20 21:08 ` Mark Brown
[not found] ` <20150820210830.GS12027-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-08-20 21:18 ` Maxime Ripard
2015-08-20 21:18 ` Maxime Ripard
2015-08-20 21:18 ` Maxime Ripard
2015-08-20 21:29 ` Mark Brown
2015-08-20 21:29 ` Mark Brown
2015-08-20 21:29 ` Mark Brown
2015-08-20 14:19 ` [PATCH 2/9] spi: sun4i: fix FIFO limit Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
[not found] ` <a40fbf7ca8bd36f08f5e9d3fb6f6de2454066af7.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:45 ` Maxime Ripard
2015-08-20 14:45 ` Maxime Ripard
2015-08-20 14:45 ` Maxime Ripard
2015-08-20 14:19 ` [PATCH 4/9] spi: sun4i: add DMA support Emilio López
2015-08-20 14:19 ` Emilio López
2015-08-20 14:19 ` Emilio López
[not found] ` <ccf776869b0d7fe2c78bcc41d6cd1896bf732296.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:24 ` [linux-sunxi] " Michal Suchanek
2015-08-20 14:24 ` Michal Suchanek
2015-08-20 14:24 ` Michal Suchanek
2015-08-20 14:56 ` Maxime Ripard
2015-08-20 14:56 ` Maxime Ripard
2015-08-20 14:56 ` Maxime Ripard
2015-08-20 18:58 ` Mark Brown
2015-08-20 18:58 ` Mark Brown
2015-08-20 18:58 ` Mark Brown
[not found] ` <20150820185850.GQ12027-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2016-05-17 5:44 ` Michal Suchanek
2016-05-17 5:44 ` [linux-sunxi] " Michal Suchanek
2016-05-17 5:44 ` Michal Suchanek
2015-08-20 19:00 ` Mark Brown
2015-08-20 19:00 ` Mark Brown
2015-08-20 19:00 ` Mark Brown
2015-08-20 14:19 ` [PATCH 5/9] ARM: dts: sun7i: cubieboard2: Enable SPI0 Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
[not found] ` <a5a061d98b7ff851866cc668cd8bf8f6fc99d002.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:58 ` Maxime Ripard
2015-08-20 14:58 ` Maxime Ripard
2015-08-20 14:58 ` Maxime Ripard
2015-08-20 14:19 ` [PATCH 3/9] spi: sunxi: check that transfer speed is non-zero Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
[not found] ` <3688fab67e7cdc7bcbff73dfd6b0fcdcc4e79eb6.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 14:48 ` Maxime Ripard
2015-08-20 14:48 ` Maxime Ripard
2015-08-20 14:48 ` Maxime Ripard
2015-08-20 19:45 ` Michal Suchanek
2015-08-20 19:45 ` Michal Suchanek
2015-08-20 19:45 ` Michal Suchanek
[not found] ` <CAOMqctSfdxWeWDogzHxONE+Qxf7vp6rJnBmxECV89PQO0hXARg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-20 21:23 ` Maxime Ripard
2015-08-20 21:23 ` Maxime Ripard
2015-08-20 21:23 ` Maxime Ripard
2015-08-20 18:45 ` Mark Brown
2015-08-20 18:45 ` Mark Brown
2015-08-20 18:45 ` Mark Brown
2015-08-20 14:19 ` [PATCH 7/9] ARM: dts: sun5i: add SPI pins on A13 and A10s Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
[not found] ` <90730047894f6ec84cd70062a27b7085c2016260.1440080122.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20 15:00 ` Maxime Ripard
2015-08-20 15:00 ` Maxime Ripard
2015-08-20 15:00 ` Maxime Ripard
2015-08-20 14:19 ` [PATCH 6/9] ARM: dts: sunxi: add spi aliases on cubieboards Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` [PATCH 9/9] ARM: dts: sunxi: Add SPI aliases on A10s Olinuxino Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` [PATCH 8/9] ARM: dts: sunxi: A10s Olinuxino Micro: add spi2 Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
2015-08-20 14:19 ` Michal Suchanek
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=20150820144307.GT30520@lukather \
--to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@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.