master/fsm_master.c
changeset 2146 05c6ddef33ab
parent 2145 a63ed5513117
child 2166 1d5a5303f15c
equal deleted inserted replaced
2145:a63ed5513117 2146:05c6ddef33ab
   210         fsm->slaves_responding = datagram->working_counter;
   210         fsm->slaves_responding = datagram->working_counter;
   211         EC_MASTER_INFO(master, "%u slave(s) responding.\n",
   211         EC_MASTER_INFO(master, "%u slave(s) responding.\n",
   212                 fsm->slaves_responding);
   212                 fsm->slaves_responding);
   213     }
   213     }
   214 
   214 
   215     if (fsm->link_state && !master->main_device.link_state) { // link went down
   215     if (fsm->link_state && !master->main_device.link_state) {
       
   216         // link went down
   216         EC_MASTER_DBG(master, 1, "Master state machine detected "
   217         EC_MASTER_DBG(master, 1, "Master state machine detected "
   217                 "link down. Clearing slave list.\n");
   218                 "link down. Clearing slave list.\n");
   218 
   219 
   219         ec_master_clear_slaves(master);
   220         ec_master_clear_slaves(master);
   220         fsm->slave_states = 0x00;
   221         fsm->slave_states = 0x00;
   265                 ec_fsm_master_restart(fsm);
   266                 ec_fsm_master_restart(fsm);
   266                 return;
   267                 return;
   267             }
   268             }
   268 
   269 
   269             size = sizeof(ec_slave_t) * master->slave_count;
   270             size = sizeof(ec_slave_t) * master->slave_count;
   270             if (!(master->slaves = (ec_slave_t *) kmalloc(size, GFP_KERNEL))) {
   271             if (!(master->slaves =
       
   272                         (ec_slave_t *) kmalloc(size, GFP_KERNEL))) {
   271                 EC_MASTER_ERR(master, "Failed to allocate %u bytes"
   273                 EC_MASTER_ERR(master, "Failed to allocate %u bytes"
   272                         " of slave memory!\n", size);
   274                         " of slave memory!\n", size);
   273                 master->slave_count = 0; // TODO avoid retrying scan!
   275                 master->slave_count = 0; // TODO avoid retrying scan!
   274                 master->scan_busy = 0;
   276                 master->scan_busy = 0;
   275                 wake_up_interruptible(&master->scan_queue);
   277                 wake_up_interruptible(&master->scan_queue);
   576         EC_MASTER_DBG(master, 1, "Configuration changed"
   578         EC_MASTER_DBG(master, 1, "Configuration changed"
   577                 " (aborting state check).\n");
   579                 " (aborting state check).\n");
   578 
   580 
   579         fsm->slave = master->slaves; // begin with first slave
   581         fsm->slave = master->slaves; // begin with first slave
   580         ec_fsm_master_enter_write_system_times(fsm);
   582         ec_fsm_master_enter_write_system_times(fsm);
       
   583         return;
   581     }
   584     }
   582 
   585 
   583     // Does the slave have to be configured?
   586     // Does the slave have to be configured?
   584     if ((slave->current_state != slave->requested_state
   587     if ((slave->current_state != slave->requested_state
   585                 || slave->force_config) && !slave->error_flag) {
   588                 || slave->force_config) && !slave->error_flag) {