master/slave.c
changeset 606 a82c53d6a5d4
parent 605 96a894895999
child 607 7b1daa325c5f
equal deleted inserted replaced
605:96a894895999 606:a82c53d6a5d4
   837         // interrupted by signal
   837         // interrupted by signal
   838         down(&master->eeprom_sem);
   838         down(&master->eeprom_sem);
   839         if (request.state == EC_EEPROM_REQ_QUEUED) {
   839         if (request.state == EC_EEPROM_REQ_QUEUED) {
   840             list_del(&request.list);
   840             list_del(&request.list);
   841             up(&master->eeprom_sem);
   841             up(&master->eeprom_sem);
   842             return -EPERM;
   842             return -EINTR;
   843         }
   843         }
   844         // request processing: interrupt not possible.
   844         // request already processing: interrupt not possible.
   845         up(&master->eeprom_sem);
   845         up(&master->eeprom_sem);
   846     }
   846     }
   847 
   847 
       
   848     // wait until master FSM has finished processing
   848     wait_event(master->eeprom_queue, request.state != EC_EEPROM_REQ_BUSY);
   849     wait_event(master->eeprom_queue, request.state != EC_EEPROM_REQ_BUSY);
   849 
   850 
   850     return request.state == EC_EEPROM_REQ_COMPLETED ? size : -EIO;
   851     return request.state == EC_EEPROM_REQ_COMPLETED ? size : -EIO;
   851 }
   852 }
   852 
   853