[U-Boot] [RFC] New init sequence processing without init_sequence array
Wolfgang Denk
wd at denx.de
Mon Aug 22 22:10:23 CEST 2011
Dear Graeme Russ,
In message <1313587343-3693-1-git-send-email-graeme.russ at gmail.com> you wrote:
> I have been thinking about the problem of the pesky init_sequence arrays
> and the inevitable #ifdefs and empty stub functions that result so I
> thought I'de have a crack at a more dynamic implementation. And like all
> good programmers, I stole the solution ;). This implementation is based
> on Linux's __initcall(fn) et. al. macros
>
> If this works cross-platform, we can finally move board_init_* into
> /lib/ - Wouldn't that be nice
>
> Thoughts?
My initial thoughts are these two:
1. I think we should change the code in a different order. I would
prefer to first unify the init code across architectures (the big
ARM reorganization we just seem to have overcome was an important
prerequisite for this), before we start changing the init code.
2. One of the advantages of the current implementation is that there
is a central place in the code (well, at least per architecture,
untill we unify these as mentioned above) where you can see exactly
which steps get performed in which sequence.
I understand (and appreciate) your intentions, does the initcall
concept not mean that we will have some sort of sequence numbers
distributed all over the code? Maybe I'm mising something - but
does this not make it really difficult to actually see (from the
source code) what the exact init sequence is?
3. Hardware initialization in inherently very much hardware depen-
dent ;-) We have some boards where PCI must be initialized early
because it is needed to access some other peripherals like memory.
And we have other boards where PCI can only be initialized late
because it depends on a lot of other functions that must be working
first.
I explained this a number of times before: the current code was
designed to allow even for completely board specific init
sequences, by simply adding #define for the list of init functions
to the board config file - see for example here:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/33951/focus=36436
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/72131/focus=72136
If you look at the current code - heavily larded with #ifdefs of
all shapes and colors - I cannot see any good way to transform this
into an initcall (and thus sequence number based) implementation.
Do you have any specific ideas how to address this?
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
Landing: a controlled mid-air collision with a planet.
More information about the U-Boot
mailing list