equal
deleted
inserted
replaced
225 if (fsm->topology_change_pending && |
225 if (fsm->topology_change_pending && |
226 master->mode == EC_MASTER_MODE_IDLE) { |
226 master->mode == EC_MASTER_MODE_IDLE) { |
227 fsm->topology_change_pending = 0; |
227 fsm->topology_change_pending = 0; |
228 fsm->tainted = 0; |
228 fsm->tainted = 0; |
229 fsm->idle = 0; |
229 fsm->idle = 0; |
|
230 fsm->scan_jiffies = jiffies; |
230 |
231 |
231 ec_master_eoe_stop(master); |
232 ec_master_eoe_stop(master); |
232 ec_master_destroy_slaves(master); |
233 ec_master_destroy_slaves(master); |
233 |
234 |
234 master->slave_count = datagram->working_counter; |
235 master->slave_count = datagram->working_counter; |
742 } |
743 } |
743 |
744 |
744 /*****************************************************************************/ |
745 /*****************************************************************************/ |
745 |
746 |
746 /** |
747 /** |
747 Master state: SCAN SLAVES. |
748 * Master state: SCAN SLAVES. |
748 Executes the sub-statemachine for the scanning of a slave. |
749 * Executes the sub-statemachine for the scanning of a slave. |
749 */ |
750 */ |
750 |
751 |
751 void ec_fsm_master_state_scan_slaves(ec_fsm_master_t *fsm /**< master state machine */) |
752 void ec_fsm_master_state_scan_slaves( |
|
753 ec_fsm_master_t *fsm /**< master state machine */ |
|
754 ) |
752 { |
755 { |
753 ec_master_t *master = fsm->master; |
756 ec_master_t *master = fsm->master; |
754 ec_slave_t *slave = fsm->slave; |
757 ec_slave_t *slave = fsm->slave; |
755 |
758 |
756 if (ec_fsm_slave_exec(&fsm->fsm_slave)) // execute slave state machine |
759 if (ec_fsm_slave_exec(&fsm->fsm_slave)) // execute slave state machine |
762 ec_fsm_slave_start_scan(&fsm->fsm_slave, fsm->slave); |
765 ec_fsm_slave_start_scan(&fsm->fsm_slave, fsm->slave); |
763 ec_fsm_slave_exec(&fsm->fsm_slave); // execute immediately |
766 ec_fsm_slave_exec(&fsm->fsm_slave); // execute immediately |
764 return; |
767 return; |
765 } |
768 } |
766 |
769 |
767 EC_INFO("Bus scanning completed.\n"); |
770 EC_INFO("Bus scanning completed in %u ms.\n", |
|
771 (u32) (jiffies - fsm->scan_jiffies) * 1000 / HZ); |
768 |
772 |
769 // set initial states of all slaves to PREOP to make mailbox |
773 // set initial states of all slaves to PREOP to make mailbox |
770 // communication possible |
774 // communication possible |
771 list_for_each_entry(slave, &master->slaves, list) { |
775 list_for_each_entry(slave, &master->slaves, list) { |
772 if (slave->requested_state == EC_SLAVE_STATE_UNKNOWN) |
776 if (slave->requested_state == EC_SLAVE_STATE_UNKNOWN) |