[U-Boot] [PATCH v5 8/8] nand: mxc: Switch NAND SPL to generic SPL

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Sun Feb 10 14:37:54 CET 2013


On Sunday, February 10, 2013 1:02:58 AM, Benoît Thébaudeau wrote:
> Dear Marek Vasut,
> 
> On Sunday, February 10, 2013 12:24:04 AM, Marek Vasut wrote:
> > Dear Benoît Thébaudeau,
> > 
> > > On Saturday, February 9, 2013 2:53:44 PM, Benoît Thébaudeau wrote:
> > > > On Saturday, February 9, 2013 12:47:25 AM, Benoît Thébaudeau wrote:
> > > > > On Friday, February 8, 2013 11:49:27 PM, Benoît Thébaudeau wrote:
> > > > > > Subject: [PATCH v5 8/8] nand: mxc: Switch NAND SPL to generic SPL
> > > > > > 
> > > > > > Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
> > > > > > ---
> > > > > > 
> > > > > > Changes in v5:
> > > > > >  - Remove spaces between function name and open parenthesis.
> > > > > >  - Fix mx31pdk and tx25 Makefile-s and SPL linker scripts.
> > > > > >  - Remove the useless definition of CONFIG_SPL_LDSCRIPT.
> > > > > >  - Fix the call to nand_boot().
> > > > > > 
> > > > > > Changes in v4:
> > > > > >  - New patch.
> > > > > > 
> > > > > > Changes in v3: None
> > > > > > Changes in v2: None
> > > > > 
> > > > > This is now supposed to be working and compile-tested.
> > > > > 
> > > > > Custodians, please review and advise.
> > > > > 
> > > > > Board maintainers, please test.
> > > > > 
> > > > > Tell me if I should split away some stuff.
> > > > > 
> > > > > Should doc/README.arm-relocation be updated, and how since tx25 no
> > > > > longer uses
> > > > > NAND SPL, which is also deprecated?
> > > > > 
> > > > > Note that mx31pdk and tx25 had been broken by commit
> > > > > e05e5de7fae5bec79617e113916dac6631251156. After this commit, for
> > > > > those
> > > > > boards,
> > > > > _main called board_init_f, which called relocate_code, which
> > > > > unexpectedly (for
> > > > > their users) returned to nowhere in ctr0.S instead of calling
> > > > > nand_boot. Also,
> > > > > crt0.S calls nand_boot if CONFIG_SPL_BUILD is not defined but
> > > > > CONFIG_NAND_SPL
> > > > > is, which is not normal for NAND SPL. Other NAND SPL boards may be
> > > > > broken too,
> > > > > but that's not too much of an issue since they are supposed to
> > > > > migrate
> > > > > to generic SPL.
> > > > 
> > > > I am also wondering if board_init_f should not be moved out of
> > > > mxc_nand_spl.c to
> > > > either <board>/lowlevel_init.S or <board>/<board>.c. That would make
> > > > mxc_nand_spl.c more generic if for some reason a board needs to do
> > > > specific things. Any opinion?
> > > > 
> > > > For the start.S files, since it's not possible to know from
> > > > CONFIG_SPL_BUILD and
> > > > CONFIG_NAND_SPL if relocate_code is needed or not, I see the following
> > > > choices:
> > > > 1) Let it defined in all cases. It's quite small, so it won't hurt
> > > > much.
> > > > 2) Create a specific SPL #define (e.g. CONFIG_SPL_RELOCATE_CODE) to
> > > > define it
> > > > 
> > > >    for generic SPL only if needed.
> > > > 
> > > > 3) Just create a specific linker section for it so that it's
> > > > automatically
> > > > 
> > > >    garbage-collected if unneeded.
> > > > 
> > > > Any opinion?
> > 
> > How much of start.S can be actually rewritten in pure-C ?
> 
> I would say only relocate_code(). Apart from this function, start.S only
> deals
> with preprocessor register accesses and IRQ / exception handling that require
> assembly.

s/preprocessor/coprocessor/

> As to relocate_code(), it would still be tricky in pure C because it mixes
> absolute addresses with position-independent code and data accesses, so one
> would have to be very careful about the C coding of this function in order to
> avoid a dependency on compiler choices. Having it written in assembly
> guarantees
> a correct result and emphasizes the absolute/relative access constraints for
> easier maintenance.
> 
> But this is only my opinion.
> 
> Best regards,
> Benoît
> 


More information about the U-Boot mailing list