286 { |
286 { |
287 ec_slave_t *slave = fsm->slave; |
287 ec_slave_t *slave = fsm->slave; |
288 ec_datagram_t *datagram = fsm->datagram; |
288 ec_datagram_t *datagram = fsm->datagram; |
289 size_t sync_size; |
289 size_t sync_size; |
290 |
290 |
291 if (!slave->sii.sync_count) { // FIXME use base_sync_count? |
291 if (!slave->base_sync_count) { |
292 // no sync managers |
292 // no sync managers |
293 ec_fsm_slave_config_enter_dc_clear_assign(fsm); |
293 ec_fsm_slave_config_enter_dc_clear_assign(fsm); |
294 return; |
294 return; |
295 } |
295 } |
296 |
296 |
297 if (slave->master->debug_level) |
297 if (slave->master->debug_level) |
298 EC_DBG("Clearing sync manager configurations of slave %u...\n", |
298 EC_DBG("Clearing sync manager configurations of slave %u...\n", |
299 slave->ring_position); |
299 slave->ring_position); |
300 |
300 |
301 sync_size = EC_SYNC_PAGE_SIZE * slave->sii.sync_count; |
301 sync_size = EC_SYNC_PAGE_SIZE * slave->base_sync_count; |
302 |
302 |
303 // clear sync manager configurations |
303 // clear sync manager configurations |
304 ec_datagram_fpwr(datagram, slave->station_address, 0x0800, sync_size); |
304 ec_datagram_fpwr(datagram, slave->station_address, 0x0800, sync_size); |
305 memset(datagram->data, 0x00, sync_size); |
305 memset(datagram->data, 0x00, sync_size); |
306 fsm->retries = EC_FSM_RETRIES; |
306 fsm->retries = EC_FSM_RETRIES; |
600 sync.enable = 1; |
600 sync.enable = 1; |
601 ec_sync_page(&sync, 1, slave->sii.std_tx_mailbox_size, |
601 ec_sync_page(&sync, 1, slave->sii.std_tx_mailbox_size, |
602 EC_DIR_INVALID, // use default direction |
602 EC_DIR_INVALID, // use default direction |
603 datagram->data + EC_SYNC_PAGE_SIZE); |
603 datagram->data + EC_SYNC_PAGE_SIZE); |
604 slave->configured_tx_mailbox_offset = |
604 slave->configured_tx_mailbox_offset = |
605 slave->sii.boot_tx_mailbox_offset; |
605 slave->sii.std_tx_mailbox_offset; |
606 slave->configured_tx_mailbox_size = |
606 slave->configured_tx_mailbox_size = |
607 slave->sii.boot_tx_mailbox_size; |
607 slave->sii.std_tx_mailbox_size; |
608 } |
608 } |
609 |
609 |
610 fsm->take_time = 1; |
610 fsm->take_time = 1; |
611 |
611 |
612 fsm->retries = EC_FSM_RETRIES; |
612 fsm->retries = EC_FSM_RETRIES; |