86 |
86 |
87 INIT_LIST_HEAD(&sc->sdo_configs); |
87 INIT_LIST_HEAD(&sc->sdo_configs); |
88 INIT_LIST_HEAD(&sc->sdo_requests); |
88 INIT_LIST_HEAD(&sc->sdo_requests); |
89 INIT_LIST_HEAD(&sc->voe_handlers); |
89 INIT_LIST_HEAD(&sc->voe_handlers); |
90 INIT_LIST_HEAD(&sc->soe_configs); |
90 INIT_LIST_HEAD(&sc->soe_configs); |
|
91 |
|
92 ec_coe_emerg_ring_init(&sc->emerg_ring, sc); |
91 } |
93 } |
92 |
94 |
93 /*****************************************************************************/ |
95 /*****************************************************************************/ |
94 |
96 |
95 /** Slave configuration destructor. |
97 /** Slave configuration destructor. |
136 list_for_each_entry_safe(soe, next_soe, &sc->soe_configs, list) { |
138 list_for_each_entry_safe(soe, next_soe, &sc->soe_configs, list) { |
137 list_del(&soe->list); |
139 list_del(&soe->list); |
138 ec_soe_request_clear(soe); |
140 ec_soe_request_clear(soe); |
139 kfree(soe); |
141 kfree(soe); |
140 } |
142 } |
|
143 |
|
144 ec_coe_emerg_ring_clear(&sc->emerg_ring); |
141 } |
145 } |
142 |
146 |
143 /*****************************************************************************/ |
147 /*****************************************************************************/ |
144 |
148 |
145 /** Prepares an FMMU configuration. |
149 /** Prepares an FMMU configuration. |
875 |
879 |
876 down(&sc->master->master_sem); |
880 down(&sc->master->master_sem); |
877 list_add_tail(&req->list, &sc->sdo_configs); |
881 list_add_tail(&req->list, &sc->sdo_configs); |
878 up(&sc->master->master_sem); |
882 up(&sc->master->master_sem); |
879 return 0; |
883 return 0; |
|
884 } |
|
885 |
|
886 /*****************************************************************************/ |
|
887 |
|
888 int ecrt_slave_config_emerg_size(ec_slave_config_t *sc, size_t elements) |
|
889 { |
|
890 return ec_coe_emerg_ring_size(&sc->emerg_ring, elements); |
|
891 } |
|
892 |
|
893 /*****************************************************************************/ |
|
894 |
|
895 int ecrt_slave_config_emerg_pop(ec_slave_config_t *sc, uint8_t *target) |
|
896 { |
|
897 return ec_coe_emerg_ring_pop(&sc->emerg_ring, target); |
|
898 } |
|
899 |
|
900 /*****************************************************************************/ |
|
901 |
|
902 int ecrt_slave_config_emerg_clear(ec_slave_config_t *sc) |
|
903 { |
|
904 return ec_coe_emerg_ring_clear_ring(&sc->emerg_ring); |
|
905 } |
|
906 |
|
907 /*****************************************************************************/ |
|
908 |
|
909 int ecrt_slave_config_emerg_overruns(ec_slave_config_t *sc) |
|
910 { |
|
911 return ec_coe_emerg_ring_overruns(&sc->emerg_ring); |
880 } |
912 } |
881 |
913 |
882 /*****************************************************************************/ |
914 /*****************************************************************************/ |
883 |
915 |
884 /** Same as ecrt_slave_config_create_sdo_request(), but with ERR_PTR() return |
916 /** Same as ecrt_slave_config_create_sdo_request(), but with ERR_PTR() return |
1061 EXPORT_SYMBOL(ecrt_slave_config_sdo); |
1093 EXPORT_SYMBOL(ecrt_slave_config_sdo); |
1062 EXPORT_SYMBOL(ecrt_slave_config_sdo8); |
1094 EXPORT_SYMBOL(ecrt_slave_config_sdo8); |
1063 EXPORT_SYMBOL(ecrt_slave_config_sdo16); |
1095 EXPORT_SYMBOL(ecrt_slave_config_sdo16); |
1064 EXPORT_SYMBOL(ecrt_slave_config_sdo32); |
1096 EXPORT_SYMBOL(ecrt_slave_config_sdo32); |
1065 EXPORT_SYMBOL(ecrt_slave_config_complete_sdo); |
1097 EXPORT_SYMBOL(ecrt_slave_config_complete_sdo); |
|
1098 EXPORT_SYMBOL(ecrt_slave_config_emerg_size); |
|
1099 EXPORT_SYMBOL(ecrt_slave_config_emerg_pop); |
|
1100 EXPORT_SYMBOL(ecrt_slave_config_emerg_clear); |
|
1101 EXPORT_SYMBOL(ecrt_slave_config_emerg_overruns); |
1066 EXPORT_SYMBOL(ecrt_slave_config_create_sdo_request); |
1102 EXPORT_SYMBOL(ecrt_slave_config_create_sdo_request); |
1067 EXPORT_SYMBOL(ecrt_slave_config_create_voe_handler); |
1103 EXPORT_SYMBOL(ecrt_slave_config_create_voe_handler); |
1068 EXPORT_SYMBOL(ecrt_slave_config_state); |
1104 EXPORT_SYMBOL(ecrt_slave_config_state); |
1069 EXPORT_SYMBOL(ecrt_slave_config_idn); |
1105 EXPORT_SYMBOL(ecrt_slave_config_idn); |
1070 |
1106 |