[U-Boot] Struct SoC access (was:Make preparatory patches that initially have no effect?)

Reinhard Meyer u-boot at emk-elektronik.de
Sat Aug 14 21:30:18 CEST 2010


Dear Wolfgang Denk,
> Have the first add that file, and the second assume it comes later in
> the sequence.

You don't mean by "sequence" PATCH 1/n, 2/n, etc? The drivers are so
independent that that would not really make sense...

> The wiki page does not talk about drivers... It's a general rule and
> applies to all sorts of code. Only add what is really used (this also
> refers, for example, to struct definitions for register blocks etc. -
> don't try to provide a complete description of your SoC; add only
> stuff that is actually used by the code).

That's a thin line. Although I need only one register of the DBU (for
example) I think its wise to define all registers in it, and not to
_reserve[] the unused ones....

Anyway, is the method of (for example!)

#define DBU_ADDR 0xsomething (in a SoC header file)

dbu_t *dbu = (dbu_t *)DBU_ADDR; (in a function)

OK?

Or do we need to further encapsulate that in a function like

dbut_t *get_dbu_addr(void) {return (dbu_t *)DBU_ADDR;}


I was even thinking of something like

struct soc {
	u32 xyz[0x80];	/* XYZ unit */
	u32 dbu[0x80];	/* Debug Unit */
	u32 rstc[0x80];	/* Reset Controller */
and so on.

Then in a driver one could write
dbu_t *dbu = (dbu_t *)soc.dbu;
or something along that line

Best Regards
Reinhard


More information about the U-Boot mailing list