diff options
-rw-r--r-- | cpukit/libdrvmgr/drvmgr.c | 13 | ||||
-rw-r--r-- | cpukit/sapi/src/exinit.c | 4 |
2 files changed, 10 insertions, 7 deletions
diff --git a/cpukit/libdrvmgr/drvmgr.c b/cpukit/libdrvmgr/drvmgr.c index 66d6cfa0e7..7c37afd808 100644 --- a/cpukit/libdrvmgr/drvmgr.c +++ b/cpukit/libdrvmgr/drvmgr.c @@ -68,15 +68,14 @@ void _DRV_Manager_init_level(int level) { struct drvmgr *mgr = &drvmgr; - if (mgr->level < level) { - /* Set new Level */ - mgr->level = level; + if (mgr->level >= level) + return; - /* Initialize buses and devices into this new level */ - drvmgr_init_update(); - } + /* Set new Level */ + mgr->level = level; - bsp_driver_level_hook(level); + /* Initialize buses and devices into this new level */ + drvmgr_init_update(); } /* Initialize Data structures of the driver manager and call driver diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index 13154ce4e4..1eaf24f4d3 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -190,6 +190,7 @@ static void rtems_initialize_device_drivers(void) * - Install extra memory. */ _DRV_Manager_init_level(1); + bsp_driver_level_hook(1); #endif /* Initialize I/O drivers. @@ -210,6 +211,7 @@ static void rtems_initialize_device_drivers(void) * for the first time. */ _DRV_Manager_init_level(2); + bsp_driver_level_hook(2); /* Init Drivers to Level 3 * @@ -218,11 +220,13 @@ static void rtems_initialize_device_drivers(void) * API inited in level 2 */ _DRV_Manager_init_level(3); + bsp_driver_level_hook(3); /* Init Drivers to Level 4, * Init drivers that depend on services initialized in Level 3 */ _DRV_Manager_init_level(4); + bsp_driver_level_hook(4); #endif #if defined(RTEMS_MULTIPROCESSING) |