equal
deleted
inserted
replaced
154 INIT_LIST_HEAD(&slave->sii_strings); |
154 INIT_LIST_HEAD(&slave->sii_strings); |
155 INIT_LIST_HEAD(&slave->sii_syncs); |
155 INIT_LIST_HEAD(&slave->sii_syncs); |
156 INIT_LIST_HEAD(&slave->sii_pdos); |
156 INIT_LIST_HEAD(&slave->sii_pdos); |
157 INIT_LIST_HEAD(&slave->sdo_dictionary); |
157 INIT_LIST_HEAD(&slave->sdo_dictionary); |
158 INIT_LIST_HEAD(&slave->sdo_confs); |
158 INIT_LIST_HEAD(&slave->sdo_confs); |
159 INIT_LIST_HEAD(&slave->varsize_fields); |
|
160 |
159 |
161 for (i = 0; i < 4; i++) { |
160 for (i = 0; i < 4; i++) { |
162 slave->dl_link[i] = 0; |
161 slave->dl_link[i] = 0; |
163 slave->dl_loop[i] = 0; |
162 slave->dl_loop[i] = 0; |
164 slave->dl_signal[i] = 0; |
163 slave->dl_signal[i] = 0; |
182 ec_sii_pdo_t *pdo, *next_pdo; |
181 ec_sii_pdo_t *pdo, *next_pdo; |
183 ec_sii_pdo_entry_t *entry, *next_ent; |
182 ec_sii_pdo_entry_t *entry, *next_ent; |
184 ec_sdo_t *sdo, *next_sdo; |
183 ec_sdo_t *sdo, *next_sdo; |
185 ec_sdo_entry_t *en, *next_en; |
184 ec_sdo_entry_t *en, *next_en; |
186 ec_sdo_data_t *sdodata, *next_sdodata; |
185 ec_sdo_data_t *sdodata, *next_sdodata; |
187 ec_varsize_t *var, *next_var; |
|
188 |
186 |
189 slave = container_of(kobj, ec_slave_t, kobj); |
187 slave = container_of(kobj, ec_slave_t, kobj); |
190 |
188 |
191 // free all string objects |
189 // free all string objects |
192 list_for_each_entry_safe(string, next_str, &slave->sii_strings, list) { |
190 list_for_each_entry_safe(string, next_str, &slave->sii_strings, list) { |
236 // free all SDO configurations |
234 // free all SDO configurations |
237 list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) { |
235 list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) { |
238 list_del(&sdodata->list); |
236 list_del(&sdodata->list); |
239 kfree(sdodata->data); |
237 kfree(sdodata->data); |
240 kfree(sdodata); |
238 kfree(sdodata); |
241 } |
|
242 |
|
243 // free information about variable sized data fields |
|
244 list_for_each_entry_safe(var, next_var, &slave->varsize_fields, list) { |
|
245 list_del(&var->list); |
|
246 kfree(var); |
|
247 } |
239 } |
248 |
240 |
249 if (slave->eeprom_data) kfree(slave->eeprom_data); |
241 if (slave->eeprom_data) kfree(slave->eeprom_data); |
250 if (slave->new_eeprom_data) kfree(slave->new_eeprom_data); |
242 if (slave->new_eeprom_data) kfree(slave->new_eeprom_data); |
251 } |
243 } |