06 Jun, 2017
1 commit
-
If CONFIG_SYS_TIMER_COUNTER is used we can provide a default microsecond
timer implementation.Signed-off-by: Simon Glass
15 Jan, 2017
1 commit
-
Currently, mdelay() and udelay() are declared in include/common.h,
while ndelay() in include/linux/compat.h. It would be nice to
collect them into include/linux/delay.h like Linux.While we are here, fix the ndelay() implementation; I used the
DIV_ROUND_UP() instead of (x)/1000 because it must wait *longer*
than the given period of time.Signed-off-by: Masahiro Yamada
Reviewed-by: Simon Glass
26 Feb, 2016
1 commit
-
In some cases the timer must be accessible before driver model is active.
Examples include when using CONFIG_TRACE to trace U-Boot's execution before
driver model is set up. Enable this option to use an early timer. These
functions must be supported by your timer driver: timer_early_get_count()
and timer_early_get_rate().Signed-off-by: Simon Glass
21 Jan, 2016
1 commit
-
Adding timer init function in timer-uclass driver to create and
initialize the timer device on platforms where u-boot,dm-pre-reloc
is not used. Since there will be multiple timer devices in the
system, adding a tick-timer node in chosen node to know which
timer device to be used as tick timer in u-boot.Signed-off-by: Mugunthan V N
01 Dec, 2015
1 commit
-
There are timers with a 64-bit counter value but current timer
uclass driver assumes a 32-bit one. Modify timer_get_count()
to ask timer driver to always return a 64-bit counter value,
and provide an inline helper function timer_conv_64() to handle
the 32-bit/64-bit conversion automatically.Signed-off-by: Bin Meng
Acked-by: Simon Glass
Signed-off-by: Simon Glass
23 Oct, 2015
1 commit
-
Implement a Timer uclass to work with lib/time.c.
Signed-off-by: Thomas Chou
Acked-by: Simon Glass
27 Oct, 2014
1 commit
-
Unfortunately 'unsigned long long' and 'uint64_t' are not necessarily
compatible on 64-bit machines. Use the correct typedef instead of
writing the supposed type out in full.Signed-off-by: Simon Glass
24 Oct, 2014
1 commit
-
CONFIG_SYS_HZ is always defined as 1000 in config_fallbacks.h
(but some boards still have redundant definitions).This commit moves the definition and the document in README to
Kconfig. Since lib/Kconfig can assure that CONFIG_SYS_HZ is 1000,
the sanity check in lib/time.c should be removed.Signed-off-by: Masahiro Yamada
Reviewed-by: Marek Vasut
22 Jul, 2014
1 commit
-
As I initially suspected overflow in time handling, I took a detailed
look at lib/time.c. This adds comments about units being used, reduces
amount of type casting being done, and makes __udelay() always wait at
least one tick. (Current code could do no delaying at all for short
delays).Signed-off-by: Pavel Machek
25 Jan, 2014
1 commit
-
If timer_init() is made a weak stub function, then it allows us to
remove several empty timer_init functions for those boards that
already have a timer initialized when u-boot starts. Architectures
that use the timer framework may also remove the need for timer.c.Signed-off-by: Darwin Rambo
Reviewed-by: Tim Kryger
13 Dec, 2013
1 commit
-
Commit 8dfafdde88eb ("Introduce common timer functions") created a
common definition of usec_to_tick() which had a couple problems:static unsigned long long usec_to_tick(unsigned long usec)
{
uint64_t tick = usec * get_tbclk();That likely overflows.
usec *= get_tbclk();
That was an attempt to fix it by performing the multiply after the
promotion of usec to 64-bit, but was applied to the wrong variable,
which was never used.This patch fixes these issues. A user-visible symptom of the problem was
the e.g. "dhcp zImage" using an ASIX USB Ethernet dongle would print:Waiting for Ethernet connection... unable to connect.
... with no delay before "unable to connect". There are likely other
symptoms.Signed-off-by: Stephen Warren
Acked-by: Rob Herring
11 Nov, 2013
1 commit
-
Commit 8dfafdde88eb3e71d5569846396ae67a91017232 introduced
new gcc warnings on MIPS64:time.c: In function 'tick_to_time':
time.c:59:2: warning: comparison of distinct pointer types lacks a cast [enabled by default]
time.c:59:2: warning: passing argument 1 of '__div64_32' from incompatible pointer type [enabled by default]
In file included from time.c:10:0:
./u-boot-mips/include/div64.h:22:17: note: expected 'uint64_t *' but argument is of type 'long long unsigned int *'
time.c: In function 'usec_to_tick':
time.c:76:2: warning: comparison of distinct pointer types lacks a cast [enabled by default]
time.c:76:2: warning: passing argument 1 of '__div64_32' from incompatible pointer type [enabled by default]
In file included from time.c:10:0:
./u-boot-mips/include/div64.h:22:17: note: expected 'uint64_t *' but argument is of type 'long long unsigned int *'Signed-off-by: Daniel Schwierzeck
09 Nov, 2013
1 commit
-
A weak annotation is needed in order to prevent link errors when
get_ticks is overridden. This fixes sandbox build.Signed-off-by: Rob Herring
05 Nov, 2013
2 commits
-
Many platforms duplicate pretty much the same timer code yet they all have
a 32-bit freerunning counter register. Create a common implementation that
minimally requires 2 or 3 defines to add timer support:CONFIG_SYS_TIMER_RATE - Clock rate of the timer counter
CONFIG_SYS_TIMER_COUNTER - Address of 32-bit counter
CONFIG_SYS_TIMER_COUNTS_DOWN - Define if counter counts downAll functions are weak or ifdef'ed so they can still be overriden by any
platform.Signed-off-by: Rob Herring
-
According to the README, CONFIG_SYS_HZ must be 1000 and most platforms
follow that. In preparation to remove CONFIG_SYS_HZ from all these
platforms, provide a common definition. The platforms which use a value
other than 1000 will get build warning now. These configs are:include/configs/M5271EVB.h:#define CONFIG_SYS_HZ 1000000
include/configs/balloon3.h:#define CONFIG_SYS_HZ 3250000 /* Timer @ 3250000 Hz */
include/configs/idmr.h:#define CONFIG_SYS_HZ (50000000 / 64)
include/configs/mini2440.h:#define CONFIG_SYS_HZ 1562500
include/configs/mx1ads.h:#define CONFIG_SYS_HZ 3686400
include/configs/omap3_zoom2.h:#define CONFIG_SYS_HZ ((V_SCLK) / (2 << CONFIG_SYS_PTV))
include/configs/omap730p2.h:#define CONFIG_SYS_HZ ((CONFIG_SYS_CLK_FREQ)/(2 << CONFIG_SYS_PTV))
include/configs/palmld.h:#define CONFIG_SYS_HZ 3250000 /* Timer @ 3250000 Hz */
include/configs/palmtc.h:#define CONFIG_SYS_HZ 3686400 /* Timer @ 3686400 Hz */
include/configs/rsk7203.h:#define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
include/configs/rsk7264.h:#define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
include/configs/rsk7269.h:#define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
include/configs/scb9328.h:#define CONFIG_SYS_HZ 3686400 /* incrementer freq: 3.6864 MHz */
include/configs/versatile.h:#define CONFIG_SYS_HZ (1000000 / 256)
include/configs/zipitz2.h:#define CONFIG_SYS_HZ 3250000 /* Timer @ 3250000 Hz */Signed-off-by: Rob Herring
24 Jul, 2013
1 commit
-
Signed-off-by: Wolfgang Denk
[trini: Fixup common/cmd_io.c]
Signed-off-by: Tom Rini
11 Apr, 2012
1 commit
-
The standalone example does not have get_timer() defined, so we cannot
rely on it being available.Move the timer function into boootstage.c to avoid this problem.
This corrects a build breakage for the standalone example on some boards.
Signed-off-by: Simon Glass
Acked-by: Matthias Fuchs
19 Mar, 2012
1 commit
-
Define timer_get_boot_us() which returns the number of microseconds
since boot. If undefined then we use get_timer() * 1000.We can fit this in a 32-bit register which keeps everyone happy on
the efficiency side. It will wrap around after about an hour. If we
are still looking at it after an hour then we had better not be
timing the boot.Signed-off-by: Simon Glass
22 Oct, 2011
1 commit
-
There are several mdelay() definitions in the driver and
board code. Remove them all and provide a common mdelay()
in lib/time.c.Signed-off-by: Anatolij Gustschin
Acked-by: Mike Frysinger
13 Apr, 2010
1 commit
-
Now that the other architecture-specific lib directories have been
moved out of the top-level directory there's not much reason to have the
'_generic' suffix on the common lib directory.Signed-off-by: Peter Tyser