diff -r a7a8ed41b50a -r 29af81543ce1 master/module.c --- a/master/module.c Tue Sep 19 13:09:39 2006 +0000 +++ b/master/module.c Tue Sep 19 13:28:40 2006 +0000 @@ -56,6 +56,7 @@ static int ec_master_count = 1; /**< parameter value, number of masters */ static int ec_eoeif_count = 0; /**< parameter value, number of EoE interf. */ static struct list_head ec_masters; /**< list of masters */ +static dev_t device_number; /*****************************************************************************/ @@ -89,7 +90,12 @@ EC_INFO("Master driver, %s\n", EC_COMPILE_INFO); if (ec_master_count < 1) { - EC_ERR("Error - Invalid ec_master_count: %i\n", ec_master_count); + EC_ERR("Invalid ec_master_count: %i\n", ec_master_count); + goto out_return; + } + + if (alloc_chrdev_region(&device_number, 0, ec_master_count, "EtherCAT")) { + EC_ERR("Failed to allocate device number!\n"); goto out_return; } @@ -104,7 +110,7 @@ goto out_free; } - if (ec_master_init(master, i, ec_eoeif_count)) + if (ec_master_init(master, i, ec_eoeif_count, device_number)) goto out_free; if (kobject_add(&master->kobj)) { @@ -148,6 +154,8 @@ kobject_put(&master->kobj); // free master } + unregister_chrdev_region(device_number, ec_master_count); + EC_INFO("Master driver cleaned up.\n"); }