694 mbox_sync.physical_start_address = slave->sii_tx_mailbox_offset; |
694 mbox_sync.physical_start_address = slave->sii_tx_mailbox_offset; |
695 mbox_sync.length = slave->sii_tx_mailbox_size; |
695 mbox_sync.length = slave->sii_tx_mailbox_size; |
696 mbox_sync.control_register = 0x26; |
696 mbox_sync.control_register = 0x26; |
697 mbox_sync.enable = 0x01; |
697 mbox_sync.enable = 0x01; |
698 mbox_sync.est_length = 0; |
698 mbox_sync.est_length = 0; |
699 ec_sync_config(&mbox_sync, slave, |
699 ec_slave_sync_config(slave, &mbox_sync, |
700 datagram->data + EC_SYNC_SIZE * mbox_sync.index); |
700 datagram->data + EC_SYNC_SIZE * mbox_sync.index); |
701 mbox_sync.index = 1; |
701 mbox_sync.index = 1; |
702 mbox_sync.physical_start_address = slave->sii_rx_mailbox_offset; |
702 mbox_sync.physical_start_address = slave->sii_rx_mailbox_offset; |
703 mbox_sync.length = slave->sii_rx_mailbox_size; |
703 mbox_sync.length = slave->sii_rx_mailbox_size; |
704 mbox_sync.control_register = 0x22; |
704 mbox_sync.control_register = 0x22; |
705 mbox_sync.enable = 0x01; |
705 mbox_sync.enable = 0x01; |
706 mbox_sync.est_length = 0; |
706 mbox_sync.est_length = 0; |
707 ec_sync_config(&mbox_sync, slave, |
707 ec_slave_sync_config(slave, &mbox_sync, |
708 datagram->data + EC_SYNC_SIZE * mbox_sync.index); |
708 datagram->data + EC_SYNC_SIZE * mbox_sync.index); |
709 } |
709 } |
710 } |
710 } |
711 else if (slave->sii_mailbox_protocols) { // mailboxes present |
711 else if (slave->sii_mailbox_protocols) { // mailboxes present |
712 list_for_each_entry(sync, &slave->sii_syncs, list) { |
712 list_for_each_entry(sync, &slave->sii_syncs, list) { |
713 // only configure mailbox sync-managers |
713 // only configure mailbox sync-managers |
714 if (sync->index != 0 && sync->index != 1) continue; |
714 if (sync->index != 0 && sync->index != 1) continue; |
715 ec_sync_config(sync, slave, |
715 ec_slave_sync_config(slave, sync, |
716 datagram->data + EC_SYNC_SIZE * sync->index); |
716 datagram->data + EC_SYNC_SIZE * sync->index); |
717 } |
717 } |
718 } |
718 } |
719 |
719 |
720 ec_master_queue_datagram(fsm->slave->master, datagram); |
720 ec_master_queue_datagram(fsm->slave->master, datagram); |
721 fsm->retries = EC_FSM_RETRIES; |
721 fsm->retries = EC_FSM_RETRIES; |
826 ec_datagram_npwr(datagram, slave->station_address, 0x0800, |
826 ec_datagram_npwr(datagram, slave->station_address, 0x0800, |
827 EC_SYNC_SIZE * slave->base_sync_count); |
827 EC_SYNC_SIZE * slave->base_sync_count); |
828 memset(datagram->data, 0x00, EC_SYNC_SIZE * slave->base_sync_count); |
828 memset(datagram->data, 0x00, EC_SYNC_SIZE * slave->base_sync_count); |
829 |
829 |
830 list_for_each_entry(sync, &slave->sii_syncs, list) { |
830 list_for_each_entry(sync, &slave->sii_syncs, list) { |
831 ec_sync_config(sync, slave, |
831 ec_slave_sync_config(slave, sync, |
832 datagram->data + EC_SYNC_SIZE * sync->index); |
832 datagram->data + EC_SYNC_SIZE * sync->index); |
833 } |
833 } |
834 |
834 |
835 ec_master_queue_datagram(fsm->slave->master, datagram); |
835 ec_master_queue_datagram(fsm->slave->master, datagram); |
836 fsm->retries = EC_FSM_RETRIES; |
836 fsm->retries = EC_FSM_RETRIES; |
837 fsm->state = ec_fsm_slave_conf_state_sync2; |
837 fsm->state = ec_fsm_slave_conf_state_sync2; |
892 // configure FMMUs |
892 // configure FMMUs |
893 ec_datagram_npwr(datagram, slave->station_address, |
893 ec_datagram_npwr(datagram, slave->station_address, |
894 0x0600, EC_FMMU_SIZE * slave->base_fmmu_count); |
894 0x0600, EC_FMMU_SIZE * slave->base_fmmu_count); |
895 memset(datagram->data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count); |
895 memset(datagram->data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count); |
896 for (j = 0; j < slave->fmmu_count; j++) { |
896 for (j = 0; j < slave->fmmu_count; j++) { |
897 ec_fmmu_config(&slave->fmmus[j], slave, |
897 ec_slave_fmmu_config(slave, &slave->fmmus[j], |
898 datagram->data + EC_FMMU_SIZE * j); |
898 datagram->data + EC_FMMU_SIZE * j); |
899 } |
899 } |
900 |
900 |
901 ec_master_queue_datagram(master, datagram); |
901 ec_master_queue_datagram(master, datagram); |
902 fsm->retries = EC_FSM_RETRIES; |
902 fsm->retries = EC_FSM_RETRIES; |
903 fsm->state = ec_fsm_slave_conf_state_fmmu; |
903 fsm->state = ec_fsm_slave_conf_state_fmmu; |