2010-02-25 13:07:39

by viresh kumar

[permalink] [raw]
Subject: QUERY: How to call board specific initialization function before map_io or timer_init

Hello,

I need to call my board specific initialization routine before
timer_init or map_io is called.
I tried to see that in earlier architectures and found most of
architecture call machine
specific init function from map_io or init_irq or init_machine.

Situation: I need to register my clock framework with
arch/arm/common/clkdev framework
before actually initializing timer. So i can't do this in
"init_machine" as timer_init is called
before that.

Can anybody please help.

regards,
viresh kumar
ST Microelectronics
India


2010-02-25 16:03:48

by Ben Dooks

[permalink] [raw]
Subject: Re: QUERY: How to call board specific initialization function before map_io or timer_init

On Thu, Feb 25, 2010 at 06:37:37PM +0530, viresh kumar wrote:
> Hello,
>
> I need to call my board specific initialization routine before
> timer_init or map_io is called.
> I tried to see that in earlier architectures and found most of
> architecture call machine
> specific init function from map_io or init_irq or init_machine.
>
> Situation: I need to register my clock framework with
> arch/arm/common/clkdev framework
> before actually initializing timer. So i can't do this in
> "init_machine" as timer_init is called
> before that.

One method would be to use an init call from <linux/init.h> which is
called before these are done (you'll have to work out which one is
suitable for yourself).

Either that or ensure that your boards always call a specific
routine in their init sequence to ensure clocks are registered before
the timer needs them.

If I remeber correctly, map_io() is actually called before the timers
are initialised, so you could add your clocks there.

--
Ben

Q: What's a light-year?
A: One-third less calories than a regular year.

2010-02-26 04:29:28

by viresh kumar

[permalink] [raw]
Subject: Re: QUERY: How to call board specific initialization function before map_io or timer_init

>> Situation: I need to register my clock framework with
>> arch/arm/common/clkdev framework
>> before actually initializing timer. So i can't do this in
>> "init_machine" as timer_init is called
>> before that.
>
> One method would be to use an init call from <linux/init.h> which is
> called before these are done (you'll have to work out which one is
> suitable for yourself).
>

I tried few of them but timer_init or map_io are getting called before my
routine is called.

> Either that or ensure that your boards always call a specific
> routine in their init sequence to ensure clocks are registered before
> the timer needs them.
>
> If I remeber correctly, map_io() is actually called before the timers
> are initialised, so you could add your clocks there.

I can add my init routine to map_io's implementation, but i think
map_io is not supposed to be implemented that way. map_io should
be called to statically map devices memory. It is not for hardware
specific initializations.

Is my understanding correct?


regards,
viresh kumar