diff -r 473ec2246ec1 -r fbbd4e54e031 master/master.c --- a/master/master.c Fri Mar 09 14:00:32 2007 +0000 +++ b/master/master.c Fri Mar 09 15:11:29 2007 +0000 @@ -157,14 +157,9 @@ init_MUTEX(&master->eeprom_sem); init_waitqueue_head(&master->eeprom_queue); - master->sdo_request = NULL; - master->sdo_seq_user = 0; - master->sdo_seq_master = 0; + INIT_LIST_HEAD(&master->sdo_requests); init_MUTEX(&master->sdo_sem); - init_timer(&master->sdo_timer); - master->sdo_timer.function = ec_master_check_sdo; - master->sdo_timer.data = (unsigned long) master; - init_completion(&master->sdo_complete); + init_waitqueue_head(&master->sdo_queue); // init devices if (ec_device_init(&master->main_device, master)) @@ -301,21 +296,6 @@ /*****************************************************************************/ /** - Flushes the SDO request queue. -*/ - -void ec_master_flush_sdo_requests(ec_master_t *master) -{ - del_timer_sync(&master->sdo_timer); - complete(&master->sdo_complete); - master->sdo_request = NULL; - master->sdo_seq_user = 0; - master->sdo_seq_master = 0; -} - -/*****************************************************************************/ - -/** Internal locking callback. */ @@ -416,7 +396,6 @@ ec_master_eoe_stop(master); ec_master_thread_stop(master); - ec_master_flush_sdo_requests(master); ec_master_destroy_slaves(master); } @@ -1238,25 +1217,6 @@ /*****************************************************************************/ /** -*/ - -void ec_master_check_sdo(unsigned long data /**< master pointer */) -{ - ec_master_t *master = (ec_master_t *) data; - - if (master->sdo_seq_master != master->sdo_seq_user) { - master->sdo_timer.expires = jiffies + 10; - add_timer(&master->sdo_timer); - return; - } - - // master has processed the request - complete(&master->sdo_complete); -} - -/*****************************************************************************/ - -/** Measures the time, a frame is on the bus. \return 0 in case of success, else < 0 */