equal
deleted
inserted
replaced
392 { |
392 { |
393 ec_slave_t *slave; |
393 ec_slave_t *slave; |
394 ec_datagram_t *datagram = &master->fsm.datagram; |
394 ec_datagram_t *datagram = &master->fsm.datagram; |
395 |
395 |
396 ec_master_eoe_stop(master); // stop EoE timer |
396 ec_master_eoe_stop(master); // stop EoE timer |
397 master->eoe_checked = 0; // prevent from starting again by FSM |
397 master->eoe_checked = 1; // prevent from starting again by FSM |
398 |
398 |
399 master->mode = EC_MASTER_MODE_OPERATION; |
399 master->mode = EC_MASTER_MODE_OPERATION; |
400 while (!cancel_delayed_work(&master->idle_work)) { |
400 while (!cancel_delayed_work(&master->idle_work)) { |
401 flush_workqueue(master->workqueue); |
401 flush_workqueue(master->workqueue); |
402 } |
402 } |
430 else { |
430 else { |
431 ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); |
431 ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); |
432 } |
432 } |
433 } |
433 } |
434 |
434 |
435 master->eoe_checked = 1; // allow starting EoE again |
435 master->eoe_checked = 0; // allow starting EoE again |
436 |
436 |
437 return 0; |
437 return 0; |
438 |
438 |
439 out_idle: |
439 out_idle: |
440 master->mode = EC_MASTER_MODE_IDLE; |
440 master->mode = EC_MASTER_MODE_IDLE; |
453 ec_slave_t *slave; |
453 ec_slave_t *slave; |
454 ec_fsm_t *fsm = &master->fsm; |
454 ec_fsm_t *fsm = &master->fsm; |
455 ec_datagram_t *datagram = &master->fsm.datagram; |
455 ec_datagram_t *datagram = &master->fsm.datagram; |
456 |
456 |
457 ec_master_eoe_stop(master); // stop EoE timer |
457 ec_master_eoe_stop(master); // stop EoE timer |
458 master->eoe_checked = 0; // prevent from starting again by FSM |
458 master->eoe_checked = 1; // prevent from starting again by FSM |
459 |
459 |
460 // wait for FSM datagram |
460 // wait for FSM datagram |
461 if (datagram->state == EC_DATAGRAM_SENT) { |
461 if (datagram->state == EC_DATAGRAM_SENT) { |
462 // active waiting |
462 // active waiting |
463 while (get_cycles() - datagram->cycles_sent |
463 while (get_cycles() - datagram->cycles_sent |