summaryrefslogtreecommitdiff
path: root/src/drivers/driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/driver.c')
-rw-r--r--src/drivers/driver.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/drivers/driver.c b/src/drivers/driver.c
index fae54e7..829262e 100644
--- a/src/drivers/driver.c
+++ b/src/drivers/driver.c
@@ -12,10 +12,11 @@ static driver_vtable_t const driver_vtable = {
driver_print_info
};
-void driver_init( driver_t *driver, interrupt_t *interrupt, void *context )
+void driver_init( driver_t *driver, driver_type_t type, interrupt_t *interrupt, void *context )
{
memset( driver, 0, sizeof( driver_t ) );
+ driver->type = type;
driver->interrupt = interrupt;
driver->context = context;
@@ -96,3 +97,18 @@ void driver_manager_print_info_all( driver_manager_t *manager )
driver->vtable->print_info( driver );
}
}
+
+driver_t *driver_manager_find_driver( driver_manager_t *manager, driver_type_t type )
+{
+ driver_t *driver;
+
+ for( int i = 0; i < manager->nof_drivers; i++ ) {
+ driver_t *driver = (driver_t *)manager->driver[i];
+ if( driver->type == type ) {
+ return driver;
+ }
+ }
+
+ return NULL;
+
+}