master/master.c
changeset 601 d6d951b766e3
parent 597 3a2c2d6ca5e9
child 610 29489a43ecee
equal deleted inserted replaced
600:b0660152f710 601:d6d951b766e3
   150     master->internal_lock = SPIN_LOCK_UNLOCKED;
   150     master->internal_lock = SPIN_LOCK_UNLOCKED;
   151     master->request_cb = NULL;
   151     master->request_cb = NULL;
   152     master->release_cb = NULL;
   152     master->release_cb = NULL;
   153     master->cb_data = NULL;
   153     master->cb_data = NULL;
   154 
   154 
       
   155     INIT_LIST_HEAD(&master->eeprom_requests);
       
   156     init_MUTEX(&master->eeprom_sem);
       
   157     init_waitqueue_head(&master->eeprom_queue);
       
   158 
   155     master->sdo_request = NULL;
   159     master->sdo_request = NULL;
   156     master->sdo_seq_user = 0;
   160     master->sdo_seq_user = 0;
   157     master->sdo_seq_master = 0;
   161     master->sdo_seq_master = 0;
   158     init_MUTEX(&master->sdo_sem);
   162     init_MUTEX(&master->sdo_sem);
   159     init_timer(&master->sdo_timer);
   163     init_timer(&master->sdo_timer);
   252 void ec_master_clear(struct kobject *kobj /**< kobject of the master */)
   256 void ec_master_clear(struct kobject *kobj /**< kobject of the master */)
   253 {
   257 {
   254     ec_master_t *master = container_of(kobj, ec_master_t, kobj);
   258     ec_master_t *master = container_of(kobj, ec_master_t, kobj);
   255     ec_eoe_t *eoe, *next_eoe;
   259     ec_eoe_t *eoe, *next_eoe;
   256     ec_datagram_t *datagram, *next_datagram;
   260     ec_datagram_t *datagram, *next_datagram;
       
   261 
       
   262     // list of EEPROM requests is empty,
       
   263     // otherwise master could not be cleared.
   257 
   264 
   258     // dequeue all datagrams
   265     // dequeue all datagrams
   259     list_for_each_entry_safe(datagram, next_datagram,
   266     list_for_each_entry_safe(datagram, next_datagram,
   260                              &master->datagram_queue, queue) {
   267                              &master->datagram_queue, queue) {
   261         datagram->state = EC_DATAGRAM_ERROR;
   268         datagram->state = EC_DATAGRAM_ERROR;