public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] arm926ejs, timer:
@ 2010-12-10  8:16 Heiko Schocher
  2010-12-10  8:39 ` Reinhard Meyer
  2010-12-10 15:50 ` Nick Thompson
  0 siblings, 2 replies; 10+ messages in thread
From: Heiko Schocher @ 2010-12-10  8:16 UTC (permalink / raw)
  To: u-boot

Hello,

just looked in the timer implementation for arm926ejs based boards, and
found that there is just the at91, davinci, nomadik timer implementation
fixed in actual u-boot. I want to cleanup this timers too, but
there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
a lastdec var, which is not in global_data.h defined. So the question
is should we add a lastdec to global_data.h or is it Ok, if I use
lastinc for cleaning up?

Or are there pending patches, which fix this issues for some (all)
arm926ejs architectures?

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:16 [U-Boot] arm926ejs, timer: Heiko Schocher
@ 2010-12-10  8:39 ` Reinhard Meyer
  2010-12-10  8:45   ` Reinhard Meyer
  2010-12-10 15:50 ` Nick Thompson
  1 sibling, 1 reply; 10+ messages in thread
From: Reinhard Meyer @ 2010-12-10  8:39 UTC (permalink / raw)
  To: u-boot

Dear Heiko Schocher,
> Hello,
> 
> just looked in the timer implementation for arm926ejs based boards, and
> found that there is just the at91, davinci, nomadik timer implementation
> fixed in actual u-boot. I want to cleanup this timers too, but
> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
> a lastdec var, which is not in global_data.h defined. So the question
> is should we add a lastdec to global_data.h or is it Ok, if I use
> lastinc for cleaning up?

I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
to the generic part.

> 
> Or are there pending patches, which fix this issues for some (all)
> arm926ejs architectures?
at91 timer is still not perfect, it will break after 2**64 ticks. That is well
after the end of the Solar System :)

Best Regards,
Reinhard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:39 ` Reinhard Meyer
@ 2010-12-10  8:45   ` Reinhard Meyer
  2010-12-10  8:51     ` Reinhard Meyer
  0 siblings, 1 reply; 10+ messages in thread
From: Reinhard Meyer @ 2010-12-10  8:45 UTC (permalink / raw)
  To: u-boot

Reinhard Meyer schrieb:
> Dear Heiko Schocher,
>> Hello,
>>
>> just looked in the timer implementation for arm926ejs based boards, and
>> found that there is just the at91, davinci, nomadik timer implementation
>> fixed in actual u-boot. I want to cleanup this timers too, but
>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
>> a lastdec var, which is not in global_data.h defined. So the question
>> is should we add a lastdec to global_data.h or is it Ok, if I use
>> lastinc for cleaning up?
> 
> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
> to the generic part.

maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
last (hardware) decrementer/incrementer values from the previous call.

> 
>> Or are there pending patches, which fix this issues for some (all)
>> arm926ejs architectures?
> at91 timer is still not perfect, it will break after 2**64 ticks. That is well
> after the end of the Solar System :)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:45   ` Reinhard Meyer
@ 2010-12-10  8:51     ` Reinhard Meyer
  2010-12-10  9:16       ` Heiko Schocher
  2010-12-12 21:16       ` Wolfgang Denk
  0 siblings, 2 replies; 10+ messages in thread
From: Reinhard Meyer @ 2010-12-10  8:51 UTC (permalink / raw)
  To: u-boot

Sorry for the noise, but...

>>> just looked in the timer implementation for arm926ejs based boards, and
>>> found that there is just the at91, davinci, nomadik timer implementation
>>> fixed in actual u-boot. I want to cleanup this timers too, but
>>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
>>> a lastdec var, which is not in global_data.h defined. So the question
>>> is should we add a lastdec to global_data.h or is it Ok, if I use
>>> lastinc for cleaning up?
>> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
>> to the generic part.
> 
> maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
> last (hardware) decrementer/incrementer values from the previous call.
> 
define 4 u32's in the generic part:

u32	timer_use1;
u32	timer_use2;
u32	timer_use3;
u32	timer_use4;

and have the timer implementations themselves use defines to make them more readable.

#define lastinc gd->timer_use1

A future AT91 timer might not use tbu/tbl, but would need 4 values to keep track
of 2 independant timers for udelay() and a 1kHz base for *_timer().

Reinhard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:51     ` Reinhard Meyer
@ 2010-12-10  9:16       ` Heiko Schocher
  2010-12-12 21:16       ` Wolfgang Denk
  1 sibling, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2010-12-10  9:16 UTC (permalink / raw)
  To: u-boot

Hello Reinhard,

Reinhard Meyer wrote:
> Sorry for the noise, but...
> 
>>>> just looked in the timer implementation for arm926ejs based boards, and
>>>> found that there is just the at91, davinci, nomadik timer implementation
>>>> fixed in actual u-boot. I want to cleanup this timers too, but
>>>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
>>>> a lastdec var, which is not in global_data.h defined. So the question
>>>> is should we add a lastdec to global_data.h or is it Ok, if I use
>>>> lastinc for cleaning up?
>>> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
>>> to the generic part.

Thats already done ;-)

>> maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
>> last (hardware) decrementer/incrementer values from the previous call.
>>
> define 4 u32's in the generic part:
> 
> u32	timer_use1;
> u32	timer_use2;
> u32	timer_use3;
> u32	timer_use4;
> 
> and have the timer implementations themselves use defines to make them more readable.
> 
> #define lastinc gd->timer_use1

Yep, that would be a good idea, but that will break again all arm
boards, so I have to fixup all timer.c implementations ... in the
first step, I think, I do a

#define lastinc gd->lastdec

for the arm926ejs boards which use lastinc ...

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:16 [U-Boot] arm926ejs, timer: Heiko Schocher
  2010-12-10  8:39 ` Reinhard Meyer
@ 2010-12-10 15:50 ` Nick Thompson
  1 sibling, 0 replies; 10+ messages in thread
From: Nick Thompson @ 2010-12-10 15:50 UTC (permalink / raw)
  To: u-boot

On 10/12/10 08:16, Heiko Schocher wrote:
> Hello,
> 
> just looked in the timer implementation for arm926ejs based boards, and
> found that there is just the at91, davinci, nomadik timer implementation
> fixed in actual u-boot. I want to cleanup this timers too, but
> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
> a lastdec var, which is not in global_data.h defined. So the question
> is should we add a lastdec to global_data.h or is it Ok, if I use
> lastinc for cleaning up?
> 
> Or are there pending patches, which fix this issues for some (all)
> arm926ejs architectures?

There is an outstanding patch for davinci:

http://patchwork.ozlabs.org/patch/74860/

Nick.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-10  8:51     ` Reinhard Meyer
  2010-12-10  9:16       ` Heiko Schocher
@ 2010-12-12 21:16       ` Wolfgang Denk
  2010-12-13  0:27         ` Reinhard Meyer
  1 sibling, 1 reply; 10+ messages in thread
From: Wolfgang Denk @ 2010-12-12 21:16 UTC (permalink / raw)
  To: u-boot

Dear Reinhard Meyer,

In message <4D01EA19.8070200@emk-elektronik.de> you wrote:
> Sorry for the noise, but...
> 
> >>> just looked in the timer implementation for arm926ejs based boards, and
> >>> found that there is just the at91, davinci, nomadik timer implementation
> >>> fixed in actual u-boot. I want to cleanup this timers too, but
> >>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
> >>> a lastdec var, which is not in global_data.h defined. So the question
> >>> is should we add a lastdec to global_data.h or is it Ok, if I use
> >>> lastinc for cleaning up?
> >> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
> >> to the generic part.
> > 
> > maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
> > last (hardware) decrementer/incrementer values from the previous call.
> > 
> define 4 u32's in the generic part:
> 
> u32	timer_use1;
> u32	timer_use2;
> u32	timer_use3;
> u32	timer_use4;

NAK.  Please let's agree on common names.  Eventually we will even
come up with a common implementation later (with just arch-specific
"accessor" routines).

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As far as the laws of mathematics refer  to  reality,  they  are  not
certain;  and  as  far  as  they  are  certain,  they do not refer to
reality.                                           -- Albert Einstein

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-12 21:16       ` Wolfgang Denk
@ 2010-12-13  0:27         ` Reinhard Meyer
  2010-12-13  7:43           ` Albert ARIBAUD
  2010-12-16 14:12           ` Wolfgang Denk
  0 siblings, 2 replies; 10+ messages in thread
From: Reinhard Meyer @ 2010-12-13  0:27 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,
> Dear Reinhard Meyer,
>
> In message<4D01EA19.8070200@emk-elektronik.de>  you wrote:
>> Sorry for the noise, but...
>>
>>>>> just looked in the timer implementation for arm926ejs based boards, and
>>>>> found that there is just the at91, davinci, nomadik timer implementation
>>>>> fixed in actual u-boot. I want to cleanup this timers too, but
>>>>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
>>>>> a lastdec var, which is not in global_data.h defined. So the question
>>>>> is should we add a lastdec to global_data.h or is it Ok, if I use
>>>>> lastinc for cleaning up?
>>>> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
>>>> to the generic part.
>>>
>>> maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
>>> last (hardware) decrementer/incrementer values from the previous call.
>>>
>> define 4 u32's in the generic part:
>>
>> u32	timer_use1;
>> u32	timer_use2;
>> u32	timer_use3;
>> u32	timer_use4;
>
> NAK.  Please let's agree on common names.  Eventually we will even
> come up with a common implementation later (with just arch-specific
> "accessor" routines).

Replace "arch" by "SoC" here! ARM itself does not have a timer (in contrast to
powerpc where tbu,tbl is part of the architecture) !

Then its a bad idea to take tbu,tbl out of the #ifdef AT91FAMILY part
when all other ARM timer implementations do not use tbu.

Its simple to NAK attempts to come up with "common" names that are NOT
misnomers on some implementations... tbu, tbl are certainly misnomers on all
non AT91 timer implementations...

Reinhard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-13  0:27         ` Reinhard Meyer
@ 2010-12-13  7:43           ` Albert ARIBAUD
  2010-12-16 14:12           ` Wolfgang Denk
  1 sibling, 0 replies; 10+ messages in thread
From: Albert ARIBAUD @ 2010-12-13  7:43 UTC (permalink / raw)
  To: u-boot

Le 13/12/2010 01:27, Reinhard Meyer a ?crit :
> Dear Wolfgang Denk,
>> Dear Reinhard Meyer,
>>
>> In message<4D01EA19.8070200@emk-elektronik.de>   you wrote:
>>> Sorry for the noise, but...
>>>
>>>>>> just looked in the timer implementation for arm926ejs based boards, and
>>>>>> found that there is just the at91, davinci, nomadik timer implementation
>>>>>> fixed in actual u-boot. I want to cleanup this timers too, but
>>>>>> there are kirkwood, mb86r0x, orion5x, spear, versatile archs which use
>>>>>> a lastdec var, which is not in global_data.h defined. So the question
>>>>>> is should we add a lastdec to global_data.h or is it Ok, if I use
>>>>>> lastinc for cleaning up?
>>>>> I would suggest to take tbu, tbl, lastinc out of the AT91FAMILY #ifdef
>>>>> to the generic part.
>>>>
>>>> maybe "unify" last{inc,dec} into last_hw ? Because they are supposedly the
>>>> last (hardware) decrementer/incrementer values from the previous call.
>>>>
>>> define 4 u32's in the generic part:
>>>
>>> u32	timer_use1;
>>> u32	timer_use2;
>>> u32	timer_use3;
>>> u32	timer_use4;
>>
>> NAK.  Please let's agree on common names.  Eventually we will even
>> come up with a common implementation later (with just arch-specific
>> "accessor" routines).
>
> Replace "arch" by "SoC" here! ARM itself does not have a timer (in contrast to
> powerpc where tbu,tbl is part of the architecture) !
>
> Then its a bad idea to take tbu,tbl out of the #ifdef AT91FAMILY part
> when all other ARM timer implementations do not use tbu.
>
> Its simple to NAK attempts to come up with "common" names that are NOT
> misnomers on some implementations... tbu, tbl are certainly misnomers on all
> non AT91 timer implementations...

I think Wolfgang NAK'ed the idea of *complete* misnomers; 
timer_use{1,2,3,4} are good for cross-board unicity but bad for 
readability and maintenability -- you'd need to re-#define their names 
for each arch, or SoC, or even maybe for some boards.

What we need, IIUC, is a (group of) field(s) that will provide a 
monotonous value of the time elapsed  computed from the HW timer devoted 
to this use and name that accordingly.

My understanding is that there will be a need for at least one field for 
storing the last hardware time as directly read from the timer, because 
we'll need it to detect overruns if the timer alone does not provide the 
range that we require, and one other field for the 'more significant 
part' which is basically carried over through HW value overrun detection.

One could argue that only one field could be necessary, the lower bits 
of which would be the HW timer reads and the higher bits being fed from 
the overrun, but managing bitfieds would complicate the issue, plus 
maybe not all timers are free-running full-range powers of two?

Also, as for the size, there does not seem to be a consensus, but maybe 
we can choose 64 bits (and create such a type if necessary) for each and 
then SoCs or arches will cast that as necessary of 64-bit arithmetic is 
a problem. Or we can do a union, with 64 and 32 bit variants.

So, what about:

u64	timer_hw_reading;
u64	timer_sw_carry_over;

> Reinhard

Amicalement,
-- 
Albert.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] arm926ejs, timer:
  2010-12-13  0:27         ` Reinhard Meyer
  2010-12-13  7:43           ` Albert ARIBAUD
@ 2010-12-16 14:12           ` Wolfgang Denk
  1 sibling, 0 replies; 10+ messages in thread
From: Wolfgang Denk @ 2010-12-16 14:12 UTC (permalink / raw)
  To: u-boot

Dear Reinhard Meyer,

In message <4D05687F.9090100@emk-elektronik.de> you wrote:
>
> > NAK.  Please let's agree on common names.  Eventually we will even
> > come up with a common implementation later (with just arch-specific
> > "accessor" routines).
> 
> Replace "arch" by "SoC" here! ARM itself does not have a timer (in contrast to
> powerpc where tbu,tbl is part of the architecture) !
> 
> Then its a bad idea to take tbu,tbl out of the #ifdef AT91FAMILY part
> when all other ARM timer implementations do not use tbu.
> 
> Its simple to NAK attempts to come up with "common" names that are NOT
> misnomers on some implementations... tbu, tbl are certainly misnomers on all
> non AT91 timer implementations...

Maybe we should lean back and have a look at what Linux is doing in
this area?

The recent patch series "64-bit sched_clock" on the lak ML seems to
fit pretty well :-)

See http://thread.gmane.org/gmane.linux.ports.arm.kernel/99740


Can we copy from Linux?


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
... The things love can drive a man to -- the  ecstasies,  the  mise-
ries,  the broken rules, the desperate chances, the glorious failures
and the glorious victories.
	-- McCoy, "Requiem for Methuselah", stardate 5843.7

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-12-16 14:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-10  8:16 [U-Boot] arm926ejs, timer: Heiko Schocher
2010-12-10  8:39 ` Reinhard Meyer
2010-12-10  8:45   ` Reinhard Meyer
2010-12-10  8:51     ` Reinhard Meyer
2010-12-10  9:16       ` Heiko Schocher
2010-12-12 21:16       ` Wolfgang Denk
2010-12-13  0:27         ` Reinhard Meyer
2010-12-13  7:43           ` Albert ARIBAUD
2010-12-16 14:12           ` Wolfgang Denk
2010-12-10 15:50 ` Nick Thompson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox