The ugly "setup.c" file Our current setup.c is as ugly as vendor ones It refers to several other drivers (timer, uart, pll, ...) It must be augmented any time a new driver is added Worse, such additions may depend on what we configure Worse, it may need to depend on what main() does What we really need, is a simpler approach The init function should be part of the driver If the driver is not built, its initialization would not be built either If the driver is not used, its initialization should not be run