version 1.2, 2008/08/08 13:37:11 |
version 1.2.2.1, 2008/08/13 17:19:28 |
|
|
#include <driver.h> |
#include <driver.h> |
#include <machdep.h> |
#include <machdep.h> |
|
|
|
#ifdef DEBUG |
|
#define DPRINTF(a) printf a |
|
#else |
|
#define DPRINTF(a) |
|
#endif |
|
|
#define MAXDRIVER 100 |
#define MAXDRIVER 100 |
|
|
#ifndef CONFIG_AUTOCONF |
|
extern struct driver *driver_table[]; |
extern struct driver *driver_table[]; |
#endif |
|
|
|
/* |
/* |
* Entry point of driver module |
* Entry point of driver module |
|
|
struct driver *drv; |
struct driver *drv; |
int order, i, err; |
int order, i, err; |
|
|
printk("Prex driver module built: " __DATE__ "\n"); |
DPRINTF(("Prex driver module built: " __DATE__ "\n")); |
|
|
/* |
/* |
* Initialize platform hardware. |
* Initialize platform hardware. |
|
|
if (machine_init()) |
if (machine_init()) |
panic("driver_main: init failed"); |
panic("driver_main: init failed"); |
|
|
#ifndef CONFIG_AUTOCONF |
|
/* |
/* |
* Call init routine for all device drivers with init order. |
* Call init routine for all device drivers with init order. |
* Smaller value will be run first. |
* Smaller value will be run first. |
|
|
ASSERT(drv->order < 16); |
ASSERT(drv->order < 16); |
if (drv->order == order) { |
if (drv->order == order) { |
if (drv->init) { |
if (drv->init) { |
printk("Initializing %s\n", drv->name); |
DPRINTF(("Initializing %s\n", |
|
drv->name)); |
err = drv->init(); |
err = drv->init(); |
} |
} |
} |
} |
} |
} |
} |
} |
#else |
|
/* |
|
* Enter autoconfiguration machinery. |
|
* Attach 'root' pseudo device, which will then search for its children. |
|
*/ |
|
printk("Entering autoconfiguration phase.\n"); |
|
|
|
config_attach_rootdev(); |
|
|
|
printk("Exiting autoconfiguration phase.\n"); |
|
|
|
#endif /* !CONFIG_AUTOCONF */ |
|
|
|
} |
} |