equal
deleted
inserted
replaced
76 fsm->state = ec_fsm_master_state_start; |
76 fsm->state = ec_fsm_master_state_start; |
77 fsm->slaves_responding = 0; |
77 fsm->slaves_responding = 0; |
78 fsm->topology_change_pending = 0; |
78 fsm->topology_change_pending = 0; |
79 fsm->slave_states = EC_SLAVE_STATE_UNKNOWN; |
79 fsm->slave_states = EC_SLAVE_STATE_UNKNOWN; |
80 fsm->validate = 0; |
80 fsm->validate = 0; |
|
81 fsm->tainted = 0; |
81 |
82 |
82 // init sub-state-machines |
83 // init sub-state-machines |
83 ec_fsm_slave_init(&fsm->fsm_slave, fsm->datagram); |
84 ec_fsm_slave_init(&fsm->fsm_slave, fsm->datagram); |
84 ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram); |
85 ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram); |
85 ec_fsm_change_init(&fsm->fsm_change, fsm->datagram); |
86 ec_fsm_change_init(&fsm->fsm_change, fsm->datagram); |
204 if (fsm->slaves_responding == master->slave_count) { |
205 if (fsm->slaves_responding == master->slave_count) { |
205 fsm->validate = 1; // start validation later |
206 fsm->validate = 1; // start validation later |
206 } |
207 } |
207 else { |
208 else { |
208 EC_WARN("Invalid slave count. Bus in tainted state.\n"); |
209 EC_WARN("Invalid slave count. Bus in tainted state.\n"); |
|
210 fsm->tainted = 1; |
209 } |
211 } |
210 } |
212 } |
211 } |
213 } |
212 |
214 |
213 // slave states changed? |
215 // slave states changed? |
638 return; |
640 return; |
639 } |
641 } |
640 |
642 |
641 // have all states been validated? |
643 // have all states been validated? |
642 if (slave->list.next == &fsm->master->slaves) { |
644 if (slave->list.next == &fsm->master->slaves) { |
|
645 fsm->tainted = 0; |
643 fsm->slave = list_entry(fsm->master->slaves.next, ec_slave_t, list); |
646 fsm->slave = list_entry(fsm->master->slaves.next, ec_slave_t, list); |
644 // start writing addresses to offline slaves |
647 // start writing addresses to offline slaves |
645 ec_fsm_master_action_addresses(fsm); |
648 ec_fsm_master_action_addresses(fsm); |
646 return; |
649 return; |
647 } |
650 } |