[U-Boot] Best way of making some drivers common across kirkwood and orion5x SoCs?
Albert ARIBAUD
albert.aribaud at free.fr
Sat Oct 31 10:12:00 CET 2009
Hi,
I am working on adding mainline support for Orion5x family of Marvell
SoCs in U-boot, based on the Kirkwood support already present.
I believe these are different enough families to justify adding an
'orion5x' SoC along the existing 'kirkwood' one.
Several kirkwood drivers could actually be reused almost as-is and
should thus be shared between both SoC families. For instance,
kirkwood_egiga.c and ehci-kirkwood.c would only differ by the number of
ports and kirkwood_i2c.c could be reused as-is.
However, these drivers have hard-coded numbers of ports, and 'hard'
references to 'kirkwood.h' for their register definitions. Making them
cross-SoC would require moving the numbers of ports to some SoC-specific
header file, and that this header file *not* be named after a specific SoC.
I've searched for a layer between CPU and Core where cross-SoC code
could fit, but I haven't seen one, and I don't think one would be needed.
Instead, I have thought of replacing the #include "kirkwood.h" with a
#include "soc.h", where soc.h would exist in both SoC's header files
include/asm-arm/arch-kirkwood and include/asm-arm/arch-orion5x. This
soc.h file would either include the specific soc header file (kirkwood.h
or orion5x.h) or, better yet, be a symlink to it, or better again,
replace it.
This could be done in a two-step approach, each step being one commit.
1) introduce "soc.h" by:
- 1a) renaming, symlinking or including kirkwood.h into soc.h and
changing kirkwood drivers that #include "kirkwood.h" accordingly;
- 1b) turning all kirkwood-specific namings in these kirkwood drivers
into marvell-non-soc-specific ones (remove "KW_" prefixes and such).
(steps 1a and 1b are independent)
2) add orion5x support with its own "soc.h" file.
Would this approach be clean enough to be considered for inclusion in
mainline?
Amicalement,
--
Albert.
More information about the U-Boot
mailing list