[U-Boot] [PATCH v3 8/9] tegra: i2c: Enable new CONFIG_SYS_I2C framework

Albert ARIBAUD albert.u.boot at aribaud.net
Wed Jul 31 10:16:36 CEST 2013


Hi Heiko,

On Wed, 31 Jul 2013 09:36:19 +0200, Heiko Schocher <hs at denx.de> wrote:

> > On the other hand, it may be hard to immediately know what functions
> > throughout U-boot are safe to call from within board_init_f(); maybe we
> > should start thinking about checking and marking these, the simplest
> > way being to suffix them with "_f" once we have made sure they are safe
> > to call from within board_init_f().
> 
> Hmmm... Maybe instead we should think (also in thinking common bring
> up for all boards) about:
> 
> getting rid of board_init_f in u-boot code, instead use for all
> boards spl code to init needed things and copy and relocate u-boot
> to ram in spl code ... so we have in u-boot no longer such
> restictions ... but thats just an idea which whirs in my head ...
> without thinking to deep in it.
> 
> But this approach would have some advantages ...

Well, the original SPL was basically board_init_f() plus some code to
copy U-Boot from wherever it was to DDR, so it was tightly linked to
board_init_f(). But... first, SPL has evolved into a "U-Boot lite"
where much can happen beyond board_init_f() -- think Falcon mode, for
instance -- and second, there are boards which do not have SPL at all,
and their board_init_f() can thus not be "moved to SPL".

So no, I don't think we can move U-Boot's design from "_f/_r" to
"SPL/U-Boot".

> > But we should strictly limit the scope of board_init_f() or we'll find
> > the board_init_f()/board_init_r() pair following a patch similar to the
> > SPL/U-Boot pair, where SPL started out as a tiny helper piece of code
> > and ending up a resizeable (and, I dare to say, sizeable as well) kind
> > of U-boot. If we let too many features slip in board_init_f(), it'll
> > blur into a board_init_r() like and before we know it, it'll *require*
> > DDR, and write access to it too...
> >
> > So, board_init_() should *strictly* be limited to setting up a console
> > (for information purposes) and giving access to DDR while in the same
> > time never writing to it itself. Bonus points if it can limit itself to
> > *enabling* and postpone any *optimizing*(I am thinking of DDR settings
> > here and no, I don't have specific existing cases in mind; just sayin').
> >
> > In the present instance, I'd rather we either:
> >
> > - removed dependency on DT etc. by using "hard-coded" low level I2C
> >    reads for those boards that need it (I assume that for each of these
> >    boards the I2C slave, offset, and length to read are constant) in _f
> >    phase, or
> 
> But DT is used for initializing the i2c driver in tegra ...

Alright, out goes this proposal. Anyway, I didn't like it best. :)

> > - parsed the _f phase looking for offending functions or calls which
> >    write to .data or .bss and fix them, suffixing them with _f; in
> >    essence, that amounts to starting the implementation of my suggestion
> >    above alongside fixing the issue at hand.
> >
> > The first approach is rather "let's bring the thing back up first", so
> > it does not have my preference, but I would understand the need to
> > quickly fix things.
> 
> Yes.
> 
> > The second approach seems to be going in the same direction as Heiko's
> > proposal of 07:52 +0200, which I thus second provided it is applicable
> > to all the boards Wolfgang had in mind.
> 
> Lets do us this step as fixup ;-)

Alright too. :)

> bye,
> Heiko

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list