151 |
151 |
152 slave->sdo_dictionary_fetched = 0; |
152 slave->sdo_dictionary_fetched = 0; |
153 slave->jiffies_preop = 0; |
153 slave->jiffies_preop = 0; |
154 |
154 |
155 INIT_LIST_HEAD(&slave->sdo_requests); |
155 INIT_LIST_HEAD(&slave->sdo_requests); |
156 init_waitqueue_head(&slave->sdo_queue); |
|
157 |
|
158 INIT_LIST_HEAD(&slave->reg_requests); |
156 INIT_LIST_HEAD(&slave->reg_requests); |
159 init_waitqueue_head(&slave->reg_queue); |
|
160 |
|
161 INIT_LIST_HEAD(&slave->foe_requests); |
157 INIT_LIST_HEAD(&slave->foe_requests); |
162 init_waitqueue_head(&slave->foe_queue); |
|
163 |
|
164 INIT_LIST_HEAD(&slave->soe_requests); |
158 INIT_LIST_HEAD(&slave->soe_requests); |
165 init_waitqueue_head(&slave->soe_queue); |
|
166 |
159 |
167 // init state machine datagram |
160 // init state machine datagram |
168 ec_datagram_init(&slave->fsm_datagram); |
161 ec_datagram_init(&slave->fsm_datagram); |
169 snprintf(slave->fsm_datagram.name, EC_DATAGRAM_NAME_SIZE, |
162 snprintf(slave->fsm_datagram.name, EC_DATAGRAM_NAME_SIZE, |
170 "slave%u-fsm", slave->ring_position); |
163 "slave%u-fsm", slave->ring_position); |
199 list_entry(slave->sdo_requests.next, ec_sdo_request_t, list); |
192 list_entry(slave->sdo_requests.next, ec_sdo_request_t, list); |
200 list_del_init(&request->list); // dequeue |
193 list_del_init(&request->list); // dequeue |
201 EC_SLAVE_WARN(slave, "Discarding SDO request," |
194 EC_SLAVE_WARN(slave, "Discarding SDO request," |
202 " slave about to be deleted.\n"); |
195 " slave about to be deleted.\n"); |
203 request->state = EC_INT_REQUEST_FAILURE; |
196 request->state = EC_INT_REQUEST_FAILURE; |
204 wake_up(&slave->sdo_queue); |
197 wake_up(&slave->master->request_queue); |
205 } |
198 } |
206 |
199 |
207 while (!list_empty(&slave->reg_requests)) { |
200 while (!list_empty(&slave->reg_requests)) { |
208 ec_reg_request_t *reg = |
201 ec_reg_request_t *reg = |
209 list_entry(slave->reg_requests.next, ec_reg_request_t, list); |
202 list_entry(slave->reg_requests.next, ec_reg_request_t, list); |
210 list_del_init(®->list); // dequeue |
203 list_del_init(®->list); // dequeue |
211 EC_SLAVE_WARN(slave, "Discarding register request," |
204 EC_SLAVE_WARN(slave, "Discarding register request," |
212 " slave about to be deleted.\n"); |
205 " slave about to be deleted.\n"); |
213 reg->state = EC_INT_REQUEST_FAILURE; |
206 reg->state = EC_INT_REQUEST_FAILURE; |
214 wake_up(&slave->reg_queue); |
207 wake_up(&slave->master->request_queue); |
215 } |
208 } |
216 |
209 |
217 while (!list_empty(&slave->foe_requests)) { |
210 while (!list_empty(&slave->foe_requests)) { |
218 ec_foe_request_t *request = |
211 ec_foe_request_t *request = |
219 list_entry(slave->foe_requests.next, ec_foe_request_t, list); |
212 list_entry(slave->foe_requests.next, ec_foe_request_t, list); |
220 list_del_init(&request->list); // dequeue |
213 list_del_init(&request->list); // dequeue |
221 EC_SLAVE_WARN(slave, "Discarding FoE request," |
214 EC_SLAVE_WARN(slave, "Discarding FoE request," |
222 " slave about to be deleted.\n"); |
215 " slave about to be deleted.\n"); |
223 request->state = EC_INT_REQUEST_FAILURE; |
216 request->state = EC_INT_REQUEST_FAILURE; |
224 wake_up(&slave->foe_queue); |
217 wake_up(&slave->master->request_queue); |
225 } |
218 } |
226 |
219 |
227 while (!list_empty(&slave->soe_requests)) { |
220 while (!list_empty(&slave->soe_requests)) { |
228 ec_soe_request_t *request = |
221 ec_soe_request_t *request = |
229 list_entry(slave->soe_requests.next, ec_soe_request_t, list); |
222 list_entry(slave->soe_requests.next, ec_soe_request_t, list); |
230 list_del_init(&request->list); // dequeue |
223 list_del_init(&request->list); // dequeue |
231 EC_SLAVE_WARN(slave, "Discarding SoE request," |
224 EC_SLAVE_WARN(slave, "Discarding SoE request," |
232 " slave about to be deleted.\n"); |
225 " slave about to be deleted.\n"); |
233 request->state = EC_INT_REQUEST_FAILURE; |
226 request->state = EC_INT_REQUEST_FAILURE; |
234 wake_up(&slave->soe_queue); |
227 wake_up(&slave->master->request_queue); |
235 } |
228 } |
236 |
229 |
237 if (slave->config) { |
230 if (slave->config) { |
238 ec_slave_config_detach(slave->config); |
231 ec_slave_config_detach(slave->config); |
239 } |
232 } |