132 int (*request_cb)(void *); /**< lock request callback */ |
132 int (*request_cb)(void *); /**< lock request callback */ |
133 void (*release_cb)(void *); /**< lock release callback */ |
133 void (*release_cb)(void *); /**< lock release callback */ |
134 void *cb_data; /**< data parameter of locking callbacks */ |
134 void *cb_data; /**< data parameter of locking callbacks */ |
135 |
135 |
136 uint8_t eeprom_write_enable; /**< allow write operations to EEPROMs */ |
136 uint8_t eeprom_write_enable; /**< allow write operations to EEPROMs */ |
|
137 |
|
138 ec_sdo_request_t *sdo_request; /**< pointer to the current SDO request */ |
|
139 unsigned int sdo_seq_user; /**< sequence number for user space */ |
|
140 unsigned int sdo_seq_master; /**< sequence number for master */ |
|
141 struct semaphore sdo_sem; /**< SDO semaphore */ |
|
142 struct timer_list sdo_timer; /**< timer for polling sdo processing */ |
|
143 struct completion sdo_complete; /**< SDO request completion object */ |
137 }; |
144 }; |
138 |
145 |
139 /*****************************************************************************/ |
146 /*****************************************************************************/ |
140 |
147 |
141 // master creation and deletion |
148 // master creation/deletion |
142 int ec_master_init(ec_master_t *, unsigned int, unsigned int); |
149 int ec_master_init(ec_master_t *, unsigned int, unsigned int); |
143 void ec_master_clear(struct kobject *); |
150 void ec_master_destroy(ec_master_t *); |
144 void ec_master_reset(ec_master_t *); |
|
145 |
151 |
146 // free run |
152 // mode transitions |
147 void ec_master_idle_start(ec_master_t *); |
153 int ec_master_enter_idle_mode(ec_master_t *); |
148 void ec_master_idle_stop(ec_master_t *); |
154 void ec_master_leave_idle_mode(ec_master_t *); |
|
155 int ec_master_enter_operation_mode(ec_master_t *); |
|
156 void ec_master_leave_operation_mode(ec_master_t *); |
149 |
157 |
150 // EoE |
158 // EoE |
151 void ec_master_eoe_start(ec_master_t *); |
159 void ec_master_eoe_start(ec_master_t *); |
152 void ec_master_eoe_stop(ec_master_t *); |
160 void ec_master_eoe_stop(ec_master_t *); |
153 |
161 |
154 // IO |
162 // datagram IO |
155 void ec_master_receive_datagrams(ec_master_t *, const uint8_t *, size_t); |
163 void ec_master_receive_datagrams(ec_master_t *, const uint8_t *, size_t); |
156 void ec_master_queue_datagram(ec_master_t *, ec_datagram_t *); |
164 void ec_master_queue_datagram(ec_master_t *, ec_datagram_t *); |
157 |
165 |
158 // slave management |
|
159 int ec_master_bus_scan(ec_master_t *); |
|
160 |
|
161 // misc. |
166 // misc. |
162 void ec_master_output_stats(ec_master_t *); |
167 void ec_master_output_stats(ec_master_t *); |
163 void ec_master_clear_slaves(ec_master_t *); |
168 void ec_master_destroy_slaves(ec_master_t *); |
164 int ec_master_measure_bus_time(ec_master_t *); |
169 void ec_master_calc_addressing(ec_master_t *); |
165 |
170 |
166 // other methods |
171 // helper functions |
167 void ec_sync_config(const ec_sii_sync_t *, const ec_slave_t *, uint8_t *); |
172 void ec_sync_config(const ec_sii_sync_t *, const ec_slave_t *, uint8_t *); |
168 void ec_fmmu_config(const ec_fmmu_t *, const ec_slave_t *, uint8_t *); |
173 void ec_fmmu_config(const ec_fmmu_t *, const ec_slave_t *, uint8_t *); |
169 void ec_master_calc_addressing(ec_master_t *); |
|
170 |
174 |
171 /*****************************************************************************/ |
175 /*****************************************************************************/ |
172 |
176 |
173 #endif |
177 #endif |