master/master.c
changeset 274 b397aee6e602
parent 268 4f9c149fb71f
child 275 ba51285d4ef6
equal deleted inserted replaced
273:e7d4579617af 274:b397aee6e602
   702     if (master->mode != EC_MASTER_MODE_FREERUN) return;
   702     if (master->mode != EC_MASTER_MODE_FREERUN) return;
   703 
   703 
   704     ec_master_eoe_stop(master);
   704     ec_master_eoe_stop(master);
   705 
   705 
   706     EC_INFO("Stopping Free-Run mode.\n");
   706     EC_INFO("Stopping Free-Run mode.\n");
       
   707     master->mode = EC_MASTER_MODE_IDLE;
   707 
   708 
   708     if (!cancel_delayed_work(&master->freerun_work)) {
   709     if (!cancel_delayed_work(&master->freerun_work)) {
   709         flush_workqueue(master->workqueue);
   710         flush_workqueue(master->workqueue);
   710     }
   711     }
   711 
   712 
   712     ec_master_clear_slaves(master);
   713     ec_master_clear_slaves(master);
   713     master->mode = EC_MASTER_MODE_IDLE;
       
   714 }
   714 }
   715 
   715 
   716 /*****************************************************************************/
   716 /*****************************************************************************/
   717 
   717 
   718 /**
   718 /**
   734     ecrt_master_async_send(master);
   734     ecrt_master_async_send(master);
   735 
   735 
   736     // release master lock
   736     // release master lock
   737     spin_unlock_bh(&master->internal_lock);
   737     spin_unlock_bh(&master->internal_lock);
   738 
   738 
   739     queue_delayed_work(master->workqueue, &master->freerun_work, 1);
   739     if (master->mode == EC_MASTER_MODE_FREERUN)
       
   740         queue_delayed_work(master->workqueue, &master->freerun_work, 1);
   740 }
   741 }
   741 
   742 
   742 /*****************************************************************************/
   743 /*****************************************************************************/
   743 
   744 
   744 /**
   745 /**