master/fsm_master.c
changeset 642 3ed80c8ed616
parent 637 d5d04c868e0e
child 643 78929d878b2c
equal deleted inserted replaced
641:811952909e11 642:3ed80c8ed616
   207 
   207 
   208     // topology change in idle mode: clear all slaves and scan the bus
   208     // topology change in idle mode: clear all slaves and scan the bus
   209     if (fsm->topology_change_pending &&
   209     if (fsm->topology_change_pending &&
   210             master->mode == EC_MASTER_MODE_IDLE) {
   210             master->mode == EC_MASTER_MODE_IDLE) {
   211         fsm->topology_change_pending = 0;
   211         fsm->topology_change_pending = 0;
       
   212         fsm->tainted = 0;
   212 
   213 
   213         ec_master_eoe_stop(master);
   214         ec_master_eoe_stop(master);
   214         ec_master_destroy_slaves(master);
   215         ec_master_destroy_slaves(master);
   215 
   216 
   216         master->slave_count = datagram->working_counter;
   217         master->slave_count = datagram->working_counter;
   619         return;
   620         return;
   620     }
   621     }
   621 
   622 
   622     // have all states been validated?
   623     // have all states been validated?
   623     if (slave->list.next == &fsm->master->slaves) {
   624     if (slave->list.next == &fsm->master->slaves) {
       
   625         fsm->topology_change_pending = 0;
   624         fsm->tainted = 0;
   626         fsm->tainted = 0;
   625         fsm->slave = list_entry(fsm->master->slaves.next, ec_slave_t, list);
   627         fsm->slave = list_entry(fsm->master->slaves.next, ec_slave_t, list);
   626         // start writing addresses to offline slaves
   628         // start writing addresses to offline slaves
   627         ec_fsm_master_action_addresses(fsm);
   629         ec_fsm_master_action_addresses(fsm);
   628         return;
   630         return;