
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