public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Reinhard Meyer <u-boot@emk-elektronik.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] Timer Statics (was: arm926ejs: fix linker file for newer ld support)
Date: Wed, 10 Nov 2010 14:02:54 +0100	[thread overview]
Message-ID: <4CDA97FE.7010701@emk-elektronik.de> (raw)
In-Reply-To: <4CDA9096.2080505@schmid-telecom.ch>

Dear concerned,

>  - Move static variables to struct global_data, so they can be used
>    before relocation. Used by AT91 timers and proposed for A320 and
>    S3C64xx in:
> 
>    http://article.gmane.org/gmane.comp.boot-loaders.u-boot/88095
>    http://article.gmane.org/gmane.comp.boot-loaders.u-boot/88160
> 
> I hope we can solve this problem in the same way for all ARM timers. And
> if we use the second approach, we probably can generalize the AT91 data
> in struct global_data as proposed by Andreas.

The AT91 global data for clock/timer use has 2 parts:
#ifdef CONFIG_AT91FAMILY
	/* "static data" needed by at91's clock.c */
	unsigned long	cpu_clk_rate_hz;
	unsigned long	main_clk_rate_hz;
	unsigned long	mck_rate_hz;
	unsigned long	plla_rate_hz;
	unsigned long	pllb_rate_hz;
	unsigned long	at91_pllb_usb_init;
	/* "static data" needed by at91's timer.c */
	unsigned long	timer_rate_hz;
	unsigned long	tbl;
	unsigned long	tbu;
	unsigned long long	timer_reset_value;
#endif

I have removed reset_timer() from the AT91 timer now, making the global
variable "timer_reset_value" obsolete. For that all occurences of the
sequence

reset_timer();
...
loop .. if .. get_timer(0) >= timeout

has to be replaced by

u32 start_time = get_timer(0);
...
loop .. if .. get_timer(start_time) >= timeout

Currently, for AT91, that is only in the file
drivers/mtd/nand/nand_base.c

In that view, we could put
	unsigned long	timer_rate_hz;
	unsigned long	tbl;
	unsigned long	tbu;
outside the AT91FAMILY ifdef.

We can even split the timer implementation into two parts:
part 1 (hardware specific) implements a method to increment tbu/tbl
and exports the function get_ticks(), and
part 2 (hardware independant) uses get_ticks() and timer_rate_hz
to implement udelay() and get_timer().

Best Regards,
Reinhard

  parent reply	other threads:[~2010-11-10 13:02 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-04 22:22 [U-Boot] [PATCH V4 1/2] arm926ejs: fix linker file for newer ld support Albert Aribaud
2010-11-04 22:22 ` [U-Boot] [PATCH V4 2/2] tx25: " Albert Aribaud
2010-11-04 22:27 ` [U-Boot] [PATCH V4 1/2] arm926ejs: " Albert ARIBAUD
2010-11-09 13:49   ` Albert ARIBAUD
2010-11-05  8:38 ` Reinhard Meyer
2010-11-05  9:04   ` Albert ARIBAUD
2010-11-09 18:24 ` Daniel Hobi
2010-11-09 18:47   ` Albert ARIBAUD
2010-11-09 18:55     ` Albert ARIBAUD
2010-11-09 19:30     ` Andreas Bießmann
2010-11-10 12:31     ` Daniel Hobi
2010-11-10 12:48       ` Albert ARIBAUD
2010-11-10 13:24         ` Daniel Hobi
2010-11-11  8:11           ` Albert ARIBAUD
2010-11-14 21:22             ` Wolfgang Denk
2010-11-15 11:01               ` Albert ARIBAUD
2010-11-15 11:09                 ` Andreas Bießmann
2010-11-15 11:43                   ` Sebastien Carlier
2010-11-16  7:38                     ` Andreas Bießmann
2010-11-15 11:13                 ` Wolfgang Denk
2010-11-15 11:49                   ` Albert ARIBAUD
2010-11-15 11:55                     ` Loïc Minier
2010-11-15 12:03                       ` Wolfgang Denk
2010-11-15 14:06                         ` Loïc Minier
2010-11-15 14:29                           ` Albert ARIBAUD
2010-11-15 15:09                             ` Loïc Minier
2010-11-16 13:42                               ` Peter Maydell
2010-11-16 13:54                                 ` [U-Boot] qemu-arm (was: [PATCH V4 1/2] arm926ejs: fix linker file for newer ld support) Albert ARIBAUD
2010-11-16 14:49                                   ` Peter Maydell
2010-11-16 16:02                                     ` [U-Boot] qemu-arm Albert ARIBAUD
2010-11-15 12:00                     ` [U-Boot] [PATCH V4 1/2] arm926ejs: fix linker file for newer ld support Reinhard Meyer
2010-11-15 12:02                     ` Wolfgang Denk
2010-11-15 12:13                       ` Albert ARIBAUD
2010-11-15 12:16                     ` Bas Mevissen
2010-11-10 13:02       ` Reinhard Meyer [this message]
2010-11-09 19:27   ` Andreas Bießmann
2010-11-09 19:31     ` Albert ARIBAUD
2010-11-09 23:43 ` Eric Cooper
2010-11-10  7:53   ` Albert ARIBAUD
2010-11-10 14:20     ` Eric Cooper
2010-11-11  7:33       ` Albert ARIBAUD
2010-11-15 14:15   ` Daniel Hobi
2010-11-15 14:37     ` Albert ARIBAUD
2010-11-15 19:14     ` Eric Cooper

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=4CDA97FE.7010701@emk-elektronik.de \
    --to=u-boot@emk-elektronik.de \
    --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