From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite
Date: Sun, 17 Jul 2011 11:51:56 +1000 [thread overview]
Message-ID: <4E22403C.2040802@gmail.com> (raw)
In-Reply-To: <4E1C23B8.6020101@gmail.com>
Hi Wolfgang.
On 12/07/11 20:36, Graeme Russ wrote:
> As I said, I will have a closer look at the Linux API...
OK, I've had a look at how the Linux API is used - in particular
time_after(). Here is a typical random example (from drivers/spi/ep93xx_spi.c):
timeout = jiffies + msecs_to_jiffies(SPI_TIMEOUT);
while (ep93xx_spi_read_u16(espi, SSPSR) & SSPSR_RNE) {
if (time_after(jiffies, timeout)) {
dev_warn(&espi->pdev->dev,
"timeout while flushing RX FIFO\n");
msg->status = -ETIMEDOUT;
return;
}
ep93xx_spi_read_u16(espi, SSPDR);
}
Now I personally do not like the global 'jiffies' variable for two reasons:
a) It assumes there is some interrupt source updating jiffies which we
cannot guarantee. The discussions of the new API had the background counter
being update by both a background interrupt (if available) or a call to
get_timer()
b) It has no fixed time base
So it looks like the nanosecond clocksource code and the time_after et al
macros are not directly related (as evidenced by time_after being in jiffies.h)
So maybe we should look at something along the lines of:
timeout = get_ms_count() + SPI_TIMEOUT;
while (ep93xx_spi_read_u16(espi, SSPSR) & SSPSR_RNE) {
if (time_after(get_ms_count(), timeout)) {
dev_warn(&espi->pdev->dev,
"timeout while flushing RX FIFO\n");
msg->status = -ETIMEDOUT;
return;
}
ep93xx_spi_read_u16(espi, SSPDR);
}
The get_ms_count() name is up for debate
So this would mean minimal timer related code conversion bringing drivers
from Linux, and a namespace which does not match Linux that will hence
generate obvious compile errors.
If you really wanted to we could
#define jiffies get_ms_count()
#define msecs_to_jiffies(x) x
But I think that might be dangerous
Now we can use the existing get_timer(0) call (as I already did with this
patch series) now and create the underlying architecture intrusive re-write
of the generic 'clocksource' API later.
And then phase 3 would be to revisit udelay
Regards,
Graeme
next prev parent reply other threads:[~2011-07-17 1:51 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-28 11:40 [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 01/16] [Timer]Fix misuse of ARM *timer_masked() functions outside arch/arm Graeme Russ
2011-06-28 12:35 ` Andreas Bießmann
2011-07-11 21:57 ` Wolfgang Denk
2011-07-14 17:01 ` Albert ARIBAUD
2011-07-14 19:50 ` Wolfgang Denk
2011-07-14 23:24 ` Graeme Russ
2011-07-15 6:31 ` Wolfgang Denk
2011-07-15 7:00 ` Graeme Russ
2011-07-15 12:16 ` [U-Boot] [PATCH v2 1/7]Timer: Fix " Graeme Russ
2011-07-16 8:40 ` Albert ARIBAUD
2011-07-16 8:59 ` Graeme Russ
2011-07-16 9:12 ` Albert ARIBAUD
2011-07-16 9:31 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-16 9:58 ` Albert ARIBAUD
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 02/16] [Timer]Remove calls to set_timer outside arch/ Graeme Russ
2011-07-11 21:58 ` Wolfgang Denk
2011-07-15 12:17 ` [U-Boot] [PATCH v2 2/7]Timer: Remove " Graeme Russ
2011-07-16 9:33 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 03/16] [Timer]Remove calls to set_timer in arch/ Graeme Russ
2011-07-11 21:59 ` Wolfgang Denk
2011-07-15 12:18 ` [U-Boot] [PATCH v2 3/7]Timer: Remove set_timer completely Graeme Russ
2011-07-16 9:34 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 04/16] [Timer]Allow reset_timer() only for Nios2 Graeme Russ
2011-07-11 22:01 ` Wolfgang Denk
2011-07-15 12:18 ` [U-Boot] [PATCH v2 4/7]Timer: Allow reset_timer() only for systems with low resolution timers Graeme Russ
2011-07-16 9:35 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 05/16] [Timer]Remove reset_timer() for non-Nios2 arches Graeme Russ
2011-07-11 22:02 ` Wolfgang Denk
2011-07-15 0:01 ` Graeme Russ
2011-07-15 12:19 ` [U-Boot] [PATCH v2 5/7]Timer: Remove " Graeme Russ
2011-07-16 9:36 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53 ` Wolfgang Denk
2011-08-19 21:24 ` Mike Frysinger
2011-08-19 22:55 ` Graeme Russ
2011-08-19 23:12 ` Mike Frysinger
2011-09-28 19:24 ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 06/16] [Timer]Fix at91rm9200/spi.c timer usage Graeme Russ
2011-06-28 12:30 ` Andreas Bießmann
2011-07-15 12:20 ` [U-Boot] [PATCH v2 6/7]Timer: Fix " Graeme Russ
2011-07-16 9:37 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54 ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 07/16] [Timer]Remove reset_timer_masked() Graeme Russ
2011-07-11 22:04 ` Wolfgang Denk
2011-07-15 12:21 ` [U-Boot] [PATCH v2 7/7]Timer: Remove reset_timer_masked() Graeme Russ
2011-07-16 9:38 ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54 ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 08/16] [Timer]Create new userland timer API Graeme Russ
2011-06-29 4:31 ` Simon Glass
2011-06-29 4:36 ` Graeme Russ
2011-06-29 4:48 ` Simon Glass
2011-07-11 22:05 ` Wolfgang Denk
2011-07-11 22:32 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 09/16] [Timer]Replace get_timer() usage in drivers/block/ Graeme Russ
2011-06-29 4:40 ` Simon Glass
2011-06-29 5:06 ` Reinhard Meyer
2011-06-29 5:19 ` Graeme Russ
2011-06-29 5:30 ` Simon Glass
2011-06-29 5:38 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 10/16] [Timer]Replace get_timer() usage in driver/mtd and driver/block Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 11/16] [Timer]Remove reset_timer() completely Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 12/16] [Timer]Replace get_timer() usage in drivers/ Graeme Russ
2011-06-28 12:36 ` Vitaly Kuzmichev
2011-06-28 23:03 ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 13/16] [Timer]Replace get_timer() usage in net/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 14/16] [Timer]Replace get_timer() usage in common/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 15/16] [Timer]Replace get_timer() usage in board/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 16/16] [Timer]Replace get_timer() usage in arch/ Graeme Russ
2011-06-29 4:45 ` Simon Glass
2011-06-29 4:51 ` Graeme Russ
2011-06-29 5:15 ` Mike Frysinger
2011-06-29 5:26 ` Mike Frysinger
2011-06-29 5:29 ` Graeme Russ
2011-06-29 4:54 ` [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-29 5:08 ` Mike Frysinger
2011-06-29 5:20 ` Graeme Russ
2011-07-08 0:25 ` Graeme Russ
2011-07-09 6:01 ` Albert ARIBAUD
2011-07-11 21:56 ` Wolfgang Denk
2011-07-11 22:49 ` Graeme Russ
2011-07-11 23:36 ` Graeme Russ
2011-07-12 2:17 ` Graeme Russ
2011-07-12 8:49 ` Wolfgang Denk
2011-07-12 10:36 ` Graeme Russ
2011-07-12 13:10 ` Wolfgang Denk
2011-07-12 15:23 ` Scott McNutt
2011-07-12 17:27 ` J. William Campbell
2011-07-13 0:29 ` Graeme Russ
2011-07-14 19:30 ` Wolfgang Denk
2011-07-17 1:51 ` Graeme Russ [this message]
2011-07-12 14:30 ` J. William Campbell
2011-07-12 16:08 ` Reinhard Meyer
2011-07-13 0:33 ` Graeme Russ
2011-07-13 1:20 ` J. William Campbell
2011-07-14 19:41 ` Wolfgang Denk
2011-07-14 23:52 ` J. William Campbell
2011-07-15 7:17 ` Wolfgang Denk
2011-07-15 18:08 ` J. William Campbell
2011-07-15 18:34 ` Wolfgang Denk
2011-07-15 21:03 ` J. William Campbell
2011-07-16 14:11 ` Graeme Russ
2011-07-15 12:15 ` [U-Boot] [PATCH v2 0/7]Timer: Simplify API Graeme Russ
2011-07-15 13:08 ` Graeme Russ
2011-07-16 8:36 ` Albert ARIBAUD
2011-07-16 9:01 ` Graeme Russ
2011-07-16 9:13 ` Albert ARIBAUD
2011-07-16 9:32 ` Wolfgang Denk
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=4E22403C.2040802@gmail.com \
--to=graeme.russ@gmail.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