public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Jagan Teki <jagan@amarulasolutions.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 22/34] spi: mpc8xxx: Use get_timer
Date: Tue, 20 Nov 2018 18:18:02 +0530	[thread overview]
Message-ID: <20181120124814.23293-23-jagan@amarulasolutions.com> (raw)
In-Reply-To: <20181120124814.23293-1-jagan@amarulasolutions.com>

From: Mario Six <mario.six@gdsys.cc>

The comment before the transmission loop in conjunction with the
definition of SPI_TIMEOUT as 1000 implies that the loop is supposed to
have a timeout value of 1000 ms. But since there is no mdelay(1) or
similar in the loop body, the loop just runs 1000 times, without regard
for the time elapsed.

To correct this, use the standard get_timer functionality to properly
time out the loop after 1000 ms.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
---
 drivers/spi/mpc8xxx_spi.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index e09e91c8e9..63e1a150f8 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -112,9 +112,9 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 
 	/* Handle data in 32-bit chunks */
 	while (num_blks--) {
-		int tm;
 		u32 tmpdout = 0;
 		uchar xfer_bitlen = (bitlen >= 32 ? 32 : bitlen);
+		ulong start;
 
 		clrbits_be32(&spi->mode, SPI_MODE_EN);
 
@@ -148,7 +148,8 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 		 * or time out (1 second = 1000 ms)
 		 * The NE event must be read and cleared first
 		 */
-		for (tm = 0; tm < SPI_TIMEOUT; ++tm) {
+		start = get_timer(0);
+		do {
 			u32 event = in_be32(&spi->event);
 			bool have_ne = event & SPI_EV_NE;
 			bool have_nf = event & SPI_EV_NF;
@@ -173,9 +174,11 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 			 */
 			if (have_nf)
 				break;
-		}
 
-		if (tm >= SPI_TIMEOUT)
+			mdelay(1);
+		} while (get_timer(start) < SPI_TIMEOUT);
+
+		if (get_timer(start) >= SPI_TIMEOUT)
 			debug("*** %s: Time out during SPI transfer\n",
 			      __func__);
 
-- 
2.18.0.321.gffc6fa0e3

  parent reply	other threads:[~2018-11-20 12:48 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-20 12:47 [U-Boot] [PATCH 00/34] spi: DM_SPI migration timeout! Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 01/34] spi: Remove unused spi_init Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 02/34] spi: Remove used spi_init Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 03/34] spi: davinci: Full dm conversion Jagan Teki
2018-11-20 14:45   ` Adam Ford
2018-11-21  9:33   ` Chris Packham
2018-11-20 12:47 ` [U-Boot] [PATCH 04/34] spi: kirkwood: " Jagan Teki
2018-11-21  7:52   ` Chris Packham
2018-11-21  8:39     ` Jagan Teki
2018-11-21  8:59       ` Chris Packham
2018-11-21  9:04         ` Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 05/34] spi: ti_qspi: " Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 06/34] spi: mpc8xxx: Use short type names Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 07/34] spi: mpc8xxx: Fix comments Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 08/34] spi: mpc8xxx: Rename camel-case variables Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 09/34] spi: mpc8xxx: Fix space after cast Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 10/34] spi: mpc8xxx: Fix function names in strings Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 11/34] spi: mpc8xxx: Replace defines with enums Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 12/34] spi: mpc8xxx: Use IO accessors Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 13/34] spi: mpc8xxx: Simplify if Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 14/34] spi: mpc8xxx: Get rid of is_read Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 15/34] spi: mpc8xxx: Simplify logic a bit Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 16/34] spi: mpc8xxx: Reduce scope of loop variables Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 17/34] spi: mpc8xxx: Make code more readable Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 18/34] spi: mpc8xxx: Rename variable Jagan Teki
2018-11-20 12:47 ` [U-Boot] [PATCH 19/34] spi: mpc8xxx: Document LEN setting better Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 20/34] spi: mpc8xxx: Re-order transfer setup Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 21/34] spi: mpc8xxx: Fix if check Jagan Teki
2018-11-20 12:48 ` Jagan Teki [this message]
2018-11-20 12:48 ` [U-Boot] [PATCH 23/34] spi: mpc8xxx: Convert to DM Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 24/34] spi: Zap cf_spi driver-related code Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 25/34] spi: Zap lpc32xx_ssp " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 26/34] spi: Zap mxs_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 27/34] spi: Zap sh_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 28/34] spi: Zap soft_spi_legacy " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 29/34] spi: Zap mpc8xx_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 30/34] spi: Zap mxc_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 31/34] spi: Zap omap3_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 32/34] spi: Zap atmel_spi " Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 33/34] spi: fsl_dspi: Drop non-dm code Jagan Teki
2018-11-20 12:48 ` [U-Boot] [PATCH 34/34] dm: MIGRATION: spi: Update SPI driver status Jagan Teki

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=20181120124814.23293-23-jagan@amarulasolutions.com \
    --to=jagan@amarulasolutions.com \
    --cc=u-boot@lists.denx.de \
    /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